用途
claude-commands 用于创建自定义斜杠命令,以可复用的提示词和工作流扩展 Claude Code。当需要创建斜杠命令、编写命令文件,或涉及 "/command"、".claude/commands"、"$ARGUMENTS"、"create command" 等场景时使用本技能。
命令与技能的区别
- 命令(本技能):由用户调用的可复用提示词;显式调用,如 /command-name args;位于 commands/ 目录;结构为单个 .md 文件;支持 $1、$2、$ARGUMENTS 参数。
- 技能:由模型根据上下文自动触发的能力包;位于带 SKILL.md 的 skills/ 目录;结构为含资源的目录;无参数系统。
命令由用户发起,技能由模型发起。
主要能力
快速开始
基础命令:创建 .claude/commands/review.md,frontmatter 中写 description,正文写审查要求,使用 /review 调用。
带参数命令:创建 .claude/commands/fix-issue.md,frontmatter 中写 description 和 argument-hint: <issue-number>,正文用 $1 引用参数,使用 /fix-issue 123 调用。
带上下文命令:创建 .claude/commands/commit.md,frontmatter 中写 description 和 allowed-tools: Bash(git *),正文用反引号包裹 git 命令并在开头加 ! 进行预处理,使用 /commit 调用。
工作流概览
- 发现:定义目的、范围和目标用户。
- 设计:选择特性和配置。
- 实现:编写 frontmatter 和内容。
- 验证:对照质量标准检查。
阶段一:发现
编写前需明确:目的(自动化什么任务)、范围(项目专用还是个人工作流)、参数(需要什么输入)、工具(执行什么操作)。关键问题:是否与团队共享(项目)还是个人使用;是否需要 bash 执行或文件引用;是否应限制工具访问以确保安全。
阶段二:设计
命令作用域:
- 项目:.claude/commands/,通过 git 对团队可见,用于共享工作流。
- 个人:~/.claude/commands/,仅自己可见,用于个人偏好。
- 插件:<plugin>/commands/,插件用户可见,通过市场分发。
项目命令在 /help 中显示 "(project)",个人命令显示 "(user)"。
核心特性:
- 参数:$1、$2、$ARGUMENTS,用于用户动态输入。
- Bash 执行:!
command,将 shell 输出纳入上下文。 - 文件引用:@path/to/file,包含文件内容。
- 工具限制:allowed-tools:,限制 Claude 的能力。
Frontmatter 模式:
description: Brief description for /help # Required for discovery argument-hint: <required> [optional] # Shown in autocomplete allowed-tools: Read, Grep, Bash(git *) # Restrict tool access model: claude-3-5-haiku-20241022 # Override model disable-model-invocation: true # Prevent SlashCommand tool
阶段三:实现
文件结构示例:
description: Deploy to environment with validation argument-hint: <environment> [--skip-tests] allowed-tools: Bash(*), Read
Deployment
Target: $1 Options: $2
Pre-flight Checks
Environment: echo "$1" | grep -E "^(staging|production)$" || echo "Invalid"
Tests: [[ "$2" == *"--skip-tests"* ]] && echo "Skipped" || bun test
Task
Based on validation above, proceed with deployment or explain issues.
参数模式:
- 位置参数($1、$2、$3):如 Compare file $1 with file $2 and summarize differences. 用法 /compare old.ts new.ts。
- 全部参数($ARGUMENTS):如 Fix the following issues: $ARGUMENTS。用法 /fix memory leak in auth slow query in search。
- 与文件引用结合:如 Analyze this file: @$1。用法 /analyze src/main.ts。
Bash 执行:执行命令并包含输出,! 必须位于开头的反引号之前才能进行预处理。示例:
Git Context
Branch: git branch --show-current
Status: git status --short
Diff: git diff --stat
Based on the above, suggest next steps.
注意:输出默认截断于 15,000 字符,可用 SLASH_COMMAND_TOOL_CHAR_BUDGET 调整。
文件引用:直接包含文件内容,如 Package: @package.json、TypeScript: @tsconfig.json、User input: @$1。
工具权限:限制 Claude 可执行的操作,如只读分析 allowed-tools: Read, Grep, Glob;仅 git 操作 allowed-tools: Bash(git *), Read;带限制的完整 bash allowed-tools: Bash(bun *), Bash(npm *), Read, Write, Edit。
阶段四:验证
Frontmatter 检查:第 1 行以 --- 开头并以 --- 结尾;description 存在且面向动作;argument-hint 使用 <required> 和 [optional] 语法;allowed-tools 使用正确名称(区分大小写);使用空格(而非制表符)缩进。
命名约定:kebab-case 文件名如 my-command.md;无空格或特殊字符;面向动作,优先动词-名词模式;简洁,1-3 个词。好例子:review-pr.md、deploy-staging.md、fix-issue.md。坏例子:my command.md、DoStuff.md、helper.md。
描述质量:面向动作(以动词开头);具体说明功能;少于 80 字符;有助于 /help 发现。好例子:"Deploy to staging with health checks and Slack notification"。坏例子:"Deploy stuff" 或 "Helps with deployment"。
内容质量:对 Claude 的清晰指令;正确使用参数;Bash 命令已验证(先在终端测试);文件路径相对于项目根目录;对边界情况有错误处理。
验证报告格式:
Command Validation: [command-name]
Summary
- Status: PASS | FAIL | WARNINGS
- Location: [path]
- Issues: [count]
Critical Issues (must fix)
- [Issue with fix]
Warnings (should fix)
- [Issue with fix]
Strengths
- [What's done well]
命名空间
在子目录中组织命令: .claude/commands/ +-- frontend/ | +-- component.md # /component (project:frontend) | +-- styling.md # /styling (project:frontend) +-- backend/ | +-- migration.md # /migration (project:backend) +-- review.md # /review (project)
命名空间出现在 /help 中,但命令调用时不带前缀:/component 或 /frontend/component。
测试命令
- 创建命令文件。
- 用 /help 验证——应看到命令列出。
- 测试基本调用:/your-command。
- 测试带参数:/your-command arg1 arg2。
- 如使用 allowed-tools,验证工具限制。
调试模式:claude --debug,显示命令加载和执行详情。
故障排查
命令未找到:验证文件位置 .claude/commands/name.md;检查文件名(小写、.md 扩展名、无空格);重启 Claude Code 或使用 /clear。
参数不工作:使用 $1、$2 而非 {1}、{2};使用 $ARGUMENTS 表示所有参数;带空格的参数加引号:/cmd "arg with spaces"。
Bash 命令失败:在反引号前使用 !:!command;先在终端测试命令;检查输出长度(15k 字符限制);验证 allowed-tools 包含 Bash。
工具限制未生效:检查 YAML 语法(无制表符、正确引号);工具名称区分大小写:Read 而非 read;bash 使用通配符:Bash(git *)。
参考文档
- frontmatter.md:完整 frontmatter 模式与字段
- arguments.md:参数处理与模式
- bash-execution.md:shell 命令执行
- file-references.md:文件包含语法
- permissions.md:工具限制模式
- namespacing.md:目录组织
- sdk-integration.md:Agent SDK 用法
- community.md:社区示例与资源
另见 EXAMPLES.md 获取完整真实示例,scripts/ 获取脚手架和验证工具。
相关技能
- claude-hook-authoring:为命令工作流添加自动化触发器
- claude-plugin-development:将命令打包为可分发的插件
- claude-code-configuration:全局配置 Claude Code 设置
适用场景
适用于需要为团队或个人构建可复用斜杠命令工作流的场景,例如代码审查、问题修复、提交生成、部署等。
限制
资料未提供具体的收费、价格、平台兼容性等细节。Bash 输出默认截断于 15,000 字符。