← 返回技术AI

🤖 Addy Osmani Agent-Skills 深度研究:让AI编码助手像资深工程师一样工作

📚 学习来源

🎯 核心收获

五大关键洞察

  1. 工程流程即代码:Agent-Skills 将"资深工程师的纪律"封装成可执行的 workflow,而非参考文档,让 AI 强制执行被默认跳过的关键步骤
  2. 反借口表机制:每个技能内置"常见借口+反驳"对照表,在 AI 产生"跳过步骤"念头之前进行拦截——这是该项目最独特的设计
  3. 6阶段开发流水线:DEFINE → PLAN → BUILD → VERIFY → REVIEW → SHIP,精确镜像 Google/Amazon 等顶级工程组织的成熟流程
  4. 渐进式披露策略:SKILL.md 作为入口点,支持材料仅在需要时加载,保持 token 使用最小化
  5. Verification 不可协商:每个技能以具体证据终止——测试通过、构建输出干净、运行时数据验证,"看起来对"永远不够
  6. doubt-driven-development:对抗性自检流程,CLAIM→EXTRACT→DOUBT→RECONCILE→STOP,附带可选的跨模型升级机制
  7. 多平台无缝集成:支持 Claude Code、Cursor、Gemini CLI、Windsurf、Copilot、Kiro、OpenCode 等主流 AI 编码工具

一、项目背景与动机

1.1 作者背景

Addy Osmani 是 Google Chrome 团队的工程总监,前端工程领域的传奇人物,著有《Learning JavaScript Design Patterns》,是 Lighthouse 的核心贡献者。他每天都在使用 AI 编码工具,因此敏锐地察觉到了一个普遍问题:AI 编码助手默认会走最短路径,而这条路径恰恰会跳过那些"不出现在 diff 里"但至关重要的工程步骤。

1.2 核心问题

"AI coding agents default to the shortest path — which often means skipping specs, tests, security reviews, and the practices that make software reliable."

当用户说"帮我加一个用户导出功能"时,AI 助手会噼里啪啦写完代码、跑通了,潇洒地说"Done!"。但它没有问导出格式要不要兼容旧版本,没有写测试,没有考虑权限边界,提交的 diff 大到没人能 review。

1.3 项目数据

指标数值
GitHub Stars30,800+
Forks3,600+
Commits174
技能模块22个
Agent角色3个
Slash命令7个
协议MIT

二、六阶段开发流水线

DEFINE PLAN BUILD VERIFY REVIEW SHIP ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ Idea │ ───▶ │ Spec │ ───▶ │ Code │ ───▶ │ Test │ ───▶ │ QA │ ───▶ │ Go │ │Refine│ │ PRD │ │ Impl │ │Debug │ │ Gate │ │ Live │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ /spec /plan /build /test /review /ship

2.1 Define 阶段——澄清要构建什么

技能idea-refinespec-driven-development

这是最重要的阶段,却被大多数 AI 助手默认跳过。Define 阶段的核心是:

  • 将模糊的想法转化为具体的提案
  • 撰写 PRD(产品需求文档)
  • 覆盖目标、命令、结构、代码风格、测试和边界
  • 任何代码之前完成

2.2 Plan 阶段——拆解任务

技能planning-and-task-breakdown

将规格说明分解为小的、可验证的任务:

  • 每个任务应该在一次专注的会话中完成
  • 任务有显式的验收标准
  • 任务有验证步骤(测试、构建、手动检查)
  • 任务按依赖排序,而非按感知的重要性排序

2.3 Build 阶段——编写代码

技能(7个):incremental-implementationtest-driven-developmentcontext-engineeringsource-driven-developmentdoubt-driven-developmentfrontend-ui-engineeringapi-and-interface-design

2.4 Verify 阶段——证明它能工作

技能browser-testing-with-devtoolsdebugging-and-error-recovery

五步排查:复现→定位→简化→修复→防护,停止规则:不推进失败的测试或构建

2.5 Review 阶段——合并前的质量门

技能(4个):code-review-and-qualitycode-simplificationsecurity-and-hardeningperformance-optimization

五个审查维度:正确性、可读性、架构、安全性、性能

2.6 Ship 阶段——部署上线

技能(5个):git-workflow-and-versioningci-cd-and-automationdeprecation-and-migrationdocumentation-and-adrsshipping-and-launch

三、技能解剖规范(Skill Anatomy)

每个 SKILL.md 都遵循统一的解剖结构,这是 Agent-Skills 项目最核心的设计规范之一。

3.1 Frontmatter(必需)

---
name: skill-name-with-hyphens
description: Guides agents through [task/workflow]. Use when [specific trigger conditions].
---

关键规则

  • name:小写、连字符分隔,必须与目录名匹配
  • description:以第三人称描述技能做什么,然后包含一个或多个清晰的"Use when"触发条件。必须同时包含"什么"和"何时"

3.2 标准章节结构

# Skill Title

## Overview
1-2 句话解释这个技能做什么以及为什么重要。

## When to Use
- 触发条件的项目符号列表
- When NOT to use(排除项)

## Core Process
Agent 遵循的主要工作流,分解为编号步骤或阶段。

## Common Rationalizations
| Rationalization | Reality |
|-----------------|---------|
| Agent 用来跳过步骤的借口 | 为什么这个借口是错误的 |

## Red Flags
- 表明技能被违反的行为模式

## Verification
技能流程完成后确认:
- [ ] 退出条件清单

四、反借口表机制(Anti-Rationalization)

这是 Agent-Skills 项目最独特、最值得借鉴的设计创新。

4.1 设计哲学

LLM 训练文本中包含大量关于"为什么走捷径是可以的"的推理。反-rationalization 表通过提供同样强有力的反向推理来预先阻止这一点。

4.2 真实示例

借口(Rationalization)反驳(Reality)
"等代码工作了再写测试" 你不会的。而且事后写的测试测试的是实现,不是行为。
"这太简单了,不需要测试" 简单的代码会变复杂。测试记录了预期行为。
"这很简单,不需要规格说明" 简单任务不需要长规格说明,但仍然需要验收标准。两行规格说明是可以的。
"规格说明会拖慢我们" 15 分钟的规格说明防止数小时的返工。
"我会晚点再添加测试" 调试生产环境中的错误比在开发时修复它要贵 100 倍。

4.3 企业 AI 培训的启发

  • Prompt 技巧工作坊:训练用户识别 AI 偷懒行为的常见模式
  • 质量管控:建立企业 AI 使用的反借口清单
  • 教育培训:让员工学会对 AI 的"跳过步骤"请求说"不"

五、重点技能深度解读

5.1 doubt-driven-development:对抗性自检流程

这是 Agent-Skills 中最新、最具创新性的技能之一。

CLAIM → EXTRACT → DOUBT → RECONCILE → STOP │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ 命名 提取 审查 分类 停止 决策 Artiface 视角 发现 条件 +CONTRACT 满足 发送审查者

触发条件

  • 生产、安全或不可逆决策
  • 工作中接触不熟悉的代码
  • 自信的输出现在验证比以后调试便宜

交叉模型验证:可选地在交互式怀疑循环中提供跨模型验证——使用不同模型发现单一模型共享的盲点。

5.2 source-driven-development:基于官方文档验证

DETECT → FETCH → IMPLEMENT → CITE │ │ │ │ ▼ ▼ ▼ ▼ 识别 获取 遵循 展示 版本 文档 文档 来源 显示的模式

来源层级(按权威性排序):

优先级来源示例
1官方文档react.dev、docs.djangoproject.com
2官方博客/更新日志react.dev/blog、nextjs.org/blog
3Web 标准参考MDN、web.dev
4浏览器/运行时兼容性caniuse.com、node.green

5.3 context-engineering:上下文打包策略

┌─────────────────────────────────────┐ │ 1. Rules Files (CLAUDE.md) │ ← Always loaded ├─────────────────────────────────────┤ │ 2. Spec / Architecture Docs │ ← Per feature ├─────────────────────────────────────┤ │ 3. Relevant Source Files │ ← Per task ├─────────────────────────────────────┤ │ 4. Error Output / Test Results │ ← Per iteration ├─────────────────────────────────────┤ │ 5. Conversation History │ ← Accumulates └─────────────────────────────────────┘

六、Agent 角色设计

6.1 三个专家角色

Agent角色视角
code-reviewer.md高级代码审查者五轴审查
test-engineer.mdQA 专家测试策略、Prove-It 模式
security-auditor.md安全工程师漏洞检测、OWASP 评估

6.2 多角色协作模式

唯一推荐的多角色编排模式是并行扇出+合并步骤

/ship 命令 │ ┌───────────┼───────────┐ │ │ │ code-reviewer security- test-engineer (独立审查) auditor (独立审查) │ │ │ └───────────┴───────────┘ │ ▼ 主 Agent 合成 go/no-go 决策报告

七、Google 工程文化的体现

概念所在技能应用
Hyrum's Lawapi-and-interface-design每个 observable 行为都会成为依赖
Beyoncé Ruletest-driven-development如果你喜欢它,就应该测试它
测试金字塔test-driven-development80/15/5 分配目标
Chesterton's Fencecode-simplification不要移除代码而不理解为什么添加
基于主干的开发git-workflow-and-versioning短寿分支,快速合并
~100 行 PR 大小code-review-and-quality可审查的变更范围
Shift Leftci-cd-and-automation质量门尽早设置
代码即负债deprecation-and-migration清理旧代码

八、多平台支持与安装

平台安装方式
Claude Code/plugin marketplace add addyosmani/agent-skills
Cursor复制 SKILL.md 到 .cursor/rules/
Gemini CLIgemini skills install
Windsurf添加到规则配置
GitHub Copilot使用 agents/ 中的 agent 定义
Kiro存储在 .kiro/skills/
OpenCode通过 AGENTS.md 和 skill 工具

推荐起步配置

最小配置:加载三个核心技能

  • spec-driven-development —— 定义要构建什么
  • test-driven-development —— 证明它能工作
  • code-review-and-quality —— 合并前验证质量

九、与其他 Skills 框架的对比

vs Matt Pocock Skills

维度Matt Pocock SkillsAddy Osmani Agent-Skills
焦点TypeScript 类型安全完整工程生命周期
方法原子化技能集合流程驱动工作流
深度单个最佳实践6 阶段端到端覆盖
反借口有(每个技能内置)

核心差异

  1. 工程流程导向 vs 能力封装导向:Agent-Skills 不是封装能力("如何写测试"),而是封装流程("在写代码之前要做什么")
  2. 强制执行 vs 建议遵循:通过反借口表,技能是强制执行的,而非可选建议
  3. 完整生命周期 vs 单点覆盖:覆盖从 idea 到 ship 的完整流程

💭 思考与实践

立即可行动项

  1. 在团队中试点:选择一个小团队,引入 3 个核心技能(spec-driven-development、test-driven-development、code-review-and-quality)
  2. 建立反借口清单:基于本文分析,建立团队自己的反借口表
  3. 文档标准化:采用 SKILL.md 格式作为团队 AI 工作流文档的标准
  4. 验证文化建立:在 AI 辅助工作中建立"必须验证"的文化

中期规划

  1. AI 使用 SOP 建设:将 Agent-Skills 的理念融入团队 AI 使用规范
  2. Prompt 工作坊:开展识别 AI 偷懒行为的培训
  3. 质量门建立:在团队代码流程中建立 AI 辅助的质量门

关键洞察

Agent-Skills 项目最深刻的启示是:AI 编码助手的质量取决于约束它们的流程,而非它们的能力上限。一个遵循严格工程流程的"普通"AI,往往比一个遵循自由发挥的"强大"AI 产生更好的结果。

这也呼应了软件开发中的一条古老真理:纪律和流程比天赋更重要。Agent-Skills 将这一真理带入了 AI 时代。