斜杠命令以 / 开头,用于控制 Claude Code 会话。通过 SDK 发送时与普通 prompt 相同,直接在字符串中包含命令即可。只有不依赖交互式终端的命令才能通过 SDK 分发。
核心机制
发现可用命令:会话初始化时,SystemMessage(subtype="init") 的 slash_commands 字段列出所有可用命令(内置 + 自定义)。
发送命令:直接在 prompt 中包含命令字符串:
async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):
...内置命令:
/compact:压缩对话历史,释放上下文空间/context:查看当前上下文使用情况/usage:查看 token 用量
自定义命令:在 .claude/commands/ 目录下创建 Markdown 文件定义(旧格式,推荐改用 .claude/skills/)。
关键细节
自定义命令文件格式:
---
allowed-tools: Read, Grep, Glob
description: Run security vulnerability scan
model: claude-opus-4-7
---
Analyze the codebase for security vulnerabilities including:
- SQL injection risks
- XSS vulnerabilities支持的 frontmatter 字段:
allowed-tools:限制可用工具description:命令描述model:指定模型argument-hint:参数提示
参数传递:命令文件中用 $1、$2 或 $ARGUMENTS 作为占位符:
/fix-issue 123 high # $1="123", $2="high"Bash 命令执行:在命令文件中用 ! 前缀执行 Bash 并注入输出:
## Context
- Current status: !`git status`
- Current diff: !`git diff HEAD`文件引用:用 @ 前缀引用文件内容:
Review: @package.json命令位置:
- 项目命令:
.claude/commands/(通过 git 共享) - 个人命令:
~/.claude/commands/(跨项目)
与其他概念的关联
- skills - 推荐的新格式(
.claude/skills/),支持自动调用 + 斜杠命令 - claude-code-features - settingSources 控制命令加载
- agent-loop -
/compact触发上下文压缩
实践要点
/clear在 SDK 中不可用,每次query()调用已经是新会话- 自定义命令需要通过
settingSources加载项目配置才能使用 - 新项目推荐使用 Skills(
.claude/skills/)而非 Commands(.claude/commands/),Skills 支持自动调用 - 命令可以通过子目录组织,但命令名本身不含目录前缀