SDD 实践:OpenSpec + Superpowers 整合创建自定义工作流

3 阅读12分钟

SDD 实践:OpenSpec + Superpowers 整合创建自定义工作流

本文介绍如何将 OpenSpec(规格驱动变更管理)与 Superpowers(AI 执行纪律)整合为一套连贯的 Spec-Driven Development(SDD)工作流。


1. 问题:AI 辅助开发缺什么

AI 编码助手已经能完成完整功能。但随着 AI 承担的任务范围变大,两个问题开始显现:

设计共识随对话消失。 AI 在长对话中会遗忘早期约束。brainstorm 中否决的方案,可能在第 50 轮对话时被重新提出。/clear 释放上下文后,之前达成的共识全部丢失。

AI 有能力写代码,但没有纪律维护工程质量。 它不会主动先写测试,不会系统定位 bug 根因,也不会在写代码前检查 spec。如果没有外部结构约束,产出质量完全依赖于人类工程师在每次对话中是否足够谨慎。

这两个问题恰好被两个工具分别解决:

  • OpenSpec 管"写什么"——用结构化 artifact(proposal → specs → design → tasks)管理每一次变更,用 Delta Spec(ADDED / MODIFIED / REMOVED)适配棕地开发,用 GIVEN/WHEN/THEN 场景确保需求可验证
  • Superpowers 管"怎么做"——用严格的执行纪律(TDD 铁律、系统化调试、双阶段代码审查)约束 AI 的行为

但单独使用都不够:OpenSpec 有 spec 流程但缺 TDD 纪律,Superpowers 有执行方法论但设计共识无处持久化。SDD 的整合目标就是让两者的能力互补。


2. 整合的核心理念

Action Not Phases

SDD 的每个操作是独立能力(action),不是必须按顺序完成的阶段(phase)。

sdd-brainstorm   — 想深度探索设计
sdd-propose      — 想固化提案
sdd-ff           — 想快进生成所有规划文档
sdd-plan         — 想细化实施计划
sdd-code         — 想按 TDD 实施
sdd-review-spec  — 想审查 spec 质量
sdd-review-code  — 想审查代码
sdd-verify       — 想全面验证
sdd-ship         — 想归档合并

依赖关系是 enabler(前置 artifact 应存在),不是 gate(缺失则阻断)。大特性可以走完整流程,小修复可以跳过头脑风暴直接 sdd-propose——这不是"违规跳阶段",而是根据需要选择能力组合。

产物接力

每个 action 的输出是下一个 action 的输入,所有中间状态持久化为文件:

brainstorm.md → proposal.md → specs/ → design.md → tasks.md → plan.md[代码][归档]

两个关键含义:

  1. 任意步骤之间可以安全 /clear,状态在文件系统中,不在对话历史里
  2. 每个 action 是"无状态"的——它只读取文件,不依赖之前的对话记忆

不修改底层工具

SDD 是编排层,不修改 OpenSpec 或 Superpowers 的任何原有文件。两个工具保持独立升级能力。


3. 薄编排架构

为什么是"薄编排"

早期设计中,SDD skills 复制了大量 OpenSpec 和 Superpowers 的逻辑(比如自己实现苏格拉底式提问流程)。这导致上游升级时 SDD 不会自动跟进,修 bug 需要多处修改。

薄编排的思路是:SDD skill 只做编排,核心工作委托给底层 skill。

用户 ──→ sdd-* skills(唯一入口)
             │
             ├── invoke → Superpowers skills(brainstorming / TDD / debugging...)
             ├── invoke → OpenSpec skills(continue-change / ff-change / verify...)
             └── SDD 自有逻辑(前置检查 / review 循环 / 产物校验)

用户只认识 sdd-*,不需要知道 OpenSpec 或 Superpowers 的存在。SDD 保留编排权(review 循环、决策追溯检查、批次管理),底层 skill 做核心工作。

每个 Skill 的统一三段式结构

所有 SDD skill 遵循同一结构:

阶段执行方职责
前置逻辑SDD 自有定位 change 目录、读取已有 artifact、检查前置条件
核心执行invoke 底层 skill核心工作交给 OpenSpec 或 Superpowers
后置逻辑SDD 自有review 循环、产物格式校验、下一步引导

sdd-brainstorm 为例:前置逻辑定位 change 目录并读取项目上下文;核心执行 invoke superpowers:brainstorming 进行苏格拉底式探索;后置逻辑 dispatch brainstorm-reviewer 进行审查(最多 3 轮)。

Override 机制

部分 Superpowers skills 有内置的自动转场逻辑(比如 brainstorming 完成后自动进入 writing-plans)。在 SDD 中,这种自动转场会打断编排节奏。SDD 通过显式 Override 解决:

被调用 SkillOverride 什么保留什么
superpowers:brainstorming输出位置、模板格式、禁止转入 writing-plans、跳过内置 reviewer苏格拉底式提问、方案探索、分段确认
superpowers:writing-plans输出位置、模板格式、禁止转入 executing-plans、跳过内置 reviewer2-5 分钟粒度、TDD 步骤结构
superpowers:using-git-worktrees分支命名为 sdd/<change-name>安全验证、基线测试

其余 skills(TDD、debugging、code-review、verification 等)的核心纪律全部保留,无需 Override。


4. 三层架构

┌─────────────────────────────────────────────────────────────┐
│              SDD Action Skills(编排层)                       │
│  sdd-brainstorm  sdd-propose  sdd-ff  sdd-plan  sdd-code   │
│  sdd-continue  sdd-review-spec  sdd-review-code             │
│  sdd-verify  sdd-ship  sdd-doctor                           │
└───────────────┬──────────────────────┬──────────────────────┘
                │                      │
    ┌───────────▼───────────┐  ┌───────▼──────────────────────┐
    │   Superpowers(纪律层) │  │   OpenSpec(规格层)           │
    │  brainstorming         │  │  Schema / 模板系统            │
    │  writing-plans         │  │  continue-change / ff-change │
    │  test-driven-development│  │  verify-change / archive     │
    │  systematic-debugging  │  │  sync-specs                  │
    │  requesting-code-review│  │  Delta Spec 格式             │
    │  using-git-worktrees   │  │                              │
    │  verification          │  │                              │
    │  finishing-branch      │  │                              │
    └────────────────────────┘  └──────────────────────────────┘

委托关系全景

SDD Action委托给SDD 自有逻辑产物
sdd-doctor检查环境、skill 完整性、change 状态诊断报告
sdd-brainstormsuperpowers:brainstorming前置:定位 change dir / 后置:brainstorm-reviewer 循环brainstorm.md + review
sdd-proposeopenspec-continue-change前置:读 brainstorm / 后置:决策追溯检查proposal.md
sdd-continueopenspec-continue-change识别下一个缺失 artifact、格式校验依赖链中下一个 artifact
sdd-ffopenspec-ff-change识别所有缺失 artifact、批量校验所有缺失 artifact(至 tasks.md)
sdd-plansuperpowers:writing-plans前置:读 tasks+specs+design / 后置:plan-reviewer 循环plan.md + review
sdd-codesuperpowers:test-driven-development + superpowers:using-git-worktrees + superpowers:systematic-debugging前置:读 plan 定位批次 / 后置:更新 tasks.md代码 + 测试 + commits
sdd-review-spec无(派遣 subagent)spec-reviewer 审查reviews/spec-r<N>.md
sdd-review-codePhase 2: superpowers:requesting-code-reviewPhase 1: spec-compliance 审查reviews/code-*.md
sdd-verifysuperpowers:verification-before-completion + openspec-verify-change逐条 scenario 覆盖率统计验证报告
sdd-shipopenspec-sync-specs + openspec-archive-change + superpowers:finishing-a-development-branch前置:最终验证 / 编排:三步顺序执行归档 + specs 同步

5. Artifact 依赖链与模板

依赖关系

brainstorm.md ──→ proposal.md ──→ specs/ ──→ tasks.md ──→ plan.md
  (可选)            (必需)     ↗   (必需)      (必需)
                            proposal.md
                               ↓
                           design.md
                            (可选)

必需 artifactproposal.mdspecs/tasks.md — spec 流程的骨架。

可选 artifactbrainstorm.md(需求已明确时跳过)、design.md(简单变更不需要技术设计)、plan.md(虽然强烈推荐,但紧急修复可直接实施)。

关键设计:tasks.md 不硬依赖 design.md,简单变更可以从 specs 直接出 tasks。plan.mdsdd-plan 单独生成(而非 sdd-ff 一并生成),确保 plan 质量由 Superpowers 的 writing-plans 纪律保障。

tasks.md 与 plan.md 的分工

两者回答不同层次的问题,不能合并:

tasks.md(做什么)plan.md(怎么做)
归属OpenSpec 产物Superpowers 产物
约束schema 模板writing-plans 纪律
格式checkbox + spec 链接文件路径 + 测试代码 + 运行命令
粒度spec requirement 级2-5 分钟工程师操作级

tasks.md 中的一条:

- [ ] 1.1 实现主题切换 API [spec:ui-theme#toggle-theme]

plan.md 中的对应展开:

#### Task 1.1:实现主题切换 API [spec:ui-theme#toggle-theme]
- **文件**`src/theme/ThemeProvider.ts` (Create)
- **RED**:编写失败测试
  test('toggleTheme switches from light to dark', () => { ... })
- **运行验证失败**`npm test -- --filter "toggleTheme"`
- **GREEN**:最小实现
- **运行验证通过**`npm test -- --filter "toggleTheme"`

Schema 与模板

Schema(openspec/schemas/sdd/schema.yaml)只管内容约束——产物里应该有什么——不管流程编排——谁来做、怎么做。流程编排的职责完全由 SDD skill 承担。

7 个模板文件(位于 openspec/schemas/sdd/templates/)是 Schema 层和 Action 层之间的接口契约:

模板元素生产方消费方
spec GIVEN/WHEN/THEN 场景spec.md 模板要求可测试断言sdd-code 将场景翻译为测试
tasks [spec:domain#scenario] 链接tasks.md 模板格式sdd-code 定位对应场景
proposal/design "决策追溯"节模板必填节sdd-review-spec 验证完整性

6. Review 机制

SDD 中有两类 review,设计意图不同。

内嵌 Review

是 action 内部的质量保证,不是独立步骤:

所在 ActionReviewer检查焦点
sdd-brainstormbrainstorm-reviewer方案完整性、决策清晰度、YAGNI
sdd-planplan-reviewer任务粒度、TDD 步骤完整性、spec 对齐

内嵌 review 不违反"Action Not Phases"——它是 action 内部的质量保证机制。

独立 Review

是可选 action,按需触发:

ActionReviewer推荐场景
sdd-review-specspec-reviewer大特性在实施前推荐执行
sdd-review-codespec-compliance + code-quality(双阶段)每批次实施后

双阶段代码审查

sdd-review-code 分两阶段执行:

  1. Phase 1:Spec 合规审查(SDD 自有逻辑,dispatch subagent)—— 代码是否实现了 spec 中的场景
  2. Phase 2:代码质量审查(invoke superpowers:requesting-code-review)—— 可读性、设计模式、潜在问题

Phase 1 必须通过后才进入 Phase 2。理由:如果代码没有实现 spec 要求的功能,讨论代码质量毫无意义。先确认"做对了",再讨论"做好了"。

所有 review 产物写入 reviews/ 目录,命名格式 <artifact>-r<round>.md


7. 信息丢失防护

长文档链路中的信息丢失是真实风险。brainstorm.md 中的关键约束,到 plan.md 生成时可能已不可见(中间经过多次 /clear)。

SDD 通过两层机制防护:

第一层:模板的"决策追溯"必填节。 proposal.mddesign.md 模板均要求显式引用 brainstorm 中的关键决策:

## 决策追溯
<!-- 必填:引用 brainstorm.md 中的关键决策 -->
- 选择 [X] 而非 [Y]:[原因](见 brainstorm.md §关键决策)
- 约束 [Z]:[来源](见 brainstorm.md §约束分析)

第二层:后置逻辑的自动检查。 sdd-propose 的后置逻辑会验证 proposal 是否引用了 brainstorm 中的所有关键决策。sdd-review-spec 也会检查决策追溯的完整性作为兜底。

信息沿依赖链向下传递:brainstorm → proposal(决策追溯)→ specs(需求场景)→ tasks(spec 链接)→ plan(保留 spec 链接)。每一环都有显式引用,不靠对话记忆。


8. 上下文卫生

AI 辅助开发的一大挑战是对话上下文膨胀。SDD 的解法是持久化一切,然后安心清空

每个 action 完成时都会输出:

"本 action 已完成,产物已持久化至 <path>。如需释放上下文,可安全 /clear。"

使用建议:

  • 每个 action 完成后 /clear — 这是核心习惯,不是可选操作
  • 看到完成提示中的文件路径就可以 /clear — 产物在文件系统中,对话历史是不可靠的状态存储
  • 不要在 action 中途 /clear — 每个 action 设计为原子操作

三个 action 包含交互式流程,不适合中途清空:sdd-brainstorm(多轮对话 + review 循环)、sdd-plan(可能需要 review 循环)、sdd-code(单批次内的 TDD 循环)。


9. 完整工作流

大特性标准路径

# 步骤 1:深度探索设计
sdd-brainstorm
  → brainstorm.md + reviews/brainstorm-r1.md
/clear

# 步骤 2:快进生成所有规划文档
sdd-ff
  → proposal.md + specs/ + design.md + tasks.md
/clear

# 步骤 3:审查 spec 质量(大特性推荐)
sdd-review-spec
  → reviews/spec-r1.md
/clear

# 步骤 4:细化实施计划
sdd-plan
  → plan.md + reviews/plan-r1.md
/clear

# 步骤 5-8:按批次 TDD 实施 + 代码审查
sdd-code          # 批次一
/clear
sdd-review-code   # 审查批次一
/clear
sdd-code          # 批次二
/clear
sdd-review-code   # 审查批次二
/clear

# 步骤 9:全面验证
sdd-verify
/clear

# 步骤 10:归档合并
sdd-ship

小修复最短路径

sdd-propose  → /clear → sdd-ff → /clear → sdd-plan → /clear → sdd-code → /clear → sdd-ship

跳过 brainstorm(需求已明确)、跳过 spec review(改动小)、跳过独立 verify(ship 内置验证)。

Next Action 引导

每个 action 完成时给出明确的下一步建议:

当前 Action推荐下一步
sdd-brainstorm逐步确认 → sdd-propose;需求充分 → sdd-ff
sdd-propose逐步确认 → sdd-continue;需求充分 → sdd-ff
sdd-continue继续 → sdd-continue;快进 → sdd-ff;到 tasks → sdd-plan
sdd-ff大特性 → sdd-review-spec;小修复 → sdd-plan
sdd-review-specApproved → sdd-plan;Issues → 修正后再审
sdd-plansdd-code 开始实施
sdd-codesdd-review-code 审查本批次
sdd-review-code有更多批次 → sdd-code;全完成 → sdd-verify
sdd-verifyPass → sdd-ship;Fail → sdd-code 补充
sdd-ship本轮完成

10. 渐进采用策略

不需要一次性使用全部 11 个 action。分阶段引入:

阶段使用的 Action建立的习惯
第一阶段sdd-proposesdd-ffsdd-plansdd-codesdd-shipspec 驱动 + TDD
第二阶段+ sdd-review-spec + sdd-review-code审查纪律
第三阶段+ sdd-brainstorm + sdd-verify完整工程纪律

每个阶段都能独立提供价值。


11. 目录结构

openspec/
├── config.yaml                     # 项目配置(默认 schema: sdd)
├── specs/                          # 全局 spec(归档后合并至此)
│   └── <domain>/
│       └── spec.md
├── schemas/
│   └── sdd/                        # SDD schema + 模板
│       ├── schema.yaml             # artifact 定义、依赖链、内容约束
│       └── templates/
│           ├── brainstorm.md
│           ├── proposal.md
│           ├── spec.md
│           ├── design.md
│           ├── tasks.md
│           ├── plan.md
│           └── review.md
└── changes/
    ├── <change-name>/              # 活跃变更
    │   ├── brainstorm.md
    │   ├── proposal.md
    │   ├── specs/
    │   │   └── <capability>/
    │   │       └── spec.md
    │   ├── design.md
    │   ├── tasks.md
    │   ├── plan.md
    │   └── reviews/
    │       ├── brainstorm-r1.md
    │       ├── spec-r1.md
    │       ├── plan-r1.md
    │       ├── code-batch1-r1.md
    │       └── code-final-r1.md
    └── archive/
        └── YYYY-MM-DD-<name>/

.claude/skills/
├── sdd-doctor/         SKILL.md
├── sdd-brainstorm/     SKILL.md + brainstorm-reviewer-prompt.md
├── sdd-propose/        SKILL.md
├── sdd-continue/       SKILL.md
├── sdd-ff/             SKILL.md
├── sdd-plan/           SKILL.md + plan-reviewer-prompt.md
├── sdd-code/           SKILL.md
├── sdd-review-spec/    SKILL.md + spec-reviewer-prompt.md
├── sdd-review-code/    SKILL.md + spec-compliance-reviewer-prompt.md
│                               + code-quality-reviewer-prompt.md
├── sdd-verify/         SKILL.md
└── sdd-ship/           SKILL.md

12. 关键设计决策

决策选择理由
架构模式薄编排(invoke 委托)消除逻辑复制和版本漂移,底层工具可独立升级
用户入口只有 sdd-*消除三套入口(SDD / OpenSpec / Superpowers)的选择困惑
Schema instruction只管内容约束执行者(OpenSpec skill)无法执行流程编排指令,职责分离
Override 策略具体路径 + 具体禁止 + 兜底检测提高 Override 可靠性,避免笼统指令被忽略
design 可选化tasks/plan 不硬依赖 design简单变更不需要技术设计文档
ff 不生成 planapply 依赖 tasks 而非 plan让 ff 自然停在 tasks,plan 单独由 writing-plans 纪律保证质量
tasks vs plan 共存分开(what vs how)合并会导致要么 tasks 过于详细,要么 plan 过于抽象
代码审查分两阶段spec 合规 → 代码质量先确认"做对了"再讨论"做好了"
Review 形态内嵌(brainstorm/plan)+ 独立(spec/code)内嵌是质量保证,独立是可选能力,不违反 Action Not Phases

13. 适用场景

SDD 的价值在以下场景中最明显:

  • 复杂特性:brainstorm → spec → TDD 流程在需求复杂、边界条件多时价值最大
  • 长期项目:归档机制将变更历史转化为制度记忆,新成员可通过 archive 了解设计决策的来龙去脉
  • 团队协作:artifact 体系提供共同语言,review 让代码审查更有焦点

对于简单的一次性脚本或快速验证原型,完整流程的开销大于收益。渐进采用策略正是为了让开发者找到适合自己项目的平衡点。


核心哲学:用结构消除歧义,用纪律保证质量,用归档积累智慧。