# Claude Code 自定义斜杠命令指南 ## 概述 斜杠命令允许你将常用的提示定义为 Markdown 文件,Claude Code 可以直接执行这些命令。命令支持项目级和个人级两种范围,并通过目录结构支持命名空间。 **基本语法:** ``` /<命令名称> [参数] ``` ## 命令类型与存储位置 | 命令类型 | 存储位置 | 说明 | 在 `/help` 中显示 | |---------|----------|------|-------------------| | 项目命令 | `.claude/commands/` | 存储在项目仓库中,与团队共享 | `(project)` | | 个人命令 | `~/.claude/commands/` | 存储在用户目录,跨所有项目可用 | `(user)` | > **优先级**:当项目命令和个人命令同名时,**项目命令优先**。 ## 快速开始 ### 创建项目命令 ```bash # 创建命令目录 mkdir -p .claude/commands # 创建一个简单的优化命令 echo "分析这段代码的性能问题并提出优化建议:" > .claude/commands/optimize.md ``` ### 创建个人命令 ```bash # 创建个人命令目录 mkdir -p ~/.claude/commands # 创建安全审查命令 echo "审查这段代码的安全漏洞:" > ~/.claude/commands/security-review.md ``` ## Frontmatter 配置 在命令文件开头使用 YAML frontmatter 来配置命令行为: ```yaml --- allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*) argument-hint: [message] description: 创建一个 git 提交 model: claude-3-5-haiku-20241022 disable-model-invocation: false --- 命令内容在这里 ``` ### 配置参数说明 | 参数 | 说明 | 默认值 | |------|------|--------| | `allowed-tools` | 命令可使用的工具列表 | 继承自当前对话 | | `argument-hint` | 参数提示信息(显示在自动补全中) | 无 | | `description` | 命令的简短描述 | 提示内容的第一行 | | `model` | 指定使用的模型 | 继承自当前对话 | | `disable-model-invocation` | 是否禁止 SlashCommand 工具调用此命令 | false | ## 参数用法 ### 获取所有参数:`$ARGUMENTS` ```markdown # .claude/commands/fix-issue.md 修复问题 #$ARGUMENTS,遵循我们的编码规范 ``` **使用方式:** ``` > /fix-issue 123 high-priority # $ARGUMENTS 会被替换为: "123 high-priority" ``` ### 获取单个参数:`$1`, `$2`, `$3` ... ```markdown # .claude/commands/review-pr.md 审查 PR #$1,优先级为 $2,分配给 $3 ``` **使用方式:** ``` > /review-pr 456 high alice # $1 = "456", $2 = "high", $3 = "alice" ``` ## 高级功能 ### 文件引用 使用 `@` 前缀引用项目文件: ```markdown # 引用单个文件 审查 @src/utils/helpers.js 的实现 # 引用多个文件 比较 @src/old-version.js 和 @src/new-version.js ``` ### 执行 Bash 命令 使用 `` !`command` `` 语法执行 bash 命令并将结果嵌入: ```markdown --- allowed-tools: Bash(git add:*), Bash(git status:*) --- 当前状态: !`git status` 变更内容: !`git diff` ``` > **注意**:使用 Bash 命令嵌入时,必须在 `allowed-tools` 中包含 `Bash` 工具。 ### 命名空间(子目录组织) 通过子目录组织命令,形成命名空间: ``` .claude/commands/ ├── frontend/ │ └── component.md # /component (project:frontend) ├── backend/ │ └── api.md # /api (project:backend) └── optimize.md # /optimize (project) ``` ### 扩展思考 斜杠命令可以通过在命令内容中包含扩展思考关键词来触发 Claude 的扩展思考模式。 ## 插件命令 插件可以提供自定义斜杠命令: - **格式**:`/plugin-name:command-name`(如无冲突,前缀可省略) - **位置**:插件根目录的 `commands/` 目录 - **功能**:支持所有命令特性(参数、frontmatter、bash、文件引用) ## MCP 斜杠命令 MCP 服务器可以将 prompts 暴露为斜杠命令: ``` /mcp____ [arguments] ``` ### 示例 ```bash /mcp__github__list_prs /mcp__github__pr_review 456 /mcp__jira__create_issue "Bug title" high ``` 使用 `/mcp` 命令可以: - 查看已配置的 MCP 服务器 - 检查连接状态 - 进行 OAuth 服务器认证 - 查看可用的工具和 prompts ## SlashCommand 工具集成 Claude 可以通过 `SlashCommand` 工具程序化地执行自定义斜杠命令。 ### 支持的命令 - 仅支持自定义用户定义命令(不支持内置命令如 `/compact`) - 必须在 frontmatter 中填写 `description` 字段 ### 禁用 SlashCommand 工具 ```bash /permissions # 在拒绝规则中添加: SlashCommand ``` ### 禁用特定命令被工具调用 在命令 frontmatter 中添加: ```markdown --- disable-model-invocation: true --- ``` ### 权限规则 ``` SlashCommand:/commit # 精确匹配(无参数) SlashCommand:/review-pr:* # 前缀匹配(带任意参数) ``` ### 字符预算 - **默认限制**:15,000 字符 - **自定义限制**:通过 `SLASH_COMMAND_TOOL_CHAR_BUDGET` 环境变量设置 - 用于防止可用命令过多时的 token 溢出 ## 实用示例 ### 示例1:Git 提交命令 ```markdown --- allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*) argument-hint: [提交信息] description: 创建 git 提交 --- ## 上下文 - 当前 git 状态: !`git status` - 当前变更 (暂存和未暂存): !`git diff HEAD` - 当前分支: !`git branch --show-current` - 最近提交: !`git log --oneline -10` ## 任务 根据以上变更,创建一个 git 提交,提交信息为: $ARGUMENTS ``` ### 示例2:代码审查命令 ```markdown --- argument-hint: [pr编号] [优先级] [负责人] description: 审查 Pull Request --- 审查 PR #$1,优先级为 $2,分配给 $3。 重点关注:安全性、性能和代码风格。 ``` ### 示例3:性能分析命令 ```markdown --- description: 分析代码性能问题 --- 分析这段代码的性能问题并提出优化建议: - 识别性能瓶颈 - 建议算法改进方案 - 推荐缓存策略 - 识别不必要的计算 ``` ### 示例4:生成测试命令 ```markdown --- description: 为函数生成单元测试 argument-hint: [文件路径] --- 为 @$ARGUMENTS 中的函数生成完整的单元测试: - 覆盖正常情况 - 覆盖边界情况 - 覆盖错误处理 - 使用项目现有的测试框架 ``` ## 斜杠命令与技能的区别 | 方面 | 斜杠命令 | Agent Skills | |------|----------|--------------| | **调用方式** | 用户显式调用(`/command`) | 模型自动调用 | | **发现机制** | 基于 `/` 前缀 | 基于 description | | **复杂度** | 简单提示 | 复杂能力包 | | **文件结构** | 单个 .md 文件 | 目录 + SKILL.md + 资源 | | **适用场景** | 快速重复任务 | 扩展 Claude 能力 | **选择建议**: - 使用**斜杠命令**:快速、常用的提示(review、explain、optimize) - 使用 **Skills**:包含脚本、跨文件知识、团队标准化的综合工作流 ## 最佳实践 1. **命名清晰**:使用简短、有意义的命令名称 2. **提供描述**:始终在 frontmatter 中添加 `description` 3. **限制工具**:仅授予命令必需的工具权限 4. **参数提示**:使用 `argument-hint` 帮助用户理解参数用法 5. **组织结构**:使用子目录为相关命令分组 ## 相关资源 - [Skills 技能指南](./02-技能指南.md) - [Plugins 插件指南](./03-插件指南.md) - [Plugin Marketplaces 插件市场指南](./04-插件市场指南.md) - [官方文档:斜杠命令](https://code.claude.com/docs/en/slash-commands)