什么是 Skill?
每次你打开 Claude Code,你都是在和一个空白状态的模型对话。它不记得上次你怎么要求它做代码审查,不知道你们团队的 PR 描述格式,不了解你们的部署检查流程。你必须每次重新解释。
Skill 解决的就是这个问题。
Skill 的本质定义
Skill 是 Claude Code CLI 的自定义斜杠命令系统。它是一个特殊格式的 Markdown 文件,存放在 .claude/skills/ 目录中。当你输入 /skill-name 时,Claude Code 读取这个文件,理解其中的指令,并按照预定义的方式执行任务。
用户输入:/review-pr
Claude Code 查找:.claude/skills/review-pr.md
↓
读取文件中的提示词和配置
↓
按指令执行(读文件、分析、生成报告)
↓
输出标准格式的代码审查结果
从用户角度看:Skills 就是你的专属命令行,一个命令触发一套完整的工作流。
从技术角度看:Skills 是把提示词工程(prompt engineering)和工具调用规划封装在一个可复用、可版本管理的单元里。
Skill 的三个关键特征
1. 持久性(Persistent)
普通提示词只存在于当前对话上下文中。Skill 以文件形式存储在磁盘上,永久可用,不受会话限制。
2. 可参数化(Parameterized)
Skills 可以接受用户在调用时传入的参数:
/review-pr --branch feature/payment --focus security
--branch 和 --focus 的值会动态注入到 Skill 的提示词中,让同一个 Skill 适应不同的调用场景。
3. 可共享(Shareable)
Skills 文件可以通过 Git 管理和分发。团队成员只需要拉取包含 .claude/skills/ 目录的仓库,就能立刻使用团队定义的所有工作流。
Skills 能做什么
| 类别 | 示例 Skill | 触发方式 |
|---|---|---|
| 代码质量 | PR 审查、安全扫描、代码规范检查 | /review-pr, /security-check |
| 文档生成 | PR 描述、CHANGELOG、API 文档 | /gen-pr-desc, /changelog |
| 运维操作 | 部署前检查、数据库迁移验证、回滚确认 | /pre-deploy, /check-migration |
| 数据分析 | 日志摘要、错误追踪、性能报告 | /analyze-logs, /perf-report |
| 项目管理 | 任务分解、会议纪要整理、进度追踪 | /breakdown-task, /standup |
Skill 和直接输入提示词的区别
很多人第一次听到 Skills 会问:这和我直接输入提示词有什么区别?
| 对比维度 | 直接输入提示词 | Skills |
|---|---|---|
| 可复用性 | 每次手动重新输入 | 一次定义,随时 /调用 |
| 一致性 | 取决于你的记忆和心情 | 每次执行相同的标准流程 |
| 团队共享 | 只能靠文档传播,执行偏差大 | Git 分发,所有人用同一个 Skill |
| 版本管理 | 无法追踪变更 | 和代码一起 commit / diff / review |
| 参数化 | 手动修改提示词 | 结构化参数传入,可脚本化 |
| 可维护性 | 分散在聊天历史里,找不到 | 在 .claude/skills/ 里,可搜索、可编辑 |
结论:如果一个提示词你只用一次,直接输入就好。如果你打算用超过三次,考虑封装成 Skill。
Skill 的适用场景边界
Skills 不是万能的。了解它的边界,有助于你在正确的场景用正确的工具:
✅ Skills 适合的场景:
- 固定的工作流程(每次 PR 都要过同样的审查标准)
- 需要团队一致性(所有人用相同的部署检查步骤)
- 频繁重复的操作(每天跑日志分析)
- 需要参数化调用(不同分支、不同环境、不同文件)
❌ Skills 不适合的场景:
- 一次性的探索性问题("帮我分析这段代码的逻辑")
- 高度动态的上下文(需要大量背景说明的临时任务)
- 需要多 Agent 协调的复杂编排(考虑 Agent SDK)
- 纯粹的 MCP 工具配置和协议层操作(考虑 mcp-guide)
本节小结
- Skill = 存储在
.claude/skills/目录中的可复用斜杠命令 - 三大特征:持久性、可参数化、可共享
- 核心价值:把重复的提示词工作流变成一次定义、永久可用的团队资产
- 适合频繁重复、需要一致性的工程工作流;不适合一次性探索任务
下一节:Skills vs 提示词 vs MCP 工具的定位三角——三者之间有什么本质区别?什么时候该用哪个?