Claude Code 学习站

Skills

Skill 是一份带触发条件的指令包。Claude 在合适场景自动加载,把领域知识、工作流标准化。

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 →