Skills 与子代理
可复用技能包与子 agent。
Skills 与子代理
这一课你将能做到
- 创建一个符合规范的 Skill(SKILL.md + frontmatter),让 Claude 在匹配场景自动加载团队 SOP
- 用 /agents 创建子代理(subagent),把 code review、大规模排查类任务委派到独立上下文执行
- 判断「写进 CLAUDE.md / 做成 Skill / 交给子代理 / 用 MCP」四条路径的适用边界
为什么要学
团队里总有些重复出现的「套路」:发版前检查清单、接口设计规范、SQL 审查要点。写进每次提问?太累。全塞 CLAUDE.md?上下文爆炸。Skill 解决的正是「按需加载的知识包」:平时只占一行描述,当任务匹配时才展开完整手册。子代理解决的则是「脏活累活别污染主上下文」:让一个独立会话去翻遍十个文件、跑全套检查,只把结论带回来。两者都是 Claude Code 规模化协作的核心机制。
人话:Skill 是「按岗位发的操作手册」,平时揣兜里(只占一行),干到对应活才掏出来(全文加载);子代理是你带的「专项实习生」,脏活他干,只向你汇报结论。
先建立图像
主会话(你的对话)
│
├─ 匹配到 Skill → 展开加载 SKILL.md 全文(像按需 import)
│
└─ Task 工具 → 启动子代理
├─ 独立上下文窗口(主会话历史它看不见)
├─ 自己读文件/跑命令(消耗自己的上下文)
└─ 结束时只返回一份总结报告给主会话
Skill 与相关机制的分工:
| 机制 | 本质 | 触发方式 | 适合装什么 |
|---|---|---|---|
| CLAUDE.md | 常驻记忆 | 每次会话自动注入 | 全局命令与规范 |
| Slash command | 提示模板 | 你手动 /xxx 调用 | 固定动作(如一键 review) |
| Skill | 按需知识包 | 模型按描述自动匹配 | 领域 SOP、操作手册 |
| MCP | 外部能力 | 模型按需调用工具 | 连接外部系统 |
跟着做
步骤 1:创建你的第一个 Skill
项目内建目录 .claude/skills/sql-review/,创建 SKILL.md:
---
name: sql-review
description: 审查 SQL 与 MyBatis 映射文件时使用。检查索引命中、大事务、
N+1 查询、隐式类型转换。当任务涉及 SQL 优化、慢查询分析、mapper 文件
变更时主动应用。
---
# SQL 审查手册
## 审查清单(按序执行)
1. WHERE 条件字段是否有索引,EXPLAIN 是否 type=ALL
2. 单条 SQL 影响行数超过 1 万的,必须分批
3. 循环内查询即 N+1,改为批量 IN 或 JOIN
4. 字符串列与数字比较的隐式转换必须显式化
## 输出格式
按 文件:行号 列出问题,每条给出改写示例。
description 是触发开关:它决定模型在什么任务下掏出这本手册,务必写清「什么时候用」。
步骤 2:验证自动触发
新会话(或 /clear 后)输入:
帮我看看 OrderMapper.xml 里这几个查询有没有性能问题
观察它应用了手册里的审查项。若未触发,说明 description 与任务措辞差异过大——这是最常见故障,见卡点急救。
步骤 3:用 /agents 创建子代理
/agents
交互界面选创建,或直接手写 .claude/agents/code-reviewer.md:
---
name: code-reviewer
description: 代码审查专家。在完成一段功能编写、或用户要求 review 时
主动使用。
tools: Read, Grep, Glob, Bash
model: sonnet
---
你是资深 Java 评审。审查当前改动时:
1. 用 git diff 获取变更
2. 按正确性 > 安全 > 性能 > 可读性排序输出问题
3. 每条问题给文件:行号与修复建议
4. 不修改任何代码,只输出报告