SpyBara
Go Premium

agent-sdk/slash-commands.md 2026-06-29 23:02 UTC to 2026-06-30 23:02 UTC

141 added, 25 removed.

2026
Tue 30 23:02 Mon 29 23:02 Sat 27 01:01 Fri 26 23:00 Thu 25 23:58 Wed 24 22:02 Tue 23 22:00 Mon 22 23:59 Fri 19 22:58 Thu 18 22:00 Wed 17 17:02 Tue 16 21:57 Mon 15 23:02 Sat 13 21:59 Fri 12 22:00 Thu 11 23:01 Wed 10 23:57 Tue 9 06:34 Mon 8 06:52 Sat 6 06:24 Fri 5 06:45 Thu 4 06:52 Wed 3 06:53 Tue 2 06:51

SDK 中的 Slash Commands

了解如何透過 SDK 使用 slash commands 來控制 Claude Code 會話

Slash commands 提供了一種方式來控制 Claude Code 會話,使用以 / 開頭的特殊命令。這些命令可以透過 SDK 發送,以執行諸如壓縮上下文、列出上下文使用情況或調用自訂命令等操作。只有在不需要互動式終端的情況下才能工作的命令才能透過 SDK 分派;system/init 訊息列出了您會話中可用的命令。

發現可用的 Slash Commands

Claude Agent SDK 在系統初始化訊息中提供有關可用 slash commands 的資訊。在您的會話開始時存取此資訊:

import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
prompt: "Hello Claude",
options: { maxTurns: 1 }
})) {
if (message.type === "system" && message.subtype === "init") {
console.log("Available slash commands:", message.slash_commands);
// 包括內建命令加上捆綁的技能,例如:
// ["clear", "compact", "context", "usage", "code-review", "verify", ...]
}
}

發送 Slash Commands

透過在您的提示字串中包含 slash commands 來發送它們,就像常規文字一樣。作用於對話歷史記錄的命令,例如 /compact,需要先前的訊息才能運作,因此下面的範例首先提出一個問題,然後將命令作為後續訊息發送到同一對話:

import { query } from "@anthropic-ai/claude-agent-sdk";

// Build up conversation history first
try {
for await (const message of query({
prompt: "What does the README in this directory cover?",
options: { maxTurns: 2 }
})) {
if (message.type === "result" && message.subtype === "success") {
console.log(message.result);
}
}
} catch (error) {
// A single-shot query() throws after yielding an error result,
// so the follow-up query below still runs.
console.error(`Session ended with an error: ${error}`);
}

// Send a slash command as a follow-up to the same conversation
for await (const message of query({
prompt: "/compact",
options: { continue: true, maxTurns: 1 }
})) {
if (message.type === "result") {
console.log("Command executed, result subtype:", message.subtype);
// Example output: Command executed, result subtype: success
}
}

常見的 Slash Commands

`/compact` - 壓縮對話歷史

/compact 命令透過總結較舊的訊息同時保留重要上下文來減少您的對話歷史的大小。壓縮需要至少有兩次先前交換的現有對話才能進行總結。此範例首先進行對話,然後壓縮它並讀取報告結果的 compact_boundary 系統訊息:

import { query } from "@anthropic-ai/claude-agent-sdk";

// Compaction needs existing history, so have a conversation first
try {
for await (const message of query({
prompt: "Explain what this project does",
options: { maxTurns: 2 }
})) {
if (message.type === "result" && message.subtype === "success") {
console.log(message.result);
}
}
} catch (error) {
// A single-shot query() throws after yielding an error result,
// so the follow-up query below still runs.
console.error(`Session ended with an error: ${error}`);
}

// Compact the same conversation
for await (const message of query({
prompt: "/compact",
options: { continue: true, maxTurns: 1 }
})) {
if (message.type === "system" && message.subtype === "compact_boundary") {
console.log("Compaction completed");
console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);
console.log("Trigger:", message.compact_metadata.trigger);
// Example output:
// Compaction completed
// Pre-compaction tokens: 1842
// Trigger: manual
}
}

`/clear` - 重設對話上下文

/clear 命令將對話重設為空上下文,因此後續提示會從沒有先前對話歷史的狀態開始。先前的對話保存在磁碟上,可以透過將其會話 ID 傳遞給 resume 選項 來返回。

這在串流輸入模式中很有用,您可以在單一連線上傳送多個提示。對於一次性的 query() 呼叫,每個呼叫已經開始時具有空上下文,因此傳送 /clear 沒有實際效果;請改為開始一個新的 query()

建立自訂 Slash Commands

除了使用內建 slash commands 外,您還可以建立自己的自訂命令,這些命令可透過 SDK 使用。自訂命令定義為特定目錄中的 markdown 檔案,類似於子代理的配置方式。

檔案位置

自訂 slash commands 根據其範圍儲存在指定的目錄中:

  • 專案命令.claude/commands/ - 僅在目前專案中可用(舊版;建議使用 .claude/skills/
  • 個人命令~/.claude/commands/ - 在您的所有專案中可用(舊版;建議使用 ~/.claude/skills/

檔案格式

每個自訂命令都是一個 markdown 檔案,其中:

  • 檔案名稱(不含 .md 副檔名)成為命令名稱
  • 檔案內容定義命令的功能
  • 可選的 YAML frontmatter 提供配置

基本範例

在您的專案中建立 .claude/commands 目錄(如果不存在),然後建立 .claude/commands/refactor.md

Refactor the selected code to improve readability and maintainability.
Focus on clean code principles and best practices.

這會建立 /refactor 命令,您可以透過 SDK 使用。

使用 Frontmatter

建立 .claude/commands/security-check.md

---
allowed-tools: Read, Grep, Glob
description: Run security vulnerability scan
model: claude-opus-4-8
---

Analyze the codebase for security vulnerabilities including:
- SQL injection risks
- XSS vulnerabilities
- Exposed credentials
- Insecure configurations

在 SDK 中使用自訂命令

一旦在檔案系統中定義,自訂命令就會自動透過 SDK 可用:

import { query } from "@anthropic-ai/claude-agent-sdk";

// Use a custom command
try {
for await (const message of query({
prompt: "/refactor src/auth/login.ts",
options: { maxTurns: 3 }
})) {
if (message.type === "assistant") {
console.log("Refactoring suggestions:", message.message);
}
}
} catch (error) {
// A single-shot query() throws after yielding an error result,
// so the second query below still runs.
console.error(`Session ended with an error: ${error}`);
}

// Custom commands appear in the slash_commands list
for await (const message of query({
prompt: "Hello",
options: { maxTurns: 1 }
})) {
if (message.type === "system" && message.subtype === "init") {
console.log("Available commands:", message.slash_commands);
// Includes built-in commands plus bundled skills and your custom commands, for example:
// ["clear", "compact", "context", "usage", "code-review", "verify", "refactor", "security-check", ...]
}
}

進階功能

引數和佔位符

自訂命令支援使用佔位符的動態引數:

建立 .claude/commands/fix-issue.md

---
argument-hint: [issue-number] [priority]
description: Fix a GitHub issue
---

Fix issue #$0 with priority $1.
Check the issue description and implement the necessary changes.

在 SDK 中使用:

import { query } from "@anthropic-ai/claude-agent-sdk";

// Pass arguments to custom command
for await (const message of query({
prompt: "/fix-issue 123 high",
options: { maxTurns: 5 }
})) {
// Command will process with $0="123" and $1="high"
if (message.type === "result" && message.subtype === "success") {
console.log("Issue fixed:", message.result);
}
}

Bash 命令執行

自訂命令可以執行 bash 命令並包含其輸出:

建立 .claude/commands/git-commit.md

---
allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)
description: Create a git commit
---

## Context

- Current status: !`git status`
- Current diff: !`git diff HEAD`

## Task

Create a git commit with appropriate message based on the changes.

檔案參考

使用 @ 前綴包含檔案內容:

建立 .claude/commands/review-config.md

---
description: Review configuration files
---

Review the following configuration files for issues:
- Package config: @package.json
- TypeScript config: @tsconfig.json
- Environment config: @.env

Check for security issues, outdated dependencies, and misconfigurations.

使用命名空間組織

在子目錄中組織命令以獲得更好的結構:

.claude/commands/
├── frontend/
│   ├── component.md      # Creates /component (project:frontend)
│   └── style-check.md     # Creates /style-check (project:frontend)
├── backend/
│   ├── api-test.md        # Creates /api-test (project:backend)
│   └── db-migrate.md      # Creates /db-migrate (project:backend)
└── review.md              # Creates /review (project)

子目錄出現在命令描述中,但不會影響命令名稱本身。

實用範例

Pull Request 審查命令

建立 .claude/commands/review-pr.md

---
allowed-tools: Read, Grep, Glob, Bash(git diff *)
description: Comprehensive code review
---

## Changed Files
!`git diff --name-only HEAD~1`

## Detailed Changes
!`git diff HEAD~1`

## Review Checklist

Review the above changes for:
1. Code quality and readability
2. Security vulnerabilities
3. Performance implications
4. Test coverage
5. Documentation completeness

Provide specific, actionable feedback organized by priority.

測試執行器命令

建立 .claude/commands/test.md

---
allowed-tools: Bash, Read, Edit
argument-hint: [test-pattern]
description: Run tests with optional pattern
---

Run tests matching pattern: $ARGUMENTS

1. Detect the test framework (Jest, pytest, etc.)
2. Run tests with the provided pattern
3. If tests fail, analyze and fix them
4. Re-run to verify fixes

透過 SDK 使用這些命令:

import { query } from "@anthropic-ai/claude-agent-sdk";

// Run code review
try {
for await (const message of query({
prompt: "/review-pr",
options: { maxTurns: 3 }
})) {
// Process review feedback
}
} catch (error) {
// A single-shot query() throws after yielding an error result,
// so the second query below still runs.
console.error(`Session ended with an error: ${error}`);
}

// Run specific tests
for await (const message of query({
prompt: "/test auth",
options: { maxTurns: 5 }
})) {
// Handle test results
}

另請參閱