用途
Command Development 用于在 Claude Code 中创建和编写斜杠命令。斜杠命令是包含提示词的 Markdown 文件,用户调用后其内容成为 Claude 的指令。命令的价值在于:可复用(一次定义多次使用)、一致性(标准化常见工作流)、可分享(在团队或项目间分发)、高效(快速访问复杂提示词)。该技能适合需要把重复性提示词固化为命令的场景。
命令的基本概念
命令是写给 Claude 的指令,不是写给用户的说明。当用户调用 /command-name 时,命令内容变成 Claude 的指令,因此应写成对 Claude 的行动要求。
命令与技能(skill)通过同一个 Skill 工具调用,区别在于组织复杂度:命令位于 commands/ 目录,是单个 .md 文件,不含附带资源,适合快速提示词和简单工作流;技能位于 skills/name/ 目录,采用 SKILL.md 加可选资源(scripts/、references/、examples/),适合复杂知识和打包资产。当需要脚本、参考文件或渐进式披露时,可将命令升级为技能。
调用控制对两者均适用:disable-model-invocation: true 表示仅用户可调用(用于部署、提交等有副作用的操作);默认情况下 Claude 和用户都可调用。
命令位置
- 项目命令:.claude/commands/,在特定项目中可用,在 /help 中标记为 (project),适合团队工作流和项目专属任务。
- 个人命令:~/.claude/commands/,在所有项目中可用,在 /help 中标记为 (user),适合个人工作流和跨项目工具。
- 插件命令:plugin-name/commands/,安装插件后可用,在 /help 中标记为 (plugin-name),适合插件专属功能。
文件格式与 frontmatter 字段
命令是扩展名为 .md 的 Markdown 文件,基础命令无需 frontmatter。可通过 YAML frontmatter 添加配置,字段包括:
- description:在 /help 中显示的简要描述,类型为字符串,默认取命令提示词首行,建议 60 字符以内的清晰可操作描述。
- allowed-tools:指定命令可使用的工具,类型为字符串或数组,默认继承会话。可写具体工具(Read, Write, Edit)、限定范围的 Bash(Bash(git:*))或 *(所有工具,少用)。
- model:指定命令执行所用模型,类型为字符串,取值可为简写(sonnet、opus、haiku)或完整模型 ID(例如 claude-sonnet-4-5-20250929),默认继承会话。简写名称使用各模型系列当前的默认版本。
- argument-hint:记录预期参数以支持自动补全,类型为字符串,默认无。
- disable-model-invocation:阻止 Skill 工具以编程方式调用命令,类型为布尔值,默认 false。
动态参数
- $ARGUMENTS:把全部参数捕获为单个字符串。例如 /fix-issue 123 会展开为 “Fix issue #123 ...”。
- 位置参数 $1、$2、$3:分别捕获单个参数。例如 /review-pr 123 high alice 对应 $1=123、$2=high、$3=alice。
- 可混用位置参数与剩余参数,例如 “Deploy $1 to $2 environment with options: $3”。
文件引用
使用 @ 语法把文件内容纳入命令。例如 “Review @$1 for: ...” 时,Claude 会在处理命令前读取指定文件。也支持多文件引用(如同时比较 @src/old-version.js 与 @src/new-version.js)和静态文件引用(如 @package.json、@tsconfig.json)。
命令中的 Bash 执行
命令可内联执行 bash 以动态收集上下文,语法是在反引号前使用 [BANG] 前缀。工作方式:在 Claude 看到命令之前,Claude Code 先执行 [BANG] 代码块,bash 输出替换整个表达式,Claude 收到展开后的实际值。例如命令文件中包含当前分支与变更文件数的命令,最终 Claude 收到的是带实际值(如“3 changed files on branch feature/add-auth”)的文本。该语法属于加载时上下文注入,命令在加载时执行,输出成为提示词中的静态文本,与 Claude 在运行时通过 Bash 工具执行命令不同。它适用于收集 git 状态、环境变量、配置文件等影响起始状态的上下文。技能文档中的示例有意省略 [BANG] 前缀,是因为技能内容加载进 Claude 上下文时 [BANG] 加命令名会实际执行;编写真实命令文件时应加上该前缀。
命令组织
- 扁平结构:直接放在 .claude/commands/ 下,适合 5–15 个命令、无明确分类的情况。
- 命名空间结构:使用子目录分组,如 ci/、git/、docs/,在 /help 中显示命名空间,便于查找相关命令,适合 15 个以上命令且有明确分类的情况。
最佳实践
- 命令设计:单一职责;描述清晰;需要时用 allowed-tools 明确依赖;始终提供 argument-hint;采用动词-名词命名(如 review-pr、fix-issue)。
- 参数处理:校验参数、提供默认值、说明格式、处理边界情况。
- 文件引用:使用明确路径、处理文件缺失、使用项目相对路径、考虑用 Glob 工具匹配模式。
- Bash 命令:限定范围(用 Bash(git:) 而非 Bash())、使用安全命令、处理错误、保持快速。
- 文档:添加注释、提供示例、列出依赖、标注破坏性变更。
常见模式
- 审查模式:通过 git diff 获取变更文件并逐项审查代码质量、缺陷、测试覆盖、文档需求。
- 测试模式:运行指定测试文件并分析结果、为失败提供修复建议。
- 工作流模式:围绕 PR 编号执行获取、审查、检查、批准或请求修改的完整流程。
故障排查
- 命令不出现:检查目录、.md 扩展名、Markdown 格式,重启 Claude Code。
- 参数不生效:检查 $1、$2 语法、argument-hint 是否匹配、是否存在多余空格。
- Bash 执行失败:检查 allowed-tools 是否包含 Bash、反引号内命令语法、先在终端测试、确认所需权限。
- 文件引用不生效:检查 @ 语法、路径有效性、是否允许 Read 工具,使用绝对或项目相对路径。
插件相关特性与集成
插件命令可通过环境变量 ${CLAUDE_PLUGIN_ROOT} 获取插件绝对路径,用于引用插件文件、执行插件脚本、加载插件配置、访问插件模板,便于跨安装和跨系统移植、避免硬编码路径。插件命令从 commands/ 目录自动发现,支持子目录命名空间。插件集成方面可与 Agents、Skills、Hooks 等组件组合,形成多组件、分阶段的工作流。此外还包括校验模式(参数校验、文件存在性、插件资源、错误处理)以及使用 AskUserQuestion 进行交互式用户输入等模式。
限制
资料中未说明该技能的具体收费方式、价格、支持的平台范围或效果保证,这些信息暂未提供。