内容来源:Kelvin Mai。https://kelvinmai.io/blog/custom-claude-code-slash-commands
原题:Building Custom Slash Commands in Claude Code
原发布时间:2026-03-09

使用代码审查插件作为完整示例,实战构建 Claude Code 自定义斜杠命令,涵盖分支分析、Markdown 报告和反馈实施工作流。

兼容性与准确性说明(核对日期:2026-07-20):原文使用旧版 .claude/commands/ 路径,该路径仍然受支持,不过当前 Claude Code 命令文档建议新的可复用工作流使用 Skills。allowed-tools 会预先批准列出的工具,无需提示;它不会把命令限制在这些工具中。自定义 /code-review 会遮蔽 Claude Code 的同名内置 Skill。可以在一条消息中点名多项 Skills,但这并非 Shell 管道,也不能保证前一项的输出会成为后一项的输入;参见斜杠命令参考。最后,示例中的独立命令文件只是自定义配置,不是按照当前插件格式封装的插件。下文完整保留来源正文。

路径注意:原文多次把报告写入绝对路径 /dev/...,并称 /dev 是位于本地且被 Git 忽略的目录。在 Unix 中,/dev 是操作系统设备目录,并不位于仓库中。应改用仓库相对路径 dev/.dev/ 或其他被 Git 忽略的项目目录。下文仍按原样保留 /dev 示例。

文章社交分享卡片

在 Claude Code 中构建自定义斜杠命令

我已经使用 Claude Code 作为日常主力工具一段时间了,其中最被低估的功能之一,就是可以定义自己的斜杠命令。这些命令不只是快捷入口,而是完整的多步骤智能体工作流:理解你的项目、运行 Shell 命令、读取文件并写出结果,只需输入 /code-review 之类的内容即可触发。

本文将从零开始构建一个代码审查插件。完成后,你会拥有两条命令:/code-review 读取分支 Diff、查找问题并把报告写入磁盘;/implement-feedback 读取这份报告并真正修复问题。

自定义斜杠命令如何工作

Claude Code 会在两个位置查找斜杠命令:

项目级:仓库根目录中的 .claude/commands/(提交到 Git,与团队共享)
全局~/.claude/commands/(可以用于所有项目的个人命令)

每条命令都是一个 Markdown 文件。文件名就是命令名,因此,.claude/commands/code-review.md 会注册 /code-review。文件内容是调用时 Claude 收到的提示词,而 $ARGUMENTS 则是命令名后所有输入的占位符。

命令还支持用于元数据的 YAML Frontmatter:

---
description: 命令列表中显示的简短说明
argument-hint: [自动补全中显示的可选提示]
allowed-tools: [Bash, Read, Write, Edit, Glob]
---

原文称,allowed-tools 字段会限制命令能使用的工具。这对于希望保持只读的命令,或者与团队共享并希望严格限定范围的命令很有用。

构建 /code-review

创建 .claude/commands/code-review.md

---
description: 审查当前分支的变更,并把报告写入 /dev
allowed-tools: [Bash, Read, Write, Glob]
---

# 代码审查

对照 main 审查当前分支上的变更。

## 步骤

1. 运行 `git rev-parse --abbrev-ref HEAD` 获取当前分支名称
2. 运行 `git log origin/main..HEAD --oneline` 列出这个分支中的提交
3. 运行 `git diff origin/main..HEAD` 获取完整 Diff
4. 分析变更,查找:
   - 逻辑错误或 Bug
   - 安全隐患(注入、身份验证缺口、密钥泄漏)
   - 系统边界上缺失的错误处理
   - 性能问题(N+1 查询、不必要的重复渲染、阻塞调用)
   - 与现有代码库风格不一致的地方
5. 使用下方结构,把详细报告写入 `/dev/code-review-{branch-name}.md`
6. 对发现的每个问题,另写一节专业、建设性的 PR 审查评论,
   可以直接粘贴到 GitHub

## 报告结构

输出文件使用以下结构:

```markdown

# 代码审查:{branch-name}

## 摘要

简短的整体评价。

## 发现的问题

### 严重

• ……<br>

### 警告

• ……<br>

### 建议

• ……<br>

## PR 审查评论

针对每个问题编写专业、可直接复制粘贴的评论,语气如同
在 GitHub 上进行审查。表述直接,但要有建设性。
```

现在,当我在仓库中运行 /code-review 时,Claude 会:

1、调用 Git Shell 命令获取分支名称与完整 Diff
2、按需读取已变更文件,以掌握完整上下文
3、把结构化 Markdown 文件写入 /dev/code-review-{branch}.md

原文称,/dev 目录很适合这项用途:它位于本地、不提交,而且容易找到。作者将其加入 .gitignore,让报告留在自己的机器上。

PR 评论智能体

PR 审查评论章节才是这套方案真正有用的地方。我要求它像在 GitHub 上进行审查一样编写评论,而输出效果出乎意料地好:它会指出准确的行上下文、解释问题,并以不居高临下的语气建议修复方案。

下面是一条针对缺失 Null 检查生成的评论:

## PR 审查评论

**`src/lib/utils/parse.ts`——`parseConfig` 函数**

`JSON.parse()` 的返回值类型为 `any`,随后未经验证就立即展开。
如果配置文件包含意外字段,或者解析静默失败,格式错误的状态就会
传播到应用其余部分。

建议在展开之前使用 Zod 或手动守卫进行验证:

```ts
const raw = JSON.parse(content);
if (!isValidConfig(raw)) throw new Error('Invalid config shape');
```

粘贴,完成。它无法取代真正的代码审查,却可以成为扎实的第一轮检查——尤其适合在创建 PR 之前审查自己的工作,需要一个全新视角时使用。

构建 /implement-feedback

报告生成后,我还需要第二条命令读取报告并开始修复。创建 .claude/commands/implement-feedback.md

---
description: 根据 /dev 中最新的代码审查报告实施修复
allowed-tools: [Bash, Read, Write, Edit, Glob]
---

# 实施反馈

读取最近的代码审查报告,并实施其中建议的修复。

## 步骤

1. 使用 Glob 查找所有匹配 `/dev/code-review-*.md` 的文件
2. 按修改时间排序,并读取最新文件
3. 首先处理**严重**问题,然后处理**警告**
4. 对每个问题:
   - 读取相关文件,理解完整上下文
   - 应用修复
   - 继续下一个问题——除非变更具有破坏性或存在歧义,否则不要在每次修复之间请求确认
5. 跳过**建议**章节,除非 $ARGUMENTS 包含 "all"
6. 完成后汇总所作变更

## 说明

- 优先进行最小化、有针对性的编辑——只修复问题,不要重构周围代码
- 如果问题不清楚,或者修复需要大规模结构变更,则留下 TODO 注释,
  并在摘要中说明

运行 /implement-feedback 后,它会找到最新报告,处理其中的严重问题和警告,再汇总所作变更。运行 /implement-feedback all 则还会处理建议章节。

编写优质命令的建议

下面是我在构建这些命令时学到的几点:

明确输出格式。 要求的结构越具体,输出就越稳定,也越容易解析。“写一份报告”这样的模糊指令,只会产生模糊报告。

使用 $ARGUMENTS 提供变化。 它只是简单的字符串替换,却能提供很大灵活性。我用它传递 all 之类的标志、覆盖分支名称,或者传入指定文件路径。

严格控制 allowed-tools 如果命令只需要读取,就不要给予写权限。这样运行更安全,行为也更容易理解。

项目级与全局。 项目专用命令(例如了解 /dev 目录约定的命令)应放在 .claude/commands/;希望在所有地方使用的命令(例如通用提交消息助手)则放在 ~/.claude/commands/

手动串联命令。 没有内置命令管道,但可以依次运行 /code-review/implement-feedback。共享的 /dev 目录就是两者之间的交接点。

总结

自定义斜杠命令能把 Claude Code 从通用助手变成适应真实工作流的工具。本文的代码审查示例可能只花了 20 分钟配置,此后几乎每次创建 PR 之前,我都会使用。

这个模式的泛化能力很强——凡是可以描述为“读取一些上下文,进行一些推理,再写出一些结果”的事情,都很适合做成斜杠命令。数据库迁移审查、生成 Changelog、依赖审计报告——掌握模式之后,构建这些命令都很快。