Spec-Driven Development · 内部方案

公司 SDD 技能集定制方案

基于 mattpocock skills 裁剪修改 · 借鉴 OpenSpec 与 spec-kit 治理机制 · 融合 AI 原生 SDLC / 设计流水线实践经验
调研对象:mattpocock/skills · Fission-AI/OpenSpec · github/spec-kit(源码级) · 2026-09-20

1方案概览与设计立场

目标:为团队定制一套可分发、可治理的 SDD(规范驱动开发)技能集,覆盖「需求拷问 → 规范 → 拆票 → 实现 → 审查 → 归档」全链路,并与设计流水线(DESIGN.md)打通。

为什么底座选 mattpocock skills,而不是 OpenSpec 或 spec-kit?

核心判断:拿组合式架构,借治理式机制。 三个工具的根本差异不在功能,而在控制权归属: 结论:以 mattpocock skills 的三层架构为骨架做裁剪,把 OpenSpec 的 delta/校验/归档机制和 spec-kit 的宪法门禁「翻译」成技能的形式注入——治理能力不来自外部 CLI,而来自写进技能正文的纪律与检查项。

三条不可妥协的定制原则(源自实践复盘):

  1. 上下文会消失,共识必须落盘——术语进 CONTEXT.md、决策进 ADR、环境进 docs/agents/,技能的每个阶段都要有明确的落盘动作。
  2. 产出无限而判断有限,质量门必须工具化——ready-for-agent 状态、lint 0/0、双轴审查,全部固化进技能,不依赖人的自觉。
  3. 人机分工必须显式——每个技能写明「AI 全自动段落」与「人工介入点」,人只出现在拍板处。

2三大工具源码级对比

维度mattpocock/skillsOpenSpecspec-kit
定位 可组合技能集,反对全流程接管 轻量 spec 变更管理(npm CLI) SDD 方法论 + 脚手架 CLI(Specify)
核心结构 三层技能:编排层(grill-with-docs → to-spec → to-tickets → implement)/ 纪律层(tdd、code-review、diagnosing-bugs)/ 原语层(grilling、domain-modeling) 双区模型:openspec/specs/(当前事实源,按 capability)+ openspec/changes/(进行中提案:proposal / design / tasks / delta) .specify/(宪法 + 模板 + 脚本)+ specs/<NNN-feature>/(spec / plan / tasks / checklists)
工作流 idea → ship:拷问访谈(状态化,实时写 CONTEXT.md/ADR)→ spec → 曳光弹垂直切片 ticket → 每票独立会话 implement(内嵌 TDD 红绿循环 + 双轴 code-review) proposal → specs delta(可并行 design)→ tasks → apply → archive;「Specs describe current → Changes propose deltas → Archive merges」 constitution → specify → clarify(9 类歧义、限 5 问)→ plan(宪法检查门禁)→ tasks → analyze(只读一致性分析) → implement → converge
质量门 ready-for-agent 状态标签;spec/ticket 模板内嵌(XML 风格块);双轴审查刻意不合并排序 validate --strict:Zod schema 校验(requirement 须含 SHALL/MUST、scenario 须四级标题、单 change ≤10 delta);archive 原子合并、失败可回滚 Constitution Check(plan 前后各一次,违反须论证);checklists 门禁(implement 前检查);analyze 输出 CRITICAL~LOW 分级报告
防漂移机制 文档四段式规范、双桶治理(README 与 plugin.json 必须同步) delta 只描述差异(ADDED/MODIFIED/REMOVED);MODIFIED 须完整拷贝原需求块且标题精确匹配;归档是唯一写入主 spec 的路径 宪法语义化版本演进;「宪法冲突自动 CRITICAL,只能改产物不能稀释原则」
分发 claude plugins install(仓库即市场)+ npx skills add;changesets 管版本 openspec init --tools 为 40+ AI 工具生成 skills/commands,指令文本单一来源防多工具漂移 uv tool install;45+ 代理集成注册表(INTEGRATION_REGISTRY),占位符令牌替换调用前缀
最适合借鉴的 分层架构、技能组合规则、模板内嵌、状态机 delta 格式、validate 校验、archive 归档、change 隔离并行 宪法门禁、analyze 一致性分析、clarify 歧义分类法
定制技能集的能力来源映射 mattpocock/skills 骨架:三层架构 · 编排层 / 纪律层 / 原语层 · grill → spec → tickets → implement · CONTEXT.md / ADR 落盘机制 · ready-for-agent 状态机 · TDD + 双轴 code-review 提供「流程骨架」 OpenSpec 治理:规范生命周期 · delta(ADDED/MODIFIED/REMOVED) · 结构校验(SHALL / Scenario) · archive 原子归档(唯一写路径) · change 隔离、并行、可回滚 提供「防漂移纪律」 spec-kit 门禁:宪法与分析 · constitution 项目宪法 · Constitution Check 门禁 · analyze 只读一致性分析 · clarify 歧义分类法 提供「原则与检查」 公司 SDD 技能集(技能形式承载治理,不引入外部 CLI)
图 1 · 三家之长各取所需:骨架取 mattpocock,防漂移取 OpenSpec,门禁取 spec-kit

3实践经验沉淀(作为定制输入)

两篇实践记录提供了三个工具仓库里没有的实战约束,直接转化为定制要求:

实践发现教训转化为定制要求
grill-with-docs 的状态化访谈(长辈计算器 4 轮 27 问) 术语敲定即落盘 CONTEXT.md,比批量补交可靠;每轮访谈后知识不丢失 公司版 grill 技能必须强制「实时写盘」,并约定 CONTEXT.md 只记术语与共识、不含实现细节
spec 质量取决于术语表 36 条用户故事全部使用 CONTEXT.md 词汇,spec 与术语表冲突时以术语表为准 to-spec 技能增加自检项:「spec 中每个领域名词必须能在 CONTEXT.md 中找到定义」
ticket 是实现批次而非用户故事 12 张曳光弹切片、每张单会话完成;每票之间是天然的检查点;上下文满仓的后半程质量衰减 to-tickets 保留曳光弹原则,模板显式写入「单上下文窗口可完成」约束与 Blocked-by 依赖图
code-review 双轴发现真实偏差 Spec 轴抓到「算式行数字未带千分位」这种真 bug;Standards 轴的建议需人工取舍 公司版增加第三轴(安全轴),三轴并行、各自报告
DESIGN.md 三层治理(标准只读 / 偏离显式 / 回流有门槛) AI 会顺手改文件,治理规则必须前置;「项目没有资格修改标准」 新增 design-pipeline 技能;标准文件在技能正文中声明为只读输入,偏离必须写入 overrides 并附理由
环境变量取空、npx 拦截、限流 429 等踩坑 试错解法固化进 docs/agents/design-pipeline.md 后「试错变成照做」 每个技能配一个「已知坑」小节,AI 遇到对应症状直接走正确路径
Figma 只读、HTML 才是 AI 的设计稿 设计事实源上移到仓库文本规范;HTML 原型秒级迭代,Figma 退居协作层 设计流水线以「网站 → DESIGN.md → HTML 原型 → Figma 存档」为标准路径,Figma 段落是唯一的人工环节

4技能集总体架构

沿用 mattpocock 的分层规则并扩展一层公司治理技能(仍属编排层,但只在特定入口被调用):

分层规则(扩展版)
① user-invoked skills 负责编排,model-invoked skills 承载可复用纪律;
② 编排技能可以调用纪律技能,永不调用另一个编排技能;
③ 治理类技能(constitution、analyze、archive)由编排技能在工作流节点上调用,或由人显式调用;
④ 每个技能的 SKILL.md 内嵌模板块(XML 风格),模板即规范——AI 不需要外部文件就能拿到格式约定。
公司 SDD 技能集(company-sdd)分层架构 编排层 user-invoked constitution 项目宪法 · 新增 grill-with-docs 需求拷问 · 改造 to-spec 规范 · 改造 to-tickets 拆票 · 改造 implement 实现 · 保留 design-pipe 设计流水线 · 新增 archive 归档 · 新增 治理层 节点上被调用 spec-validate 规范校验 · 新增(OpenSpec) analyze 一致性分析 · 新增(spec-kit) constitution-check 宪法门禁 · 新增(spec-kit) design-lint 设计规范校验 · 新增(实践) 纪律层 model-invoked tdd 保留 code-review 三轴 · 改造 diagnosing-bugs 保留 domain-modeling 保留 codebase-design 保留 原语层 被访谈类调用 grilling 保留 prototype 保留(可选) 主流程:constitution(一次性)→ grill-with-docs → to-spec ⇄ spec-validate → to-tickets → implement(内嵌 tdd + code-review)⇄ constitution-check → archive 设计分支:design-pipe(DESIGN.md → HTML 原型 → Figma 存档 ⇄ design-lint) 横切:analyze 在 implement 前对 spec / plan / tasks 做只读一致性检查 标签含义:保留 = 原样入库 · 改造 = 模板/规则替换为公司版 · 新增 = 从 OpenSpec / spec-kit / 实践经验翻译为技能
图 2 · company-sdd 四层架构与调用关系

5裁剪决策清单

5.1 编排层(user-invoked)

技能决策定制要点
grill-with-docs 改造 保留「有状态访谈」内核(每轮敲定即写盘)。公司化改动:① 文档固定为 CONTEXT.md(术语)+ docs/adr/(决策),路径不开放配置;② 增加「合规三问」固定题项——数据边界、权限边界、对外依赖;③ 访谈结论必须回指公司工程宪法(见 §6.1),与宪法冲突的选项在访谈中即被标记。
to-spec 改造 保留模板六段结构(Problem / Solution / User Stories / Implementation Decisions / Testing Decisions / Out of Scope)。公司化改动:① 增加「测试接缝」必填段(Feathers seam,实践已验证有效);② 增加「设计关联」段——涉及界面的 spec 必须引用 DESIGN.md tokens 或声明 overrides;③ 发布路径固定 .scratch/<feature-slug>/spec.md;④ 发布前自动执行 spec-validate(见 §6.2),0 错误才允许打 ready-for-agent。
to-tickets 改造 保留曳光弹垂直切片、Blocked-by 依赖图、单上下文窗口约束。公司化改动:① ticket 模板增加「验证方式」必填字段(对齐 OpenSpec tasks 的约束——每个任务必须含验证方式);② ticket 状态机固定:draft → ready-for-agent → in-progress → done,状态行格式与 spec 一致;③ 拆票完成后强制产出依赖图摘要表。
implement 保留 16 行的纯编排者,调用 tdd + code-review。仅两处修改:① 结尾增加「工单验收项勾选 + 提交」步骤(实践已跑通的模式);② 实现前检查 constitution-check 快速项(只查禁令类,不做全量分析)。
constitution 新增 从 spec-kit 翻译为技能形式(见 §6.1)。
design-pipeline 新增 把设计流水线实践固化为技能(见 §6.4)。
archive 新增 从 OpenSpec 翻译为技能形式(见 §6.3)。
setup-* 改造 公司版每仓库初始化技能:issue tracker 选项收敛为公司唯一系统;文档目录固定;写入 docs/agents/issue-tracker.md 等;并生成 CLAUDE.md 骨架(引用宪法与 CONTEXT.md)。
wayfinder 保留 超大工作的决策地图机制原样保留,issue tracker 适配公司系统。
triage / ask-matt 改造 triage 保留状态机、标签表改公司版;ask-matt 改为公司路由图(改名 sdd-map),补充新增治理技能的入口说明。

5.2 纪律层(model-invoked)

技能决策定制要点
tdd 保留 红绿循环纪律与 references(tests.md / mocking.md)原样保留,实践已验证。
code-review 改造 双轴(Standards / Spec)扩为三轴并行:新增 Security 轴(对照公司安全清单 + OWASP 常见项,与安全扫描工具的产出互补——扫描管已知模式,该轴管业务逻辑层面的安全意图偏离)。三轴刻意不合并排序,各出各的报告。
diagnosing-bugs / domain-modeling / codebase-design / prototype / research 保留 原样入库。这些是模型自主调用的纪律与原语,不涉及公司流程。
resolving-merge-conflicts / wizard / improve-codebase-architecture 保留 原样入库。

5.3 productivity 桶

技能决策说明
grilling保留可复用访谈原语,grill-with-docs 的依赖,必须保留。
handoff保留与 prototype 配套的交接技能。
grill-me / teach / to-questionnaire / wait-what / writing-for-agents不进个人向/内容向技能,不属于公司 SDD 流程,不随插件分发(仓库内可保留在独立目录供个人安装)。

6新增技能设计

6.1 constitution — 工程宪法(译自 spec-kit)

一次性技能:建立/修订 docs/constitution.md。宪法是公司工程原则的最小集,后续所有阶段加载并受其约束。

---
name: constitution
description: 建立/修订项目工程宪法。修订须语义化版本并输出 Sync Impact Report。
---

## 流程
1. 读取公司基线宪法(docs/standards/engineering-constitution.md,只读)
2. 访谈确认项目级增补原则(≤5 条,每条须含「为什么」与「违反时的处理」)
3. 写入 docs/constitution.md,含版本号与批准日期
4. 输出 Sync Impact Report:本次变化影响哪些下游工件(模板/skill/CI)

## 规则
- 公司基线原则:项目只能引用、不能稀释(冲突 = CRITICAL,只能改项目产物)
- 项目增补原则:MAJOR=删除/重定义 · MINOR=新增 · PATCH=澄清
- 宪法冲突不可协商绕过;确需绕过时必须在 Complexity 论证段留痕
公司基线建议首版五条(可讨论):① 测试先行的变更不可协商;② 规范与代码同源(tokens/spec 来自 export 产物,禁止手抄);③ 标准文件只读、偏离显式留痕;④ 安全审查为合并前必经门禁;⑤ 最小依赖与离线可用优先。

6.2 spec-validate — 规范校验(译自 OpenSpec,去掉 CLI 依赖)

纪律型技能:对 spec / delta 做结构校验,把 OpenSpec 的 Zod 规则翻译成技能正文里的检查清单。AI 逐项执行,输出 0 errors / 0 warnings 才放行。

检查项规则(源自 OpenSpec validator)
需求措辞每条 Requirement 须含 SHALL/MUST(RFC 2119);单条 ≤500 字符
场景格式Scenario 用 GIVEN/WHEN/THEN;标题层级精确(OpenSpec 的教训:3 个 # 会静默失败)
动机充分Why/Problem 段 ≥50 字符(防「一句话 spec」)
delta 完整性MODIFIED 须完整拷贝原需求块且标题精确匹配,防场景丢失;REMOVED 须带 Reason 与 Migration
规模上限单次变更 ≤10 个 delta,超出应拆分
词汇对齐spec 中的领域名词必须能在 CONTEXT.md 找到定义(公司特有,源自实践)
占位符残留检出 TODO/占位符(含排除 fenced code block 的误报,OpenSpec 踩过的坑)

6.3 archive — 规范归档(译自 OpenSpec 双区模型)

功能完成、验收通过后执行:把 .scratch/<feature>/ 中已达成的行为契约合并进 specs/(按 capability 组织的当前事实源),原变更目录移入 specs/archive/YYYY-MM-DD-<feature>/ 留审计。要点:

6.4 design-pipeline — 设计流水线(源自实践,固化为技能)

把两篇博文中的设计环节做成与开发环节平行的技能,五个阶段各带质量门:

阶段动作质量门执行者
1提炼设计规范(参考站 → DESIGN.md)designmd lint 0 errors / 0 warningsAI 全自动
2生成 HTML 高保真原型(tokens 内联、单文件零依赖、内容对齐 CONTEXT.md)规范忠实 + 领域文档对齐自检AI 全自动
3导入 Figma(本地服务器 → Chrome 扩展 → Send to Figma)画板落地非空人(约 2 分钟)
4对齐校验(MCP 一次性回读 vs tokens 比对)禁轮询 REST(429)AI 全自动
5偏离治理(偏离写 DESIGN.overrides.md 并附理由;标准文件 git diff 必须为空)标准纯净检查AI 检查 / 人拍板回流
技能正文内置「已知坑」小节:反爬走 Wayback、npx 被拦走本地克隆、file:// 无权走 localhost、插件抓不到 localhost 必须走扩展、GUI 不读 ~/.zshrc 所以 token 内嵌——全部来自实践记录,症状出现即走正确路径。

6.5 analyze — 只读一致性分析(译自 spec-kit)

implement 前执行,只读不改文件:重复与歧义扫描、欠指定项识别、宪法对齐、覆盖缺口(哪些 spec 需求没有任何 ticket 承载)、产物间矛盾。输出 CRITICAL~LOW 分级报告,限 50 条。CRITICAL 项未清零前,implement 拒绝开始。

6.6 sdd-map — 路由图(改自 ask-matt)

人读的流程地图:什么规模的工作走哪条路。单会话装得下的小活直接 implement;标准工作走全流程;超大/多雾工作先 wayfinder 建决策地图;涉及界面的工作在 grill 后插入 design-pipeline。

端到端流程与质量门(菱形 = 门禁 · 灰框 = 人工介入点) constitution grill-with-docs to-spec spec-validate0/0 放行 to-tickets analyzeCRITICAL=0 implement archive 验收拍板 code-review三轴全绿 tdd 红绿 design-pipelineDESIGN.md→HTML→Figma lint 0/0 人工介入点(仅三处): ① grill 各轮作答与终局确认 · ② 设计评审拍板 + Figma 导入点击 · ③ 每张 ticket 完成后的验收 (每张 ticket 循环:implement → tdd → review → 验收) (涉及界面的工作插入设计分支)
图 3 · 端到端流程:AI 跑到每个门禁前停下,人只在拍板处出现

7目录与工件约定

统一所有项目的仓库布局(每仓库初始化时由 setup-sdd 生成骨架):

.
├── CLAUDE.md                      # 入口:指向宪法、CONTEXT.md、工作流地图
├── CONTEXT.md                     # 领域术语表(grill-with-docs 实时落盘;spec 冲突时以此为准)
├── docs/
│   ├── constitution.md            # 项目宪法(公司基线 + 项目增补,语义化版本)
│   ├── adr/                       # 架构决策记录(三道闸门通过的决策落这里)
│   ├── agents/                    # 环境配置(AI 的"入职文档")
│   │   ├── issue-tracker.md       #   工单系统约定(公司唯一系统)
│   │   ├── domain.md              #   领域背景
│   │   └── design-pipeline.md     #   设计流水线操作指引 + 已知坑
│   └── standards/
│       └── engineering-constitution.md   # 公司基线宪法(只读)
├── DESIGN.md                      # 公司标准设计规范(只读消费;有 UI 的项目引入)
├── DESIGN.overrides.md            # 项目偏离(只记 delta + 理由)
├── .scratch/<feature-slug>/       # 进行中工作区
│   ├── spec.md                    #   Status: ready-for-agent ...
│   └── issues/NN-*.md             #   曳光弹切片,各带 Blocked-by 与 Status
└── specs/                         # 已归档行为契约(事实源,按 capability;archive 唯一写入口)
    └── archive/YYYY-MM-DD-*/      #   归档留痕(审计上下文)
工件事实源属性谁写入谁只读
CONTEXT.md领域词汇权威定义grill-with-docs(访谈中实时)所有技能
docs/constitution.md工程原则权威constitution 技能(版本化)全部阶段加载
DESIGN.md公司设计标准标准维护者(评审回流)项目侧一律只读
specs/系统当前行为契约archive 技能(唯一路径)spec / implement
.scratch/进行中提案(隔离)to-spec / to-tickets / implementanalyze / review

8质量门与治理机制

四个来源的门禁统一收口到一张表,每个门禁都有明确的「不过怎么办」:

门禁所处节点判定标准不通过时
spec-validatespec 发布前结构校验 0 errors / 0 warnings;词汇全部对齐 CONTEXT.mdAI 修复后重校;不得带伤打 ready-for-agent
analyzeimplement 前CRITICAL = 0(覆盖缺口、宪法冲突、产物矛盾)回改 spec/tasks;LOW 项记录后可放行
constitution-checkplan/design 前后禁令类原则零违反;取舍类违反须在 Complexity 段论证改方案;不可协商项无论证豁免
code-review 三轴每张 ticket 提交前Spec 轴(忠实实现)/ Standards 轴(规范+坏味道)/ Security 轴(安全意图)Spec 轴问题必须修;其余轴按严重度取舍并留痕
design-lint原型进 Figma 前designmd lint 0/0;标准文件 git diff 为空偏离改走 overrides;禁止回写标准
archive 前置检查归档前ticket 验收项全勾;delta 校验通过中止归档,保留原目录(可回滚)
治理的不变量
① 写入路径唯一:specs/ 只能由 archive 写入、DESIGN.md 项目侧永远只读——「AI 会顺手改文件,治理规则必须前置」;
② 状态机驱动:spec 与 ticket 都用 Status: 行驱动,AI 只认状态不认口头;
③ 审计留痕:归档目录保留完整提案上下文;宪法修订必须 Sync Impact Report;
④ 回流有门槛:项目偏离在多个项目验证有效后,由标准维护者走评审回流——项目侧不代劳。

9人机分工

AI 全自动人工(全部是拍板,不是操作)
访谈出题、实时落盘 CONTEXT.md/ADR;spec / tickets 生成与校验;analyze 报告;TDD 红绿循环;三轴审查;归档合并;设计规范提炼、原型生成、lint、对齐回读、起本地服务器 grill 各轮作答与共识终局确认;设计评审拍板 + Figma 导入的扩展点击(约 2 分钟);每张 ticket 完成后的验收;偏离回流标准的评审;宪法修订批准

把分工写进每个技能的正文,AI 就能自动跑到「需要人拍板」的那一步并递上决策材料——这是流程可复现的前提。

10落地路线图

阶段动作产出验收信号
P1 试点
1–2 周
fork mattpocock/skills 改名 company-sdd;按 §5 清单裁剪;用真实项目(建议选一个中型功能)走完全流程 私有插件仓库;试点项目的完整工件链(CONTEXT → spec → tickets → 归档) 一张 ticket 从 ready-for-agent 到 archive 全程无需 improvisation;spec-validate/analyze 在试点中至少拦下 1 个真实问题
P2 内化
2–4 周
制定公司基线宪法与 DESIGN.md 标准;code-review 接入安全轴;把试点暴露的问题回写技能(已知坑小节) docs/standards/ 两份标准;v1.0 插件 第二个项目零培训跑通;门禁拦截率有数据记录
P3 规模化 插件市场私有分发(参考 mattpocock 的 repo-as-marketplace + changesets 版本管理);CI 集成(结构校验、标准纯净检查);季度审计(diff 对照标准,确认无隐性漂移) 团队级分发 + CI 门禁 + 度量看板 新项目接入成本 = 一条 init 命令;偏离回流开始产生(标准在进化)
分发细节:仓库根放 .claude-plugin/marketplace.json(仓库即市场),版本由 changesets 统一管理;公司内安装 claude plugins install company-sdd。双桶治理沿用上游规则:README 与 plugin.json 的技能清单必须同步,CI 校验。

11附录

11.1 命令速查

# 初始化(每仓库一次)
/setup-sdd                        # 写 docs/agents/、CLAUDE.md 骨架、工单约定
/constitution                     # 建项目宪法(公司基线 + 项目增补)

# 标准工作流
/grill-with-docs <一句话想法>      # 访谈 → CONTEXT.md / ADR 落盘
/to-spec                          # → .scratch/<slug>/spec.md(过 spec-validate 后 ready-for-agent)
/to-tickets                       # → issues/NN-*.md 曳光弹切片 + 依赖图
/analyze                          # implement 前只读一致性检查
/implement issues/NN-*.md         # 单票单会话:tdd → 三轴 review → 提交勾选
/archive <feature-slug>           # 合入 specs/ + 归档留痕

# 设计分支(有界面的工作)
/design-pipeline                  # DESIGN.md → HTML 原型 → (人) Figma → 对齐 → overrides 治理

# 地图
/sdd-map                          # 什么规模走哪条路

11.2 界面类 ticket 进入 ready-for-agent 前的检查清单

11.3 参考资料与调研依据