5.5 从重复流程提炼一个 skill¶
阅读完本节后,你应该能把一段反复复制的工作流提示词,整理成一个可复用的 skill。
skill 的价值不是“让 Agent 更聪明”,而是让它每次都按同一套流程工作。它适合沉淀团队经验、检查清单、输出格式和工具调用顺序。
什么时候该写 skill¶
满足任意两条就可以写:
- 同一段提示词复制了 3 次以上。
- 每次都要解释同一套项目流程。
- 任务有固定输入和固定输出。
- Agent 经常漏步骤。
- 团队希望多人使用同一标准。
- 这个流程需要搭配参考文件或脚本。
不适合写 skill:
- 一次性需求。
- 还没稳定的方法论。
- 只有一句简单偏好。
- 需要大量人工判断且无法结构化的任务。
skill 的基本结构¶
一个最小 skill 通常长这样:
my-skill/
SKILL.md
references/
checklist.md
scripts/
helper.sh
核心是 SKILL.md。参考资料和脚本都是可选。
SKILL.md 最小模板¶
---
name: repo-review
description: Use when reviewing a code diff before commit. Focus on correctness, scope control, tests, security, and documentation sync.
---
# Repo Review Skill
## When to Use
Use this skill when the user asks for a review, pre-commit check, or final quality pass.
## Workflow
1. Inspect current diff.
2. Identify unrelated changes.
3. Check correctness risks.
4. Check missing tests.
5. Check docs that need updates.
6. Report findings by severity.
## Output Format
- Findings first.
- Each finding includes file path and line if possible.
- If no findings, say no findings and mention residual risks.
## Rules
- Do not rewrite code unless the user asks.
- Do not praise the diff.
- Do not report speculative issues without concrete evidence.
描述字段很重要。Agent 通过 description 判断什么时候自动使用它。
工作坊:把 PR Review 流程做成 skill¶
第 1 步:先写一次普通提示词¶
请 review 当前 diff,重点看:
- 逻辑 bug。
- 无关改动。
- 测试缺失。
- 类型和边界。
- 安全风险。
- 文档是否需要同步。
输出 findings first,按严重程度排序。
先手动跑几次,确认流程稳定。
第 2 步:提炼固定规则¶
把每次都不变的内容抽出来:
- review 范围。
- severity 排序。
- 输出格式。
- 不要做什么。
- 需要检查哪些命令。
不要把某个具体任务的细节写进 skill。
第 3 步:增加参考清单¶
references/review-checklist.md:
# Review Checklist
## Correctness
- 输入为空时是否正确。
- 异步失败是否处理。
- 数据格式是否跨层一致。
## Scope
- 是否改了无关文件。
- 是否做了未要求的重构。
## Tests
- 新行为是否有测试。
- 旧行为是否有回归测试。
## Security
- 是否泄露 token。
- 是否扩大权限。
- 是否信任用户输入。
然后在 SKILL.md 里写:
Before reporting, consult `references/review-checklist.md`.
第 4 步:测试 skill¶
用 3 种任务测试:
- 一个明显有 bug 的 diff。
- 一个没有问题的小 diff。
- 一个包含无关格式化的大 diff。
看它是否能触发、能按格式输出、不会乱改代码、不会输出泛泛建议。
skill 的输出要硬¶
差的输出:
代码整体不错,可以考虑增加一些测试。
好的输出:
P1: `src/importer.ts` 在 CSV 为空时仍然调用 `rows[0]`,会触发 runtime error。
建议增加空文件测试,并在解析后提前返回结构化错误。
skill 应该让 Agent 更具体,而不是更礼貌。
skill 和 AGENTS.md 的分工¶
| 内容 | 放哪里 |
|---|---|
| 项目长期规则 | AGENTS.md / CLAUDE.md |
| 某类任务固定流程 | skill |
| 大段参考资料 | skill references/ |
| 可执行辅助逻辑 | skill scripts/ |
| 当前任务目标 | PRD / prompt |
维护 skill¶
每次 skill 失败后,不要只在当前会话补一句话。应该问:
这次失败是 skill 规则缺失,还是当前任务特殊?
如果是规则缺失,请给出应该写回 SKILL.md 的最小修改。
skill 的质量来自多次真实任务的修正。
交付检查表¶
- [ ]
description清楚说明触发场景。 - [ ] workflow 是步骤,不是理念。
- [ ] 输出格式固定。
- [ ] 禁止行为明确。
- [ ] 示例和参考资料不会污染其他任务。
- [ ] 至少用 3 个真实或模拟任务试过。