关于 doc-spec
doc-spec 是 SDD 工作流中的技能,用于为单个软件组件编写 YAML 技术规格。它依据上游 ADR、EARS 和 BDD 定义组件接口、数据模型与行为,为 TDD 和实现做准备。
主要功能
- 01创建组件级 YAML 规格
- 02定义类型化接口和数据模型
- 03依据 EARS 与 BDD 描述行为
- 04落实必需结构与可追溯标签
- 05检查图表和阈值要求
适用场景
- 01架构决策确定后编写组件规格
- 02将验收契约转为接口与行为
- 03编写 TDD 用例前准备规格文档
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vladm3105/ aidoc-flow-framework --skill doc-spec安装后在 Claude Code 中输入/doc-spec确认已加载。
详细介绍
doc-spec
用途
创建一份技术规格(SPEC)——SDD 流程的第 6 层。SPEC 是针对单个软件组件、可直接用于实现的 C4-L3(组件)契约,描述其接口、数据模型和行为,并在任何下游测试或代码编写之前完成。
层级:6 — 统一规格。SPEC 整合了旧版本中拆分为组件/数据/UX/风险/流程规格的内容;现在每个组件只有一份 SPEC 产物。 上游:EARS、BDD、ADR(遵循必要上游契约;ADR 是主要来源。上游 PRD/BRD 的脉络可通过 @ 标签链传递追溯)。 下游:TDD → IPLAN → Code。
适用场景
在以下情况下使用 doc-spec:
- 架构决策(ADR)已确定,需要为组件编写规格。
- 将 EARS/BDD 验收契约转化为具体接口、数据模型和行为规则。
- 需要在编写 TDD 测试用例前,准备好可直接用于实现的契约。
如需从 BDD/ADR、提示词或 IPLAN 端到端生成,请使用
../doc-spec-autopilot/SKILL.md。
前置条件
SPEC 位于第 6 层,因此请先确认所需的上游产物(EARS、BDD、ADR)均已存在,再开始编写。只引用已存在的文档;绝不要编造 SPEC-XXX 或 ADR-XXX 之类的占位符。开始编写前,请阅读:
- 模板(权威来源):
${CLAUDE_PLUGIN_ROOT}/framework/layers/06_SPEC/SPEC-TEMPLATE.yaml - 层级 README:
${CLAUDE_PLUGIN_ROOT}/framework/layers/06_SPEC/README.md - ID 与标签规范:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md - 编写风格:
${CLAUDE_PLUGIN_ROOT}/framework/governance/AUTHORING_STYLE.md - **上游 ADR(主要来源)**以及组件必须满足的 BDD/EARS 验收契约。
确认上游产物已存在且没有 ID 冲突:
ls docs/05_ADR/ docs/06_SPEC/ 2>/dev/null.
层级指南
C4-L3 范围(保持在组件层级)
SPEC 属于组件层级。描述组件接口和契约,而非架构决策(ADR)或源代码(Code)。
| 仅限于此(PASS) | 超出范围(FAIL) |
|---|---|
AuthService、UserRepository、NotificationQueue | auth_service.py、async def validate_token() |
| 接口签名、类型化数据模型 | 具体 SQL 表、Redis 键格式 |
| 行为规则、状态转换、错误契约 | Kubernetes Pod 配置、部署清单 |
必需的图表标签:@diagram: c4-l3、@diagram: dfd-l3(使用
../charts-flow/SKILL.md)。时序图必须用 alt/else 标明错误路径;绝不要嵌入 C4-L4 代码/类图。
必需结构(8 个部分)
document_control 必须置于首位(状态、版本、日期、作者、组件、
tdd_ready_score)。之后依次为:
- 文档控制 · 2. 组件概述(描述、
@adr决策、 语言、依赖项)· 3. 接口(导出项:签名、类型、错误)· - 数据模型(类型化字段,不含 SQL/ORM)· 5. 行为(验证规则、
状态转换、错误处理——每项均须注明来源
@ears/@bdd)· - 实现说明(约束、模式、性能考量)·
- 下游 TDD 契约(
@tdd: TDD-NN、测试文件映射)· 8. 可追溯性。
各部分的具体内容请参阅 SPEC-TEMPLATE.yaml。格式为 YAML。
元素 ID 和标签
- SPEC 是文档级制品 — 使用短横线形式
SPEC-NN引用 (两位数字,不添加多余的前导零:SPEC-01、SPEC-99、SPEC-102)。 下游制品使用@spec: SPEC-12标记。SPEC 自身没有点分隔的SPEC.NN.SS.xxxx元素形式。 - 必需的上游标签(依据必要上游契约):
层级引用使用 4 段元素形式 —
@ears: EARS.NN.SS.xxxx、@bdd: BDD.NN.SS.xxxx;文档级引用使用@adr: ADR-NN。上游 PRD/BRD 沿袭关系可通过 EARS/BDD @ 标签链传递追溯 — 不要在 SPEC 元素上 添加@brd:/@prd:。 - **阈值:**绝不硬编码性能/超时/速率限制值 — 使用
@threshold:注册表引用。 - 已移除的模式(不要使用):
STEP-XXX、IF-XXX、INT-XXX、DM-XXX、MODEL-XXX、VR-XXX、3 位数字的SPEC-NNN、数字元素类型代码表, 以及已删除的 SYS/REQ/CTR 上游层。
创建流程
- 阅读上游文档 — ADR 决策以及组件所满足的 BDD/EARS 契约。
- 预留 ID — 在
docs/06_SPEC/下选择下一个可用的SPEC-NN。 层间独立性(CLEANUP-PR-F 第 18 项): 在本层索引中选择下一个可用 编号 — 上游编号不是你的编号(文档编号按层分别顺序递增且互相独立;参见framework/governance/ID_NAMING_STANDARDS.md§跨层基数)。 - 创建嵌套文件夹 — 每个 SPEC 都必须位于
docs/06_SPEC/SPEC-NN_{slug}/SPEC-NN_{slug}.yaml中,无论文件大小。绝不要 将 SPEC 文件直接放在docs/06_SPEC/下。 - 先填写文档控制,然后完成模板中的全部 8 个章节。
- 定义接口和数据模型,并使用类型化签名;说明行为,确保每条规则都来源于
@ears/@bdd。 - 添加必需的上游标签(依据必要上游契约添加
@ears @bdd @adr)和下游的@tdd: TDD-NN契约。 - 在同一变更中更新 SPEC 索引
docs/06_SPEC/SPEC-00_index.md。 - 进行验证(见下文),并将 SPEC 和索引一并提交。
验证
此技能就是验证器(不含运行时代码)。根据 ${CLAUDE_PLUGIN_ROOT}/framework/layers/06_SPEC/README.md 和 ${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md 进行检查。
- YAML 可解析;文档控制是第一个章节。
- 8 个章节全部存在且非空;格式为 YAML(而非 Markdown)。
- 仅限组件级内容(不含代码/SQL/部署细节;符合 C4-L3 范围)。
- 文档 ID 为短横线形式
SPEC-NN;没有点分隔的 SPEC 元素 ID;没有已移除的模式。 - 存在必需的上游标签(依据必要上游契约添加
@ears @bdd @adr);存在下游的@tdd: TDD-NN契约。 - 定量值使用
@threshold:引用(不使用魔法数字)。 - 图表契约:存在
@diagram: c4-l3和@diagram: dfd-l3(使用../charts-flow/SKILL.md)。 - 已创建或更新可追溯性矩阵/索引;没有失效链接。
| 代码 | 含义 | 严重程度 |
|---|---|---|
| XDOC-006 | 标签格式无效 | 错误 |
| XDOC-007 | 缺少必需的上游标签 | 错误 |
| XDOC-008 | 内部链接失效 | 错误 |
| XDOC-009 | 缺少可追溯性章节 | 错误 |
**质量门禁(阻断性):**进入下一步前,TDD 就绪度评分必须 ≥ 90/100。如果 发现问题,请修复并重新检查;如果无法修复,请记录并交由人工审核。
下一项技能
../doc-tdd/SKILL.md — TDD 会通过 @spec: SPEC-NN 引用此 SPEC,
并添加其自身必需的 @ears @bdd @adr 上游标签,同时为 SPEC 契约定义测试用例、
输入、预期输出和阈值。
适配
阅读 .aidoc/profile.yaml;仅遵循此技能的可配置项
(section_toggles、glossary)。忽略未知键;若没有配置文件,则使用
框架默认值。依据:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ADAPTATION.md。
相关资源
- 模板 / 编写规则:
${CLAUDE_PLUGIN_ROOT}/framework/layers/06_SPEC/SPEC-TEMPLATE.yaml - 层级 README:
${CLAUDE_PLUGIN_ROOT}/framework/layers/06_SPEC/README.md - 索引模板:
${CLAUDE_PLUGIN_ROOT}/framework/layers/06_SPEC/SPEC-00_index.TEMPLATE.md - ID 和标签标准:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md - 上游决策:
../doc-adr/SKILL.md· 下游测试:../doc-tdd/SKILL.md - 质量门禁:
../doc-spec-audit/SKILL.md· 修复:../doc-spec-fixer/SKILL.md - 生成流水线:
../doc-spec-autopilot/SKILL.md
快速参考
| 用途 | 规范组件:接口、数据模型、行为 |
| 层级 | 6(C4-L3 组件) |
| 上游标签 | @ears @bdd @adr(依据必要上游契约) |
| 文档 ID | 连字符形式 SPEC-NN(文档级;无带点的元素 ID) |
| 必须包含 | 文档控制(首项)、8 个章节,数字需使用 @threshold |
| 格式 | YAML |
| 下一步 | doc-tdd |