aaihubhub
Claude Code 小白进阶课:从第一次对话到可靠协作 · 第 3 课 / 共 20 课 ↗ AI 教程

03|Slash Commands:把高频提示词变成团队命令

创建项目级与个人级命令,理解参数、命名空间和加载过程。

kimi
LESSON BRIEFING03 / 20

创建项目级与个人级命令,理解参数、命名空间和加载过程。

好任务像一张清楚的维修单:现象、允许触碰的范围、完成标准缺一不可。“优化页面”不可验收,“把空状态改为中英双语并通过现有测试”才可以。

Claude Code 自定义 PR 命令运行效果

本课交付物

挑选一个文案或空状态改动,写出背景、范围、禁止项和验收标准。让 Claude Code先复述和列计划,批准后实施,再用 git diff 与测试结果逐条验收。


概览

Slash command 是你在 Claude 的交互式会话中用来控制行为的快捷方式,主要分为几类:

  • 内置命令:Claude Code 自带,例如 /help/clear/model
  • Skills:你自己定义的命令,基于 SKILL.md 文件,例如 /optimize/pr
  • 插件命令:来自已安装插件的命令,例如 /frontend-design:frontend-design
  • MCP prompts:来自 MCP server 的命令,例如 /mcp__github__list_prs

注意:自定义 slash command 已经合并进 Skills。.claude/commands/ 仍然可用,但现在更推荐使用 .claude/skills/。两者都会创建 /command-name 形式的快捷命令。完整参考请见 Skills 指南。

内置命令速查

Claude Code 目前提供 55+ 个内置命令和 5 个内置 Skills。你可以在 Claude Code 中输入 / 查看全部,也可以输入 / 后继续键入字母进行筛选。

命令 作用
/add-dir <path> 添加工作目录
/agents 管理 agent 配置
/branch [name] 将当前对话分支到新会话(别名:/fork。注意:/fork 在 v2.1.77 中更名为 /branch
/btw <question> 额外问题,不写入历史
/chrome 配置 Chrome 浏览器集成
/clear 清空对话(别名:/reset/new
/color [color|default] 设置提示栏颜色
/compact [instructions] 压缩对话,可附带聚焦指令
/config 打开设置(别名:/settings
/context 用彩色网格可视化上下文占用
/copy [N] 将 assistant 回复复制到剪贴板;w 会写入文件
/cost 查看 token 使用统计
/desktop 继续在桌面应用中处理(别名:/app
/diff 查看未提交更改的交互式 diff
/doctor 检查安装健康状态
/effort [low|medium|high|max|auto] 设置推理强度;max 需要 Opus 4.6
/exit 退出 REPL(别名:/quit
/export [filename] 将当前对话导出为文件或剪贴板内容
/extra-usage 配置额外用量以应对速率限制
/fast [on|off] 切换快速模式
/feedback 提交反馈(别名:/bug
/help 显示帮助
/hooks 查看 hook 配置
/ide 管理 IDE 集成
/init 初始化 CLAUDE.md,可设置 CLAUDE_CODE_NEW_INIT=1 启用交互式流程
/insights 生成会话分析报告
/install-github-app 配置 GitHub Actions app
/install-slack-app 安装 Slack app
/keybindings 打开快捷键配置
/login 切换 Anthropic 账号
/logout 退出当前 Anthropic 账号
/mcp 管理 MCP servers 和 OAuth
/memory 编辑 CLAUDE.md,切换自动记忆
/mobile 生成移动端扫码二维码(别名:/ios/android
/model [model] 选择模型,并可用左右箭头调整 effort
/passes 分享一周免费 Claude Code 使用权
/permissions 查看或更新权限(别名:/allowed-tools
/plan [description] 进入规划模式
/plugin 管理插件
/pr-comments [PR] 获取 GitHub PR 评论
/privacy-settings 隐私设置(仅 Pro/Max)
/release-notes 查看更新日志
/reload-plugins 重新加载当前插件
/remote-control 从 claude.ai 进行远程控制(别名:/rc
/remote-env 配置默认远程环境
/rename [name] 重命名会话
/resume [session] 恢复对话(别名:/continue
/review 已弃用,请改用 code-review 插件
/rewind 回退对话和/或代码(别名:/checkpoint
/sandbox 切换沙盒模式
/schedule [description] 创建/管理定时任务
/security-review 分析分支中的安全漏洞
/skills 列出可用 Skills
/stats 可视化每日使用量、会话和连续天数
/status 显示版本、模型、账号
/statusline 配置状态栏
/tasks 列出/管理后台任务
/terminal-setup 配置终端快捷键
/theme 更改颜色主题
/voice 切换按住说话语音输入

内置 Skills

以下 Skills 随 Claude Code 一起提供,调用方式和 slash command 一样:

Skill 作用
/batch <instruction> 使用 worktree 编排大规模并行修改
/claude-api 加载 Claude API 参考,便于为项目所用语言编写代码
/debug [description] 启用调试日志
/loop [interval] <prompt> 按固定间隔重复运行提示词
/simplify [focus] 审查改动文件的代码质量

已弃用命令

命令 状态
/review 已弃用,已被 code-review 插件替代
/output-style 自 v2.1.73 起弃用
/fork 已重命名为 /branch(别名仍可用,v2.1.77)
/vim 自 v2.1.92 起移除;改用 /config → Editor mode

最近变化

  • /fork 已更名为 /branch,但保留 /fork 作为别名(v2.1.77)
  • /output-style 已弃用(v2.1.73)
  • /review 已弃用,推荐改用 code-review 插件
  • 新增 /effort,其中 max 级别需要 Opus 4.6
  • 新增 /voice,用于按住说话语音输入
  • 新增 /schedule,用于创建和管理定时任务
  • 新增 /color,用于自定义提示栏颜色
  • /model 选择器现在显示人类可读标签,例如 “Sonnet 4.6”
  • /resume 支持 /continue 别名
  • MCP prompts 可作为 /mcp__<server>__<prompt> 命令使用,见 MCP Prompts as Commands

自定义命令(现已归入 Skills)

自定义 slash command 已经合并到 Skills。两种方式都可以通过 /command-name 调用:

方式 位置 状态
Skills(推荐) .claude/skills/<name>/SKILL.md 当前标准
旧式命令 .claude/commands/<name>.md 仍可使用

如果 skill 和 command 同名,skill 优先。例如同时存在 .claude/commands/review.md.claude/skills/review/SKILL.md 时,会使用 skill 版本。

迁移路径

你现有的 .claude/commands/ 文件可以继续直接使用。若要迁移到 Skills:

迁移前(Command):

.claude/commands/optimize.md

迁移后(Skill):

.claude/skills/optimize/SKILL.md

为什么用 Skills

  • 目录结构:可以把脚本、模板、参考文件打包在一起
  • 自动触发:相关场景下 Claude 可以自动调用
  • 调用控制:可以决定由用户、Claude 或两者共同调用
  • 子 agent 执行:可在隔离上下文中运行 skill
  • 渐进披露:只在需要时加载额外文件

把自定义命令做成 Skill

创建一个包含 SKILL.md 的目录:

mkdir -p .claude/skills/my-command

文件: .claude/skills/my-command/SKILL.md

# 我的命令

当该命令被触发时,Claude 需要遵循的说明。

1. 第一步
2. 第二步
3. 第三步

Frontmatter 参考

字段 作用 默认值
name 命令名(会变成 /name 目录名
description 简短说明,帮助 Claude 判断何时使用 第一段
argument-hint 自动补全时显示的参数提示
allowed-tools 命令可无权限使用的工具 继承
model 指定要使用的模型 继承
disable-model-invocation 若为 true,只有用户能调用,Claude 不能自动调用 false
user-invocable 若为 false,不会出现在 / 菜单中 true
context 设为 fork 时,在隔离 subagent 中运行
agent context: fork 时使用的 agent 类型 general-purpose
hooks Skill 范围内的 hooks(PreToolUse、PostToolUse、Stop)

参数

命令可以接收参数:

使用 $ARGUMENTS 接收全部参数:

---
name: fix-issue
description: 根据编号修复 GitHub issue
---

按团队编码规范修复 #$ARGUMENTS

调用 /fix-issue 123 时,$ARGUMENTS 会变成 123

使用 $0$1 等接收单个参数:

---
name: review-pr
description: 按优先级审查 PR
---

审查 #$0,优先级为 $1

调用 /review-pr 456 high 时,$0="456"$1="high"

用 Shell 命令注入动态上下文

在 prompt 发送前,可用 !`command` 先执行 shell 命令:

---
name: commit
description: 使用上下文创建 git commit
allowed-tools: Bash(git *)
---

## 上下文

- 当前 git 状态:!`git status`
- 当前 diff:!`git diff HEAD`
- 当前分支:!`git branch --show-current`
- 最近提交:!`git log --oneline -5`

## 你的任务

根据以上变更,创建一个 git commit。

文件引用

使用 @ 引用文件内容:

审查 @src/utils/helpers.js 中的实现
比较 @src/old-version.js 和 @src/new-version.js

插件命令

插件可以提供自定义命令:

/plugin-name:command-name

如果没有命名冲突,也可以直接使用 /command-name

示例:

/frontend-design:frontend-design
/commit-commands:commit

MCP Prompts 作为命令

MCP servers 可以把 prompt 暴露成 slash command:

/mcp__<server-name>__<prompt-name> [arguments]

示例:

/mcp__github__list_prs
/mcp__github__pr_review 456
/mcp__jira__create_issue "Bug title" high

MCP 权限语法

在权限中控制 MCP server 访问:

  • mcp__github - 访问整个 GitHub MCP server
  • mcp__github__* - 通配符访问全部工具
  • mcp__github__get_issue - 访问某个特定工具

命令架构

graph TD
    A["用户输入:/command-name"] --> B{"命令类型?"}
    B -->|内置| C["执行内置命令"]
    B -->|Skill| D["加载 SKILL.md"]
    B -->|插件| E["加载插件命令"]
    B -->|MCP| F["执行 MCP Prompt"]

    D --> G["解析 Frontmatter"]
    G --> H["替换变量"]
    H --> I["执行 Shell 命令"]
    I --> J["发送给 Claude"]
    J --> K["返回结果"]

命令生命周期

sequenceDiagram
    participant User
    participant Claude as Claude Code
    participant FS as File System
    participant CLI as Shell/Bash

    User->>Claude: 输入 /optimize
    Claude->>FS: 搜索 .claude/skills/ 和 .claude/commands/
    FS-->>Claude: 返回 optimize/SKILL.md
    Claude->>Claude: 解析 frontmatter
    Claude->>CLI: 执行 !`command` 替换
    CLI-->>Claude: 命令输出
    Claude->>Claude: 替换 $ARGUMENTS
    Claude->>User: 处理 prompt
    Claude->>User: 返回结果

本文件中的可用命令

这些示例命令可以作为 skill 或旧式命令安装。

1. /optimize - 代码优化

分析性能问题、内存泄漏和优化机会。

用法:

/optimize
[粘贴你的代码]

文件: optimize.md

2. /pr - Pull Request 准备

引导你完成 PR 准备清单,包括 lint、测试和提交格式整理。

用法:

/pr

文件: pr.md

截图:

3. /generate-api-docs - API 文档生成器

从源码生成完整的 API 文档。

用法:

/generate-api-docs

文件: generate-api-docs.md

4. /commit - 带上下文的 Git Commit

基于仓库中的动态上下文创建 git commit。

用法:

/commit [可选说明]

文件: commit.md

5. /push-all - 暂存、提交并推送

会先暂存所有改动,再提交,并带安全检查地推送到远端。

用法:

/push-all

文件: push-all.md

安全检查:

  • 密钥文件:.env**.key*.pemcredentials.json
  • API Keys:识别真实 key 与占位符
  • 大文件:未使用 Git LFS 且大于 10MB
  • 构建产物:node_modules/dist/__pycache__/

6. /doc-refactor - 文档重构

重组项目文档,让结构更清晰、可访问性更好。

文件: doc-refactor.md

7. /setup-ci-cd - CI/CD 流水线配置

实现 pre-commit hooks 和 GitHub Actions 质量保障流程。

文件: setup-ci-cd.md

8. /unit-test-expand - 测试覆盖率扩展

针对未测试分支和边界情况,提升测试覆盖率。

文件: unit-test-expand.md


本站实战工作台

“优化一下”为什么无法交付

模糊需求会把产品决策藏进实现过程。假设你说“把空状态优化一下”,Agent 必须猜文案、颜色、移动端布局、语言范围和验收方法。最后即使页面变了,你也很难判断它是完成需求,还是碰巧做出一个可看的版本。

把需求改写为可观察结果:“文章搜索无结果时,中文显示指定提示,英文显示对应翻译;保留当前筛选条件;桌面和 390px 宽度不溢出;现有测试与构建通过。”这时每个动作都有边界,每个结论都有验证方式。

写一张四格任务卡

在动代码前写四部分:

格子 示例
背景 用户误以为页面坏了,因为搜索无结果时区域为空
范围 空状态组件与中英文语言文件
禁止项 不改搜索 API,不重做整个列表,不升级依赖
验收 两种语言正确,查询参数保留,响应式无溢出,测试通过

任务卡不是提示词技巧,而是让你先完成产品思考。

让 Agent 先复述,不要立刻写

要求它先找到相关页面、语言 key 和测试,复述理解并列出最小文件集合。重点检查它有没有把推断写成事实。例如它可能认为项目使用 Tailwind,但仓库实际是 scoped CSS;这种错误应在计划阶段暴露。

一个好计划按结果分步,而不是按动作堆砌:先确认现有空状态路径;再补齐语言契约;然后实现视图;最后运行定向测试、全量测试和浏览器检查。每一步都能单独判断成功或失败。

只批准最小修改

实施前保存 git status。改动后先看 git diff --stat,再看完整 diff。统计“预期文件”和“意外文件”:

git status --short
git diff --stat
git diff -- locales/zh.json locales/en.json components/EmptyState.vue

如果 Agent 顺手格式化了整份语言文件,不要因为功能可用就接受。大面积噪声会掩盖真实错误,也增加未来合并风险。

验证不是最后跑一次测试

验证要对应任务卡。语言 key 完整性测试证明结构一致,却不能证明页面在 390px 不溢出;浏览器截图能证明视觉,却不能证明查询参数保留;两者都需要。

建议证据顺序:定向测试快速反馈、全量测试发现连带影响、生产构建检查打包、浏览器走用户路径、最后复查 diff 与工作区。每一项失败都回到对应步骤,不要一口气重写。

主动制造一个需求变化

完成后把验收中的一句改掉,例如“按钮文案改为清除筛选,并真正清空查询参数”。观察 Agent 是否先更新理解和测试,还是只改可见文字。真实项目经常在实现途中变化,这个实验能检查协作是否仍由验收驱动。

交付说明应该短而可核验

最终说明只需回答:结果是什么、改了哪些关键位置、跑了哪些检查、还有什么限制。不要复述长聊天记录,也不要用“应该”“大概”替代证据。

完成本课的标准不是第一次改动零错误,而是你能把模糊想法变成一条别人可以复查的工程链路。