跳转到内容

自定义 Slash Command:把团队规范变成 /xxx

📍 Claude Code 进阶 4/6 · 上一篇:← MCP(外部服务连接器)

git 仓库分发命令脚本给团队 4 个机器人,每个机器人都拿到同一个 /xxx 命令

那个让洁柔团队 4 个人都满意的瞬间

Section titled “那个让洁柔团队 4 个人都满意的瞬间”

某天下午,洁柔在 Slack 上看到队友 A 又发了一条:

“提交代码记得先跑 pytest tests/ && ruff check .,然后 commit message 用 feat:fix: 开头,最后 git push --no-verify 跳过 pre-commit hook 别用,直接走 CI…”

队友 A 已经第 5 次发这同一段话了。每个新人都要被这一段轰炸一次。

洁柔说:“为什么每个人都要打这一大段?能不能让 Claude 直接知道我们的规范?”

我说:“能。把这一段写成一个项目级 slash command,推到 git,所有同事 clone 项目就有 /commit 这个命令——他们打一句 /commit 自动按你们规范走。”

3 小时后,他们项目里多了一个 .claude/skills/commit/SKILL.md,所有人都不用再背规范——/commit 出来即是公司方法论。

这一篇讲的就是:把团队规范打包成 /xxx 命令,通过 git 推给全员

一个重要变化:自定义命令 = Skill

Section titled “一个重要变化:自定义命令 = Skill”

2026 年 Anthropic 官方把”自定义 Slash Command”合并进 Skill 系统了。意思是:

  • 你之前在 02-9 学的 Skill 写法现在就是 slash command
  • .claude/commands/deploy.md.claude/skills/deploy/SKILL.md 都创建 /deploy,效果一样
  • 新写命令推荐用 Skill 形式(.claude/skills/<name>/SKILL.md),因为支持更多功能(参数、动态上下文、子智能体执行等)

commands/ 跟 skills/ 两个文件夹合并成同一个

这一篇的重点跟 02-9 区别:

  • 02-9 教你写个人级简单 Skill(写周报 / 改简历)
  • 03-4(本篇) 教你写团队级 + 高级特性 Skill——参数 / 动态注入 / 跑在子智能体 / 按文件路径自动激活 / 通过 git 团队共享

3 种安装范围(scope):谁能用到这个命令

Section titled “3 种安装范围(scope):谁能用到这个命令”

3 层 scope / 项目 / 个人

范围路径谁能用
企业级(管理员下发)managed settings 配置整个组织所有人
个人级~/.claude/skills/<name>/SKILL.md你所有项目
项目级(本篇重点)项目/.claude/skills/<name>/SKILL.md这个项目所有协作者
插件提供<插件>/skills/<name>/SKILL.md装了这个插件的人

优先级:企业 > 个人 > 项目(同名时高优先级覆盖低优先级)。

项目级的杀手锏:.claude/skills/ 整个目录推到 git——队友 clone 项目就自动获得整套命令团队规范从口口相传变成 git 同步

新建文件 项目/.claude/skills/commit/SKILL.md:

---
description: 按本项目规范提交代码——跑测试、写 commit message、推到远程
disable-model-invocation: true
allowed-tools: Bash(pytest *) Bash(ruff *) Bash(git *)
---
按团队规范提交代码 $ARGUMENTS:
1. 先跑测试:`pytest tests/ -v`,**失败就停,不要提交**
2. 跑 lint:`ruff check .`,如果有错先修
3. `git status` + `git diff --staged` 看一遍改了啥
4. 写 commit message,**严格按 conventional commits 规范**:
- `feat:` 新功能
- `fix:` bug 修复
- `refactor:` 重构(不改行为)
- `docs:` 文档
- `test:` 测试
- 标题不超过 50 字
5. `git commit -m "..."` + `git push`
6. **永远不用 `--no-verify`** —— pre-commit hook 是为了保护你

推到 git:

Terminal window
git add .claude/skills/commit
git commit -m "feat: add /commit skill for team"
git push

队友 pull → /commit 立刻能用。整个团队规范一次同步。

命令模板里 3 个空槽接收外部数据填充

很多命令需要参数(比如 fix-issue 要传 issue 号)。Claude Code 提供几种参数引用方式:

写法含义
$ARGUMENTS整段用户输入(空格分隔的原文)
$0$ARGUMENTS[0]第 1 个参数
$1$ARGUMENTS[1]第 2 个参数
$N第 N+1 个参数
$自定义名用 frontmatter arguments: 命名的参数

例子 1:全部参数当一坨用

---
description: 按本项目规范修复一个 GitHub issue
---
修复 issue $ARGUMENTS,流程:
1. 读 issue 描述
2. 写代码
3. 加测试
4. 提交 PR

用:/fix-issue 123 优先紧急$ARGUMENTS = "123 优先紧急"

例子 2:按位置传

---
description: 从一个框架迁移组件到另一个框架
argument-hint: <组件名> <源框架> <目标框架>
---
把 $0 组件从 $1 迁移到 $2,保留所有现有行为跟测试。

用:/migrate-component SearchBar React Vue$0=SearchBar / $1=React / $2=Vue

例子 3:命名参数(更清晰)

---
description: 修一个 issue + 推到指定分支
arguments: [issue, branch]
---
修复 issue #$issue,推到 $branch 分支。

用:/fix-and-push 123 fix/login$issue=123 / $branch=fix/login

小窍门:argument-hint: <issue 号> <分支> 字段会在 Claude Code 的 / 菜单里显示提示,队友打到一半看得到该传什么。

例子 3:动态注入上下文(!command 语法)

Section titled “例子 3:动态注入上下文(!command 语法)”

命令文档里有放大镜从外部拉数据进来

最强大的特性——命令可以预先跑 shell 命令,把输出注入到 prompt 里,Claude 收到的就是「带数据的指令」

写法:在 SKILL.md 里用 !`命令` 行内,或者 ```! 代码块。

例子:让 Claude 总结当前 git diff

---
description: 总结当前未提交的改动,标出风险
---
## 当前改动
!`git diff HEAD`
## 任务
用 2-3 句话总结上面的改动,然后列出你看到的风险(比如没加错误处理 / 硬编码值 / 缺测试)。
如果 diff 为空,说没有未提交改动。

怎么工作:

  1. 用户打 /summarize-changes
  2. Claude Code 先跑 git diff HEAD —— 把输出替换到 !git diff HEAD“ 的位置
  3. Claude 看到的 prompt 已经包含真实 diff —— 不需要它自己去查

这就是动态上下文注入——比让 Claude “自己去看”快很多 + 准很多。

更强的多行命令(用 ```! 块):

## 环境信息
\`\`\`!
node --version
npm --version
git status --short
\`\`\`

4 格典型团队命令 / review-pr / test-all / summarize

直接抄走改你团队用:

---
description: 部署当前分支到生产环境
disable-model-invocation: true
allowed-tools: Bash(npm *) Bash(wrangler *) Bash(git *)
---
部署当前代码到生产 $ARGUMENTS:
1. 跑全套测试 `npm test`,失败立刻停
2. 跑生产构建 `npm run build`
3. 部署 `npx wrangler pages deploy dist`
4. 验证线上 URL 200
5. git tag 标记本次发布版本
6. 通知 Slack #releases 频道

⚠️ 建议加 disable-model-invocation: true —— 不让 Claude 自己决定要不要部署,只在用户主动打 /deploy 时才跑。

2️⃣ /review-pr — 自动 review 当前 PR

Section titled “2️⃣ /review-pr — 自动 review 当前 PR”
---
description: 自动 review 当前分支的改动,找 bug + 风格问题
context: fork
agent: Explore
allowed-tools: Bash(gh *) Bash(git *)
---
## PR 信息
- diff: !`gh pr diff`
- 评论: !`gh pr view --comments`
- 文件清单: !`gh pr diff --name-only`
## 任务
review 上面这个 PR,找:
1. 🐛 潜在 bug
2. 🎨 风格 / 命名问题
3. ⚡ 性能问题
4. 🧪 缺测试的地方
按严重程度排序输出。

context: fork + agent: Explore —— 跑在隔离的子智能体里,不污染主对话

---
description: 跑全套测试 + lint + 类型检查
allowed-tools: Bash(npm *) Bash(pytest *) Bash(ruff *) Bash(mypy *)
---
跑全套质量检查:
\`\`\`!
npm run lint 2>&1 | tail -20
\`\`\`
\`\`\`!
pytest tests/ -v --tb=short 2>&1 | tail -40
\`\`\`
\`\`\`!
mypy . 2>&1 | tail -10
\`\`\`
总结结果:
- ✅ 全过 → 报告"OK"
- ❌ 有失败 → 列出哪里失败 + 怎么修
---
description: 生成今天的开发日报
allowed-tools: Bash(git *)
---
## 今天的提交
!`git log --oneline --since="6am" --author="$(git config user.email)"`
## 今天的改动统计
!`git log --since="6am" --author="$(git config user.email)" --stat | tail -30`
## 任务
基于上面的提交记录,写一份日报(3-5 行),格式:
- 完成的事(主要)
- 进行中
- 明天的计划
风格:克制、动词起头、不夸大。

paths frontmatter 字段让 skill 只在你工作于匹配的文件时自动激活:

---
description: 写 Python 测试的规范
paths: tests/**/*.py
---
写 Python 测试要按本团队规范:
- 用 pytest 不用 unittest
- 测试函数名必须 `test_<被测>_<场景>_<预期>` 格式
- 用 fixture 不用 setUp
- mock 用 unittest.mock,不引入第三方
- ...

效果:当 Claude 在 tests/ 下改 .py 文件时,这个 skill 自动激活——团队规范”按上下文出现”。

新手把团队规范一股脑塞进一个 /dev-rules —— 800 行 markdown,每次激活都炸 context

修正:一个 skill 一个明确动作。规范太长就拆:/commit / /test-all / /deploy / /review-pr —— 各管一摊,互不重叠

❌ 坑 2:把敏感操作开放给 Claude 自动调用

Section titled “❌ 坑 2:把敏感操作开放给 Claude 自动调用”

不加 disable-model-invocation: true/deploy —— Claude 可能自己判断”代码看着 OK”就调用部署,误部署的事真发生过

修正:所有带副作用的命令(部署 / 发邮件 / 删数据)强制加 disable-model-invocation: true

❌ 坑 3:!command 命令吐出爆炸输出

Section titled “❌ 坑 3:!command 命令吐出爆炸输出”

!`git log` —— 项目历史几千条 commit,直接把 context 吃爆

修正:所有 !command 都加 | tail -N| head -N 限制输出大小:

!`git log --oneline | head -20`
Terminal window
git add .claude/skills/
git commit -m "feat: add team skills"
git push

队友 pull → 立刻可用。

Plugin 发布 —— 把 .claude/skills/ 打包成 plugin 推到 Anthropic Marketplace,任何团队都能 install

把单个 SKILL.md 发 gist —— 其他人 wget 一下放到自己目录就能用。

如果你今天就想让团队上手,这 5 个命令是性价比最高的:

命令干啥
/commit按规范提交代码
/review-pr自动 review PR
/test-all跑全套测试 + lint
/deploy一键部署生产
/standup写每日日报

把这 5 个文件放进项目 .claude/skills/,推到 git,团队所有协作者 5 分钟内就能用上

读完这一篇你应该会:

  • 理解 自定义 Slash Command 现在就是 Skill(merged)
  • 项目级 + git 同步 把规范推给全员
  • 参数 $ARGUMENTS / $0 / $1 / $自定义名 让命令灵活
  • !command 动态注入上下文 让命令带数据
  • paths 让 skill 按文件路径自动激活

接下来 03 区还有:

Subagents(子智能体):多个 Claude 并行干不同活(即将上线)

Git Worktree:多个 Claude 改同一个 repo 不打架(即将上线)

想第一时间收到,可以收藏 niuxue.org 主页。


你团队装的最实用的 slash command 是什么?发邮箱 [email protected],精选会进社区团队命令模板集。

评论

不记名、不需要注册——不要邮箱,不要手机号,不要任何身份信息,填个昵称就能留言。放心说。

  • 加载中 …