agent-skills:用工程纪律驯化 AI 编程 Agent 的结构化实践
原文:addyosmani/agent-skills on GitHub
作者:Addy Osmani(Google Gemini 团队)
开源时间:2026年2月,现已超过 60K Star
核心观点:这不是"工具集",是"纪律手册"
agent-skills 的定位值得仔细辨析。它不是给你多加一个 AI 插件,而是在回答一个被低估的工程问题:AI Agent 会写代码,但它会跳过不在其"输出分布"中的工作------规格文档、测试、代码审查、发布验收。
这个判断是全项目的支点。正如 colobu.com 的深度分析所指出:Agent 的最大弱点恰好就是它的最大优势的反面------高速生成代码,导致天然倾向于跳过那些"不出现在 diff 中的工作"。这不是模型懒惰,是统计概率使然:模型总会走最短路径。
相比 之前应对这一问题的常见方案------在 prompt 里写"请先写测试"或"不要跳过 review"------agent-skills 的根本区别在于:它把这些约束变成了有步骤、有检查点、有退出标准的可执行流程,而不是可以被 Agent 轻易绕过的一句建议。它预判了 Agent 可能找的借口,并提前在 Skill 文件里内嵌了反驳,这被称为"反合理化表(anti-rationalization tables)"。
关键机制:24 个 Skill 覆盖完整开发生命周期
整个项目由 24 个 Skill 构成,分 6 个阶段:
bash
DEFINE → PLAN → BUILD → VERIFY → REVIEW → SHIP
/spec /plan /build /test /review /ship
8 个斜杠命令是入口,每条命令触发背后对应的 Skill 工作流。三个最值得关注的设计:
1. 反合理化表(Anti-Rationalization Tables)
每个 Skill 内嵌"Agent 的借口 → 预设反驳"对照,例如:
| Agent 可能的借口 | 内嵌的反驳 |
|---|---|
| "测试后面再补" | "后面"永远不会来。补写的测试只是同一份代码换了名字 |
| "这个改动不需要审查" | 所有改动都需要审查。变更越小越没理由跳过 |
| "太简单了,不需要 spec" | 简单任务不需要长规格,但需要验收标准。两行也行,写下来 |
这是整个设计里最有创意的一层------不是告诉 Agent 应该做什么,而是让 Agent 无法说服自己跳过。
2. doubt-driven-development:对抗性自审循环
五步流程:CLAIM → EXTRACT → DOUBT → RECONCILE → STOP,专门针对高风险场景(生产环境、安全敏感、不可逆操作),强制 Agent 在输出前对自己的每一个断言做对抗性审查。这意味着 Agent 必须主动质疑自己的输出,而不是直接提交。
3. 量化的测试金字塔
TDD Skill 明确规定 80/15/5 分布(单元/集成/E2E),不留模糊空间。这个量化标准直接避免了"测试写了,但全是 E2E"这类常见的质量幻觉。
对比判断:相比 .cursorrules / 系统 Prompt,差异是什么
目前开发者对抗 Agent"无纪律"问题常用三种路径:
| 路径 | 做法 | 弱点 |
|---|---|---|
| 系统 Prompt | 在 context 头部贴规则文字 | 随 context 增长被稀释;建议性非强制性 |
.cursorrules 等规则文件 |
IDE 级别的简短策略 | 太短,无法承载完整工作流;无检查点 |
agent-skills |
结构化 Skill + 命令入口 + 反合理化 | 上下文占用较大;需要团队统一采用 |
微信公众号"新智元"系的分析文章也指出:agent-skills 的务实之处在于,它主动建议用户只激活 2-3 个核心技能,避免上下文爆炸导致模型"机械执行、规则互相打架"。这说明项目作者清楚地知道把 24 个 Skill 全部塞入 context 是灾难,不是银弹。
交叉验证
信源 1:colobu.com(个人技术博客,2026-06-28)
作者小笨熊对项目进行了深度解读,观点与原文高度一致,但补充了一个重要背景:agent-skills 的设计哲学与 Google 工程文化有明显基因相承------Hyrum's Law 对应 API 设计 Skill、Beyoncé Rule 对应 TDD Skill、Chesterton's Fence 对应代码简化 Skill。这个视角让人理解为什么这套 Skill 比一般"AI 使用指南"更有分量:它是对谷歌十余年工程实践的蒸馏,不是凭空设计的。该信源认同原文的定位,并进一步强化了"制度性阻止自我欺骗"这一核心机制的解释。
信源 2:微信公众号分析文章(2026-05-05,约 18K Star 时期)
这篇文章的立场稍有保留:它指出项目当时已存在"不少 issue"(命令冲突、hook 问题),并明确表示 agent-skills 并非"再强的模型就能解决"的那类方案,而是需要配合良好工程实践基础 才能发挥效果。这是原文 README 中未直接强调的一个边界------如果团队本身没有代码审查习惯,光靠 /review 命令也无法培养出这个习惯。该信源总体认同价值,但对"通用适用性"有更多保留。
两个信源都不存在对原文核心观点的反驳,但共同补充了一个原文轻描淡写的局限:这套系统的使用效果,强依赖于执行者(AI Agent 或开发者)本身的上下文质量和工具配置。
边界与局限:并非适用于所有场景
局限在于以下几点需要正视:
- 对小项目或原型开发成本偏高 。
/spec→/plan→/build的完整链路,在写一个 100 行脚本时显然是杀鸡用牛刀。原文的/build auto模式试图缓解这一痛点,但仍需要先通过 spec 阶段。 - 跨工具适配质量参差。Claude Code 是"推荐路径",其他工具(Windsurf、GitHub Copilot)的集成本质是把 Markdown 内容粘进规则文件,结构化程度大打折扣。
- 单技能安装存在路径依赖缺陷 。原文自己在 README 里承认:单独安装某个 Skill 时,引用
references/目录下共享 checklist 的路径会失效,这个问题被追踪在 issue #361,至今未完全解决。 - "反合理化表"能否真正约束 LLM 仍有不确定性。这套机制依赖 LLM 在处理 Skill 文件时确实"读到"了对应的约束,而不是被更强的 few-shot 示例或用户 prompt 覆盖掉。实际效果因模型版本和 context 长度而异。
个人启发:这对开发者意味着什么具体行动
这篇文章和这个项目的实际价值,不是"又多了一个 AI 工具可以试试",而是它提供了一个思考框架:给 AI Agent 的约束,应该是可执行的流程,而不是可忽略的建议。
具体而言:
- 对个人开发者 :如果你已经用 Claude Code 或 Cursor 写了一段时间代码,最值得先安装的是
test-driven-development和code-review-and-quality这两个 Skill,而不是全量安装 24 个。上下文膨胀是实际代价,要控制。 - 对团队/工程决策者 :这个项目的真正价值是"工程文化的外化"------如果你的团队有 TDD 习惯、有 spec 文化,这套工具能把这些习惯延伸给 AI Agent;如果团队本身没有这些习惯,
agent-skills只是名义上的约束,实际上 Agent 还是会"被允许"绕过。先建立工程文化,再用工具固化。 - 对评估 AI 工具链的人:这意味着下一阶段 AI 编程工具的竞争维度,不只是"写代码有多快、有多准",而是"能否保证工程流程的完整性"。这个方向会推动更多工具从能力增强转向纪律强化。
延伸思考
-
"反合理化表"能否被自动生成? 每个 Skill 里内嵌的借口-反驳对,目前是人工编写的。随着 Agent 使用数据的积累,理论上可以让 AI 从真实的"Agent 失败案例"中反向提取常见借口,自动更新这张表。这将是 Skill 设计从静态走向动态的关键一步。
-
这套框架是否会推动 AI IDE 的"流程层"标准化? 目前 Claude Code、Cursor、Copilot 各有各的 context 注入方式,
agent-skills通过 Markdown + 命令的最小公约数来兼容,是务实选择。接下来值得观察的是,这类项目是否会推动主流 AI IDE 统一一套"Skill 协议",就像.editorconfig对代码风格做的那样。 -
"工程纪律外包给 Skill 文件"会不会反向削弱开发者自身的工程判断力? 这是一个值得警惕的悖论:当 AI Agent 严格按照 Skill 流程执行,开发者可能逐渐习惯于不再亲自思考"这步该不该做 review""这个功能是否需要 feature flag"。长期来看,工程纪律的载体从人转移到文件,是赋能还是依赖,取决于开发者如何主动理解这些约束背后的原因。
📚 参考来源