自定义命令:把重复的 prompt 存下来
自定义斜杠命令就是一个保存下来的 Markdown 文件:写一次,之后用 /你的命令 就能代替一长串 prompt。
基本想法
如果你总在敲同一个 prompt——“总结一下我的改动”“检查一下这个文件”——可以把它存成一个自定义命令。Claude Code 支持两种格式:.claude/commands/ 下的一个 Markdown 文件,或者 .claude/skills/ 下的一个 skill 文件夹。两者会生成同一个斜杠命令:deploy.md 和 deploy/SKILL.md 都会变成 /deploy。Custom Commands(自定义命令)已正式并入 skills;旧的 command 文件仍然能用。
文件结构
文件可以选择以 YAML frontmatter 开头,写在两行 --- 之间。最重要的字段是 description:Claude 靠它判断这个命令是否适合当前任务,甚至可以据此自动加载。frontmatter 之后就是真正的 prompt 文本。
参数
用占位符 $ARGUMENTS 接住你打在命令后面的所有内容:输入 /fix-issue 123 时,$ARGUMENTS 会变成 123。单个参数可以用从 0 开始编号的 $0、$1 等依次取到。
自定义命令还是 CLAUDE.md 规则?
文档给出的经验法则:应该始终生效的规则(“绝不直接推送到 main”)属于 CLAUDE.md——它会在每次 session 开始时完整加载。只是偶尔才用得上的流程,应该放进一个命令或 skill:这类文本只在被调用时才加载,之前几乎不占上下文。当 CLAUDE.md 里的一段内容膨胀成一整套流程时,文档认为,这正是把它拆成自定义命令的时机。
示例
文件 `.claude/skills/fix-issue/SKILL.md`: --- description: 根据编号修复一个 GitHub issue disable-model-invocation: true --- 修复 GitHub issue $ARGUMENTS:阅读该 issue、实现修复、编写测试。 之后这样调用:`/fix-issue 123`
🛠️ 练习——自己动手试试
搭建你的第一个自定义命令,并测试两种调用方式。
- 创建文件 .claude/skills/zusammenfassen/SKILL.md——写一个 description(“总结未提交的改动”)和 prompt “把当前的 git diff 总结成 3 条要点。”
- 启动 Claude Code,改动一个文件,然后直接调用 /zusammenfassen。
- 然后用自然语言问“我改了什么?”,观察 Claude 是否会自己加载这个 skill。
✅ 自查清单
- ☐ 你知道为什么 description 字段对自动加载至关重要吗?
- ☐ 你能说清楚,什么情况下同样的内容更适合放进 CLAUDE.md 吗?
- ☐ 你理解了该怎么用 $ARGUMENTS 接收参数吗?
小测验
当你调用一个像 `/fix-issue 123` 这样的自定义命令时,技术上发生了什么?
来源
- Claude Code 文档:Skills(含 Custom Commands) ↗ code.claude.com
- Claude Code 文档:Slash commands ↗ code.claude.com
- Claude Code 文档:CLAUDE.md 与 Memory ↗ code.claude.com