<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>工程实践 on 鬼哥的空间</title><link>https://guige.ai/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/</link><description>Recent content in 工程实践 on 鬼哥的空间</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 28 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://guige.ai/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/index.xml" rel="self" type="application/rss+xml"/><item><title>从使用者到学习者：agent-skills 架构深度剖析与高手思维体系</title><link>https://guige.ai/p/agent-skills-architecture/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/agent-skills-architecture/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post 从使用者到学习者：agent-skills 架构深度剖析与高手思维体系" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;AI coding agents default to the shortest path.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;— Addy Osmani&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="引子从使用者到学习者"&gt;引子｜从使用者，到学习者
&lt;/h2&gt;&lt;p&gt;最近几个月，鬼哥在做 AI 项目的过程中，一直被一个问题困扰——&lt;/p&gt;
&lt;p&gt;让 Claude / Cursor / Copilot 帮我写代码，效率确实快了。但一段时间下来，我开始隐隐不安：代码量上去了，我能真正&amp;quot;理解&amp;quot;和&amp;quot;掌握&amp;quot;的部分却在下降；功能堆得很快，但一到上线前的查 bug、做 review，处处是雷；我有十几年的工程经验，但在 AI 协作的场景下，这些经验好像没怎么用上，甚至有时候反过来被 AI 的&amp;quot;先把它跑起来再说&amp;quot;带跑偏。&lt;/p&gt;
&lt;p&gt;直到我遇到了 &lt;a class="link" href="https://github.com/addyosmani/agent-skills" target="_blank" rel="noopener"
 &gt;agent-skills&lt;/a&gt;——由 Google 资深工程师 Addy Osmani 开源的一套&amp;quot;AI 编程纪律&amp;quot;系统。&lt;/p&gt;
&lt;p&gt;这个仓库不长，核心只有 21 个 SKILL.md 文件 + 7 个 slash commands + 3 个 persona + 5 个 references + 3 个 hooks。但作为使用者用了一段时间后，我的感受是——&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这不是一套&amp;quot;AI 提示词工程的最佳实践&amp;quot;，这是一套&amp;quot;用工程纪律驯化 AI&amp;quot;的完整方法论。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它让我重新意识到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;spec 不是教科书废话，它是 AI 项目的护城河&lt;/li&gt;
&lt;li&gt;测试不是负担，它是让 AI 不胡来的物理边界&lt;/li&gt;
&lt;li&gt;review 不是仪式，它是 AI 错位假设暴露的最后窗口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更进一步，鬼哥逐渐感受到一件事：&lt;strong&gt;工程经验和 AI 开发的结合点上，有一套深度的核心思维和项目纪律，对 AI 项目的质量、成败和过程的影响，远远大于 AI 模型能力本身的差异。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;光当使用者已经不够。&lt;/p&gt;
&lt;p&gt;于是我决定深入到项目里，把 agent-skills 的架构、源码、设计哲学，一层一层读透。读完后我发现：这套体系背后的设计精密程度，远超过它表面上看起来的&amp;quot;21 个 skill&amp;quot;。它是一个完整的、有层次的、自洽的工程系统——构建这样的系统，需要十几年工程经验 + 大量 AI 项目实践的双重沉淀。&lt;/p&gt;
&lt;p&gt;这篇文章是鬼哥的剖析笔记 + 读后感。我会带你从最外层一直走到最内层，把架构拆开，讲清楚每一层在干什么、为什么这么干。但更重要的是，文章最后我想跟你聊一件事——&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;学这套体系，不能只学架构。要从源码里读高手的思维体系，再把思维体系落地到你自己的 AI 项目里。&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;如果你完全没接触过 agent-skills，推荐先看 &lt;a class="link" href="https://guige.ai/p/agent-skills-analysis/" &gt;《Agent Skills：当 Google 工程文化遇上 AI 编程代理》&lt;/a&gt; 作为前置导读。本文假设你已经对项目有基本了解，重点放在架构与工程思维的深度剖析。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="文章封面" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-architecture/cover.webp" srcset="https://guige.ai/p/agent-skills-architecture/cover_hu_6b66ddea87dc080f.webp 800w, https://guige.ai/p/agent-skills-architecture/cover_hu_73ce5cc1d0dfe5a9.webp 1600w, https://guige.ai/p/agent-skills-architecture/cover.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一句话讲清楚-agent-skills-是什么"&gt;一句话讲清楚 agent-skills 是什么
&lt;/h2&gt;&lt;p&gt;agent-skills 不是一个工具，也不是一个框架。&lt;/p&gt;
&lt;p&gt;它是&lt;strong&gt;给 AI 编程代理使用的&amp;quot;工程方法论文件包&amp;quot;&lt;/strong&gt;：21 个 SKILL.md 文件 + 7 个 slash commands + 3 个 persona + 5 个 references + 3 个 hooks，再加上一个 44 行的 CLAUDE.md 作为总入口。&lt;/p&gt;
&lt;p&gt;它要解决的问题非常具体：&lt;strong&gt;AI 默认走捷径（skip specs、skip tests、skip reviews），怎么让它按工程纪律走完整流程。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;仓库目录非常克制：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agent-skills/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── CLAUDE.md 44 行，仓库总入口（always in context）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── skills/ 21 个 SKILL.md，按开发阶段组织
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── agents/ 3 个 Persona 角色文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── references/ 5 个 清单与模式目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── hooks/ 3 个 会话生命周期脚本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── .claude/commands/ 7 个 用户可调用的 slash command
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;总文件数加起来不到 50 个。&lt;strong&gt;但读完后你会发现：这是一个被仔细切分过、每层各司其职、互不重复的精密系统。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="核心论点为什么-ai-项目需要工程纪律"&gt;核心论点｜为什么 AI 项目需要&amp;quot;工程纪律&amp;quot;
&lt;/h2&gt;&lt;p&gt;在拆架构之前，鬼哥想先讲清楚 agent-skills 解决的真正问题。&lt;/p&gt;
&lt;h3 id="ai-的默认行为是不可信的"&gt;AI 的&amp;quot;默认行为&amp;quot;是不可信的
&lt;/h3&gt;&lt;p&gt;大模型有一个隐藏特性：&lt;strong&gt;它会尽可能&amp;quot;快速地&amp;quot;给你一个看起来合理的答案。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个特性在 ChatGPT 帮你查资料时是优点。但在它写代码时，问题就来了——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你说&amp;quot;做个 dashboard&amp;quot;，它不问&amp;quot;给谁用、看什么指标&amp;quot;，直接开始 import chart 库&lt;/li&gt;
&lt;li&gt;你说&amp;quot;修这个 bug&amp;quot;，它不写复现测试，直接改逻辑&lt;/li&gt;
&lt;li&gt;你说&amp;quot;加个登录&amp;quot;，它不检查权限模型，直接写 &lt;code&gt;if password == request.password&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;你说&amp;quot;上线吧&amp;quot;，它不查 rollback 方案，直接 push&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些不是模型&amp;quot;能力不够&amp;quot;，是模型&amp;quot;默认走捷径&amp;quot;。模型本身有能力做对，但它需要&lt;strong&gt;外部约束&lt;/strong&gt;告诉它&amp;quot;不许走捷径&amp;quot;。&lt;/p&gt;
&lt;h3 id="工程纪律是-ai-输出质量的重力场"&gt;工程纪律是 AI 输出质量的&amp;quot;重力场&amp;quot;
&lt;/h3&gt;&lt;p&gt;人类资深工程师为什么不会犯这些错？因为他经历过这些坑，养成了&amp;quot;先写 spec / 先写测试 / 先想 rollback&amp;quot;的反射。这些反射就是工程纪律。&lt;/p&gt;
&lt;p&gt;AI 没有这种反射——除非你强行给它装一套。&lt;/p&gt;
&lt;p&gt;agent-skills 干的就是这件事：&lt;strong&gt;把工程纪律以可执行的、AI 看得懂的形式编码进它的工作流。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每一个 skill 都是一段&amp;quot;防偷懒程序&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;spec-driven-development&lt;/code&gt; 强制 AI 在动代码之前写 spec&lt;/li&gt;
&lt;li&gt;&lt;code&gt;test-driven-development&lt;/code&gt; 强制 AI 在写实现之前写失败的测试&lt;/li&gt;
&lt;li&gt;&lt;code&gt;code-review-and-quality&lt;/code&gt; 强制 AI 用五维标准 review 自己的代码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shipping-and-launch&lt;/code&gt; 强制 AI 在上线前列 rollback 计划&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;读了源码我才意识到：&lt;strong&gt;这些 skill 文件不是&amp;quot;教 AI 怎么做&amp;quot;，是&amp;quot;逼 AI 不能怎么做&amp;quot;。&lt;/strong&gt; 它们是反熵的力量。没有它们，AI 就会滑向&amp;quot;最短路径&amp;quot;。&lt;/p&gt;
&lt;h3 id="反合理化是核心创新"&gt;&amp;ldquo;反合理化&amp;quot;是核心创新
&lt;/h3&gt;&lt;p&gt;整个项目里我印象最深的设计，是每个 skill 里都有的 &lt;strong&gt;Common Rationalizations 表&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Rationalization&lt;/th&gt;
 &lt;th&gt;Reality&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;This is simple, I don&amp;rsquo;t need a spec&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;A two-line spec is fine, but acceptance criteria are not optional.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;I&amp;rsquo;ll write the spec after I code it&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;That&amp;rsquo;s documentation, not specification.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;The spec will slow us down&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;15-minute spec prevents hours of rework.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这是 Addy 干的最聪明的一件事——&lt;strong&gt;预判 AI 会用什么理由跳过这个 skill，把反驳预先写好放在 skill 文件里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI 在长 context 里会发明各种偷懒借口（&amp;ldquo;这次比较简单&amp;rdquo;、&amp;ldquo;我可以边写边补&amp;rdquo;……）。Common Rationalizations 表的存在，等于在 AI 的内心独白旁边放了一个反驳音轨。&lt;/p&gt;
&lt;p&gt;这一个设计，把&amp;quot;AI 心理学&amp;quot;工程化了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="整体架构六层--横切-hooks"&gt;整体架构｜六层 + 横切 hooks
&lt;/h2&gt;&lt;p&gt;把整个仓库读完后，鬼哥画出来的全景图是这样的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; USER
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /command
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌───────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 横切 (AOP) │ .claude/commands/ │ ← Layer 2: WHEN (用户入口)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────┐ └─────────┬─────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ hooks/ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │ ┌─────────┴─────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ·session │ ▼ ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ -start │ ┌─────────┐ ┌──────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ·sdd │ │ agents/ │ → │ skills/ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ -cache │ │ (WHO) │ │ (HOW) │ ← Layer 3 / Layer 4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ·simpli │ └────┬────┘ └─────┬────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ -fy-ig │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ -nore │ └───────┬───────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────┘ ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ references/ │ ← Layer 5: DATA (清单/模式)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ using-agent-skills │ ← Layer 1: 路由 + 行为宪法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ (meta-skill) │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▲
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ CLAUDE.md (44行) │ ← Layer 0: 总入口
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;读完源码后，我把这套架构拆成了 &lt;strong&gt;6 个垂直层 + 1 个横切层&lt;/strong&gt;。每一层都有非常清晰的单一职责，互不重复：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层&lt;/th&gt;
 &lt;th&gt;名字&lt;/th&gt;
 &lt;th&gt;职责&lt;/th&gt;
 &lt;th&gt;数量&lt;/th&gt;
 &lt;th&gt;加载时机&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer 0&lt;/td&gt;
 &lt;td&gt;CLAUDE.md&lt;/td&gt;
 &lt;td&gt;仓库导航（NAV）&lt;/td&gt;
 &lt;td&gt;1 个，44 行&lt;/td&gt;
 &lt;td&gt;always in context&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer 1&lt;/td&gt;
 &lt;td&gt;using-agent-skills&lt;/td&gt;
 &lt;td&gt;路由 + 行为宪法&lt;/td&gt;
 &lt;td&gt;1 个，180 行&lt;/td&gt;
 &lt;td&gt;session start 注入&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer 2&lt;/td&gt;
 &lt;td&gt;commands&lt;/td&gt;
 &lt;td&gt;用户显式入口（WHEN）&lt;/td&gt;
 &lt;td&gt;7 个&lt;/td&gt;
 &lt;td&gt;用户 &lt;code&gt;/foo&lt;/code&gt; 触发&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer 3&lt;/td&gt;
 &lt;td&gt;agents&lt;/td&gt;
 &lt;td&gt;视角与输出格式（WHO）&lt;/td&gt;
 &lt;td&gt;3 个&lt;/td&gt;
 &lt;td&gt;command 派发&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer 4&lt;/td&gt;
 &lt;td&gt;skills&lt;/td&gt;
 &lt;td&gt;流程方法论（HOW）&lt;/td&gt;
 &lt;td&gt;21 个&lt;/td&gt;
 &lt;td&gt;按需调用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer 5&lt;/td&gt;
 &lt;td&gt;references&lt;/td&gt;
 &lt;td&gt;清单与模式（DATA）&lt;/td&gt;
 &lt;td&gt;5 个&lt;/td&gt;
 &lt;td&gt;任务时按需读&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer X&lt;/td&gt;
 &lt;td&gt;hooks&lt;/td&gt;
 &lt;td&gt;横切干预（AOP）&lt;/td&gt;
 &lt;td&gt;3 个&lt;/td&gt;
 &lt;td&gt;事件触发&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img alt="六层架构总览" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-architecture/architecture-overview.webp" srcset="https://guige.ai/p/agent-skills-architecture/architecture-overview_hu_4bb085bc9df416d6.webp 800w, https://guige.ai/p/agent-skills-architecture/architecture-overview_hu_5c5fcd245bd428f5.webp 1600w, https://guige.ai/p/agent-skills-architecture/architecture-overview.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;p&gt;注意每一层的&lt;strong&gt;信息体量是逐渐增大&lt;/strong&gt;的——CLAUDE.md 44 行就把一切讲完；具体 skill 文件 100-300 行；reference 文件 134-370 行。这是一个精心设计的 &lt;strong&gt;token 预算&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;总在 context 的东西必须极短（CLAUDE.md）&lt;/li&gt;
&lt;li&gt;经常用的东西要中等长度（skills）&lt;/li&gt;
&lt;li&gt;偶尔用的东西可以详尽（references）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;这是把&amp;quot;context 即成本&amp;quot;这件事，做到极致的设计。&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;想看每一层的完整清单、文件路径、行数对比？翻字典型《架构总览》一节。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="layer-0claudemd44-行的导航极简主义"&gt;Layer 0｜CLAUDE.md：44 行的导航极简主义
&lt;/h2&gt;&lt;p&gt;读 agent-skills 时，鬼哥第一个被震到的就是这个 CLAUDE.md。&lt;/p&gt;
&lt;p&gt;整个仓库的总入口、AI 每次会话都会自动加载的文件——&lt;strong&gt;只有 44 行&lt;/strong&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;This is the agent-skills project — a collection of production-grade engineering skills for AI coding agents.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Project Structure
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[ASCII 树，6 个目录]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Skills by Phase
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;**Define:** interview-me, idea-refine, spec-driven-development
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gs"&gt;**Plan:**&lt;/span&gt; planning-and-task-breakdown
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gs"&gt;**Build:**&lt;/span&gt; incremental-implementation, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gs"&gt;**Verify:**&lt;/span&gt; browser-testing-with-devtools, debugging-and-error-recovery
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gs"&gt;**Review:**&lt;/span&gt; code-review-and-quality, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gs"&gt;**Ship:**&lt;/span&gt; git-workflow-and-versioning, ..., shipping-and-launch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Conventions
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Every skill lives in &lt;span class="sb"&gt;`skills/&amp;lt;name&amp;gt;/SKILL.md`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; YAML frontmatter with &lt;span class="sb"&gt;`name`&lt;/span&gt; and &lt;span class="sb"&gt;`description`&lt;/span&gt; fields
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Every skill has: Overview, When to Use, Process, Common Rationalizations, Red Flags, Verification
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; References are in &lt;span class="sb"&gt;`references/`&lt;/span&gt;, not inside skill directories
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Supporting files only created when content exceeds 100 lines
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Commands
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`npm test`&lt;/span&gt; — Not applicable (this is a documentation project)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Validate: Check that all SKILL.md files have valid YAML frontmatter
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Boundaries
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Always: Follow the skill-anatomy.md format for new skills
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Never: Add skills that are vague advice instead of actionable processes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Never: Duplicate content between skills — reference other skills instead
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;44 行做了 5 件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Project Structure&lt;/strong&gt; — 一棵 ASCII 树告诉你哪里有什么&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills by Phase&lt;/strong&gt; — 按阶段索引 21 个 skill&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conventions&lt;/strong&gt; — 文件 schema 约束&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commands&lt;/strong&gt; — 怎么验证（指明 &lt;code&gt;npm test&lt;/code&gt; 不适用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boundaries&lt;/strong&gt; — 不可协商的约束（Always / Never）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="它做的事-vs-它不做的事"&gt;它做的事 vs 它&lt;strong&gt;不做&lt;/strong&gt;的事
&lt;/h3&gt;&lt;p&gt;最关键的判断：&lt;strong&gt;CLAUDE.md 不重复任何下游内容&lt;/strong&gt;。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;它做&lt;/th&gt;
 &lt;th&gt;它不做&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;列目录树&lt;/td&gt;
 &lt;td&gt;描述每个目录里有什么文件&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;列 skill 名字&lt;/td&gt;
 &lt;td&gt;解释每个 skill 怎么用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;给 SKILL.md 模板的字段名&lt;/td&gt;
 &lt;td&gt;给字段的写法示例&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;说 &amp;ldquo;follow skill-anatomy.md&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;重复 skill-anatomy.md 内容&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;它就是一组&lt;strong&gt;指针&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;为什么必须这么克制？因为 CLAUDE.md 每次对话都会自动加载到 context——&lt;strong&gt;每多写一行就有 N 次重复的 token 成本&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个判断把 CLAUDE.md 和 README.md 彻底分开。README 给人看，可以有教程、动机、示例；CLAUDE.md 给 AI 看，只给坐标。&lt;/p&gt;
&lt;h3 id="第-30-行的-schema-强制"&gt;第 30 行的 schema 强制
&lt;/h3&gt;&lt;p&gt;在 6 条 Conventions 里，最重要的是这一行：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Every skill has: Overview, When to Use, Process, Common Rationalizations, Red Flags, Verification&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这一行&lt;strong&gt;等于一份合同&lt;/strong&gt;——整个仓库 21 个 skill 文件，结构上必须长成这样。&lt;/p&gt;
&lt;p&gt;读到这里我突然明白：之前看的 &lt;code&gt;spec-driven-development&lt;/code&gt; 那些教科书级别的&amp;quot;反合理化表&amp;rdquo;、&amp;ldquo;Red Flags 清单&amp;rdquo;、&amp;ldquo;Verification checklist&amp;rdquo;——&lt;strong&gt;这些不是某个 skill 的创新，是 CLAUDE.md 强制要求的格式。&lt;/strong&gt; 21 个文件必须遵守。&lt;/p&gt;
&lt;p&gt;一份 44 行的文档，撑起了整个仓库的形态。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;字典型里有 CLAUDE.md 的完整逐行拆解。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="layer-1using-agent-skillsmeta-skill-的双重职责"&gt;Layer 1｜using-agent-skills：meta-skill 的双重职责
&lt;/h2&gt;&lt;p&gt;如果说 CLAUDE.md 是地图，using-agent-skills 就是&lt;strong&gt;这套系统的&amp;quot;操作系统&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它是唯一一个会被 hook 强制注入到每个新会话的 skill。我们待会儿讲 hook 的时候你会看到，session-start.sh 干的事就一件——把 using-agent-skills 的全文塞进会话的第一条 system message。&lt;/p&gt;
&lt;p&gt;打开这个文件，你会发现它和其他 skill 完全不一样。它做两件事：&lt;/p&gt;
&lt;h3 id="职责一路由器skill-router"&gt;职责一：路由器（Skill Router）
&lt;/h3&gt;&lt;p&gt;一个 ASCII 决策树：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="n"&gt;arrives&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;│&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;Don&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;t know what you want yet? ──────→ interview-me&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;Have&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;rough&lt;/span&gt; &lt;span class="n"&gt;concept&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;need&lt;/span&gt; &lt;span class="n"&gt;variants&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;idea&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;refine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;New&lt;/span&gt; &lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;feature&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;change&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;─────→&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;driven&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;development&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;Implementing&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;─────────────→&lt;/span&gt; &lt;span class="n"&gt;incremental&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;implementation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;UI&lt;/span&gt; &lt;span class="n"&gt;work&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;─────────────────→&lt;/span&gt; &lt;span class="n"&gt;frontend&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ui&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;engineering&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;API&lt;/span&gt; &lt;span class="n"&gt;work&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;────────────────→&lt;/span&gt; &lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;interface&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;design&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;Stakes&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;─────────────→&lt;/span&gt; &lt;span class="n"&gt;doubt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;driven&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;development&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;Writing&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;running&lt;/span&gt; &lt;span class="n"&gt;tests&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;───────→&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;driven&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;development&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;Something&lt;/span&gt; &lt;span class="n"&gt;broke&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;─────────────→&lt;/span&gt; &lt;span class="n"&gt;debugging&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;recovery&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;Reviewing&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;──────────────→&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;review&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;quality&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;Deploying&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;launching&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;────────→&lt;/span&gt; &lt;span class="n"&gt;shipping&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;launch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意三个细节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;树形结构，不是列表&lt;/strong&gt;——强迫读者走唯一路径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;问句触发，不是任务描述&lt;/strong&gt;——&amp;ldquo;Something broke?&amp;rdquo; 比 &amp;ldquo;debugging task&amp;rdquo; 更贴近真实对话&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;父节点 → 子节点细化&lt;/strong&gt;——符合 AI 的层次推理习惯&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="职责二行为宪法core-operating-behaviors"&gt;职责二：行为宪法（Core Operating Behaviors）
&lt;/h3&gt;&lt;p&gt;下半部分是 6 条&amp;quot;不可协商的行为约束&amp;quot;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Surface Assumptions → 显式声明假设
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. Manage Confusion Actively → 遇到矛盾不能猜
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. Push Back When Warranted → 不做 yes-machine
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. Enforce Simplicity → 主动抵抗过度工程化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. Maintain Scope Discipline → 不顺手重构
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;6. Verify, Don&amp;#39;t Assume → 验证是必经步骤
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;读到这里我才理解为什么 Addy 要把它叫 meta-skill——&lt;strong&gt;它不是一个具体技能，它是治理其他技能的元规则&lt;/strong&gt;。每一条都精确对抗 AI 的一个典型缺陷：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;行为&lt;/th&gt;
 &lt;th&gt;对抗的 AI 缺陷&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Surface Assumptions&lt;/td&gt;
 &lt;td&gt;AI 倾向&amp;quot;静默填充&amp;quot;歧义&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Manage Confusion Actively&lt;/td&gt;
 &lt;td&gt;AI 倾向遇到矛盾&amp;quot;就近取一&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Push Back&lt;/td&gt;
 &lt;td&gt;AI 的奉承倾向（sycophancy）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Enforce Simplicity&lt;/td&gt;
 &lt;td&gt;AI 的过度工程化倾向&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Scope Discipline&lt;/td&gt;
 &lt;td&gt;AI 的&amp;quot;顺手重构&amp;quot;倾向&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Verify, Don&amp;rsquo;t Assume&lt;/td&gt;
 &lt;td&gt;AI 的&amp;quot;看起来对就完成了&amp;quot;倾向&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img alt="meta-skill 双重职责" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-architecture/meta-skill-dual-role.webp" srcset="https://guige.ai/p/agent-skills-architecture/meta-skill-dual-role_hu_98d751c93820532.webp 800w, https://guige.ai/p/agent-skills-architecture/meta-skill-dual-role_hu_ddcff32990b35ab4.webp 1600w, https://guige.ai/p/agent-skills-architecture/meta-skill-dual-role.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;p&gt;文件最后还有一份 &lt;strong&gt;10 条 Failure Modes&lt;/strong&gt;，和 6 条行为形成&amp;quot;进攻 vs 防守&amp;quot;的双层防御：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;行为约束 → 处理&amp;quot;AI 的借口&amp;quot;（主动跳过的想法）&lt;/li&gt;
&lt;li&gt;失败模式 → 处理&amp;quot;AI 的症状&amp;quot;（已经在跳过的迹象）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个 180 行的文件，承担了整套系统的路由 + 治理。&lt;strong&gt;它是 Layer 1，它的存在让 Layer 2-5 才能各司其职。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="layer-2commands7-个动词的克制设计"&gt;Layer 2｜commands：7 个动词的克制设计
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;.claude/commands/&lt;/code&gt; 里只有 7 个文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/spec → 写 SPEC.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plan → 拆解任务
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/build → 实现一个任务（TDD + incremental）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/test → 写测试
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/review → 五维 review
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/code-simplify → 简化代码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/ship → 上线决策
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;7 个 slash command，对应整个开发生命周期的 7 个关键动作。每个文件都极度克制——除了 &lt;code&gt;/ship&lt;/code&gt;，其他都在 15-25 行之间。&lt;/p&gt;
&lt;h3 id="command-不是-skill-的复刻"&gt;Command 不是 Skill 的复刻
&lt;/h3&gt;&lt;p&gt;我刚开始读的时候有个困惑：为什么有了 21 个 skill，还要单独搞一个 commands 目录？&lt;/p&gt;
&lt;p&gt;读完后才理解——&lt;strong&gt;command 是 skill 的&amp;quot;激活快捷键&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;Skill&lt;/th&gt;
 &lt;th&gt;Command&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;谁加载&lt;/td&gt;
 &lt;td&gt;自动/按需&lt;/td&gt;
 &lt;td&gt;用户显式触发&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;内容&lt;/td&gt;
 &lt;td&gt;完整方法论（100-300 行）&lt;/td&gt;
 &lt;td&gt;调用配方（15-25 行）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;写给谁看&lt;/td&gt;
 &lt;td&gt;AI 模型&lt;/td&gt;
 &lt;td&gt;模型 + 人（用户要 type）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;触发方式&lt;/td&gt;
 &lt;td&gt;描述匹配&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/&lt;/code&gt; 前缀精确匹配&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;复用方向&lt;/td&gt;
 &lt;td&gt;横向通用&lt;/td&gt;
 &lt;td&gt;项目特定&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Command 文件不重复 skill 内容，而是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;显式声明要调用哪个 skill&lt;/li&gt;
&lt;li&gt;给出最小可操作步骤（4-6 步）&lt;/li&gt;
&lt;li&gt;指定输出位置（&lt;code&gt;Save the spec as SPEC.md&lt;/code&gt;、&lt;code&gt;Save the plan to tasks/plan.md&lt;/code&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;举个例子，&lt;code&gt;/spec&lt;/code&gt; 全文不到 20 行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;description: Start spec-driven development — write a structured specification before writing code
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Invoke the agent-skills:spec-driven-development skill.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Begin by understanding what the user wants to build. Ask clarifying questions about:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; The objective and target users
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; Core features and acceptance criteria
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; Tech stack preferences and constraints
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;4.&lt;/span&gt; Known boundaries
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Then generate a structured spec covering all six core areas: ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Save the spec as SPEC.md in the project root and confirm with the user before proceeding.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它把 spec-driven-development 这个 200 行的 skill，浓缩成了一个用户层的快捷指令。&lt;/p&gt;
&lt;h3 id="命令命名的语义学"&gt;命令命名的语义学
&lt;/h3&gt;&lt;p&gt;每个命令名都对应一个&lt;strong&gt;具体的可交付物&lt;/strong&gt;。没有 &lt;code&gt;/think&lt;/code&gt; 或 &lt;code&gt;/explore&lt;/code&gt; 这种没有产物的命令——这是一种纪律：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;命令&lt;/th&gt;
 &lt;th&gt;隐含承诺的产物&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/spec&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SPEC.md&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/plan&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;tasks/plan.md&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/build&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;代码 + 测试 + commit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;review report&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/ship&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;GO/NO-GO + rollback&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;读到 &lt;code&gt;/ship&lt;/code&gt; 命令时我被震到了——这是 7 个命令里唯一一个超过 70 行的，因为它是一个&lt;strong&gt;并行 fan-out 编排器&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/ship Phase A: 并行 spawn 3 个 subagent
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (code-reviewer + security-auditor + test-engineer)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Phase B: 主 agent 合并三份报告
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Phase C: 输出 GO/NO-GO + Rollback Plan
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意 Phase A 的关键约束：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Issue all three Agent tool calls in &lt;strong&gt;a single assistant turn&lt;/strong&gt; — sequential calls defeat the purpose of this command.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;它显式约束 AI &lt;strong&gt;必须在一个 turn 里发出三个 Agent 调用&lt;/strong&gt;——否则就是串行而非并行，整个 fan-out 设计就失效了。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;字典型对 7 个命令逐个拆解，并对比单 skill / 多 skill / Fan-out 三种命令模式。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="layer-3agents为什么只有-3-个-persona"&gt;Layer 3｜agents：为什么只有 3 个 persona？
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;agents/&lt;/code&gt; 目录下只有 3 个 persona 文件 + 1 个 README：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;code-reviewer.md 97 行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;security-auditor.md 101 行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;test-engineer.md 95 行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;README.md 120 行 ← 编排宪法
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;只有 3 个&lt;/strong&gt;，这是有意为之的克制。&lt;/p&gt;
&lt;h3 id="persona-是什么"&gt;Persona 是什么？
&lt;/h3&gt;&lt;p&gt;每个 persona 文件长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;name: code-reviewer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;description: Senior code reviewer that evaluates changes across five dimensions...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# Senior Code Reviewer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;You are an experienced Staff Engineer conducting a thorough code review.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Review Framework
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 1. Correctness ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 2. Readability ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 3. Architecture ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 4. Security ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 5. Performance ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Output Format
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Critical / Important / Suggestion 三级]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Review Output Template
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Markdown 模板]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Rules
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[6 条行为规则]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Composition
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Invoke directly when: ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Invoke via: /review or /ship
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Do not invoke from another persona.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;和 Skill 文件对比，最关键的差别是 persona &lt;strong&gt;有 Output Template&lt;/strong&gt;——一段固定的 Markdown 结构。这是因为 persona 是给&amp;quot;会被并行调用、需要被 merge&amp;quot;的 subagent 用的，输出结构必须可预测、可聚合。&lt;/p&gt;
&lt;h3 id="三层架构skill--persona--command"&gt;三层架构：Skill × Persona × Command
&lt;/h3&gt;&lt;p&gt;读 agents/README.md 时，我看到这张表，整个系统的设计意图一下清晰了：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层&lt;/th&gt;
 &lt;th&gt;定位&lt;/th&gt;
 &lt;th&gt;例子&lt;/th&gt;
 &lt;th&gt;类比&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Skill&lt;/td&gt;
 &lt;td&gt;方法论 / 步骤 / 退出条件&lt;/td&gt;
 &lt;td&gt;code-review-and-quality&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;HOW&lt;/strong&gt;（怎么做）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Persona&lt;/td&gt;
 &lt;td&gt;角色 / 视角 / 输出格式&lt;/td&gt;
 &lt;td&gt;code-reviewer&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;WHO&lt;/strong&gt;（谁来做）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Command&lt;/td&gt;
 &lt;td&gt;用户入口 / 编排器&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/review&lt;/code&gt;, &lt;code&gt;/ship&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;WHEN&lt;/strong&gt;（何时做）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;具体到 &lt;code&gt;/review&lt;/code&gt; 一个命令上：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;用户输入 /review
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.claude/commands/review.md (WHEN — 入口)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;agents/code-reviewer.md (WHO — 视角)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;skills/code-review-and-quality/ (HOW — 流程)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;references/security-checklist.md (DATA — 数据)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;四层完整解构。&lt;strong&gt;每层职责单一，互不重复。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="三层架构 (Skill / Persona / Command)" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-architecture/three-layer-architecture.webp" srcset="https://guige.ai/p/agent-skills-architecture/three-layer-architecture_hu_c89fec8a85cf0321.webp 800w, https://guige.ai/p/agent-skills-architecture/three-layer-architecture_hu_19c67621d395d30d.webp 1600w, https://guige.ai/p/agent-skills-architecture/three-layer-architecture.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;h3 id="为什么只有-3-个-persona"&gt;为什么只有 3 个 persona？
&lt;/h3&gt;&lt;p&gt;读到这里我才意识到——3 个 persona 不是随便选的。它们对应 &lt;code&gt;/ship&lt;/code&gt; 命令的 fan-out 三个独立视角：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Code quality (functional) ← code-reviewer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Security (adversarial) ← security-auditor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Tests (coverage) ← test-engineer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;判定标准：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;必须是&lt;strong&gt;独立视角&lt;/strong&gt;——不能从其他视角派生&lt;/li&gt;
&lt;li&gt;必须有&lt;strong&gt;可并行&lt;/strong&gt;的工作内容（同一个 diff，不同关注点）&lt;/li&gt;
&lt;li&gt;必须有&lt;strong&gt;结构化的输出&lt;/strong&gt;便于 merge&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;像 frontend-ui、performance、accessibility 这些为什么没成为 persona？因为它们或者和现有 persona 视角重叠，或者更像 checklist 而不是视角。&lt;/p&gt;
&lt;h3 id="核心铁律the-user-is-the-orchestrator"&gt;核心铁律：The user is the orchestrator
&lt;/h3&gt;&lt;p&gt;README 里反复强调一条铁律：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;The user (or a slash command) is the orchestrator. Personas do not call other personas.&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这条规则在 agents/README.md 里被重复了 5 次以上。背后有三层原因：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;平台约束&lt;/strong&gt;：Claude Code 的 subagent 系统禁止递归——subagent 不能再 spawn subagent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;信息损耗&lt;/strong&gt;：每多一层 persona 转发，就多一次&amp;quot;用自己语言重述&amp;quot;——信息保真度下降&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价值密度&lt;/strong&gt;：纯粹做路由的 persona 没有领域价值，应该让 command 来做&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;为了让这条规则更具体，README 专门画了一段&lt;strong&gt;反例&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;错误设计：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/work-on-pr → meta-orchestrator
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ &amp;#34;this needs a review&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; code-reviewer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; meta-orchestrator (paraphrases result)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; user
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;Pure routing layer with no domain value. Adds two paraphrasing hops → information loss + 2× token cost.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这种&amp;quot;先画错的样子，再讲为什么错&amp;quot;的反例教学法，是整套文档里最有教育意义的部分。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;字典型对 3 个 persona 文件逐个拆解，并展开 README 中的所有正例/反例。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="layer-4skills21-个文件一份合同"&gt;Layer 4｜skills：21 个文件，一份合同
&lt;/h2&gt;&lt;p&gt;skills/ 是这个仓库最大的目录——21 个 SKILL.md 文件，按开发阶段组织：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Define（定义）&lt;/strong&gt;：interview-me, idea-refine, spec-driven-development&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan（规划）&lt;/strong&gt;：planning-and-task-breakdown&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build（构建）&lt;/strong&gt;：incremental-implementation, test-driven-development, context-engineering, source-driven-development, doubt-driven-development, frontend-ui-engineering, api-and-interface-design&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verify（验证）&lt;/strong&gt;：browser-testing-with-devtools, debugging-and-error-recovery&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review（评审）&lt;/strong&gt;：code-review-and-quality, code-simplification, security-and-hardening, performance-optimization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ship（发布）&lt;/strong&gt;：git-workflow-and-versioning, ci-cd-and-automation, deprecation-and-migration, documentation-and-adrs, shipping-and-launch&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但更让我震撼的是——&lt;strong&gt;这 21 个文件的结构高度一致&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="claudemd-第-30-行的合同"&gt;CLAUDE.md 第 30 行的合同
&lt;/h3&gt;&lt;p&gt;CLAUDE.md 里有一句话定义了所有 skill 必须遵守的 schema：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Every skill has: Overview, When to Use, Process, Common Rationalizations, Red Flags, Verification&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;21 个 SKILL.md 文件，逐个打开，都长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# Skill Name
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Overview
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[这个 skill 是干什么的、为什么存在]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## When to Use
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[何时启用 + When NOT to use]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Process
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[一步一步的方法论]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Common Rationalizations
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| Rationalization | Reality |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;|---|---|
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Red Flags
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[反模式症状清单]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Verification
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; [可测试的完成条件]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这是一份&lt;strong&gt;强制 schema&lt;/strong&gt;。SKILL.md 写法上的约束等于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;必须告诉读者&amp;quot;这是干什么的&amp;quot;（Overview）&lt;/li&gt;
&lt;li&gt;必须告诉读者&amp;quot;什么时候用 / 什么时候不用&amp;quot;（When to Use）&lt;/li&gt;
&lt;li&gt;必须给出可执行步骤（Process）&lt;/li&gt;
&lt;li&gt;必须预判用户会用什么借口跳过（Common Rationalizations）&lt;/li&gt;
&lt;li&gt;必须列出反模式症状（Red Flags）&lt;/li&gt;
&lt;li&gt;必须给出可验证的完成条件（Verification）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;没有任何一项是装饰&lt;/strong&gt;。每一项都对应一个 AI 可能犯的错。&lt;/p&gt;
&lt;h3 id="spec-driven-development教科书级-process"&gt;spec-driven-development：教科书级 Process
&lt;/h3&gt;&lt;p&gt;读完 21 个 skill 后，我心目中最教科书的是 &lt;code&gt;spec-driven-development&lt;/code&gt;。它的 Process 段长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SPECIFY ──→ PLAN ──→ TASKS ──→ IMPLEMENT
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼ ▼ ▼ ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Human Human Human Human
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reviews reviews reviews reviews
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;四段 gated workflow，每段都强制 human review。&lt;code&gt;Do not advance to the next phase until the current one is validated.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;它的 Specify Phase 里有 5 个非常具体的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Surface Assumptions&lt;/strong&gt; — 显式列假设，末尾加 &lt;code&gt;→ Correct me now or I'll proceed with these.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Six core areas&lt;/strong&gt; — Objective / Commands / Project Structure / Code Style / Testing Strategy / Boundaries&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;三层 Boundaries&lt;/strong&gt; — Always do / Ask first / Never do（关键是中间那层，把&amp;quot;需要人类确认&amp;quot;显式化）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reframe instructions as success criteria&lt;/strong&gt; — 把&amp;quot;做得快一点&amp;quot;翻译成&amp;quot;LCP &amp;lt; 2.5s on 4G&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spec template&lt;/strong&gt; — 可复用的 Markdown 模板&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;每一个技巧都在解决一个具体的 AI 行为偏差。&lt;/p&gt;
&lt;h3 id="common-rationalizations-的设计精髓"&gt;Common Rationalizations 的设计精髓
&lt;/h3&gt;&lt;p&gt;每个 skill 末尾的 Common Rationalizations 表，是整个 agent-skills 项目里我学到最重要的设计模式。它干两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;预判 AI 偷懒的理由&lt;/strong&gt;——AI 在长 context 里会发明各种跳过 skill 的借口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把反驳预先写好&lt;/strong&gt;——一句话见血，不啰嗦&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是一种&lt;strong&gt;反熵设计&lt;/strong&gt;。它把&amp;quot;AI 心理学&amp;quot;工程化了，让&amp;quot;逼 AI 不能这么做&amp;quot;成为可执行的格式。&lt;/p&gt;
&lt;p&gt;读到这里我意识到：&lt;strong&gt;整个 agent-skills 项目最大的创新点，可能不是&amp;quot;列出 21 个 skill&amp;quot;，而是&amp;quot;为 skill 文件定义了一种格式&amp;quot;&lt;/strong&gt;。任何一个团队，只要愿意按这个格式写自己的 skill 文件，就能把自己的工程纪律编码给 AI。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;字典型逐项拆解 spec-driven-development、test-driven-development、using-agent-skills 等代表性 skill，展示 schema 在不同语境下的应用。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="layer-5referenceslazy-loading-的数据层"&gt;Layer 5｜references：lazy loading 的数据层
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;references/&lt;/code&gt; 目录下有 5 个文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;accessibility-checklist.md 160 行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;performance-checklist.md 153 行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;security-checklist.md 134 行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;testing-patterns.md 236 行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;orchestration-patterns.md 370 行
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;所有文件都没有 YAML frontmatter&lt;/strong&gt;——这是它们与 skill 最本质的区别。&lt;strong&gt;它们不是 skill，不被自动发现，不被自动加载。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="context-on-demand-的设计"&gt;Context-on-Demand 的设计
&lt;/h3&gt;&lt;p&gt;整套架构的分层是这样的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SKILL.md (process / 方法论 / 100-200 行) ← 总在 context 里
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 指向
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;references/X.md (data / 清单 / 100-400 行) ← 按需读
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;skill 文件保持精简，把&amp;quot;长尾的检查项 / 模式目录 / 反模式表&amp;quot;全部下沉到 references。当 AI 真正需要时，由 skill 文件指示去读对应的 reference。&lt;/p&gt;
&lt;p&gt;CLAUDE.md 里这条约定明确写了：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Supporting files only created when content exceeds 100 lines&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;100 行是阈值。超过就拆出去。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="引用机制纯文本路径"&gt;引用机制：纯文本路径
&lt;/h3&gt;&lt;p&gt;跨仓库扫了一遍引用方式，模式高度一致：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;see `references/security-checklist.md`&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;For detailed accessibility requirements...see `references/accessibility-checklist.md`&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;(see references/orchestration-patterns.md)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;没有任何自动加载机制&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不是 &lt;code&gt;include&lt;/code&gt; 指令&lt;/li&gt;
&lt;li&gt;不是 frontmatter 字段&lt;/li&gt;
&lt;li&gt;不是 MCP 资源&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;就是一句&amp;quot;自然语言路径&amp;quot;。AI 读到这句话，自己判断是否需要 Read。&lt;/p&gt;
&lt;p&gt;这种&amp;quot;软引用&amp;quot;的好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI 决定权重&lt;/strong&gt;：context 紧张时可以不读&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;透明可控&lt;/strong&gt;：用户可以看到哪些 reference 被读了&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨工具兼容&lt;/strong&gt;：在任何能读文件的环境都能工作&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="两种-reference-的功能分化"&gt;两种 reference 的功能分化
&lt;/h3&gt;&lt;p&gt;5 个 reference 文件，本质上分两类：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;类型&lt;/th&gt;
 &lt;th&gt;文件&lt;/th&gt;
 &lt;th&gt;内容形态&lt;/th&gt;
 &lt;th&gt;触发点&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Checklist&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;security / performance / accessibility&lt;/td&gt;
 &lt;td&gt;复选框任务列表&lt;/td&gt;
 &lt;td&gt;上线前、review 时&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Pattern Catalog&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;testing-patterns / orchestration-patterns&lt;/td&gt;
 &lt;td&gt;正例 + 反例 + 决策表&lt;/td&gt;
 &lt;td&gt;设计时、新增能力时&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Checklist 类的形态：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Authentication
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; Passwords hashed with bcrypt (≥12 rounds)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; Session cookies: httpOnly, secure, sameSite: &amp;#39;lax&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; Session expiration configured
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; Rate limiting on login endpoint (≤10 attempts per 15 minutes)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;复选框 → 显式&amp;quot;做过/没做&amp;quot;二元状态；每条都是可验证条件（含具体参数 &lt;code&gt;≥12 rounds&lt;/code&gt;、&lt;code&gt;≤10 attempts&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;Pattern Catalog 类的形态：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 1. Direct invocation (no orchestration)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[场景描述 + 示例 + 成本]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 2. Single-persona slash command
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[...]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 3. Parallel fan-out with merge
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[ASCII 流程图 + 使用条件]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Anti-patterns
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[...]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;命名模式（A / B / C）便于交叉引用，每个模式包含图示、用例、成本、反信号，显式列出 anti-patterns。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这一层的妙处在于：它把&amp;quot;数据&amp;quot;和&amp;quot;方法论&amp;quot;彻底分开&lt;/strong&gt;。同一个 security-checklist 被 code-review、security-and-hardening、shipping-and-launch 三个 skill 共用——写在 reference 里就只需要维护一份。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="layer-xhooks无侵入的-aop-设计"&gt;Layer X｜hooks：无侵入的 AOP 设计
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;hooks/&lt;/code&gt; 是整个仓库里我最佩服的一层——&lt;strong&gt;三个 hook，三种完全不同的干预模式&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Hook&lt;/th&gt;
 &lt;th&gt;触发事件&lt;/th&gt;
 &lt;th&gt;干预方式&lt;/th&gt;
 &lt;th&gt;配套 Skill&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;session-start&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;SessionStart&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;注入&lt;/strong&gt; context&lt;/td&gt;
 &lt;td&gt;using-agent-skills&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;sdd-cache&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;PreToolUse:WebFetch&lt;/code&gt; + &lt;code&gt;PostToolUse:WebFetch&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;替换&lt;/strong&gt; 工具输出&lt;/td&gt;
 &lt;td&gt;source-driven-development&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;simplify-ignore&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;PreToolUse:Read&lt;/code&gt; + &lt;code&gt;PostToolUse:Edit|Write&lt;/code&gt; + &lt;code&gt;Stop&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;遮蔽&lt;/strong&gt; 工具输入&lt;/td&gt;
 &lt;td&gt;code-simplification&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img alt="hooks 三种干预模式" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-architecture/hooks-three-modes.webp" srcset="https://guige.ai/p/agent-skills-architecture/hooks-three-modes_hu_bc3821d9dcb31aa0.webp 800w, https://guige.ai/p/agent-skills-architecture/hooks-three-modes_hu_ff7216d578a584ad.webp 1600w, https://guige.ai/p/agent-skills-architecture/hooks-three-modes.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;h3 id="session-start自动加载操作系统"&gt;session-start：自动加载操作系统
&lt;/h3&gt;&lt;p&gt;session-start.sh 只有 24 行，干的事就一件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;META_SKILL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$SKILLS_DIR&lt;/span&gt;&lt;span class="s2"&gt;/using-agent-skills/SKILL.md&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$META_SKILL&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;CONTENT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;cat &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$META_SKILL&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; jq -cn --arg message &lt;span class="s2"&gt;&amp;#34;agent-skills loaded. ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$CONTENT&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;{priority: &amp;#34;IMPORTANT&amp;#34;, message: $message}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每个新会话启动时，把 &lt;code&gt;using-agent-skills/SKILL.md&lt;/code&gt; 的全部 180 行注入到第一条 system message 里。&lt;/p&gt;
&lt;p&gt;没有它的话：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 进入仓库不知道有 21 个 skill&lt;/li&gt;
&lt;li&gt;AI 不知道决策树&lt;/li&gt;
&lt;li&gt;AI 不知道 6 条核心行为约束&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CLAUDE.md 虽然总在 context，但它只有 44 行的导航信息。&lt;strong&gt;真正的&amp;quot;操作系统&amp;quot;是 using-agent-skills——必须通过 hook 强制加载。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="sdd-cachehttp-协议感知的缓存"&gt;sdd-cache：HTTP 协议感知的缓存
&lt;/h3&gt;&lt;p&gt;这是整个项目里我认为最精彩的一个设计。&lt;/p&gt;
&lt;p&gt;核心矛盾：&lt;code&gt;source-driven-development&lt;/code&gt; skill 要求&lt;strong&gt;每个框架决策都 fetch 官方文档&lt;/strong&gt;——但同一个项目跨会话工作意味着反复 fetch 同一个页面。简单缓存会破坏 skill 的&amp;quot;always verify against current docs&amp;quot;承诺。&lt;/p&gt;
&lt;p&gt;解决方案：&lt;strong&gt;不靠 TTL，靠 ETag / Last-Modified 校验&lt;/strong&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PreToolUse:WebFetch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;有缓存？──无──→ 放行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 有
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HEAD 请求 + If-None-Match: &amp;lt;etag&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;返回 304？──否──→ 放行（让 WebFetch 真正跑）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 是
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exit 2 + 缓存内容输出到 stderr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Claude Code 把 stderr 当作 WebFetch 的&amp;#34;结果&amp;#34;返回给 AI
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最妙的是 &lt;strong&gt;exit 2 当作 in-band 信号&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$STATUS&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;304&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ... 输出缓存内容到 stderr ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude Code 的 hook 协议里，&lt;code&gt;exit 2&lt;/code&gt; = 阻止工具执行 + 把 stderr 传回 AI。sdd-cache 利用这个机制，把&amp;quot;缓存命中&amp;quot;伪装成&amp;quot;工具被拒&amp;quot;——但 stderr 里其实是有效内容。&lt;/p&gt;
&lt;p&gt;这不是 hack，是&lt;strong&gt;对协议的精确利用&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;还有一个细节：&lt;strong&gt;没有 ETag/Last-Modified 的内容永不缓存&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$ETAG&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LAST_MOD&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dbg &lt;span class="s2"&gt;&amp;#34;cannot revalidate, bypass&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;没有验证器的内容永不缓存。这是核心安全保证——避免&amp;quot;缓存了但永远不知道何时该失效&amp;quot;的状态。&lt;/p&gt;
&lt;h3 id="simplify-ignore让模型物理上看不到"&gt;simplify-ignore：让模型物理上看不到
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/code-simplify&lt;/code&gt; 会重写代码以提高可读性。但有些代码不能被重写：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手工展开的循环（性能优化）&lt;/li&gt;
&lt;li&gt;精心调过的算法&lt;/li&gt;
&lt;li&gt;跨平台 workaround&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只在注释里写&amp;quot;don&amp;rsquo;t simplify this&amp;quot;，模型不一定遵守。&lt;/p&gt;
&lt;p&gt;simplify-ignore 的解决方案：&lt;strong&gt;让模型物理上看不到&lt;/strong&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* simplify-ignore-start: perf-critical */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;buf&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;buf&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* simplify-ignore-end */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;经过 hook 处理后，模型 read 文件时看到的是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/* BLOCK_de115a1d: perf-critical */
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只有占位符。模型根本不知道里面是什么。&lt;/p&gt;
&lt;p&gt;三阶段生命周期：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PreToolUse:Read → 备份原文件 + 替换为 BLOCK_&amp;lt;hash&amp;gt; 占位符
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 模型读到的是替换后的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PostToolUse:Edit → 模型写入新版本（仍含 BLOCK_&amp;lt;hash&amp;gt;）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → hook 展开占位符回到原代码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 保存到磁盘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Stop（会话结束） → 从备份恢复所有被保护的文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;内容哈希作为占位符 ID——即使模型把占位符复制、移位、删除，hash 仍能精确定位回原代码。&lt;/p&gt;
&lt;h3 id="三个-hook-的设计共性"&gt;三个 hook 的设计共性
&lt;/h3&gt;&lt;p&gt;虽然三个 hook 用途完全不同，但它们都遵守相同的设计原则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;优雅降级&lt;/strong&gt;：依赖缺失（jq、curl）时静默 exit 0，让会话继续&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;显式调试日志&lt;/strong&gt;：每个关键步骤打日志到 &lt;code&gt;.debug.log&lt;/code&gt;，通过环境变量或 sentinel 文件触发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与具体 skill 一对一绑定&lt;/strong&gt;：每个 hook 只服务一个 skill&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文档专门解释反直觉行为&lt;/strong&gt;：每个 hook 都假设读者会困惑，主动消除困惑&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="hook-的核心哲学不修改-skill增强-skill"&gt;Hook 的核心哲学：不修改 skill，增强 skill
&lt;/h3&gt;&lt;p&gt;读完 hooks 后我意识到——&lt;strong&gt;这三个 hook 都没有修改任何 skill 内容，但增强了 skill 的能力&lt;/strong&gt;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;SDD-CACHE.md: &amp;ldquo;The skill itself is unchanged. It continues to follow DETECT → FETCH → IMPLEMENT → CITE. The hook only changes what happens under the hood when FETCH runs.&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这是 &lt;strong&gt;AOP（面向切面编程）思想在 AI 工程里的应用&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;session-start 干预 Layer 1 的加载方式&lt;/li&gt;
&lt;li&gt;sdd-cache 干预 Layer 4 的工具调用&lt;/li&gt;
&lt;li&gt;simplify-ignore 干预 Layer 4 的工具读写&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们都不在层级内，是横切关注点——&lt;strong&gt;在不修改 skill 本身的情况下增强 skill&lt;/strong&gt;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;字典型对 hooks 三个脚本逐行拆解，展示每个 hook 的完整 shell 实现与边界情况处理。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="三条贯穿全系统的设计哲学"&gt;三条贯穿全系统的设计哲学
&lt;/h2&gt;&lt;p&gt;读完整个 agent-skills 项目，鬼哥提炼出三条贯穿所有 6 层的核心哲学。它们不是 Addy 写在某一个文件里的，但渗透在每一个设计决策里。&lt;/p&gt;
&lt;p&gt;&lt;img alt="三条贯穿系统的设计哲学" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-architecture/design-philosophies.webp" srcset="https://guige.ai/p/agent-skills-architecture/design-philosophies_hu_c6357b4ae57195ba.webp 800w, https://guige.ai/p/agent-skills-architecture/design-philosophies_hu_2ab920940634be9a.webp 1600w, https://guige.ai/p/agent-skills-architecture/design-philosophies.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;h3 id="哲学一委托而非复制never-duplicate"&gt;哲学一：委托而非复制（Never Duplicate）
&lt;/h3&gt;&lt;p&gt;CLAUDE.md 第 43 行写着：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Never: Duplicate content between skills — reference other skills instead.&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这一条规则贯穿了所有 6 层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/build&lt;/code&gt; command 委托给 &lt;code&gt;incremental-implementation&lt;/code&gt; + &lt;code&gt;TDD&lt;/code&gt;，而不是复制内容&lt;/li&gt;
&lt;li&gt;skills 委托给 references，而不是塞清单&lt;/li&gt;
&lt;li&gt;personas 委托给 skills，而不是复制流程&lt;/li&gt;
&lt;li&gt;hooks 委托给协议（exit code），而不是定义自己的通信机制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;整个仓库的&amp;quot;指针架构&amp;quot;，根源就是 CLAUDE.md 的这一条 &amp;ldquo;Never: Duplicate content&amp;rdquo;。&lt;/strong&gt; 任何一处违反这条规则，就会触发跨文件的内容漂移，进而瓦解整个系统的可维护性。&lt;/p&gt;
&lt;h3 id="哲学二利用协议而非绕过协议"&gt;哲学二：利用协议而非绕过协议
&lt;/h3&gt;&lt;p&gt;sdd-cache 用 exit code 2 实现缓存命中通信——这不是 hack 出来的新通道，而是精确地用了 Claude Code hook 协议里 exit code 2 的含义。&lt;/p&gt;
&lt;p&gt;simplify-ignore 也是——它不给模型发&amp;quot;特殊指令&amp;quot;，而是直接物理修改 Read 工具返回的文件内容。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hook 作用在协议层，不作用在语义层。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;整个项目里，凡是需要在 AI 行为上做特殊干预的地方，agent-skills 都选择&amp;quot;利用现有协议&amp;quot;的方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;exit code&lt;/code&gt; 传信号，不发明新指令&lt;/li&gt;
&lt;li&gt;用 ASCII 决策树触发路由，不写规则引擎&lt;/li&gt;
&lt;li&gt;用 Markdown 模板约束输出，不接入校验工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种思维方式给我的启发是——&lt;strong&gt;好的 AI 工程，应该用 AI 已经会用的语言去约束 AI，不要发明一套 AI 看不懂的形式系统。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="哲学三用反例教学定义边界"&gt;哲学三：用反例教学定义边界
&lt;/h3&gt;&lt;p&gt;读完 agents/README.md 后我意识到——&lt;strong&gt;架构铁律是&amp;quot;否定式&amp;quot;的（不要做 X），所以必须用反例教学。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;agent-skills 里到处是反例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;agents/README.md 画了一段刻意的&amp;quot;反例代码&amp;quot;（meta-orchestrator）&lt;/li&gt;
&lt;li&gt;每个 skill 的 Red Flags 段是&amp;quot;AI 已经在偏离时的可观察行为&amp;quot;&lt;/li&gt;
&lt;li&gt;每个 skill 的 Common Rationalizations 是&amp;quot;AI 还没行动时的思维偏差&amp;quot;&lt;/li&gt;
&lt;li&gt;spec-driven-development 列了&amp;quot;When NOT to use&amp;quot;的反向条件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;正例告诉读者 &amp;ldquo;做什么&amp;rdquo;，反例告诉读者 &amp;ldquo;边界在哪里&amp;rdquo;&lt;/strong&gt;。两者缺一不可。&lt;/p&gt;
&lt;p&gt;很多技术文档只有正例——读者读完后知道怎么做，但不知道什么时候不该做。agent-skills 用大量反例补上了这块。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="鬼哥的推荐从架构到思维体系"&gt;鬼哥的推荐｜从架构到思维体系
&lt;/h2&gt;&lt;p&gt;写到这里，文章其实已经把 agent-skills 的架构讲完了。但鬼哥想留点篇幅，跟你聊一件更重要的事。&lt;/p&gt;
&lt;h3 id="不要只学架构要读高手的思维体系"&gt;不要只学架构，要读&amp;quot;高手的思维体系&amp;quot;
&lt;/h3&gt;&lt;p&gt;如果你只是把 agent-skills 当成一套&amp;quot;AI 提示词模板&amp;quot;或者&amp;quot;工程纪律检查表&amp;quot;，那你只学到了 30%。&lt;/p&gt;
&lt;p&gt;剩下的 70% 在哪？&lt;strong&gt;在源码里，在每一个设计决策背后的取舍里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;举几个我读源码时被震到的地方：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1）100 行是拆分阈值，但 SKILL.md 自己可以超过 100 行。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CLAUDE.md 说 &amp;ldquo;Supporting files only created when content exceeds 100 lines&amp;rdquo;。但 spec-driven-development 的 SKILL.md 自己有 200 行——为什么不拆？&lt;/p&gt;
&lt;p&gt;读源码我才理解：&lt;strong&gt;100 行规则是&amp;quot;data vs methodology&amp;quot;的分界线，不是文件长度的硬上限&lt;/strong&gt;。方法论可以长，但清单和数据必须拆出去。这个判断只有写过大量工程文档的人才能精准把握。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2）路由树和决策矩阵交叉验证。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;using-agent-skills 的决策树和 agents/README.md 的&amp;quot;Decision matrix&amp;quot;讲的是不同的事——前者是&amp;quot;任务路由&amp;quot;，后者是&amp;quot;协作模式选择&amp;quot;。两者交叉但不重叠。&lt;/p&gt;
&lt;p&gt;读到这里我才意识到——&lt;strong&gt;好的文档系统会用多种结构表达同一个概念，从不同角度让读者反复确认理解。&lt;/strong&gt; 这是教学体系而不是文档体系。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3）每个 skill 都有反例，但 Verification 没有反例。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为什么？因为 Verification 是 boolean 可判定的（yes/no），反例没有意义。Common Rationalizations 和 Red Flags 是模糊地带（AI 可能这么想/可能这么做），所以需要反例。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这种&amp;quot;什么需要反例、什么不需要&amp;quot;的精准判断，是工程经验的体现。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="高手思维的核心用约束代替能力"&gt;高手思维的核心：用约束代替能力
&lt;/h3&gt;&lt;p&gt;读完 agent-skills 后我有一个最深的感受——&lt;strong&gt;Addy 在用工程约束代替模型能力&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;很多人做 AI 项目的第一反应是：&amp;ldquo;这个模型不够好，我要换更强的&amp;quot;或&amp;quot;我要给它更多 example&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;但 Addy 的做法是相反的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不期待模型自己知道要写 spec → 用 skill 强制&lt;/li&gt;
&lt;li&gt;不期待模型自己知道要写测试 → 用 TDD skill 强制&lt;/li&gt;
&lt;li&gt;不期待模型自己知道要 review → 用 &lt;code&gt;/ship&lt;/code&gt; 编排 review&lt;/li&gt;
&lt;li&gt;不期待模型自己知道要 rollback → 用模板强制输出 rollback plan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;他把&amp;quot;对模型的期待&amp;quot;降到最低，把&amp;quot;对流程的设计&amp;quot;提到最高。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这才是十几年工程经验在 AI 时代的真正价值——你知道&amp;quot;什么是会出错的&amp;quot;，所以你设计了流程去防止它出错，而不是寄希望于 AI 自己不出错。&lt;/p&gt;
&lt;h3 id="落地从一份-claudemd-开始"&gt;落地：从一份 CLAUDE.md 开始
&lt;/h3&gt;&lt;p&gt;如果你想把这套思维体系落地到你自己的 AI 项目里，鬼哥的建议是——&lt;strong&gt;不要直接 fork agent-skills，先写你自己的 CLAUDE.md。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;按照本文剖析的 5 段结构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Project Structure (你的目录 + 一句话描述)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. [Categorical Index] (按场景给资产索引)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. Conventions (你的文件 schema 约束)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. Commands (怎么验证 / 跑测试)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. Boundaries (Always / Ask first / Never)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;写完后，你会发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你自己都说不清楚的&amp;quot;项目惯例&amp;quot;——其实就是模糊的工程纪律&lt;/li&gt;
&lt;li&gt;你写不出来的&amp;quot;Boundaries&amp;quot;——其实就是你团队里没有共识的边界&lt;/li&gt;
&lt;li&gt;你列不齐的&amp;quot;Conventions&amp;quot;——其实就是新人最容易踩坑的地方&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;写一份 AI 看的 CLAUDE.md，本质上是逼自己把工程纪律显式化。&lt;/strong&gt; 这件事的价值，远超过让 AI 写得更好。&lt;/p&gt;
&lt;p&gt;然后你可以再写自己的 skill 文件——按照 6 段式 schema（Overview / When to Use / Process / Common Rationalizations / Red Flags / Verification）。这不仅是给 AI 看的，更是把你的工程经验沉淀成可复用资产。&lt;/p&gt;
&lt;h3 id="结语"&gt;结语
&lt;/h3&gt;&lt;p&gt;agent-skills 这套体系最让我震撼的，不是它的精密程度，而是&lt;strong&gt;它把&amp;quot;资深工程师的反射&amp;quot;编码成了 AI 可以执行的格式&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;工程经验从此可以被复制、被传承、被工程化地约束 AI。&lt;/p&gt;
&lt;p&gt;这件事的意义，在 AI 编程时代刚刚开始。&lt;/p&gt;
&lt;p&gt;如果你和我一样，是一个想把工程经验和 AI 开发结合好的工程师——强烈建议你也深入读一遍 agent-skills 的源码。不只是学它的架构，更要学它每个决策背后的思维方式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这是 AI 时代，老工程师的护城河。&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;想看每一层的极致颗粒度详细拆解？翻&lt;a class="link" href="https://guige.ai/p/agent-skills-handbook/" &gt;字典型《agent-skills 项目手册》&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;想看 Addy 项目的整体定位和&amp;quot;反合理化&amp;quot;机制的来龙去脉？翻 &lt;a class="link" href="https://guige.ai/p/agent-skills-analysis/" &gt;《Agent Skills：当 Google 工程文化遇上 AI 编程代理》&lt;/a&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本文为鬼哥的 agent-skills 学习笔记。原项目地址：&lt;a class="link" href="https://github.com/addyosmani/agent-skills" target="_blank" rel="noopener"
 &gt;https://github.com/addyosmani/agent-skills&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;</description></item><item><title>harness 不再纸上谈兵：开源 harness-project-template，附完整工作流实战</title><link>https://guige.ai/p/harness-template-launch/</link><pubDate>Mon, 27 Apr 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/harness-template-launch/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post harness 不再纸上谈兵：开源 harness-project-template，附完整工作流实战" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;模型已经够强了。&lt;strong&gt;接下来卡你的不是模型，是工作流。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Codex-5.5、Claude Opus 4.7、Gemini 3、Grok 4 这一代模型出来之后，&amp;ldquo;AI 写代码&amp;quot;的天花板被肉眼可见地抬高了一格。一句模糊的需求扔进去，500 行能跑的代码就出来了。&lt;/p&gt;
&lt;p&gt;但稍微跑过几个真项目你就会发现：模型再强，也只能解决&amp;quot;写代码&amp;quot;这一段；从需求到上线之间的所有事情——怎么拆需求、怎么管上下文、怎么验证、什么时候让人接管——需要一套系统化的运行规范。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这就是 harness 要解决的问题。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最近半年，&lt;a class="link" href="https://luoli523.github.io/p/harness-engineering/" target="_blank" rel="noopener"
 &gt;Anthropic、OpenAI、Google DeepMind、Stripe 一波接一波地讲 Harness Engineering&lt;/a&gt;；&lt;a class="link" href="https://luoli523.github.io/p/agent-skills-analysis/" target="_blank" rel="noopener"
 &gt;Addy Osmani 把 Google 14 年工程文化压缩成 19 个 agent skill 开源放出来&lt;/a&gt;；社区里&amp;quot;工作流第一、模型第二&amp;quot;几乎成了共识。&lt;strong&gt;理论分析和最佳实践讨论已经够多了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但你打开 GitHub 想找一个能 clone 就用的脚手架，会发现极少。要么是 SaaS 公司的工作流截图（看不到代码），要么是某个 README 里散落的 &lt;code&gt;CLAUDE.md&lt;/code&gt;（缺工具链衔接），要么是单个 skill 文件（没串成完整流水线）。&lt;strong&gt;理论已经足够，缺的是开箱即用的脚手架。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;于是鬼哥我做了两件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;整理出一个 GitHub Template：&lt;a class="link" href="https://github.com/luoli523/harness-project-template" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;&lt;code&gt;luoli523/harness-project-template&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; —— Python + FastAPI 起步，clone 即用，30 秒装好。&lt;/li&gt;
&lt;li&gt;用它从 0 跑了一个真实 v1 示例项目（多币种财务账本），&lt;strong&gt;39 个 atomic commit、253 个测试、93.79% 覆盖&lt;/strong&gt;，从 SPEC 到 SHIP 一步没跳。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面分两部分：先看模板长什么样、怎么用；再看那个 v1 项目是怎么从一句需求一步一步落到 39 个 commit 的，全程截图。&lt;/p&gt;
&lt;p&gt;&lt;img alt="封面" class="gallery-image" data-flex-basis="360px" data-flex-grow="150" height="1024" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/cover.webp" srcset="https://guige.ai/p/harness-template-launch/cover_hu_292a04e4679d26c1.webp 800w, https://guige.ai/p/harness-template-launch/cover.webp 1536w" width="1536"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一template长什么样怎么用"&gt;一、template：长什么样、怎么用
&lt;/h2&gt;&lt;h3 id="目录结构"&gt;目录结构
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;harness-project-template/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .agent/prompts/ # 工具无关的 prompt 模板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .agents/skills/ # 6 个核心 skill（Claude Code + Codex 自动发现）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .claude/ # Claude Code 专属：slash commands + permissions
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .github/workflows/ # CI 跑同一组门禁（ruff + mypy + pytest）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── AGENTS.md # 项目规约（所有 agent 必读）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── CLAUDE.md # 指向 AGENTS.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── src/&amp;lt;your_pkg&amp;gt;/ # FastAPI 脚手架（一个 /health 端点 + async 测试）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── tests/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── scripts/init-template.sh # 一键改名 + sync + 装 hooks
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;事实来源在 &lt;code&gt;AGENTS.md&lt;/code&gt; + &lt;code&gt;.agents/skills/&lt;/code&gt;，工具特定入口（slash command）只是包装。&lt;strong&gt;换 IDE 不用重新教 agent&lt;/strong&gt;，这是设计上的关键。&lt;/p&gt;
&lt;h3 id="6-个核心-skill"&gt;6 个核心 skill
&lt;/h3&gt;&lt;p&gt;这 6 个 skill 不是我自己造的——它们摘选自 Google 资深工程师 &lt;a class="link" href="https://addyosmani.com/" target="_blank" rel="noopener"
 &gt;Addy Osmani&lt;/a&gt; 开源的 &lt;a class="link" href="https://github.com/addyosmani/agent-skills" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;&lt;code&gt;addyosmani/agent-skills&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; 项目（详细解读见 &lt;a class="link" href="https://luoli523.github.io/p/agent-skills-analysis/" target="_blank" rel="noopener"
 &gt;Agent Skills：当 Google 工程文化遇上 AI 编程代理&lt;/a&gt;）。Addy 把 Google 14 年工程文化压缩成 19 个 agent-executable skill，每个都是一份带&amp;quot;反合理化表&amp;quot;的 markdown 工作流。我没把 19 个全塞进模板，只放每个项目里&lt;strong&gt;最小化能把项目跑起来&lt;/strong&gt;的 6 个：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Skill&lt;/th&gt;
 &lt;th&gt;何时调用&lt;/th&gt;
 &lt;th&gt;核心约束&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;spec-driven-development&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;新功能起步&lt;/td&gt;
 &lt;td&gt;先列假设清单 → 用户确认 → 写 spec&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;planning-and-task-breakdown&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;spec 通过后&lt;/td&gt;
 &lt;td&gt;拆成 ≤100 LOC 任务，每任务 2-5 条二元验收&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;incremental-implementation&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;单任务实现&lt;/td&gt;
 &lt;td&gt;RED → GREEN → REFACTOR → atomic commit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;test-driven-development&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;任何业务逻辑&lt;/td&gt;
 &lt;td&gt;先写失败测试，看红，再写实现&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;code-review-and-quality&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;自审时&lt;/td&gt;
 &lt;td&gt;五轴顺序：correctness → readability → architecture → security → performance&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;git-workflow-and-versioning&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;提交时&lt;/td&gt;
 &lt;td&gt;一任务一 commit，message 引用 spec&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;剩下 13 个（staged rollout、deprecation migration、incident response 等）按需加，不在最小集合里。&lt;/p&gt;
&lt;h3 id="三步起步"&gt;三步起步
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 拉模板（GitHub UI 用 &amp;#34;Use this template&amp;#34; 也行）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gh repo create my-service --template luoli523/harness-project-template --private --clone
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; my-service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 一键改名 + sync + 装 hooks + 跑门禁&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./scripts/init-template.sh my_service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. 启动开发服务器，验证脚手架已绿&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uv run uvicorn my_service.main:app --reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="标准使用顺序"&gt;标准使用顺序
&lt;/h3&gt;&lt;p&gt;之后任何新功能都走这个流程：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/spec &amp;lt;feature&amp;gt; # → 假设清单 → 你确认 → spec/&amp;lt;feature&amp;gt;.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plan spec/&amp;lt;feature&amp;gt;.md # → 拆成 ≤100 LOC 任务清单
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/build spec/&amp;lt;feature&amp;gt;.md T1 # 一次一个任务，TDD + atomic commit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/build spec/&amp;lt;feature&amp;gt;.md T2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;... (重复直到 T_n)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/review # 五轴自审，找 bug 修 bug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每个 slash command 包装一个 skill，跨工具一致。换到 Codex CLI 用 &lt;code&gt;$spec-driven-development&lt;/code&gt;、换到 Cursor 直接打开 &lt;code&gt;.agents/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt; 让 agent 跟着读。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二实战从一句需求到-39-个-commit"&gt;二、实战：从一句需求到 39 个 commit
&lt;/h2&gt;&lt;p&gt;&lt;img alt="鬼哥的 spec → ship 工作流脚手架" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/guige_cover.webp" srcset="https://guige.ai/p/harness-template-launch/guige_cover_hu_dc556e6821efdea9.webp 800w, https://guige.ai/p/harness-template-launch/guige_cover_hu_5fc047761f6dfcac.webp 1600w, https://guige.ai/p/harness-template-launch/guige_cover_hu_b501211a6c336cdc.webp 2400w, https://guige.ai/p/harness-template-launch/guige_cover.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;p&gt;光看模板不够说服力。下面是我用它跑一个真实 v1（多币种财务账本）的完整过程，截图为证。&lt;/p&gt;
&lt;h3 id="step-1-spec--一句话需求--假设清单"&gt;Step 1: &lt;code&gt;/spec&lt;/code&gt; —— 一句话需求 → 假设清单
&lt;/h3&gt;&lt;p&gt;我扔进去的需求是这样：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;我想做一个财务记账系统，自动按月生成资产负债表、利润表、现金流量表。日常货币是 SGD，CNY 消费、USD 投资、HKD 资产。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;注意 AI 没有立即开始写 spec。skill 强制它&lt;strong&gt;先列出所有它正打算做的隐含假设&lt;/strong&gt;，让我逐条确认：&lt;/p&gt;
&lt;p&gt;&lt;img alt="SPEC 阶段的假设清单" class="gallery-image" data-flex-basis="298px" data-flex-grow="124" height="857" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/step-2-assumptions.webp" srcset="https://guige.ai/p/harness-template-launch/step-2-assumptions_hu_42b6b9862e7e6516.webp 800w, https://guige.ai/p/harness-template-launch/step-2-assumptions.webp 1065w" width="1065"&gt;&lt;/p&gt;
&lt;p&gt;四大类：&lt;strong&gt;A. 范围切分（最关键，先确认）、B. 业务模型假设、C. 技术假设、D. 验收边界&lt;/strong&gt;。每条都是一个具体决定（&amp;ldquo;v1 不做权责发生制&amp;rdquo;、&amp;ldquo;HKD 折算并入而不单独成列&amp;rdquo;、&amp;ldquo;持久层用 SQLite&amp;rdquo;），等你 ✓。&lt;/p&gt;
&lt;p&gt;这一步的真实价值：&lt;strong&gt;它把需求里所有模糊的地方拽到表面&lt;/strong&gt;。你看到&amp;quot;v1 不做权责发生制&amp;quot;才会反应过来&amp;quot;等下，那利息预提怎么算？&amp;quot;——这才是真正要决定的事。&lt;/p&gt;
&lt;p&gt;我逐条回 OK 之后，AI 才动手写 &lt;code&gt;spec/&amp;lt;feature&amp;gt;.md&lt;/code&gt;。spec 写完，AI 主动停下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="spec 写完后停在 plan 闸门前" class="gallery-image" data-flex-basis="1726px" data-flex-grow="719" height="135" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/step-3-spec-gate.webp" srcset="https://guige.ai/p/harness-template-launch/step-3-spec-gate_hu_f36d8f4b6f5fb0f0.webp 800w, https://guige.ai/p/harness-template-launch/step-3-spec-gate.webp 971w" width="971"&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;按规则停在这里，&lt;strong&gt;不进入 plan 阶段&lt;/strong&gt;。请做以下两件事之一：1. 签字通过——回 approved 或 /plan，或 2. 打回修改&amp;hellip;&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;这就是 gated workflow 的实物体现&lt;/strong&gt;：闸门写在 skill 里，AI 自己执行。它不会越权，也不会替你决定 spec 通过没。&lt;/p&gt;
&lt;h3 id="step-2-plan--切成-27-个任务卡"&gt;Step 2: &lt;code&gt;/plan&lt;/code&gt; —— 切成 27 个任务卡
&lt;/h3&gt;&lt;p&gt;spec 签字之后，&lt;code&gt;/plan&lt;/code&gt; 命令把它拆成任务清单：&lt;/p&gt;
&lt;p&gt;&lt;img alt="plan 输出 27 个任务卡" class="gallery-image" data-flex-basis="338px" data-flex-grow="141" height="756" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/step-4-plan-output.webp" srcset="https://guige.ai/p/harness-template-launch/step-4-plan-output_hu_9a75703b819bd9b0.webp 800w, https://guige.ai/p/harness-template-launch/step-4-plan-output.webp 1067w" width="1067"&gt;&lt;/p&gt;
&lt;p&gt;每个任务：≤100 LOC 估算、2-5 条二元验收清单、列出 blocker、依赖图无环。底部 AI 还会标注它&lt;strong&gt;自己拿不准的拆分点&lt;/strong&gt;，建议我&amp;quot;扫一眼&amp;rdquo;——这种&amp;quot;主动暴露不确定性&amp;quot;也是 skill 引导出来的。&lt;/p&gt;
&lt;p&gt;最终这个项目切成 27 个任务，覆盖基础设施 → 数据模型 → 纯函数业务逻辑 → 仓储 → 报表引擎 → HTTP 路由 → 横切错误处理 → E2E + 收尾。&lt;/p&gt;
&lt;h3 id="step-3-build-t1-t2--t27--每任务一个-tdd-红绿循环"&gt;Step 3: &lt;code&gt;/build T1, T2, ... T27&lt;/code&gt; —— 每任务一个 TDD 红绿循环
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/build T1&lt;/code&gt; 开始第一个任务。RED 阶段——先写失败测试，跑红：&lt;/p&gt;
&lt;p&gt;&lt;img alt="测试跑红，开始装依赖、写实现" class="gallery-image" data-flex-basis="533px" data-flex-grow="222" height="388" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/step-6-tdd-red.webp" srcset="https://guige.ai/p/harness-template-launch/step-6-tdd-red_hu_66a032b0a892c8a.webp 800w, https://guige.ai/p/harness-template-launch/step-6-tdd-red.webp 863w" width="863"&gt;&lt;/p&gt;
&lt;p&gt;GREEN 阶段——装依赖、写实现、跑测试转绿、跑全门禁：&lt;/p&gt;
&lt;p&gt;&lt;img alt="全部测试通过 + 全门禁通过" class="gallery-image" data-flex-basis="705px" data-flex-grow="293" height="240" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/step-7-gates-pass.webp" width="705"&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ruff check&lt;/code&gt; ✅、&lt;code&gt;ruff format --check&lt;/code&gt; ✅、&lt;code&gt;mypy --strict&lt;/code&gt; ✅、&lt;code&gt;pytest&lt;/code&gt; ✅ —— 四道门禁全过才算 GREEN。&lt;/p&gt;
&lt;p&gt;最后 atomic commit，pre-commit hooks 再过一遍，commit message 引用 spec + task ID：&lt;/p&gt;
&lt;p&gt;&lt;img alt="atomic commit" class="gallery-image" data-flex-basis="1118px" data-flex-grow="466" height="130" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/step-8-atomic-commit.webp" width="606"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键&lt;/strong&gt;：单任务做完，AI 自动停下，等下一个 &lt;code&gt;/build T2&lt;/code&gt; 或 &lt;code&gt;approved&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img alt="T1 完成后停下等下一个任务" class="gallery-image" data-flex-basis="1372px" data-flex-grow="571" height="121" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/harness-template-launch/step-9-stop-wait.webp" width="692"&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;T1 完成，停在这里。等你说 /build 或 approved 我再开 T2&amp;hellip;&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;不会顺手做下一个任务&lt;/strong&gt;，不会&amp;quot;图省事一次写完几个&amp;quot;。每个任务一个独立 commit、独立的 RED→GREEN→commit 循环。这种粒度对未来 git bisect 找 bug、git revert 回滚都是无可替代的。&lt;/p&gt;
&lt;p&gt;T1 → T27 重复 27 次。&lt;/p&gt;
&lt;h3 id="step-4-review--五轴自审"&gt;Step 4: &lt;code&gt;/review&lt;/code&gt; —— 五轴自审
&lt;/h3&gt;&lt;p&gt;27 个任务全做完后，&lt;code&gt;/review&lt;/code&gt; 走五轴自审（correctness → readability → architecture → security → performance），找出了 5 个真 bug + 2 个 spec 漂移。每个发现拆成独立 fix commit + 测试，又是 7 个 commit。&lt;/p&gt;
&lt;h3 id="最终交付"&gt;最终交付
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;39 个 atomic commit、253 个测试、93.79% 覆盖&lt;/strong&gt;。&lt;code&gt;ruff + ruff format + mypy --strict + pytest&lt;/code&gt; 四道门禁全程绿。&lt;/p&gt;
&lt;p&gt;从一句需求到能跑的 v1，全程留痕、可审计、可回滚。每个设计抉择有 spec 锚点；每个 commit 可独立 revert；每个 bug 修复有测试。&lt;strong&gt;短期看慢一点，长期少欠一笔技术债。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三takeaway现在去-clone"&gt;三、Takeaway：现在去 clone
&lt;/h2&gt;&lt;p&gt;理论文章已经读够多了。这一周我把工作流物化成模板 + 用它跑通一个真实项目，证明这套不是镜中水月。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;仓库地址&lt;/strong&gt;：&lt;a class="link" href="https://github.com/luoli523/harness-project-template" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;&lt;code&gt;luoli523/harness-project-template&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; —— Python + FastAPI 起步，30 秒装好，欢迎试用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这套模板我会持续维护&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你用它跑了项目、发现 skill 该改进、想加新 skill —— 提 issue 或 PR&lt;/li&gt;
&lt;li&gt;你跑出来的项目踩了模板没覆盖的坑 —— 提 issue，我把教训沉淀回模板&lt;/li&gt;
&lt;li&gt;你想要不同技术栈的类似脚手架（Go、Rust、TypeScript）—— 留言说明诉求，我考虑分仓维护&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型还会变强、context window 还会变大，但&lt;strong&gt;让模型按工作流出活&lt;/strong&gt;这个能力不会自动到来。希望这个仓库帮你省掉前两天的摸索成本。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考链接"&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;上篇 1：&lt;a class="link" href="https://luoli523.github.io/p/harness-engineering/" target="_blank" rel="noopener"
 &gt;Harness Engineering：当模型够强，系统设计成为胜负手&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;上篇 2：&lt;a class="link" href="https://luoli523.github.io/p/agent-skills-analysis/" target="_blank" rel="noopener"
 &gt;Agent Skills：当 Google 工程文化遇上 AI 编程代理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;模板仓库：&lt;a class="link" href="https://github.com/luoli523/harness-project-template" target="_blank" rel="noopener"
 &gt;&lt;code&gt;luoli523/harness-project-template&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;原始 skills 项目：&lt;a class="link" href="https://github.com/addyosmani/agent-skills" target="_blank" rel="noopener"
 &gt;&lt;code&gt;addyosmani/agent-skills&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Agent Skills：当 Google 工程文化遇上 AI 编程代理</title><link>https://guige.ai/p/agent-skills-analysis/</link><pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/agent-skills-analysis/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Agent Skills：当 Google 工程文化遇上 AI 编程代理" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;AI coding agents default to the shortest path — which often means skipping specs, tests, security reviews, and the practices that make software reliable.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;— Addy Osmani&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;你有没有这种体验：让 AI 写一个功能，它唰唰唰生成了 500 行代码，看起来能跑，但你心里隐约不安——&lt;strong&gt;没有测试、没有规范、没有安全审查，甚至你自己都不完全理解它写了什么&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;你不是一个人。这正是 Addy Osmani 在 GitHub 上开源 &lt;a class="link" href="https://github.com/addyosmani/agent-skills" target="_blank" rel="noopener"
 &gt;agent-skills&lt;/a&gt; 的原因。这个项目在两个月内斩获 &lt;strong&gt;7900+ stars&lt;/strong&gt;，核心主张简单而有力：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI 编程代理需要纪律，而不仅仅是能力。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本文将深度拆解这个项目的设计哲学、19 个 skill 的全景图、最核心的&amp;quot;反合理化&amp;quot;创新，以及——最重要的——&lt;strong&gt;如何在你的日常开发中真正落地这套体系&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="封面" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-analysis/cover.webp" srcset="https://guige.ai/p/agent-skills-analysis/cover_hu_8ea675198d69a035.webp 800w, https://guige.ai/p/agent-skills-analysis/cover_hu_e77ff3da092bd822.webp 1600w, https://guige.ai/p/agent-skills-analysis/cover_hu_39c6884f94453030.webp 2400w, https://guige.ai/p/agent-skills-analysis/cover.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一addy-osmani-其人从-chrome-devtools-到-ai-agent-纪律"&gt;一、Addy Osmani 其人：从 Chrome DevTools 到 AI Agent 纪律
&lt;/h2&gt;&lt;p&gt;在聊 agent-skills 之前，有必要了解它的作者。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Addy Osmani&lt;/strong&gt; 不是一个纯理论派。他在 Google Chrome 团队工作了近 &lt;strong&gt;14 年&lt;/strong&gt;，担任过 &lt;strong&gt;Chrome 开发者体验负责人（Head of Chrome Developer Experience）&lt;/strong&gt;，直接负责过 Chrome DevTools、Lighthouse、Core Web Vitals 这些被数百万开发者每天使用的工具。他的工作为 Google 创造了 &lt;strong&gt;3.5 亿美元&lt;/strong&gt; 的利润和成本节省。&lt;/p&gt;
&lt;p&gt;他也是 O&amp;rsquo;Reilly 出版的《Learning JavaScript Design Patterns》和《Leading Effective Engineering Teams》的作者，早年还在 jQuery 核心团队工作过。&lt;/p&gt;
&lt;p&gt;2025 年末，他转任 &lt;strong&gt;Google Cloud AI Director&lt;/strong&gt;，专注 Gemini、Vertex AI 和 Agent Development Kit（ADK）。这个职业转型的时间点非常关键——他是在&lt;strong&gt;充分理解大规模工程团队如何运作&lt;/strong&gt;之后，才开始思考 AI Agent 该如何工作的。&lt;/p&gt;
&lt;p&gt;这就是 agent-skills 的底色：&lt;strong&gt;不是一个 prompt engineering 技巧集合，而是 Google 工程文化的 AI 翻译版&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;他在项目中明确引用了 &lt;a class="link" href="https://abseil.io/resources/swe-book" target="_blank" rel="noopener"
 &gt;Software Engineering at Google&lt;/a&gt; 和 Google 的 &lt;a class="link" href="https://google.github.io/eng-practices/" target="_blank" rel="noopener"
 &gt;engineering practices guide&lt;/a&gt;。换句话说，这套 skill 体系的每一条规则，都在世界上最大的代码库之一（Google 的 monorepo，20 亿行代码）中被验证过。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二为什么-ai-编程代理需要-skill"&gt;二、为什么 AI 编程代理需要 Skill？
&lt;/h2&gt;&lt;h3 id="21-ai-的默认行为走最短路径"&gt;2.1 AI 的默认行为：走最短路径
&lt;/h3&gt;&lt;p&gt;让我们面对现实。当你对 AI Agent 说&amp;quot;实现一个用户注册功能&amp;quot;时，它的默认行为是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;直接开始写代码（跳过规范）&lt;/li&gt;
&lt;li&gt;一次性生成完整实现（跳过增量验证）&lt;/li&gt;
&lt;li&gt;可能补几个测试（如果你提醒了的话）&lt;/li&gt;
&lt;li&gt;不做安全审查&lt;/li&gt;
&lt;li&gt;不考虑 API 契约、错误处理边界、性能影响&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这不是因为 AI 不会做这些事——而是因为 &lt;strong&gt;没人告诉它应该做&lt;/strong&gt;，或者更准确地说，没人用结构化的方式告诉它 &lt;strong&gt;必须做&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="22-从能写代码到会做工程"&gt;2.2 从&amp;quot;能写代码&amp;quot;到&amp;quot;会做工程&amp;quot;
&lt;/h3&gt;&lt;p&gt;Osmani 做了一个关键区分：&lt;strong&gt;Vibe Coding vs Agentic Engineering&lt;/strong&gt;。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Vibe Coding&lt;/th&gt;
 &lt;th&gt;Agentic Engineering&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;模式&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;帮我写个 XX&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;按照 spec 实现 XX&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;质量控制&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;人工事后审查&lt;/td&gt;
 &lt;td&gt;内置验证门&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;原型、黑客松&lt;/td&gt;
 &lt;td&gt;生产代码&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;风险&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;理解债务累积&lt;/td&gt;
 &lt;td&gt;前期投入大但可控&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;核心哲学&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;AI 驱动，人类跟随&lt;/td&gt;
 &lt;td&gt;人类拥有架构，AI 执行&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Vibe Coding 没有错&lt;/strong&gt;——在原型阶段它效率惊人。但如果你的代码要上生产、要被团队维护、要承受真实用户的流量，你需要的是 Agentic Engineering。&lt;/p&gt;
&lt;h3 id="23-skill-的本质可执行的工作流"&gt;2.3 Skill 的本质：可执行的工作流
&lt;/h3&gt;&lt;p&gt;agent-skills 中的每个 skill 不是文档，不是参考手册，而是一个 &lt;strong&gt;结构化的可执行工作流&lt;/strong&gt;。每个 SKILL.md 文件包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;分步工作流程&lt;/strong&gt;：不是&amp;quot;你应该做 XX&amp;quot;，而是&amp;quot;第 1 步做 XX，第 2 步做 YY，做完后检查 ZZ&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证门（Verification Gates）&lt;/strong&gt;：每个阶段必须通过的检查点，&amp;ldquo;看起来对&amp;quot;不算完成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反合理化表（Anti-rationalization Tables）&lt;/strong&gt;：AI 常用借口及预设反驳（后面详细讲）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;红旗信号（Red Flags）&lt;/strong&gt;：识别 skill 被错误应用的迹象&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="六阶段流水线" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-analysis/pipeline.webp" srcset="https://guige.ai/p/agent-skills-analysis/pipeline_hu_888aca7a4feed89f.webp 800w, https://guige.ai/p/agent-skills-analysis/pipeline_hu_7f5c51843340a300.webp 1600w, https://guige.ai/p/agent-skills-analysis/pipeline_hu_dd9c21170eedee4d.webp 2400w, https://guige.ai/p/agent-skills-analysis/pipeline.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三19-个-skill-全景define--plan--build--verify--review--ship"&gt;三、19 个 Skill 全景：DEFINE → PLAN → BUILD → VERIFY → REVIEW → SHIP
&lt;/h2&gt;&lt;p&gt;整个 agent-skills 体系覆盖软件开发的完整生命周期，组织为 &lt;strong&gt;6 个阶段、19 个 skill&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DEFINE → PLAN → BUILD → VERIFY → REVIEW → SHIP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/spec /plan /build /test /review /ship
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /code-simplify
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="31-define-阶段先想清楚再动手"&gt;3.1 Define 阶段：先想清楚再动手
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Skill&lt;/th&gt;
 &lt;th&gt;核心能力&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;idea-refine&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;结构化发散/收敛思维：理解与扩展 → 评估与收敛 → 打磨输出&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;spec-driven-development&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;先写规范再写代码，四阶段门控：Specify → Plan → Tasks → Implement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;spec-driven-development&lt;/strong&gt; 是整个体系的基石。它要求每个 spec 覆盖六大核心领域：&lt;strong&gt;目标、命令、项目结构、代码风格、测试策略、边界&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;边界定义尤其精彩，采用三级体系：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Always&lt;/strong&gt;：永远做的事（如：每次改动必须有测试）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ask First&lt;/strong&gt;：需要确认才做的事（如：修改公共 API）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never&lt;/strong&gt;：绝不能做的事（如：直接操作生产数据库）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还有一个&amp;quot;假设显性化&amp;quot;机制：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ASSUMPTIONS I&amp;#39;M MAKING:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. This is a web application (not native mobile)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. Authentication uses session-based cookies (not JWT)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Correct me now or I&amp;#39;ll proceed with these.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这比&amp;quot;你有什么需求？&amp;ldquo;高效一百倍——&lt;strong&gt;AI 先给出假设让你纠正，而不是等你把所有需求想清楚&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="32-plan-阶段把大象切成薄片"&gt;3.2 Plan 阶段：把大象切成薄片
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Skill&lt;/th&gt;
 &lt;th&gt;核心能力&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;planning-and-task-breakdown&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;将 spec 分解为小型、可验证的任务，每个任务有明确验收标准&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="33-build-阶段写代码的核心战场"&gt;3.3 Build 阶段：写代码的核心战场
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Skill&lt;/th&gt;
 &lt;th&gt;核心能力&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;incremental-implementation&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;薄垂直切片：实现 → 测试 → 验证 → 提交 → 下一片&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;test-driven-development&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Red-Green-Refactor + Prove-It Pattern + 测试金字塔 80/15/5&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;context-engineering&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;五层上下文管理：Rules → Spec → 源码 → 错误 → 对话&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;frontend-ui-engineering&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;组件架构、设计系统、WCAG 2.1 AA 无障碍&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;api-and-interface-design&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;契约优先、Hyrum&amp;rsquo;s Law、错误语义&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;incremental-implementation&lt;/strong&gt; 的核心理念：&lt;strong&gt;如果你写了 1000 行但 100 行就够，你就失败了。&lt;/strong&gt; 它定义了三种切片策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;垂直切片（首选）&lt;/strong&gt;：一次实现一个完整的端到端功能切面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;契约优先切片&lt;/strong&gt;：先定义接口/类型，再填充实现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;风险优先切片&lt;/strong&gt;：先验证最不确定的部分&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;context-engineering&lt;/strong&gt; 是容易被忽视但极其重要的 skill。它定义了五层上下文层级和三种打包策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Brain Dump&lt;/strong&gt;：把所有相关信息一次性灌入（小任务适用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selective Include&lt;/strong&gt;：精选最相关的文件和片段（中等任务）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hierarchical Summary&lt;/strong&gt;：先给摘要，按需展开细节（大型任务）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="34-verify-阶段证明它是对的"&gt;3.4 Verify 阶段：证明它是对的
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Skill&lt;/th&gt;
 &lt;th&gt;核心能力&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;browser-testing-with-devtools&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;通过 Chrome DevTools MCP 获取 DOM、console、network、performance 实时数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;debugging-and-error-recovery&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;五步分诊：复现 → 定位 → 简化 → 修复 → 防护&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="35-review-阶段质量把关"&gt;3.5 Review 阶段：质量把关
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Skill&lt;/th&gt;
 &lt;th&gt;核心能力&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;code-review-and-quality&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;五轴审查 + 评论分级（Critical/Important/Nit/Optional/FYI）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;code-simplification&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Chesterton&amp;rsquo;s Fence：删代码前先理解它存在的原因&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;security-and-hardening&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;OWASP Top 10 预防 + 三级边界系统&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;performance-optimization&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;度量优先 + Core Web Vitals 目标&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;code-review-and-quality&lt;/strong&gt; 的审批标准直接来自 Google：&amp;rdquo;&lt;strong&gt;当变更确实改善了整体代码健康度时就批准，即使它不完美。&lt;/strong&gt;&amp;ldquo;这是一种务实的工程文化——追求进步而非完美。&lt;/p&gt;
&lt;h3 id="36-ship-阶段安全交付"&gt;3.6 Ship 阶段：安全交付
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Skill&lt;/th&gt;
 &lt;th&gt;核心能力&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;git-workflow-and-versioning&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;基于主干开发、原子提交&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ci-cd-and-automation&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Shift Left、特性开关、质量门管道&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;deprecation-and-migration&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;代码即负债&amp;rdquo;、僵尸代码清理&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;documentation-and-adrs&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ADR 架构决策记录、文档化&amp;quot;为什么&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;shipping-and-launch&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;发布前检查清单 + 分阶段发布 + 回滚方案&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="四核心创新反合理化anti-rationalization"&gt;四、核心创新：反合理化（Anti-rationalization）
&lt;/h2&gt;&lt;p&gt;如果让我从 agent-skills 中只挑一个最重要的设计模式，毫无疑问是 &lt;strong&gt;反合理化表（Anti-rationalization Tables）&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="41-问题ai-特别擅长给自己找借口"&gt;4.1 问题：AI 特别擅长给自己找借口
&lt;/h3&gt;&lt;p&gt;当你要求 AI Agent 遵循某个流程时，它有一种令人印象深刻的能力——&lt;strong&gt;用看起来完全合理的理由解释为什么可以跳过某个步骤&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;这个改动很简单，不需要写 spec&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;这个函数逻辑很清晰，不需要测试&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;这只是内部 API，不需要安全审查&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;代码已经很清晰了，不需要文档&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一条听起来都很合理，对吧？&lt;strong&gt;这正是问题所在。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="42-解法预设借口--预设反驳"&gt;4.2 解法：预设借口 + 预设反驳
&lt;/h3&gt;&lt;p&gt;agent-skills 的做法是在每个 skill 文件中内置一张 &lt;strong&gt;反合理化表&lt;/strong&gt;，预先列出 AI 可能给出的所有借口，并提供反驳：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;AI 可能说的借口&lt;/th&gt;
 &lt;th&gt;预设反驳&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;这很简单，不需要 spec&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;简单任务不需要长 spec，但仍然需要验收标准。两行 spec 也是 spec。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;重构不需要新测试&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;重构必须保持行为不变，而证明行为不变的唯一方式就是测试。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;这只是内部使用&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;内部 API 也会被依赖——Hyrum&amp;rsquo;s Law 不区分内外。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;加测试会拖慢进度&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;不加测试会在未来拖慢进度十倍。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;错误处理可以后面再加&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;后面&amp;quot;是&amp;quot;永远不会&amp;quot;的委婉说法。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img alt="反合理化机制" class="gallery-image" data-flex-basis="360px" data-flex-grow="150" height="1684" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-analysis/anti-rationalization.webp" srcset="https://guige.ai/p/agent-skills-analysis/anti-rationalization_hu_a68f856df7813d8b.webp 800w, https://guige.ai/p/agent-skills-analysis/anti-rationalization_hu_5cfc8250bcc27d77.webp 1600w, https://guige.ai/p/agent-skills-analysis/anti-rationalization_hu_82bb35d5946c733f.webp 2400w, https://guige.ai/p/agent-skills-analysis/anti-rationalization.webp 2528w" width="2528"&gt;&lt;/p&gt;
&lt;h3 id="43-为什么这是最重要的创新"&gt;4.3 为什么这是最重要的创新？
&lt;/h3&gt;&lt;p&gt;因为它解决的不是能力问题，而是 &lt;strong&gt;意愿问题&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当前的 LLM 在技术上完全有能力写测试、写 spec、做安全审查。它们不做，是因为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;用户没有明确要求&lt;/strong&gt;——LLM 默认满足显式需求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最短路径偏好&lt;/strong&gt;——生成更少 token 通常被视为更高效&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合理化能力太强&lt;/strong&gt;——LLM 可以为任何跳过步骤的行为编造看似合理的理由&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;反合理化表本质上是一种 &lt;strong&gt;预编译的规则引擎&lt;/strong&gt;：不是在运行时让 AI 判断&amp;quot;这个步骤重不重要&amp;rdquo;，而是在设计时就把所有可能的逃逸路径堵死。&lt;/p&gt;
&lt;p&gt;这个思路对任何在 CLAUDE.md 或 .cursorrules 中写规则的人都有启发：&lt;strong&gt;不要只写&amp;quot;你应该做什么&amp;rdquo;，还要写&amp;quot;当你想跳过时，为什么不能跳过&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五80-问题与理解债务comprehension-debt"&gt;五、80% 问题与理解债务（Comprehension Debt）
&lt;/h2&gt;&lt;h3 id="51-新瓶装新酒的技术债务"&gt;5.1 新瓶装新酒的技术债务
&lt;/h3&gt;&lt;p&gt;Osmani 在他的 Substack 文章中提出了一个犀利的观察：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;AI 可以生成 80%+ 的代码，但问题转移到了 &lt;strong&gt;理解债务（comprehension debt）&lt;/strong&gt;——开发者审查和合并他们无法独立编写的代码。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;他引用的数据令人警醒：&lt;strong&gt;高 AI 采用团队的 PR 合并量增加了 98%，但审查时间也增加了 91%。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这意味着什么？AI 让你写代码更快了，但它同时制造了一种新的债务——&lt;strong&gt;你的代码库里有越来越多你不完全理解的代码&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="80% 问题与理解债务" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-analysis/comprehension-debt.webp" srcset="https://guige.ai/p/agent-skills-analysis/comprehension-debt_hu_d83f98d6ed79b34c.webp 800w, https://guige.ai/p/agent-skills-analysis/comprehension-debt_hu_e32654e3e0bd5f0a.webp 1600w, https://guige.ai/p/agent-skills-analysis/comprehension-debt_hu_10f49a6e0dcd5150.webp 2400w, https://guige.ai/p/agent-skills-analysis/comprehension-debt.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;h3 id="52-理解债务的三个症状"&gt;5.2 理解债务的三个症状
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;它能跑就行&amp;quot;综合症&lt;/strong&gt;：代码通过了测试但没人能解释它的设计决策&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;脆弱修改&lt;/strong&gt;：改一个地方崩三个地方，因为没人理解隐含的依赖关系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识孤岛&lt;/strong&gt;：只有 AI 的对话记录知道为什么代码长这样，而对话记录不会被版本控制&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="53-agent-skills-的解法"&gt;5.3 agent-skills 的解法
&lt;/h3&gt;&lt;p&gt;agent-skills 通过几个 skill 协同解决这个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;spec-driven-development&lt;/strong&gt;：先有人类可读的规范，代码是规范的实现，而不是反过来&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;documentation-and-adrs&lt;/strong&gt;：记录&amp;quot;为什么&amp;quot;而非&amp;quot;是什么&amp;rdquo;——ADR（架构决策记录）让未来的维护者理解当时的选择&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;incremental-implementation&lt;/strong&gt;：每次只提交一小片，每片都有清晰的意图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;code-review-and-quality&lt;/strong&gt;：强制五轴审查，确保不是&amp;quot;AI 写了什么就合并什么&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心哲学：&lt;strong&gt;AI 生成的代码量不是 KPI，人类理解的代码量才是。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六conductor-vs-orchestrator两种-ai-协作范式"&gt;六、Conductor vs Orchestrator：两种 AI 协作范式
&lt;/h2&gt;&lt;p&gt;Osmani 提出了两种与 AI Agent 协作的模型，代表了从个人到团队的演进：&lt;/p&gt;
&lt;h3 id="61-conductor指挥家模式"&gt;6.1 Conductor（指挥家）模式
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;人类 ←→ 单个 AI Agent（实时对话）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;交互方式&lt;/strong&gt;：紧密反馈循环，每一步都有人类参与&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：复杂的架构决策、敏感的生产变更、学习新领域&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型工具&lt;/strong&gt;：Claude Code 交互模式、Cursor 对话&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;就像交响乐指挥——你挥棒，乐手演奏，每个乐句你都在控制。&lt;/p&gt;
&lt;h3 id="62-orchestrator编排者模式"&gt;6.2 Orchestrator（编排者）模式
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;人类 → Spec → [Agent A] [Agent B] [Agent C] → 人类审查
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;交互方式&lt;/strong&gt;：异步，前端投入规范，后端审查输出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：可并行的独立任务、批量代码迁移、标准化变更&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型工具&lt;/strong&gt;：Claude Code Agent 模式、GitHub Copilot Workspace&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;就像导演——你给剧本（spec），演员们各自准备，你最后审片。&lt;/p&gt;
&lt;h3 id="63-什么时候用哪个"&gt;6.3 什么时候用哪个？
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;信号&lt;/th&gt;
 &lt;th&gt;用 Conductor&lt;/th&gt;
 &lt;th&gt;用 Orchestrator&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;任务间有强依赖&lt;/td&gt;
 &lt;td&gt;✓&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;需要实时判断&lt;/td&gt;
 &lt;td&gt;✓&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;任务可独立并行&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;有清晰的验收标准&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;涉及架构决策&lt;/td&gt;
 &lt;td&gt;✓&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;批量重复性工作&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Osmani 的关键洞察：&lt;strong&gt;随着 spec 质量的提高，你可以把越来越多的工作从 Conductor 模式迁移到 Orchestrator 模式&lt;/strong&gt;。这就是 spec-driven-development 被放在第一位的原因——好的 spec 是 Orchestrator 模式的前提。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Conductor vs Orchestrator" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-analysis/conductor-vs-orchestrator.webp" srcset="https://guige.ai/p/agent-skills-analysis/conductor-vs-orchestrator_hu_9b0b29e6b0bae267.webp 800w, https://guige.ai/p/agent-skills-analysis/conductor-vs-orchestrator_hu_ef5cd882e05c3dba.webp 1600w, https://guige.ai/p/agent-skills-analysis/conductor-vs-orchestrator_hu_40fa0f275e1d1e25.webp 2400w, https://guige.ai/p/agent-skills-analysis/conductor-vs-orchestrator.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="七社区争论skills-vs-agentsmd"&gt;七、社区争论：Skills vs AGENTS.md
&lt;/h2&gt;&lt;p&gt;agent-skills 发布后，社区出现了一个有趣的争论：&lt;strong&gt;按需加载的 Skills 文件 vs 全量常驻的 AGENTS.md，哪个更好？&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="71-两种流派"&gt;7.1 两种流派
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Skills 流派&lt;/strong&gt;（agent-skills 的方式）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个 skill 独立一个文件&lt;/li&gt;
&lt;li&gt;通过元 skill（using-agent-skills）按需发现和加载&lt;/li&gt;
&lt;li&gt;优点：节省 token，适合大型 skill 库&lt;/li&gt;
&lt;li&gt;缺点：AI 需要&amp;quot;决定&amp;quot;是否加载某个 skill，这个决策本身可能出错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;AGENTS.md 流派&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有规则压缩到一个文件&lt;/li&gt;
&lt;li&gt;每次对话都全量加载&lt;/li&gt;
&lt;li&gt;优点：没有决策点，100% 确保规则被读取&lt;/li&gt;
&lt;li&gt;缺点：token 消耗大，规则多了之后上下文窗口拥挤&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="72-vercel-的实测数据"&gt;7.2 Vercel 的实测数据
&lt;/h3&gt;&lt;p&gt;Vercel 团队做了对比测试，发现将压缩文档直接放入 AGENTS.md 的任务成功率约 &lt;strong&gt;100%&lt;/strong&gt;，而 Skills 按需加载方式约 &lt;strong&gt;79%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;原因很直接：使用 AGENTS.md 时，&lt;strong&gt;Agent 不需要做&amp;quot;我是否应该查找这个 skill？&amp;ldquo;的决策&lt;/strong&gt;——规则已经在上下文里了。&lt;/p&gt;
&lt;h3 id="73-合理的答案两者兼用"&gt;7.3 合理的答案：两者兼用
&lt;/h3&gt;&lt;p&gt;Osmani 自己也承认这个问题，并在项目中加入了 session hook 机制——每个新会话启动时自动注入元 skill，降低发现成本。&lt;/p&gt;
&lt;p&gt;实际上，最佳实践是 &lt;strong&gt;分层使用&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层级&lt;/th&gt;
 &lt;th&gt;载体&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;永久基线&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CLAUDE.md / AGENTS.md&lt;/td&gt;
 &lt;td&gt;代码风格、架构约束、绝不能做的事&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;按需加载&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Skills 文件&lt;/td&gt;
 &lt;td&gt;特定阶段的详细工作流（如 TDD 流程、安全审查清单）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;会话级别&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;对话中的指令&lt;/td&gt;
 &lt;td&gt;当前任务的具体上下文&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="八实战指南如何在你的项目中落地-agent-skills"&gt;八、实战指南：如何在你的项目中落地 Agent Skills
&lt;/h2&gt;&lt;p&gt;理论讲完了，下面是 &lt;strong&gt;可以直接复制粘贴的落地指南&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="81-在-claude-code-中使用推荐"&gt;8.1 在 Claude Code 中使用（推荐）
&lt;/h3&gt;&lt;p&gt;Claude Code 对 agent-skills 有最完整的原生支持。&lt;/p&gt;
&lt;h4 id="方式一通过插件安装最简单"&gt;方式一：通过插件安装（最简单）
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安装 agent-skills 插件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude plugin add addyosmani/agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装后，你可以直接在 Claude Code 中使用斜杠命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/spec — 进入规范驱动开发流程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plan — 将 spec 分解为任务
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/build — 增量实现
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/test — TDD 流程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/review — 代码审查
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/ship — 发布检查
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/code-simplify — 代码简化
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="方式二本地目录安装更灵活"&gt;方式二：本地目录安装（更灵活）
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 克隆仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/addyosmani/agent-skills.git ~/.claude/agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 在你的项目 CLAUDE.md 中引用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &amp;gt;&amp;gt; /your/project/CLAUDE.md &lt;span class="s"&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;## Agent Skills
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;当执行以下任务时，加载对应的 skill 文件：
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- 写规范时：读取 ~/.claude/agent-skills/skills/spec-driven-development/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- 写代码时：读取 ~/.claude/agent-skills/skills/incremental-implementation/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- 写测试时：读取 ~/.claude/agent-skills/skills/test-driven-development/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- 代码审查时：读取 ~/.claude/agent-skills/skills/code-review-and-quality/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- 安全审查时：读取 ~/.claude/agent-skills/skills/security-and-hardening/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="方式三配置-session-hook自动注入"&gt;方式三：配置 Session Hook（自动注入）
&lt;/h4&gt;&lt;p&gt;在项目根目录创建 &lt;code&gt;.claude/hooks.json&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;hooks&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;event&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;SessionStart&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;cat ~/.claude/agent-skills/skills/using-agent-skills/SKILL.md&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样每次开启新对话，Claude Code 会自动知道有哪些 skill 可用，并根据任务类型按需加载。&lt;/p&gt;
&lt;h3 id="82-在-cursor-中使用"&gt;8.2 在 Cursor 中使用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 克隆仓库到项目根目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/addyosmani/agent-skills.git .cursor/agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 将需要的 skill 复制为 Cursor rules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp .cursor/agent-skills/skills/spec-driven-development/SKILL.md &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .cursor/rules/spec-driven-development.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp .cursor/agent-skills/skills/test-driven-development/SKILL.md &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .cursor/rules/test-driven-development.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp .cursor/agent-skills/skills/code-review-and-quality/SKILL.md &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .cursor/rules/code-review-and-quality.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Cursor 的限制&lt;/strong&gt;：不支持按需加载，放入 &lt;code&gt;.cursor/rules/&lt;/code&gt; 的文件每次都会被加载。建议只放 3-5 个最常用的 skill，避免 token 浪费。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;进阶技巧&lt;/strong&gt;：在 &lt;code&gt;.cursorrules&lt;/code&gt; 中添加元指令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; 收到新需求时，先按 spec-driven-development 规则写 spec
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; Spec 确认后，按 incremental-implementation 规则分片实现
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; 每个切片完成后，按 test-driven-development 规则补测试
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;4.&lt;/span&gt; 全部完成后，按 code-review-and-quality 规则自审
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="83-在-gemini-cli-中使用"&gt;8.3 在 Gemini CLI 中使用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 原生安装命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gemini skills install addyosmani/agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Gemini CLI 对 agent-skills 有原生支持，安装后 skill 自动可用。&lt;/p&gt;
&lt;h3 id="84-在-github-copilot-中使用"&gt;8.4 在 GitHub Copilot 中使用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 将 agents/ 目录下的角色文件作为 personas&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp -r agent-skills/agents/ .github/copilot-agents/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 将核心规则写入 copilot 指令文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat agent-skills/skills/spec-driven-development/SKILL.md &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; agent-skills/skills/incremental-implementation/SKILL.md &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; agent-skills/skills/code-review-and-quality/SKILL.md &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;gt; .github/copilot-instructions.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="85-不用任何工具手动提取核心规则"&gt;8.5 不用任何工具：手动提取核心规则
&lt;/h3&gt;&lt;p&gt;如果你不想安装整个项目，可以只提取最有价值的部分，写入你项目的 CLAUDE.md 或 .cursorrules：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 开发流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 规范优先
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 任何超过 20 行的改动，先写 spec 再写代码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Spec 必须包含：目标、验收标准、假设列表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 不接受&amp;#34;这很简单不需要 spec&amp;#34;——两行 spec 也是 spec
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 增量实现
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 每次只实现一个薄垂直切片
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 每个切片必须：能编译、有测试、可独立提交
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 单次提交不超过 ~100 行变更
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 反合理化规则
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 当你想跳过测试时：不加测试会在未来拖慢进度十倍
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 当你想跳过安全审查时：内部 API 也会被依赖（Hyrum&amp;#39;s Law）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 当你想说&amp;#34;后面再加&amp;#34;时：&amp;#34;后面&amp;#34;是&amp;#34;永远不会&amp;#34;的委婉说法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 当你想一次性提交大量代码时：大 PR 隐藏 bug，小 PR 暴露 bug
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 验证门
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &amp;#34;它能跑&amp;#34;不等于&amp;#34;它是对的&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 每个阶段必须有可验证的证据，不接受&amp;#34;我确认过了&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 修 bug 必须先写复现测试（Prove-It Pattern）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="86-团队落地建议渐进式采用路径"&gt;8.6 团队落地建议：渐进式采用路径
&lt;/h3&gt;&lt;p&gt;不要试图一次性采用全部 19 个 skill。推荐的渐进路径：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一周：只用 3 个核心 skill&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;spec-driven-development → incremental-implementation → code-review-and-quality
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这三个 skill 覆盖了最关键的问题：先想后做、小步快跑、质量把关。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二周：加入测试和安全&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ test-driven-development
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ security-and-hardening
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;第三周：加入上下文和文档&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ context-engineering
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ documentation-and-adrs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;第四周以后：按需加入其他 skill&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ performance-optimization（性能敏感项目）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ frontend-ui-engineering（前端项目）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ api-and-interface-design（API 项目）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ shipping-and-launch（频繁发布的项目）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="87-自定义你自己的反合理化表"&gt;8.7 自定义你自己的反合理化表
&lt;/h3&gt;&lt;p&gt;agent-skills 最大的价值不是直接用它的 19 个 skill，而是学会它的 &lt;strong&gt;设计模式&lt;/strong&gt;，然后写你自己的。&lt;/p&gt;
&lt;p&gt;以下是一个模板：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## [你的 Skill 名称]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; 第一步...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; 第二步...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; 第三步...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 验证门
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 检查项 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 检查项 2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 反合理化表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 你可能想说的借口 | 为什么不能接受 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;|----------------|--------------|
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| &amp;#34;这种情况不会发生&amp;#34; | 如果不会发生，加个断言不会有任何成本 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| &amp;#34;文档以后再写&amp;#34; | 以后的你不会记得现在的上下文 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| &amp;#34;这只是临时方案&amp;#34; | 没有比临时方案更永久的东西了 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 红旗信号
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 如果你发现自己在 [某种情况]，说明这个 skill 被错误应用了
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="实战指南" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/agent-skills-analysis/practice-guide.webp" srcset="https://guige.ai/p/agent-skills-analysis/practice-guide_hu_72c981edfb217e42.webp 800w, https://guige.ai/p/agent-skills-analysis/practice-guide_hu_2efd181e2eded04a.webp 1600w, https://guige.ai/p/agent-skills-analysis/practice-guide_hu_cb2def1b88b66c7f.webp 2400w, https://guige.ai/p/agent-skills-analysis/practice-guide.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="九你的-ai-编程代理需要一个经理"&gt;九、&amp;ldquo;你的 AI 编程代理需要一个经理&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;最后分享 Osmani 的一个深刻洞察：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;AI 协作本质上是 &lt;strong&gt;管理问题&lt;/strong&gt;，而非 prompting 问题。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;他发现，与 AI Agent 高效协作所需的能力，和管理人类团队的能力惊人地相似：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;管理能力&lt;/th&gt;
 &lt;th&gt;在 AI Agent 中的对应&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;清晰的任务界定&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;写好 spec，而非模糊指令&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;审慎委托&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;判断哪些任务可以完全交给 AI，哪些需要检查点&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;验证循环&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;不是&amp;quot;做完了吗？&amp;ldquo;而是&amp;quot;给我看证据&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;异步检查&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Orchestrator 模式下的批量审查&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;委托的三个层次：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;完全委托&lt;/strong&gt;：明确的、低风险的任务（如格式化、简单重构）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;带检查点委托&lt;/strong&gt;：中等复杂度，关键节点需要人工确认&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保留人工&lt;/strong&gt;：架构决策、安全关键路径、性能关键路径&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;如果你曾经是一个好的技术负责人，你已经具备了与 AI Agent 高效协作的核心能力。&lt;/strong&gt; 不同的是，你的&amp;quot;下属&amp;quot;现在每秒能输出 100 行代码——这让你的管理质量变得前所未有地重要。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;agent-skills 不仅是一个工具集——它是对 &lt;strong&gt;AI 编程时代工程文化&lt;/strong&gt;的一次系统性思考。&lt;/p&gt;
&lt;p&gt;几个关键 takeaway：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;AI 编程代理的问题不是能力不够，而是纪律不够&lt;/strong&gt;。agent-skills 通过结构化的工作流和反合理化机制解决这个问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反合理化表是最值得学习的设计模式&lt;/strong&gt;。不要只告诉 AI &amp;ldquo;应该做什么&amp;rdquo;，还要预设它&amp;quot;想跳过时的借口&amp;quot;并提供反驳。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;理解债务是新的技术债务&lt;/strong&gt;。AI 让代码增长更快，但如果人类理解跟不上，代码库会变成黑箱。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;从 Conductor 到 Orchestrator 的演进是必然的&lt;/strong&gt;，而好的 spec 是这个演进的前提。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;渐进式采用&lt;/strong&gt;：先用 3 个核心 skill（spec + incremental + review），再逐步扩展。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最后用 Osmani 自己的话收尾：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;Agentic Engineering is not about AI writing all the code. It&amp;rsquo;s about humans owning the architecture, quality, and correctness — while AI executes under human guidance.&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;人类拥有架构、质量和正确性，AI 在人类的指导下执行。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这大概是 2026 年最值得内化的一句话。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/addyosmani/agent-skills" target="_blank" rel="noopener"
 &gt;agent-skills GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://addyosmani.com/blog/agentic-engineering/" target="_blank" rel="noopener"
 &gt;Agentic Engineering — Addy Osmani&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://addyo.substack.com/p/the-80-problem-in-agentic-coding" target="_blank" rel="noopener"
 &gt;The 80% Problem in Agentic Coding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://addyosmani.com/blog/coding-agents-manager/" target="_blank" rel="noopener"
 &gt;Your AI coding agents need a manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://addyosmani.com/blog/good-spec/" target="_blank" rel="noopener"
 &gt;How to write a good spec for AI agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://addyosmani.com/blog/future-agentic-coding/" target="_blank" rel="noopener"
 &gt;The future of agentic coding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://addyosmani.com/blog/self-improving-agents/" target="_blank" rel="noopener"
 &gt;Self-Improving Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://abseil.io/resources/swe-book" target="_blank" rel="noopener"
 &gt;Software Engineering at Google&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>