两周前,我在用 Claude Code 写一个后端接口。

三分钟,接口出来了。能跑。

然后我问它:「测试写了吗?」

它回答:「我可以帮你补充测试...」

「那安全审查呢?」

「这个接口目前看起来是安全的...」

「PRD 呢?这个接口的边界条件你考虑了吗?」

沉默。

这就是 AI 编程助手的本质——它会走完整任务,但只走最短路径。我不主动要求,它不会主动做。这不是 bug,这是特性。它的目标是「让用户满意」,而不是「让代码能上生产」。

然后我发现了 agent-skills 这个项目。


它是什么

一句话:给 AI 编程助手注入「资深工程师思维」的结构化工作流框架

作者是 Addy Osmani,谷歌工程师,Chrome DevTools 的核心贡献者。他在 2026 年 2 月开源这个项目,两个月突破 25,000 Stars,最新版本 0.6.0 就在今天(2026-04-28)发布。

GitHub:https://github.com/addyosmani/agent-skills

本质上,agent-skills 是一套精心设计的 Markdown 文件。每个文件叫 SKILL.md,定义了 AI agent 在特定工程场景下应该遵循的工作流。

听起来很简单?细看之后,我觉得这是今年见过设计最严谨的 AI 工程实践项目之一。


核心洞察:AI 为什么爱走捷径?

在看技术细节之前,先说 Addy 的核心洞察——这个洞察值得单独说。

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

AI 助手天然倾向于走最短路径。不是因为它「懒」,而是因为优化目标是「完成用户的指令」,而不是「产出生产级代码」。

用户说「帮我写个登录接口」,AI 的目标就是产出一个能跑的登录接口。至于:

  • 这个接口的行为有没有规格文档?

  • 边界条件考虑了吗?

  • SQL 注入防护加了吗?

  • 测试怎么写?

  • 如果之后要改怎么版本化?

这些都不在「完成任务」的最短路径上。

所以 agent-skills 的核心思路不是「更好的提示词」,而是给 agent 注入结构化工作流,让它必须走完整流程。就像给新人配了一套严格的研发流程 SOP,而不是靠他自觉。


7 个命令,覆盖完整开发生命周期

项目顶层暴露 7 个斜杠命令,映射到软件开发的完整生命周期:

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

命令

干什么

核心原则

/spec

定义要构建什么

Spec before code

/plan

规划怎么构建

Small, atomic tasks

/build

增量实现

One slice at a time

/test

证明功能正确

Tests are proof

/review

合并前审查

Improve code health

/code-simplify

简化代码

Clarity over cleverness

/ship

发布到生产

Faster is safer

你输入 /spec,背后自动激活的是 spec-driven-development 技能;你输入 /build,背后是一套增量实现的完整步骤。命令是入口,技能是实现。


20 个技能深度拆解

7 个命令背后,是 20 个结构化技能。我重点说几个特别有意思的。

📋 Define 阶段:先想清楚,再动手

idea-refine:把模糊想法结构化成具体提案。

有过那种「我想做个 XX 功能,AI 直接开始写代码,写完发现完全不是我想要的」的经历吗?这个技能就是为了防止这种情况。用发散-收敛的思维框架,在动键盘之前先把想法理清楚。

spec-driven-development:写 PRD 再写代码。

是的,写 PRD。这听起来很「重」,但项目里的解释说服了我——PRD 不是给甩锅用的,是为了让 agent 在实现时有明确的边界,知道什么是「完成了」。


🏗️ Build 阶段:几个我真的在用的技能

test-driven-development:红-绿-重构。测试金字塔 80/15/5(单元/集成/E2E)。

包含 Beyonce Rule——这是谷歌内部的说法:

"If you liked it, you should have put a test on it."(如果你想保留这个行为,就给它写测试。)

看到这个我直接笑出来了。谷歌工程师起名字真的有一套。

context-engineering:专门讲怎么给 AI agent 准备「合适的上下文信息」。

不是随便把文件扔给它,而是有策略地打包信息,让它在正确的时机获取正确的内容。在 RULES 文件、MCP 集成、上下文压缩等场景下都很有用。Claude Code 用户一定会有共鸣。

source-driven-development:每个框架决策都必须基于官方文档,并标注引用来源。

用来解决 AI「幻觉」问题——AI 经常自信地给出已经废弃的 API 用法。这个技能要求它必须先验证,再引用,并明确标出「未验证」的内容。我在用 Next.js 新特性的时候深有体会。

api-and-interface-design:契约优先设计,包含 Hyrum's Law

Hyrum's Law 是这样说的:一个 API 被足够多的用户使用之后,所有可观察到的行为都会被某些用户依赖,无论这个行为是不是你文档里写的。这条定律在设计公开接口时极其重要,能帮 AI agent 理解「我能改什么,不能改什么」。


🔍 Verify 阶段:有证据才算完成

browser-testing-with-devtools:利用 Chrome DevTools MCP,让 AI agent 直接操作浏览器获取真实运行时数据——DOM 结构、控制台日志、网络请求、性能数据。

这个技能的价值在于:不是「看起来工作了」,而是「有实际的运行时证据证明它工作了」。对 Claude Code 用户来说,配合 Chrome DevTools MCP 使用体验非常好。

debugging-and-error-recovery:五步排查法:复现 → 定位 → 缩小范围 → 修复 → 加防护。

还有一个「Stop-the-line rule」——当发现影响构建或关键功能的问题时,立刻停下来处理,不能绕过。这是从精益制造借来的概念,用在软件开发里很对。


✅ Review 阶段:anti-rationalization 是点睛之笔

这里要重点说一个设计亮点。

每个 SKILL.md 都有一个叫 「Common Rationalizations」(常见借口) 的章节。

就是把 AI 跳过这个步骤时会给出的理由,全部列出来,并给出反驳。

比如在 test-driven-development 里:

  • 借口:「这个功能太简单了,不需要测试」

  • 反驳:「简单的代码也会以意想不到的方式被修改,测试是记录行为的文档」

  • 借口:「我之后再补测试」

  • 反驳:「之后的测试是补充覆盖率的,不是验证功能的。一旦功能写完,测试就失去了指导实现的作用」

这个设计太懂 AI 了。AI 不是不知道应该写测试,而是当你不明确要求时,它会用「看起来合理的理由」来跳过。把这些理由内置到技能里,相当于提前封死了它的退路。

security-and-hardening:OWASP Top 10 防护,三层边界系统(外部/内部/数据层),密钥管理规范。

有了这个,AI agent 在写涉及用户输入、鉴权、数据存储的代码时会自动执行安全检查,而不是等你问。


🚀 Ship 阶段:代码即负债

deprecation-and-migration:这个技能的核心理念是「代码即负债」(code-as-liability)。

每一行代码都有维护成本。删代码比写代码更难,因为你得先搞清楚它在做什么、谁在依赖它。这个技能教的是如何系统化地下线功能、迁移用户,而不是让废弃代码无限堆积。

documentation-and-adrs:架构决策记录(Architecture Decision Records)。

记录的不是「做了什么」,而是「为什么这么决定」。这对 AI agent 来说很重要——没有决策上下文,它很容易在下次修改时把之前的架构设计推翻。


每个技能的解剖结构

所有 20 个技能都遵循完全相同的内部结构:

┌─────────────────────────────────────────────────┐
│  SKILL.md                                       │
│                                                 │
│  Frontmatter     → name + description           │
│  Overview        → 这个技能是什么               │
│  When to Use     → 什么情况触发                 │
│  Process         → 分步工作流                   │
│  Rationalizations→ 常见借口 + 反驳              │
│  Red Flags       → 出问题的信号                 │
│  Verification    → 完成的证据要求               │
└─────────────────────────────────────────────────┘

最后的 Verification(验证) 章节是整个设计的灵魂。

每个技能都以「证据要求」结束。不是「看起来完成了」,而是必须提供具体证据——测试通过截图、构建输出、实际运行时数据。这直接切断了 AI 用「应该没问题」糊弄过关的可能。


三个专家 Agent 角色

除了 20 个技能,项目还内置了 3 个预配置的专家 Agent 角色:

Agent

视角

适用场景

code-reviewer

资深 Staff Engineer,五轴代码审查

PR 合并前

test-engineer

QA 专家,测试策略与覆盖率分析

测试方案设计

security-auditor

安全工程师,漏洞检测 + OWASP 评估

安全合规检查

把代码扔给 security-auditor,它不会泛泛地说「这段代码看起来安全」,而是按照 OWASP Top 10 逐项检查,给出具体的威胁分析。这个角色定义的思路值得借鉴。


安装(Claude Code 用户)

如果你用 Claude Code,一键安装:

/plugin marketplace add addyosmani/agent-skills
/plugin install agent-skills@addy-agent-skills

本地开发调试:

git clone https://github.com/addyosmani/agent-skills.git
claude --plugin-dir /path/to/agent-skills

装完之后,直接在 Claude Code 里用 /spec/plan/build 等命令就能激活对应技能。

其他工具的安装方式:

  • Cursor:把 SKILL.md 复制到 .cursor/rules/ 目录

  • Gemini CLIgemini skills install https://github.com/addyosmani/agent-skills.git --path skills

  • Windsurf / Copilot / OpenCode / Kiro:参考项目 docs/ 目录下各工具的配置指南


我的实际使用体验

装完之后用它完整走了一个功能,说说真实感受。

用起来好的地方:

/spec 确实会逼着你(和 AI)把需求说清楚,我在这个过程中发现了几个之前没想到的边界条件,后来证明如果不处理上线之后是 bug。

test-driven-development 技能让 AI 在写代码前先写测试,代码质量肉眼可见地提升了——不是因为测试本身,而是因为「要先写测试」这个约束,逼着 AI 在动手前把接口设计想清楚。

source-driven-development 解决了我一直担心的 AI 用过期 API 的问题,每次给出引用都会注明来源,出错的概率明显下降。

还需改进的地方:

20 个技能对刚上手的人来说有点难选,不知道该先用哪个。建议从 /spec → /plan → /build → /test 这条主线开始,其他技能按需激活。

部分技能步骤比较重,简单需求用起来有点杀鸡用牛刀的感觉。这个项目更适合「认真用 AI 写生产代码」的团队,而不是快速原型验证的场景。


为什么这个项目让我印象深刻

看了很多 AI 编程工具,agent-skills 让我印象深刻,不是因为它有多复杂,而是因为背后的工程思维。

它不是在 prompt 上做文章,而是在流程上做文章。

谷歌工程文化里有个核心观点:好的流程不是约束工程师,而是让工程师把精力集中在真正重要的事情上,而不是每次都从头想「我应该怎么做」。agent-skills 把这套逻辑移植到了 AI agent 上。

Hyrum's Law、Beyonce Rule、测试金字塔——这些不是 Addy 发明的,是谷歌多年工程实践的沉淀,来自《Software Engineering at Google》这本书。现在它们被封装成了 AI 能理解和执行的结构化工作流。

某种意义上,这是「把资深工程师的隐性知识显式化」的一次系统性尝试

当然,这套东西能不能真正改变 AI agent 的行为质量,还需要更多时间验证。但作为一个方向,我觉得它比「写更好的提示词」走得更远。


最后

如果你也有「AI 写的代码跑起来没问题但我不敢合并」的困扰,或者觉得 AI 助手总是在走捷径、需要你不断追着问,不妨试试 agent-skills。

它不会让 AI 变得全能,但会让它在该遵循流程的时候不偷懒。

GitHub:https://github.com/addyosmani/agent-skills

你现在用的是哪个 AI 编程助手?有没有类似让它「更靠谱」的实践?欢迎评论区聊聊

我是顾北,关注我,获取更多好玩好用的 Skill 实用技巧!

谢谢你阅读我的文章~

我们下期再见!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐