《SDD 实战》配套资源

《SDD 实战:规范驱动开发之道》· 人民邮电出版社 · 异步图书

这一页收录本书的配套资源,以及成书之后的演进与补充。

实操长文

七篇实操长文,每一篇都能跟着跑通。从手写第一份 spec 开始, 到 OpenSpec、BMAD、Superpowers 的协同实操。

这一组是把概念落到能跑通的具体动作上:Specify、Clarify、Implement 的三段闭环, 两层 Spec(项目愿景加任务变更)的结构, 以及它们在真实工程里怎么和 Memory、Sub-Agents、Skills 协同。 配套代码在 sdd-in-action

配套代码

配套代码仓库

本书配套代码在 GitHub 仓库 huangjia2019/sdd-in-action。 其中 book-code/ 是章节锚定的配套实战项目——智能日报生成器,贯穿全书第 4 至第 8 章。

章节配套内容SDD 阶段
第 1 章book-code/examples/ch01-vibe-coding-audit/问题诊断
第 3 章book-code/examples/ch03-framework-comparison/工具链对比
第 4 章book-code/specs/proposal.md需求规范
第 5 章book-code/specs/design.md + contracts/ + adrs/架构设计 + ADR
第 6 章book-code/specs/tasks.md任务拆解
第 7 章book-code/src/ + tests/执行验证
第 8 章Agent 自动化流水线模式应用

同一仓库里还有 SDD 行动营四周的公开实操材料(week1/week4/), 可作为第 3 章工具链全景与第 7、8 章实战路径的延伸演练。

跟着实操材料动手时,代码在哪

实操文档是流水账,里面的代码块给的是命令与关键片段,不是完整源码。 完整可运行代码一律以仓库为准。第三周还有一个单独的完成态分支。

你要找的在仓库的哪里
动手的起点 master 分支。第三周的 week3/code/ 是基线,7 个 Agent 已就位,没有 metrics 相关代码
第三周的参考答案 feature/add-metrics-collector-local 分支,含 workflows/metrics_collector.pyopenspec/changes/add-metrics-collector/ 四件套、_bmad-output/ 里 BMAD 产出的 PRD 与架构文档
第二周的 change 产物 week2/code/openspec/changes/archive/2026-04-20-add-analyzer-retry-policy/。走完 /opsx:archive 之后 change 目录会搬进 archive/,这是 OpenSpec 的正常生命周期,不是文件丢了
第二周的 retry 实现 week2/code/pipeline/model_client.pywith_retry() 装饰器
2026-08-02 更新: 有学员反馈实操文档里的代码与仓库对不上,核查后确认属实——第三周的完成态代码此前没有推上仓库, 另有若干文件名与路径在文档和代码之间不一致。现已补齐分支、修正文档, 每一周的 README 也都加了「代码在哪」一节。感谢反馈。
工具演进

工具演进说明

开源工具的迭代节奏比图书快。以下是成书之后发生的变化,跟随实操时请以此处为准。

Matt Pocock 的 skills 集合(2026 年 7 月核实)

项目成书时当前
拆任务票的 skillto-issues已更名为 to-tickets
写 skill 的 skillwrite-a-skill已移除,由 writing-great-skills(写好 skill 的参考文档)取代
安装方式npx skills@latest add mattpocock/skills/<skill> -a <agent>npx skills@latest add mattpocock/skills(交互式),并需运行一次 /setup-matt-pocock-skills
任务票产出路径specs/issues/*.md.scratch/<feature>/issues/<NN>-<slug>.md(tracker 可配置)
依赖字段depends_onBlocked by
验收字段acceptanceAcceptance criteria(勾选框)
grill-me名称未变,仍可用
一个容易混淆的点: to-tickets 产出的是任务票,不产出 JSON Schema 文件。 任务票里的验收标准是自然语言;把验收里的数据契约固化成可执行的 JSON Schema,是独立的一步。 只有当你事先用 prototype 做过原型、把 schema 片段内联进票时,票里才会出现 schema。

本页会随工具变化持续更新。以各工具仓库的 README 为最终依据。

勘误

勘误

以下条目均已核对原稿确认,将在第二次印刷中改正。

位置印刷版应为状态
第 163 页
图 8-11
路由规则
加一个 Jira 数据源 → scheduler
改成每天 9 点生成 → collector
加一个 Jira 数据源 → collector
改成每天 9 点生成 → scheduler
第一印错
第二印改

图中四条路由规则,第一条与第四条的目标模块在绘图环节被对调了。 正确的对应关系是:新增数据源属于数据采集,归 collector; 修改生成时间属于定时调度,归 scheduler。 这正是该图想说明的那句话——design.md 的模块边界就是路由器的分类规则。 感谢读者指出。

如果你在阅读中发现错误,欢迎通过异步社区本书页面提交勘误, 或在配套代码仓库 提 issue。 经确认的条目会补充到这里。

内容补充

内容补充

按章节整理的延伸材料,供需要展开的读者参考。

章节主题内容
第 3 章 Superpowers:TDD 强制的纪律工具 作为独立框架展开:六个核心 Skill、设计哲学、与其他三家的组合关系
第 3 章 五大 SDD 框架对比 在书中三大框架的基础上补齐 Superpowers 与 Kiro
第 3 章 工具组合决策树 按团队规模、项目类型、当前瓶颈三问定位初始组合
第 4 章 四种工具如何写同一份 proposal 同一个 retry 需求在四种工具下的写法与切入点差异
第 7 章 工具层如何强制“测试先于代码” 方法论落到工具约束的样本,以及它的边界
第 8 章 5 种 Agent 模式在 4 种工具中的落地 模式 × 工具映射矩阵,以及四个落地示例
第 10 章 工具会消失,方法论是稳定的 三次规范驱动复兴史,以及它对当下的推论
第 3 章

Superpowers:TDD 强制的纪律工具

书中第 3 章把 Superpowers 归在“四层工具生态”的第一层。 这里把它作为一个独立框架展开,与 OpenSpec、Spec-Kit、BMAD 并列讨论。

Superpowers 是 Jesse Vincent(GitHub 上的 obra)在 Claude Code 之上构建的插件式 Skills 框架, 核心心法可概括为:纪律先于灵感——每一次代码改动都从一个失败的测试开始。

与前三家不同,它不试图重新定义“规范怎么写”,而是把注意力放在“规范怎么落地”: 用一组原子化的 Skill 把工作流拆成可强制执行的步骤,通过框架本身的约束让规范无法被绕过。

六个核心 Skill

  • brainstorm:模糊需求阶段。用结构化追问把模糊点钉死,在写 proposal 之前先理清边界。
  • design:把澄清后的需求转成结构化设计,等价于 SDD 的 design.md 阶段。
  • test-driven-development:整套体系的强制核心。没有失败的测试存在,就不允许进入代码生成阶段。
  • debugging:结构化定位 bug。先复现、再二分定位、再形成最小修复假设,最后写测试验证。
  • refactor:安全重构。任何重构必须保持测试绿色,不能借重构夹带行为变更。
  • document:把决策与权衡固化为文档,把 ADR、CHANGELOG 纳入流水线的一部分。

设计哲学

OpenSpec 关心“规范怎么写”,Spec-Kit 关心“规范怎么治理”,BMAD 关心“角色如何协作”, Superpowers 关心的是“规范如何被强制执行”。 前三家解决的是“先写规范”的问题——规范应该长什么样、谁写、放哪。 Superpowers 解决的是更靠下游的一层:已经写了规范,有没有真的按规范执行。 具体到六阶段工作流,它通过 test-driven-development 强制第五阶段“代码生成”—— 没有覆盖需求的测试,代码不能生成。

与其他三家的关系

Superpowers 与 OpenSpec、Spec-Kit、BMAD 不互斥,而是补位关系。 你可以用 OpenSpec 写 proposal.md,再让代码在 Superpowers 的 TDD 强制下生成。 与 BMAD 也不冲突:BMAD 通过角色边界保证“写代码的 Agent 不能改规范”, Superpowers 通过测试前置保证“写代码的 Agent 不能跳过验证”。前者管空间隔离,后者管时间顺序。

第 3 章

五大 SDD 框架对比

在书中表 3-1 三大开源框架的基础上,补上 Superpowers 与 Kiro 两行。

框架核心哲学切入角度执行强度学习成本适合场景
OpenSpec 轻量迭代,工具无关变更箱(change-based) 弱(规范可被忽略)个人 / 小团队 / 单仓项目
Spec-Kit 规范即主工件,治理优先CLI + 斜杠命令 + constitution 中(constitution 强约束)已用 GitHub 全家桶的团队
BMAD 多 AI 角色模拟真实产品团队多智能体编排 中(角色边界约束)中高老项目 brownfield / 多角色协作
Superpowers 纪律先于灵感,TDD 强制Skill 组合 + 强制前置测试 (无失败测试不让写码)个人 / 小团队 / 严格 TDD 派
Kiro IDE 原生,Spec 到代码端到端IDE 内置 spec 流水线 取决于 IDE 配置高(需换 IDE)中大型企业级落地

这五者不是一个连续光谱,而是五种不同的定位。 选型时要问的不是“哪个最先进”,而是“我团队当前的瓶颈在哪一层”。

第 3 章

工具组合决策树

书中 3.5 节以文字论述工具选型。这里给出一份可以在五分钟内定位初始组合的速查路径。

问题一:团队规模

  • 1-3 人:OpenSpec(轻量起步)+ Superpowers(强制 TDD)。两者学习成本都低,合起来覆盖“写规范”和“执行规范”两端。
  • 3-10 人:团队是 GitHub-native 则 Spec-Kit + Superpowers;否则 OpenSpec + Superpowers + 团队 wiki。
  • 10 人以上:Spec-Kit + BMAD,前者管治理,后者管角色协作;或直接用 Kiro 把流程内置到 IDE。

问题二:greenfield 还是 brownfield

  • 全新项目:优先 Spec-Kit,从一开始建立 constitution 治理基线。
  • 存量改造:优先 BMAD(多角色防止改坏老代码)+ Superpowers(强制 TDD 保护既有行为)。

问题三:当前最痛的工程缺陷

  • 测试覆盖低 → Superpowers
  • 规范不清晰 → OpenSpec 或 Spec-Kit
  • 角色责任混乱 → BMAD
  • IDE 体验割裂 → Kiro

三问三答得到的是初始版本,不是最终版本。 SDD 实践会随团队成熟度演化,工具组合也会随之调整。

第 4 章

四种工具如何写同一份 proposal

书中第 4 章展示了一份 proposal.md 模板。这里补一个横向对照: 同样是“给智能日报生成器加一个 retry 机制”这个需求,在四种工具下的写法差异。

OpenSpec(轻量、Markdown): 在 openspec/changes/add-retry/proposal.md 写自由格式 Markdown—— 目标、背景、范围、成功标准、技术约束。强调“人能读懂、AI 能执行”。

Spec-Kit(结构化、CLI): 调用 /speckit.specify,按内置模板填写。 必含字段:Title / Why / What / Acceptance / Non-Goals / Constraints。 如果有模糊之处,/speckit.clarify 会自动追问。

BMAD(角色分工): 由 Product Manager Agent 撰写 PRD,由 Architect Agent 审阅技术可行性。 强调“谁写谁担责”——proposal 不再是一个人脑里的全部假设,而是多个 AI 角色协作的产物。

Superpowers(TDD 锚定): 先用 brainstorm 把需求的模糊点钉死——哪些异常要重试?max_attempts 是多少? 429 状态码怎么处理?输出一份“需求理解纪要”,每一条都对应后续一个测试用例。

核心差异在切入点: OpenSpec 切入“规范的载体”,Spec-Kit 切入“规范的结构”, BMAD 切入“规范的撰写者”,Superpowers 切入“规范的可测试性”。 四种切入都是有效路径,选择取决于团队的工程文化基线。
第 7 章

工具层如何强制“测试先于代码”

第 7 章讲规范驱动的测试策略,讲的是方法论层面“测试应该从规范派生”。 这里补一个工具层的落地样本。

在 Superpowers 框架下,想生成代码,必须先有一个对应需求的失败测试存在。 没有失败测试,代码生成阶段不启动。 方法论说“测试先于代码”,工具层把这句话写进 Skill 的前置条件—— 规范没有被绕过的可能性,而不是依赖人的自律。

需要区分的一点: 强制 TDD 解决的是“测试有没有写”,不解决“测试写得好不好”。 从验收标准派生测试用例的质量,仍然取决于第 7 章讲的规范本身写得够不够清楚。 工具能保证流程,不能替代判断。
第 8 章

5 种 Agent 模式在 4 种工具中的落地

第 8 章把 SDD 与五种 Agent 设计模式的对应关系讲到概念层。 实际工程中还有一个更具体的问题:我手上这个工具,操作层面怎么实现“护栏三明治”“层级委托”?

Agent 模式OpenSpecSpec-KitBMADSuperpowers
规划与执行 propose + applyplan + tasksArchitect → Devdesign → TDD
生成-评审 手动 reviewanalyze + clarifyQA Agentrefactor skill
层级委托 单一 Agent单一 Agent多 Agent(天然契合)Skill 切换
护栏三明治 spec 前置 + 手动后验constitution(强约束)角色边界test-first(强约束)
条件路由 change-based 分发clarify 分支角色路由brainstorm 分支

示例一 · 护栏三明治 in Spec-Kit: 核心是 constitution.md,它被 Spec-Kit 视为项目级不可变约束。 前置护栏是在其中写入项目级约束(例如“禁止直接调用第三方 API,必须经过 adapter 层”),每一轮生成规范时都会读它; 中间执行时生成计划会自检是否违反 constitution,违反则拒绝生成; 后置护栏由 analyze 命令做跨文档一致性检查,验证代码确实落实了约束。

示例二 · 层级委托 in BMAD: BMAD 的多角色架构本身就是层级委托的实现。 Architect Agent 读完 proposal,把任务拆成子任务,分别委派给前端、后端、QA、DevOps 各 Agent。 每个子 Agent 在自己的上下文里工作,互不污染;主 Agent 只看汇总结果。 优势是上下文隔离自然——每个子 Agent 的 prompt 只包含自己的职责范围。

示例三 · 生成-评审 in Superpowers: 生成阶段由 test-driven-development 产出“能通过测试但未必优雅”的最小实现; 评审阶段由 refactor skill 进入“评审者”角色,审视命名清晰度、模块边界、可测试性、是否过度抽象, 并且必须在测试保持绿色的前提下才能应用建议。 两个 Skill 用同一个进程,但通过不同的 system prompt 扮演两个独立角色。

示例四 · 条件路由 in OpenSpec: OpenSpec 的 change-based 架构原生支持条件路由。 每个 change 是一个独立目录,有自己的 proposal/design/tasks,多个 change 可以并行存在。 “change 即路由单元”的设计,让它在多场景分支需求(企业版与个人版、Web 与移动端)下有天然的分发能力。

工具选择与模式选择的关系: 上面的映射不是一对一最优——一种模式在多种工具下都能实现,只是难度和强制力不同。 选工具时先问“我团队最需要哪种模式的强约束”,再选最适合那种模式的工具。 缺测试纪律选 Superpowers,缺约束治理选 Spec-Kit,缺角色清晰选 BMAD,缺轻量上手选 OpenSpec。
第 10 章

工具会消失,方法论是稳定的

这一节回应读者最常问的一个问题:我现在学的这些工具,18 个月后还有用吗? 答案是:具体工具大概率会消失或被取代,但方法论会稳定下来。 过去三十多年,“规范驱动”这个思想已经历过三次工业复兴,每一次的规律都相同。

第一次复兴在 1988 年。 Bertrand Meyer 提出契约式设计,核心是“模块之间的接口必须有明确的契约,违反契约的代码不能编译”。 当时的载体是 Eiffel 语言。Eiffel 后来退出主流市场,但契约式设计被吸收进 Java 的 assert、 Python 的 typing、Rust 的所有权系统。工具消失了,方法论留下来了。

第二次复兴在 2015 年。 OpenAPI 推动 API-First Design 成为微服务时代的工程纪律。 具体工具在十年里换过几代,但“先写 API spec,再写代码”这个方法论从未动摇。

第三次复兴是当下。 OpenSpec、Spec-Kit、BMAD、Superpowers、Kiro 几乎同时出现, 回应的是同一个工业现实——AI 写代码的成本越来越低,真正稀缺的是清晰、可执行、可验证的意图。

把前两次的规律套用到这一次:具体工具会更迭,但“规范是第一手工件,代码是规范的衍生物” 这个核心命题会稳定下来。工具可能换名字、换接口、换实现, 而三层规范、六阶段工作流、五大核心原则会作为方法论留下来。

本页最近更新:2026 年 7 月