前言
在进阶指南的第五节里,我用大约 40 行介绍了自定义 Slash Commands 的基本用法:创建 .claude/commands/ 目录,写几个 .md 文件,用 $ARGUMENTS 传参。
但实际用下来,这个能力远比那 40 行能覆盖的要深。一套设计良好的命令库,可以把你的日常工作流压缩到几个斜杠命令里——代码审查、测试生成、功能脚手架、提交信息,全部一键触发。
这篇文章把 Slash Commands 讲透。
一、什么是 Slash Commands(Skills)
1.1 核心概念
Slash Commands 的本质很简单:把你反复输入的提示词保存成文件,用斜杠命令一键调用。
每个 .md 文件就是一个命令。文件名就是命令名:
.claude/commands/review.md → /review
.claude/commands/test.md → /test
.claude/commands/gen-api.md → /gen-api
在 Claude Code 中输入 /review,Claude 会读取 review.md 的内容作为提示词执行。就这么简单。
1.2 项目级 vs 用户级
命令有两个存放位置:
| 位置 | 路径 | 作用域 | 是否提交到 Git |
|---|---|---|---|
| 项目级 | .claude/commands/*.md | 当前项目 | ✅ 团队共享 |
| 用户级 | ~/.claude/commands/*.md | 所有项目 | ❌ 个人专属 |
经验法则:
- 和项目技术栈相关的命令(如
/flutter-test、/next-component)放项目级 - 通用的个人习惯命令(如
/commit-msg、/explain)放用户级
1.3 命名规范
命令名就是文件名(去掉 .md 后缀),建议:
- 用小写字母和连字符:
review-security.md→/review-security - 动词开头:
gen-component、check-a11y、fix-lint - 按类别加前缀:
test-unit.md、test-e2e.md、doc-api.md - 避免太长:2-3 个单词最佳
二、命令文件的编写技巧
2.1 基本结构
一个好的命令文件应该有清晰的结构。推荐这个模板:
<!-- .claude/commands/your-command.md -->
## 上下文
[告诉 Claude 当前的项目背景和技术栈]
## 任务
[明确要做什么]
## 约束
[列出必须遵守的规则]
## 输出格式
[期望的输出形式]2.2 好命令 vs 坏命令
对比一下:
❌ 坏命令:
帮我写测试✅ 好命令:
为 $ARGUMENTS 编写单元测试。
技术栈:
- 测试框架:vitest
- 断言库:vitest 内置
- Mock:vi.mock()
要求:
1. 覆盖正常路径、边界情况和错误路径
2. 每个测试用 describe/it 组织,描述用中文
3. Mock 所有外部依赖(API 调用、文件系统、数据库)
4. 测试文件放在同目录的 __tests__ 下,命名为 [原文件名].test.ts
5. 不要测试实现细节,只测试公开接口的行为
先阅读目标文件,理解它的公开接口,然后再写测试。区别在于:好命令给了足够的上下文和约束,Claude 不需要猜。
2.3 引用项目文件
命令中可以引用项目文件,让 Claude 先读取再执行:
先阅读以下文件了解项目规范:
- CLAUDE.md
- src/types/index.ts
- src/lib/constants.ts
然后为 $ARGUMENTS 生成符合项目规范的代码。这比在命令里重复写规范要好——规范更新时,命令不需要改。
2.4 多步骤指令
复杂任务可以拆成步骤:
对 $ARGUMENTS 进行安全审计,按以下步骤执行:
### 第一步:静态分析
阅读代码,检查以下安全问题:
- SQL 注入
- XSS(跨站脚本)
- 命令注入
- 路径遍历
- 不安全的反序列化
### 第二步:依赖检查
检查 package.json 中的依赖是否有已知漏洞。
### 第三步:输出报告
用以下格式输出:
| 严重程度 | 问题 | 位置 | 建议修复 |
|---------|------|------|---------|
| 高/中/低 | 描述 | 文件:行号 | 修复方案 |
如果没有发现问题,明确说明"未发现安全问题"。三、参数系统详解
3.1 基本用法
$ARGUMENTS 是唯一的参数占位符,会被替换为命令后面的所有文本:
/test src/lib/posts.ts
$ARGUMENTS → src/lib/posts.ts
/review --focus security
$ARGUMENTS → --focus security
3.2 多参数模式
$ARGUMENTS 是一个字符串,不是数组。如果需要多个参数,在命令里约定格式:
<!-- .claude/commands/compare.md -->
比较两个文件的实现差异并给出优化建议。
参数格式:`文件A 文件B`
示例用法:`/compare src/old-api.ts src/new-api.ts`
请分别阅读 $ARGUMENTS 中的两个文件,然后:
1. 列出主要差异
2. 分析各自的优缺点
3. 给出合并或优化建议3.3 参数与文件路径结合
一个常见模式是把参数当作文件路径:
<!-- .claude/commands/doc.md -->
为 $ARGUMENTS 生成 JSDoc 文档注释。
要求:
- 为所有导出的函数、类、接口添加 JSDoc
- 包含 @param、@returns、@throws、@example
- 示例代码要可运行
- 不要修改函数实现,只添加注释
先阅读文件,理解每个导出成员的用途,再添加文档。使用:/doc src/lib/utils.ts
3.4 可选参数模式
有时候参数是可选的:
<!-- .claude/commands/commit-msg.md -->
基于当前 git diff --staged 的改动,生成一条 commit message。
格式要求:
- 类型: 简短描述(不超过 50 字符)
- 类型包括:feat、fix、refactor、docs、test、chore
- 描述用中文
$ARGUMENTS
如果上面有额外说明,请结合说明生成。否则根据 diff 内容自行判断。这样 /commit-msg 和 /commit-msg 这是一个紧急修复 都能用。
四、实用命令库
这里提供一套开箱即用的命令,按类别组织。你可以直接复制到项目里用。
4.1 代码质量
/review — 代码审查
<!-- .claude/commands/review.md -->
对当前 git diff --staged 中的改动进行 Code Review。
检查维度:
1. **安全性** — XSS、注入、敏感信息泄露、不安全的依赖
2. **性能** — 不必要的重渲染、内存泄漏、N+1 查询、大循环
3. **可维护性** — 命名清晰度、函数长度、职责单一性
4. **边界情况** — 空值处理、错误处理、并发安全
输出格式:
- 每个问题标注严重程度(🔴 高 / 🟡 中 / 🟢 低)
- 给出具体的修复建议和代码示例
- 最后给一个总体评价
如果代码质量很好,也请明确说明。/refactor — 重构建议
<!-- .claude/commands/refactor.md -->
分析 $ARGUMENTS 并给出重构建议。
分析维度:
1. 是否有重复代码可以提取
2. 函数是否过长,是否需要拆分
3. 是否有更好的设计模式可以应用
4. 类型定义是否可以优化
要求:
- 只建议有实际价值的重构,不要为了重构而重构
- 每个建议给出重构前后的代码对比
- 评估重构的风险和收益4.2 测试
/test — 单元测试生成
<!-- .claude/commands/test.md -->
为 $ARGUMENTS 编写单元测试。
框架:vitest
规则:
1. 覆盖正常路径、边界情况、错误路径
2. describe/it 结构,描述用中文
3. Mock 外部依赖
4. 测试文件:同目录 __tests__/[文件名].test.ts
5. 只测试公开接口,不测试实现细节
先阅读目标文件理解接口,再写测试。/test-edge — 边界测试补充
<!-- .claude/commands/test-edge.md -->
阅读 $ARGUMENTS 的现有测试文件,找出未覆盖的边界情况并补充测试。
重点关注:
- 空值 / undefined / null
- 空数组 / 空字符串
- 超大输入
- 并发调用
- 类型边界(如 Number.MAX_SAFE_INTEGER)
- 特殊字符和 Unicode
不要重复已有的测试用例。4.3 文档
/doc — 代码文档生成
<!-- .claude/commands/doc.md -->
为 $ARGUMENTS 中所有导出的函数、类、接口添加文档注释。
格式:JSDoc / TSDoc
包含:@param、@returns、@throws、@example
要求:
- 示例代码要可运行
- 不修改实现代码
- 复杂逻辑加 @remarks 说明设计意图/changelog — 变更日志生成
<!-- .claude/commands/changelog.md -->
基于最近的 git log 生成 CHANGELOG 条目。
$ARGUMENTS
如果指定了版本号,用该版本号;否则用日期。
格式:
## [版本号/日期]
### 新功能
- 描述
### 修复
- 描述
### 变更
- 描述
只包含用户可感知的变更,忽略内部重构和代码风格调整。4.4 Git 工作流
/commit-msg — 提交信息生成
<!-- .claude/commands/commit-msg.md -->
基于 git diff --staged 生成 commit message。
格式:类型: 描述
类型:feat / fix / refactor / docs / test / chore / perf
描述:中文,不超过 50 字符
如果改动较大,加空行后写详细说明。
$ARGUMENTS/pr-desc — PR 描述生成
<!-- .claude/commands/pr-desc.md -->
基于当前分支与 main 的 diff,生成 Pull Request 描述。
运行 git log main..HEAD 和 git diff main...HEAD 获取改动。
格式:
## 概述
一句话描述这个 PR 做了什么。
## 改动内容
- 列出主要改动点
## 测试
- 描述如何测试这些改动
## 截图(如适用)
标注是否需要截图。4.5 调试
/debug — 问题诊断
<!-- .claude/commands/debug.md -->
诊断以下问题:
$ARGUMENTS
步骤:
1. 理解问题描述
2. 定位可能的相关代码
3. 分析可能的原因(列出至少 3 个)
4. 给出最可能的原因和修复方案
5. 如果需要更多信息,说明需要什么
不要直接修改代码,先给出分析。/explain — 代码解释
<!-- .claude/commands/explain.md -->
解释 $ARGUMENTS 的代码逻辑。
要求:
- 先给一句话总结这个文件/函数的作用
- 然后逐段解释关键逻辑
- 标注复杂或不直观的部分
- 如果有潜在问题,指出来
- 用类比帮助理解复杂概念五、命令组合与工作流
5.1 链式调用
单个命令解决单个问题,但真正的效率来自组合。一个典型的开发工作流:
# 1. 写功能
> 实现用户收藏功能,收藏数据存 localStorage
# 2. 审查代码
> /review
# 3. 生成测试
> /test src/lib/favorites.ts
# 4. 生成文档
> /doc src/lib/favorites.ts
# 5. 生成提交信息
> /commit-msg每一步都是一个命令,Claude 在同一个会话里保持上下文,后面的命令能利用前面的结果。
5.2 复合命令
你也可以把多个步骤写进一个命令:
<!-- .claude/commands/ship.md -->
完成以下发布前检查流程:
1. 运行 git diff --staged 查看待提交的改动
2. 对改动进行 Code Review(检查安全、性能、可维护性)
3. 如果发现问题,列出问题但不自动修复
4. 如果没有问题,生成 commit message(格式:类型: 描述)
5. 输出最终的 commit 命令供我确认
不要自动执行 git commit,只输出命令。/ship 一个命令走完审查 + 提交的流程。
5.3 命令与 Hooks 配合
Slash Commands 和 Hooks 是互补的:
| Slash Commands | Hooks | |
|---|---|---|
| 触发方式 | 手动输入 | 自动触发 |
| 执行者 | Claude(AI) | Shell(确定性) |
| 适用场景 | 需要 AI 判断的任务 | 机械性的自动化 |
一个典型的配合模式:
- Slash Command
/review让 Claude 做代码审查(需要 AI 理解代码) - Hook
PostToolUse在每次写文件后自动跑prettier(不需要 AI,确定性执行)
两者结合,AI 负责思考,Hook 负责执行。
六、团队协作
6.1 Git 共享
把 .claude/commands/ 提交到 Git,团队所有人都能用:
git add .claude/commands/
git commit -m "feat: 添加团队共享的 Claude 命令"目录结构建议:
.claude/
commands/
review.md # 代码审查
test.md # 测试生成
gen-component.md # 组件脚手架
commit-msg.md # 提交信息
pr-desc.md # PR 描述
settings.json # Hooks 配置
6.2 命名约定
团队应该统一命名规范,避免混乱:
# 推荐:按类别加前缀
review.md
review-security.md
test.md
test-edge.md
gen-component.md
gen-api.md
# 不推荐:无规律
check.md
make-test.md
component.md
new-endpoint.md
6.3 新人引导
在项目 README 或 CLAUDE.md 中列出可用命令:
## 可用的 Claude 命令
| 命令 | 用途 | 示例 |
|------|------|------|
| `/review` | 代码审查 | `/review` |
| `/test` | 生成测试 | `/test src/lib/posts.ts` |
| `/gen-component` | 生成组件 | `/gen-component UserProfile` |
| `/commit-msg` | 生成提交信息 | `/commit-msg` |
| `/pr-desc` | 生成 PR 描述 | `/pr-desc` |新人加入项目,看一眼就知道有哪些命令可用。
6.4 版本管理
命令也需要维护。建议:
- 定期审查 — 每个迭代检查一次,删除不再使用的命令
- 保持简洁 — 一个命令做一件事,不要让命令变成巨型提示词
- 写注释 — 在命令文件开头用 HTML 注释说明用途和作者
<!--
作者:@jimmy
用途:生成符合项目规范的 React 组件
更新:2026-03-15
-->
为 $ARGUMENTS 生成一个 React 组件...七、实战示例一:通用 Web 开发
以这个 Next.js 博客项目为例,展示如何构建一套完整的命令库。
7.1 /gen-component — 组件生成器
<!-- .claude/commands/gen-component.md -->
生成一个名为 $ARGUMENTS 的 React 组件。
项目技术栈:
- Next.js 16 (App Router) + TypeScript
- Tailwind CSS v4
- next-intl 做 i18n
规则:
1. 默认生成 Server Component,除非组件名包含 "Client" 或需要交互
2. 文件放在 components/ 目录下
3. 使用 Tailwind CSS 做样式,不用 CSS Modules
4. 如果组件需要文本,使用 next-intl 的 useTranslations
5. 添加必要的 aria 属性确保可访问性
6. Props 用 interface 定义,命名为 [组件名]Props
先检查 components/ 目录下是否已有同名组件。7.2 /i18n-check — 国际化检查
<!-- .claude/commands/i18n-check.md -->
检查项目的国际化完整性。
步骤:
1. 读取 messages/zh.json 和 messages/en.json
2. 对比两个文件的 key 结构,找出:
- zh 有但 en 没有的 key
- en 有但 zh 没有的 key
- 值为空字符串的 key
3. 扫描 components/ 和 app/ 目录,找出硬编码的中文或英文文本
4. 检查是否有使用了但未定义的 i18n key
输出格式:
- 缺失的 key 列表(标注在哪个文件缺失)
- 硬编码文本列表(标注文件和行号)
- 未定义的 key 列表7.3 /gen-post — 博客文章脚手架
<!-- .claude/commands/gen-post.md -->
创建一篇新的博客文章脚手架。
参数格式:slug 标题
示例:/gen-post my-new-post 我的新文章
根据 $ARGUMENTS 创建:
1. content/zh/[slug].mdx — 中文版,包含 frontmatter
2. content/en/[slug].mdx — 英文版,包含 frontmatter
Frontmatter 模板:
---
title: "标题"
date: "当前日期 YYYY-MM-DD"
description: 待填写
tags: ["待分类"]
---
## 前言
[在这里开始写作]
两个文件都创建好后,提醒我填写 description 和 tags。7.4 /a11y-audit — 可访问性审计
<!-- .claude/commands/a11y-audit.md -->
对 $ARGUMENTS 进行可访问性审计。
检查清单:
1. **语义化 HTML** — 是否使用了正确的 HTML 元素(button vs div, nav vs div)
2. **ARIA 属性** — 是否有必要的 aria-label、aria-describedby、role
3. **键盘导航** — 所有交互元素是否可通过键盘访问
4. **焦点管理** — 模态框、下拉菜单是否有焦点陷阱
5. **颜色对比** — 文本颜色与背景色的对比度是否足够
6. **图片替代文本** — img 是否有 alt,装饰性图片是否有 aria-hidden
7. **动态内容** — 动态更新的内容是否有 aria-live
输出每个问题的位置和修复建议。7.5 完整工作流演示
假设要给博客添加一个"阅读进度条"组件:
# 1. 生成组件脚手架
> /gen-component ReadingProgress
# Claude 生成 components/ReadingProgress.tsx
# 包含滚动监听、进度计算、Tailwind 样式
# 2. 检查可访问性
> /a11y-audit components/ReadingProgress.tsx
# Claude 指出需要添加 role="progressbar" 和 aria-valuenow
# 3. 生成测试
> /test components/ReadingProgress.tsx
# 4. 检查 i18n(如果组件有文本)
> /i18n-check
# 5. 审查并提交
> /review
> /commit-msg五个命令,从脚手架到提交,全流程覆盖。
八、实战示例二:Flutter 开发
Flutter 项目(特别是 Clean Architecture)有大量重复的样板代码。Slash Commands 可以大幅减少这些重复工作。
8.1 项目结构约定
假设项目使用标准的 Clean Architecture:
lib/
core/
error/failures.dart
usecases/usecase.dart
features/
auth/
data/
models/
repositories/
datasources/
domain/
entities/
repositories/
usecases/
presentation/
cubits/
pages/
widgets/
8.2 /flutter-feature — 功能脚手架
<!-- .claude/commands/flutter-feature.md -->
为 Flutter 项目创建一个新功能模块的完整目录结构。
功能名称:$ARGUMENTS
创建以下目录和文件:
lib/features/[功能名]/
data/
models/[功能名]_model.dart
repositories/[功能名]_repository_impl.dart
datasources/[功能名]_remote_datasource.dart
domain/
entities/[功能名].dart
repositories/[功能名]_repository.dart
usecases/get_[功能名].dart
presentation/
cubits/[功能名]_cubit.dart
cubits/[功能名]_state.dart
pages/[功能名]_page.dart
widgets/
每个文件只包含基本骨架(类定义、必要的 import),不写具体实现。
参考现有功能模块的代码风格(如 lib/features/auth/)。
功能名使用 snake_case。8.3 /flutter-bloc — Cubit/Bloc 生成
<!-- .claude/commands/flutter-bloc.md -->
为 $ARGUMENTS 生成 Cubit 和 State 类。
参数格式:功能名 状态列表
示例:/flutter-bloc favorites Initial,Loading,Loaded,Error
规则:
1. 使用 flutter_bloc 的 Cubit(不是 Bloc,除非明确要求)
2. State 使用 sealed class(Dart 3)
3. Loaded state 包含对应的数据字段
4. Error state 包含 String message 字段
5. Cubit 方法只定义签名,方法体写 TODO 注释
6. 添加 equatable 支持
文件:
- lib/features/[功能名]/presentation/cubits/[功能名]_cubit.dart
- lib/features/[功能名]/presentation/cubits/[功能名]_state.dart
参考项目中现有的 Cubit 实现风格。8.4 /flutter-model — 数据模型生成
<!-- .claude/commands/flutter-model.md -->
根据描述生成 Flutter 数据模型。
$ARGUMENTS
要求:
1. Entity(domain 层):纯 Dart 类,不依赖任何包
2. Model(data 层):继承 Entity,添加 fromJson/toJson
3. 使用 freezed 或手写,取决于项目现有风格
4. 如果用 Hive,添加 TypeAdapter
5. 包含 copyWith 方法
先检查项目中现有的 Model 实现方式,保持一致。8.5 /flutter-test — Flutter 测试生成
<!-- .claude/commands/flutter-test.md -->
为 $ARGUMENTS 生成测试。
自动判断测试类型:
- domain/usecases/ → 单元测试,mock Repository
- data/repositories/ → 单元测试,mock DataSource
- presentation/cubits/ → bloc_test,mock UseCase
- presentation/pages/ → Widget 测试,mock Cubit
- presentation/widgets/ → Widget 测试
规则:
1. 使用 mocktail 做 mock
2. Cubit 测试使用 bloc_test 包
3. Widget 测试使用 BlocProvider.value 注入 mock Cubit
4. 测试文件镜像 lib/ 的目录结构放在 test/ 下
5. 每个测试用 group/test 组织
先阅读目标文件,理解依赖关系,再写测试。8.6 /flutter-review — Flutter 代码审查
<!-- .claude/commands/flutter-review.md -->
对当前 git diff --staged 进行 Flutter 项目专属的 Code Review。
除了通用的代码审查(安全、性能、可维护性),额外检查:
1. **架构合规** — 是否遵守 Clean Architecture 的依赖规则
- domain 层不依赖 data 层或 presentation 层
- data 层不依赖 presentation 层
2. **状态管理** — Cubit/Bloc 使用是否正确
- State 是否不可变
- 是否在 Widget 中直接操作数据(应该通过 Cubit)
3. **Widget 优化**
- 是否有不必要的 rebuild(缺少 const、BlocSelector)
- 是否有过深的 Widget 嵌套(建议提取)
4. **Dart 规范**
- 是否使用了 Dart 3 的新特性(patterns、sealed class)
- 命名是否符合 Dart 规范(lowerCamelCase、UpperCamelCase)
5. **依赖注入** — 是否正确注册到 get_it8.7 实战:用命令构建"收藏"功能
完整演示如何用上面的命令从零构建一个收藏功能:
# 第一步:创建功能模块骨架
> /flutter-feature favorites
# Claude 创建完整的目录结构:
# lib/features/favorites/data/models/favorites_model.dart
# lib/features/favorites/data/repositories/favorites_repository_impl.dart
# lib/features/favorites/domain/entities/favorites.dart
# lib/features/favorites/domain/repositories/favorites_repository.dart
# lib/features/favorites/domain/usecases/get_favorites.dart
# lib/features/favorites/presentation/cubits/favorites_cubit.dart
# lib/features/favorites/presentation/cubits/favorites_state.dart
# lib/features/favorites/presentation/pages/favorites_page.dart
# 第二步:生成数据模型
> /flutter-model Favorite 实体:id(String), itemId(String),
itemType(enum: article/video/podcast), createdAt(DateTime),
userId(String)。使用 Hive 存储。
# 第三步:生成 Cubit
> /flutter-bloc favorites Initial,Loading,Loaded,Error
# 第四步:实现业务逻辑
> 实现 favorites 功能的 UseCase:
- AddFavorite:添加收藏,检查是否已收藏
- RemoveFavorite:取消收藏
- GetFavorites:获取收藏列表,支持分页
- CheckFavorite:检查某个 item 是否已收藏
# 第五步:生成测试
> /flutter-test lib/features/favorites/domain/usecases/
> /flutter-test lib/features/favorites/presentation/cubits/favorites_cubit.dart
# 第六步:代码审查
> /flutter-review六步完成一个完整功能的骨架、模型、状态管理、业务逻辑、测试和审查。
九、最佳实践与反模式
9.1 最佳实践
- 一个命令做一件事 — 保持命令的职责单一,复杂流程用命令组合
- 给足上下文 — 技术栈、框架版本、项目约定,写在命令里
- 约束优于自由 — 明确告诉 Claude 不要做什么,比告诉它做什么更重要
- 引用而非复制 — 让 Claude 读项目文件获取规范,而不是在命令里复制规范
- 先读后写 — 命令中加"先阅读目标文件",避免 Claude 凭空生成
- 输出格式化 — 指定输出格式(表格、列表、代码块),让结果更易读
- 团队统一 — 命令提交到 Git,配合 CLAUDE.md 统一规范
- 定期维护 — 删除不用的命令,更新过时的命令
9.2 反模式
| 反模式 | 问题 | 正确做法 |
|---|---|---|
| 命令太模糊 | "帮我写代码" — Claude 不知道写什么 | 明确任务、技术栈、约束 |
| 命令太长 | 500 行的命令文件 | 拆成多个小命令,组合使用 |
| 硬编码规范 | 命令里写死代码规范 | 引用 CLAUDE.md 或项目文件 |
| 不用 $ARGUMENTS | 每次都要手动改命令文件 | 用 $ARGUMENTS 参数化 |
| 命令重复 | review.md 和 code-review.md 做同一件事 | 统一命名,删除重复 |
| 不写约束 | Claude 自由发挥,结果不可控 | 明确列出"不要做什么" |
| 忽略项目上下文 | 命令不引用项目文件 | 让 Claude 先读相关文件 |
| 不测试命令 | 写完就提交,没验证效果 | 先自己跑一遍,确认输出符合预期 |
十、常见问题
Q1:Slash Commands 和直接输入提示词有什么区别?
功能上没有区别——Slash Commands 就是保存好的提示词。区别在于效率:常用的提示词保存成命令后,不需要每次重新输入,也不会因为手动输入而遗漏关键约束。
Q2:命令文件支持什么格式?
只支持 .md(Markdown)文件。文件内容就是纯文本提示词,Markdown 格式只是为了可读性,Claude 会把整个文件内容作为提示词处理。
Q3:$ARGUMENTS 可以有多个吗?
不可以。只有一个 $ARGUMENTS,它会被替换为命令后面的所有文本。如果需要多个参数,在命令里约定格式(如"参数1 参数2"),然后让 Claude 自己解析。
Q4:命令可以调用其他命令吗?
不能直接调用。但你可以在一个会话里依次执行多个命令,它们共享上下文。如果需要固定的命令序列,写一个复合命令把所有步骤放在一个文件里。
Q5:项目级和用户级命令冲突了怎么办?
如果同名,项目级命令优先。建议用不同的命名避免冲突:项目级用项目相关的前缀(如 flutter-、next-),用户级用通用名称(如 review、test)。
Q6:命令文件有大小限制吗?
没有硬性限制,但建议控制在 200 行以内。太长的命令会占用上下文窗口,而且 Claude 可能会忽略后面的指令。如果命令超过 200 行,考虑拆分。
Q7:怎么知道有哪些可用命令?
在 Claude Code 中输入 / 然后按 Tab,会列出所有可用的命令(包括内置命令和自定义命令)。
总结
Slash Commands 是 Claude Code 中最容易上手、回报最高的功能之一。核心思路:
- 识别重复 → 找出你反复输入的提示词
- 提炼命令 → 加上上下文、约束、输出格式,保存为
.md文件 - 组合使用 → 多个命令串联,覆盖完整工作流
- 团队共享 → 提交到 Git,统一团队的工作方式
从今天开始,每次你发现自己在重复输入类似的提示词,就把它变成一个命令。
推荐阅读
- Claude Code 进阶指南 — 全面了解 Claude Code 的核心能力
- CLAUDE.md 编写指南 — 让 Claude 理解你的项目
- Claude Code Hooks 指南 — 确定性自动化,与 Slash Commands 互补
- 上下文管理指南 — 管好上下文,让命令执行更精准
- 多 Agent 并行指南 — 用命令 + 多终端实现团队级效率
- Claude Code 官方文档 — 最新功能和 API 参考