Skill 是什么
Skill = 触发描述 + 一组指令(可选 + 资源文件)。
跟 agent 的区别:
| 维度 | Agent | Skill | | --- | --- | --- | | 触发 | 你显式调用 | Claude 根据描述自动判断是否加载 | | 作用域 | 起一个独立上下文 | 在主上下文里执行 | | 用途 | 长任务、研究、并行 | 工作流标准化、领域知识 |
举例:你写了一个 git-commit skill,描述是「写 git commit message 时使用」。每次你说"帮我 commit",Claude 自动加载这个 skill,按你定义的规范写 message。
怎么创建
放在 ~/.claude/skills/<name>/SKILL.md 或项目 .claude/skills/<name>/SKILL.md。
最小例子:
---
name: tdd-loop
description: 用 TDD 流程实现一个新功能时使用。先写测试,跑红,写实现,跑绿,重构。
---
# TDD Loop
按以下顺序操作:
1. 跟用户确认需求,把功能拆成可测试的小单位
2. 在合适的测试文件里加一个 **失败** 的测试
3. 运行测试,确认它失败(红)
4. 写最少代码让测试通过(绿)
5. 重构,跑测试确认还是绿
6. 重复直到所有小单位完成
不要批量写测试再批量写实现 —— 严格一个一个来。description 字段非常关键 —— Claude 用它来决定何时加载这个 skill。要写得具体且包含触发词。
实战示例
示例 1:统一的 PR 描述模板
~/.claude/skills/pr-description/SKILL.md:
---
name: pr-description
description: 创建 GitHub PR 时使用,自动生成符合团队规范的描述
---
PR 描述固定四段:
## 背景
为什么改这个,关联什么 issue。
## 改动
按文件分组,简明列出做了什么。
## 测试
- [ ] 单元测试覆盖
- [ ] 手动验证场景
- [ ] CI 通过
## 风险
潜在影响和回滚方式。之后你说 创建 PR 时,Claude 会按这个模板写。
示例 2:封装领域知识
~/.claude/skills/our-api/SKILL.md:
---
name: our-api
description: 调用公司内部 API 时使用,包含鉴权、分页、错误码约定
---
我们的 API:
- **base url**: 内部 `https://api.internal.example.com`
- **鉴权**: header `X-Internal-Token`,从环境变量 `INTERNAL_TOKEN` 取
- **分页**: query `?cursor=xxx`,响应 `nextCursor` 为 null 时结束
- **错误码**:
- 4001: 鉴权失败
- 4002: 参数缺失
- 4003: 资源不存在
- 5001: 上游超时,可重试之后涉及内部 API 的代码,Claude 会自动按这些约定写。
示例 3:带资源文件的 skill
skill 目录可以放其他文件,Claude 按需读取:
~/.claude/skills/
└── our-deployment/
├── SKILL.md # 触发条件 + 入口指令
├── checklist.md # 上线前 checklist
└── rollback.md # 回滚步骤SKILL.md 里写「上线相关问题时,先读 checklist.md;回滚时读 rollback.md」。这样主上下文不会被一次性占满。
实用技巧
1. description 决定加载效果
- ❌ 模糊:
description: 关于 git 的 - ✅ 具体:
description: 写 git commit message 时使用,提交前清理 diff 时也用
2. skill 可以 "调用" agent
skill 指令里可以写"用 general-purpose agent 调研 X",形成组合拳。
3. 用 /skill 命令查看
> /skills列出当前会话能用的所有 skill 和它们的描述,方便排查。
下一篇:Hooks →