技能(Skills)让你把重复性的工作流打包成可复用的指令,与团队共享。
什么是技能
技能是打包好的工作流指令。你把一个复杂任务(如代码审查、部署、测试)的最佳实践封装成技能,以后只需一个斜杠命令就能执行。
技能的组成部分
每个技能包含:
- 名称 — 技能的标识符,用作斜杠命令
- 描述 — 简要说明技能的用途
- 指令 — Claude 执行该任务时应遵循的详细步骤
创建技能
目录结构
技能文件放在项目的 .claude/skills/ 目录中:
.claude/
skills/
review-pr/
skill.json # 技能元数据
instructions.md # 详细指令
skill.json 示例
{
"name": "review-pr",
"description": "审查 Pull Request 的变更",
"disable-model-invocation": true
}
instructions.md 示例
# PR 审查技能
## 审查步骤
1. 获取 PR 的所有变更文件
2. 检查安全问题(SQL 注入、XSS、敏感信息泄露)
3. 检查边界条件处理
4. 检查代码风格是否一致
5. 评估是否有不必要的复杂度
6. 总结发现的问题和改进建议
## 输出格式
对每个文件:
- 文件名
- 问题列表(严重程度 + 描述)
- 改进建议
使用技能
在 Claude Code 中,通过斜杠命令使用技能:
/review-pr
或者
帮我审查 PR #42
Claude 会自动识别这是技能调用,加载指令并按步骤执行。
技能加载机制
按需加载
技能有两种加载模式:
- 默认模式:技能描述在会话开始时出现在上下文中,Claude 可以自主决定是否使用
- 禁用模型调用:设置
disable-model-invocation: true,描述不会出现在上下文中,只有用户明确调用时才加载完整指令
上下文优化
对于不常用的技能,建议设置 disable-model-invocation: true。这样不会在每次会话时占用上下文空间。
技能与 CLAUDE.md 的区别
| 特性 | CLAUDE.md | 技能(Skills) |
|---|---|---|
| 用途 | 项目全局规则 | 特定工作流指令 |
| 加载 | 每次会话自动加载 | 按需加载或调用 |
| 粒度 | 整个项目 | 单一任务 |
| 复用 | 项目内 | 跨项目共享 |
技能共享
技能可以跨项目共享。将技能文件放入版本控制,团队成员可以复用。
常见技能示例
代码审查
/review
按团队标准审查当前变更,输出结构化的审查报告。
部署到预发环境
/deploy-staging
运行测试、构建、部署到预发环境,并验证。
数据库迁移
/db-migration
安全地创建和执行数据库迁移脚本。