自定义斜杠命令:让 Claude Code 一键帮你 Git 提交
自定义斜杠命令:让 Claude Code 一键帮你 Git 提交
Prorise第六章. 自定义斜杠命令
本章摘要:每次让 Claude 生成 Git 提交信息,你都要打一长串提示词?每次让它按特定格式输出,你都要重复说明?自定义斜杠命令让你把这些常用操作封装成一键命令——输入 /commit,Claude 就知道该怎么做。
本章学习路径
| 阶段 | 内容 | 解锁能力 |
|---|---|---|
| 第一阶段 | 命令文件结构 | 理解斜杠命令的存放位置和优先级 |
| 第二阶段 | 高级特性 | 掌握参数传递、Bash 执行、文件引用 |
| 第三阶段 | 实战创建 | 完成一个 Git 提交命令的配置 |
6.1. 命令文件结构
上一章我们学会了创建子代理——专门处理特定任务的 “专家”。但子代理的触发是 隐式的(Claude 自动判断何时使用)。
“我想要一个更直接的方式——我输入 /xxx,Claude 就执行特定的操作。”
这就是 自定义斜杠命令 的用途。
6.1.1. 项目命令 vs 个人命令
斜杠命令分为两种:
| 类型 | 存放位置 | 作用范围 | 是否共享 |
|---|---|---|---|
| 项目命令 | .claude/commands/ | 当前项目 | 是(提交到 Git) |
| 个人命令 | ~/.claude/commands/ | 所有项目 | 否 |
创建方式:
每个命令是一个 Markdown 文件,文件名就是命令名。
1 | # 创建项目命令 |
创建后,你就可以使用 /perf 和 /cn 命令了。
6.1.2. 命名空间与优先级
命名空间:
你可以用子目录来组织命令。子目录名会显示在命令描述中,但不影响命令名。
1 | .claude/commands/ |
优先级:
当项目命令和个人命令同名时,项目命令优先。
例如,如果 .claude/commands/deploy.md 和 ~/.claude/commands/deploy.md 都存在,/deploy 会执行项目版本。
6.1.3. 本节小结
斜杠命令的存放规则:
| 位置 | 命令类型 | 优先级 |
|---|---|---|
.claude/commands/ | 项目命令 | 高 |
~/.claude/commands/ | 个人命令 | 低 |
6.2. 高级特性
基础的斜杠命令只是一段静态的提示词。但 Claude Code 支持更强大的特性,让命令变得动态、灵活。
6.2.1. 参数传递
$ARGUMENTS:获取所有参数
1 | # .claude/commands/fix-issue.md |
使用方式:
1 | › /fix-issue 123 |
Claude 收到的提示词是:“修复 Issue #123,遵循我们的代码规范。”
$1, $ 2, $3…:获取单个参数
1 | # .claude/commands/compare.md |
使用方式:
1 | › /compare src/old.js src/new.js 性能 |
Claude 收到的提示词是:“比较 src/old.js 和 src/new.js 两个文件的差异,重点关注性能方面。”
6.2.2. Bash 命令执行
使用 ! 前缀可以在命令中执行 Bash 命令,并将输出嵌入到提示词中。
1 | # .claude/commands/review.md |
工作原理:
- 执行
/review时,Claude Code 先运行git diff --staged - 将命令输出替换到提示词中
- Claude 收到的是包含实际 diff 内容的完整提示词
使用 Bash 执行功能时,必须在 frontmatter 中声明 allowed-tools,否则命令不会执行。
6.2.3. 文件引用
使用 @ 前缀可以引用文件内容。
1 | # .claude/commands/explain.md |
工作原理:
- 执行
/explain时,Claude Code 读取src/core/engine.js的内容 - 将文件内容替换到提示词中
- Claude 收到的是包含实际代码的完整提示词
6.2.4. Frontmatter 配置
命令文件支持 YAML frontmatter,用于配置命令的行为。
1 | --- |
可用配置项:
| 配置项 | 作用 | 示例 |
|---|---|---|
allowed-tools | 允许使用的工具 | Bash(git:*), Read |
description | 命令描述(显示在帮助中) | "生成提交信息" |
model | 使用的模型 | haiku |
argument-hint | 参数提示 | [issue-id] |
6.2.5. 本节小结
斜杠命令的高级特性:
| 特性 | 语法 | 用途 |
|---|---|---|
| 参数传递 | $ARGUMENTS, $1, $2 | 动态输入 |
| Bash 执行 | !`command` | 获取系统信息 |
| 文件引用 | @path/to/file | 嵌入文件内容 |
| Frontmatter | --- 包裹的 YAML | 配置命令行为 |
6.3. 实战:创建 Git 提交命令
理论讲完了,现在来实战创建一个自动生成 Git 提交信息的命令。
6.3.1. 需求分析
我们想要一个 /commit 命令,它能够:
- 自动读取当前的
git diff --staged内容 - 根据变更内容生成规范的提交信息
- 遵循 Conventional Commits 规范(
feat:,fix:,docs:等) - 自动执行
git commit
6.3.2. 编写命令文件
步骤 1:创建目录
1 | mkdir -p .claude/commands |
步骤 2:创建命令文件
创建文件 .claude/commands/commit.md:
1 | --- |
6.3.3. 测试与使用
步骤 1:暂存一些变更
1 | git add src/some-file.js |
步骤 2:执行命令
1 | › /commit |
6.3.4. 本节小结
创建自定义斜杠命令的流程:
| 步骤 | 操作 | 产出 |
|---|---|---|
| 需求分析 | 明确命令的功能和输入输出 | 功能清单 |
| 编写命令 | 创建 .claude/commands/xxx.md | 命令文件 |
| 配置权限 | 在 frontmatter 中声明 allowed-tools | 工具白名单 |
| 测试使用 | 执行 /xxx 验证效果 | 确认可用 |
6.4. 本章总结与命令速查
本章我们学习了自定义斜杠命令——把常用操作封装成一键命令。核心思想是:减少重复输入,提高工作效率。
6.4.1. 场景速查:遇到这些情况,直接用
场景 1:创建简单的提示词命令
创建 .claude/commands/cn.md:
1 | 用中文回答我的问题,语言要通俗易懂。 |
使用:/cn 什么是闭包?
场景 2:创建带参数的命令
创建 .claude/commands/explain.md:
1 | 用 $1 的方式解释以下概念:$ARGUMENTS |
使用:/explain 类比 什么是递归
场景 3:创建读取文件的命令
创建 .claude/commands/review-file.md:
1 | 审查以下代码文件,找出潜在问题: |
使用:/review-file src/utils.js
场景 4:创建执行 Bash 的命令
创建 .claude/commands/status.md:
1 | --- |
使用:/status
场景 5:查看所有可用命令
1 | › /help |
所有自定义命令会显示在帮助列表中。








