跳转到内容

斜杠命令 Commands

你有没有过这样的经历:每次让 Claude 帮你提 PR,都要重复一遍「先跑测试、再生成 changelog、再按这个格式写 commit、再推上去」?

斜杠命令就是解决这个问题的。它是可复用的快捷键——把一段反复打的指令封装成 /xxx,敲一下就执行。Claude Code 自带 60 多个内置命令,还能自定义无限多个。

内置命令覆盖了日常 80% 的场景。最常用的几个:

命令 作用
/help 显示所有命令
/clear 清空对话历史
/compact [focus] 压缩对话(可指定聚焦点)
/init 为项目生成 CLAUDE.md
/memory 编辑 CLAUDE.md
/model <alias> 切换模型
/config 打开设置界面
/permissions 查看/更新权限
/cost 显示 token 用量
/status 显示版本、模型、账号
/review 请求代码审查
/rewind 回退对话和/或代码
/agents 管理子代理
/hooks 管理钩子
/mcp 管理 MCP 服务器
/sandbox 启用沙箱
/vim 进入 vim 模式

/help 能看到完整列表。这些命令直接敲就行,不用配置。

自定义命令:把反复打的指令封装起来

Section titled “自定义命令:把反复打的指令封装起来”

真正强大的是自定义命令。建一个 markdown 文件,写上你想让 Claude 做什么,就能用 /文件名 调用。

自定义命令分两级,和记忆系统类似:

级别 位置 作用域
项目级 .claude/commands/<name>.md 当前项目,随仓库走,团队共享
用户级 ~/.claude/commands/<name>.md 你的所有项目

比如建一个 .claude/commands/ship.md

---
description: 提交并推送当前改动,跑完测试再提 PR
allowed-tools: Bash(git:*), Bash(npm test)
---
请执行以下步骤:
1. 运行 `npm test`,确保全部通过
2. 用 conventional commits 格式提交所有改动
3. 推送到当前分支
4. 帮我生成 PR 描述,总结这次改了什么、为什么

之后在对话里敲 /ship,Claude 就会照这个剧本走一遍。团队把 .claude/commands/ 提交进 git,所有人共享同一套快捷键。

命令文件顶部的 frontmatter(YAML)支持几个字段:

字段 作用
description 命令的描述,显示在命令列表里
allowed-tools 限定这个命令能用的工具
argument-hint 提示用户该传什么参数

frontmatter 是可选的,但加上 description 能让你在 / 列表里一眼看出每个命令是干嘛的。

命令可以接受参数,用 $ARGUMENTS 占位。比如建一个 .claude/commands/explain.md

---
description: 解释某个函数或文件
---
请详细解释 $ARGUMENTS 的作用、参数、返回值,并给一个使用示例。

调用时:

/explain src/auth/login.ts

$ARGUMENTS 会被替换成 src/auth/login.ts。这样一条命令就能复用到任何文件上。

在命令文件里,你想让某段 bash 先跑、结果再喂给 Claude,用 ! 前缀:

分析当前未提交的改动:
!git diff --stat
请总结这次改动涉及哪些模块、可能影响什么。

! 开头的行会被直接执行,输出作为上下文塞给 Claude。这比让 Claude 自己去跑命令更可控——你提前把数据准备好。

命令里可以用 @ 引用文件,把内容带进来:

---
description: 按团队规范审查 PR
---
请按以下规范审查当前改动:
@docs/review-checklist.md
改动内容:
!git diff

这样审查清单单独维护在 docs/review-checklist.md,命令文件只管「怎么审」,不写死清单内容。

三种来源:内置 / 自定义 / 插件 / MCP

Section titled “三种来源:内置 / 自定义 / 插件 / MCP”

斜杠命令不止来自你自己写的文件,一共有四种来源:

来源 怎么来 例子
内置 Claude Code 自带 /help/compact/review
自定义 你写在 .claude/commands/ /ship/explain
插件 装了 Plugins 后带进来 由插件定义
MCP 连了 MCP 服务器后带进来 /mcp__server__prompt

MCP 服务器提供的命令,命名格式是 /mcp__服务器名__命令名(注意是双下划线)。比如你连了一个叫 github 的 MCP 服务器,它有个 create_issue 命令,那就用:

/mcp__github__create_issue

这个格式有点长,但好处是一眼能看出这是哪个服务器的命令,不会和你的自定义命令撞名。

这是最常被问的问题。一句话区分:

  • 命令你主动触发,敲 /xxx 才执行。适合「我想干一件特定的事」。
  • SkillsClaude 自己判断要不要用,按需展开。适合「这种场景下应该这么做」。

举例:

  • /ship 提交推送——这是你主动发起的动作,用命令。
  • 「写 React 组件时遵守 hooks 规则」——这是Claude 写代码时该自动遵守的规范,用 Skill。

要你按下才动,用命令;要 Claude 自己想起来,用 Skill。两者的底层都是 markdown 文件,但触发方式和适用场景不同。详见 Skills

一个实战:把 9 步流程封成一条命令

Section titled “一个实战:把 9 步流程封成一条命令”

社区里流行的「9 步纪律化循环」(Explore → Plan → 写 CLAUDE.md → 拆小块 → Hooks → 测试 → 审查 → 修复闭环 → 打包),完全可以封成一条命令:

---
description: 按纪律化流程完成一个功能
allowed-tools: Bash(npm:*), Bash(git:*), Edit, Write
---
我要实现:$ARGUMENTS
请按以下流程来:
1. 用 Explore 子代理先探索相关代码
2. 切到 Plan 模式制定方案,等我确认
3. 拆成小块实现,每块写完跑测试
4. 实现完用审查子代理挑刺
5. 修复-重测-重审,直到审查通过

/add-feature 用户登录限流,整个流程就跑起来了。这就是命令的威力——把纪律封装成一键

斜杠命令是可复用的快捷键:内置 60+ 开箱即用,自定义放 .claude/commands/,frontmatter 控工具,$ARGUMENTS 传参数,! 执行 bash,@ 带文件,插件和 MCP 还能再扩。


下一站,去 技能 Skills 看看「按需展开的抽屉」和命令有什么不同。🚀