免费

Slash Command:给 Claude Code 装上可复用的快捷指令

用 Markdown 文件定义可复用的 slash command,通过 git 让团队共享提示词资产,覆盖代码审查、测试、PR 等高频场景。


Claude Code 内置了一批 slash command——/help/clear/compact。但真正让工作流提速的,是你自己写的那些。

本文讲的是如何设计一套可复用的 slash command 体系,让团队里每个人都能用上同一套提示词,而不是每次靠记忆重新描述任务。

什么是自定义 Slash Command

在 Claude Code 里,自定义 slash command 就是一个 Markdown 文件。你把它放在指定目录,Claude Code 启动时自动识别,输入 /文件名 即可触发。

文件内容就是发给 Claude 的提示词。仅此而已。

没有特殊语法,没有配置格式,一个 .md 文件就是一个 command。

文件放哪里

两个位置,职责不同:

位置 路径 作用域
项目级 .claude/commands/ 仅当前项目,可随代码提交 git
用户级 ~/.claude/commands/ 所有项目,个人私有

项目级是团队共享的核心。把 .claude/commands/ 提交进 git,clone 仓库的每个人都自动拥有这套 commands。

用户级适合放个人习惯类的指令,比如你自己偏好的代码风格检查方式,或者只有你在用的工具集成。

创建第一个 Command

在项目根目录:

mkdir -p .claude/commands

新建 .claude/commands/review.md

审查当前改动的代码质量。重点检查:

1. 逻辑错误和边界条件
2. 命名是否清晰
3. 有没有重复代码可以提取
4. 安全问题(SQL 注入、XSS、敏感信息暴露)

给出具体的修改建议,不要泛泛而谈。

重启 Claude Code,输入 /review 即可触发。

用 $ARGUMENTS 接收参数

固定内容的 command 用途有限。$ARGUMENTS 让 command 变得灵活——用户在 /command 后面输入的内容,会替换进提示词里。

例如 .claude/commands/test.md

为以下内容编写测试:$ARGUMENTS

要求:
- 覆盖正常路径和边界情况
- 测试命名要能自解释
- 不要 mock 能用真实数据的地方

使用时:

/test UserAuthentication 类的 login 方法

Claude 收到的实际提示词是:

为以下内容编写测试:UserAuthentication 类的 login 方法

要求:
- 覆盖正常路径和边界情况
...

$ARGUMENTS 可以出现在提示词的任何位置,也可以出现多次。

设计原则

一个 command,一个职责

不要写一个"万能助手"command,把所有任务塞进去。/review 只管代码审查,/test 只管写测试,/pr 只管生成 PR 描述。粒度细的 command 更容易记忆,也更容易复用。

提示词写具体,不写抽象

坏的写法:

帮我优化这段代码

好的写法:
```
优化以下代码的性能。优先考虑:
1. 减少不必要的数据库查询(N+1 问题)
2. 避免在循环里做重复计算
3. 用更高效的数据结构替换线性查找

保持接口不变,只改内部实现。
```

具体的约束条件,才能让 Claude 给出有针对性的结果。

给 command 加 frontmatter

在文件开头加上元数据,Claude Code 在命令列表里会展示 description,方便团队成员快速了解用途:

---
description: 审查当前改动,给出代码质量反馈
---

审查当前改动的代码质量...

一套实用的项目级 Commands

以 Rails 项目为例,这几个 command 覆盖了日常开发的高频场景:

.claude/commands/review.md — 代码审查

```markdown

description: 审查当前改动,检查逻辑、安全和可读性

审查 git diff 里的改动。检查:
- 逻辑错误和边界条件处理
- SQL 注入、权限校验等安全问题
- 命名可读性
- 是否有重复逻辑可以提取

每条问题给出具体位置和修改建议。
```

.claude/commands/test.md — 生成测试

```markdown

description: 为指定代码生成测试用例

为这段代码写测试:$ARGUMENTS

使用 RSpec。覆盖:正常路径、边界值、异常情况。
测试命名格式:describe ... context ... it ...
优先用真实对象,只在必要时 mock 外部依赖。
```

.claude/commands/pr.md — PR 描述

```markdown

description: 根据当前改动生成 PR 标题和描述

根据 git diff 和 commit log,生成 PR 描述。

格式:

改动内容

(简述做了什么,2-3 句)

为什么这样改

(背景和动机)

测试方式

(如何验证这次改动)

语气简洁,面向 code reviewer。
```

.claude/commands/explain.md — 解释代码

```markdown

description: 解释指定文件或函数的作用

解释 $ARGUMENTS 的作用:
- 整体职责是什么
- 关键逻辑怎么运作
- 有哪些值得注意的边界情况

面向刚接手这部分代码的开发者,说清楚"为什么"而不只是"做了什么"。
```

用户级 Commands:个人工作流

有些习惯是个人的,不适合强加给整个团队。放在 ~/.claude/commands/ 里:

~/.claude/commands/standup.md — 晨会准备
```markdown
根据今天的 git log 和未关闭的 TODO,整理一份晨会摘要:
- 昨天完成了什么
- 今天计划做什么
- 有没有阻塞项

控制在 5 句话以内。
```

~/.claude/commands/refactor.md — 重构建议
```markdown
分析 $ARGUMENTS,给出重构建议。

只提真正有价值的改动,不要为了重构而重构。
每条建议说明:能解决什么问题、改动量大不大、风险如何。
```

团队推广的关键:放进 git

自定义 command 最大的价值不在于个人提效,而在于让团队形成共同语言。

.claude/commands/ 提交进代码库,在 README 或 CLAUDE.md 里列出可用的 commands 和用途。新人 clone 仓库后,直接就有了团队积累的提示词资产,不需要各自摸索。

随着项目演进,commands 也会迭代——发现某个提示词效果不好,改一行提交上去,全团队生效。这是提示词工程在团队层面落地的最低成本方式。

目录结构参考

.claude/
├── commands/
│   ├── review.md      # 代码审查
│   ├── test.md        # 生成测试
│   ├── pr.md          # PR 描述
│   └── explain.md     # 代码解释
└── settings.json