doc-tdd 是 SDD 流程第 7 层的技能,位于 SPEC 之后、IPLAN 之前,用于产出《测试驱动开发指南》(TDD)。下游由 IPLAN 引用该 TDD 并编排构建流程。
用途 创建一份 TDD,用于验证 SPEC 组件契约:把 BDD 场景映射到具体测试(输入、预期输出、边界情况),设置按测试类型区分的质量阈值,并声明 Red → Green → Refactor 的执行顺序。每个 SPEC 组件对应一份 TDD。
使用时机 当 BRD 到 SPEC(第 1–6 层)已完成并开始定义测试时;需要在实现之前获得具体测试用例、BDD→测试映射和质量阈值时;遵循测试优先(Red → Green → Refactor)工作流时。若要从 SPEC、提示词或 IPLAN 端到端生成,使用 ../doc-tdd-autopilot/SKILL.md;创建上游 SPEC 使用 ../doc-spec/SKILL.md。
前置条件 先列出并确认上游产物存在:ls docs/01_BRD/ docs/02_PRD/ docs/03_EARS/ docs/04_BDD/ docs/05_ADR/ docs/06_SPEC/ 2>/dev/null。模板(唯一事实来源)位于 ${CLAUDE_PLUGIN_ROOT}/framework/layers/07_TDD/TDD-TEMPLATE.yaml,层说明见同层 README.md,ID 与标签规范见 ${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md,撰写风格见 ${CLAUDE_PLUGIN_ROOT}/framework/governance/AUTHORING_STYLE.md。主要来源是 SPEC(组件契约);BDD 是行为的事实来源——TDD 只做映射,不重复 BDD 内容。只引用确实存在的文档,不得虚构 TDD-XXX、SPEC-XXX 或 TBD 之类占位符,也不得创建缺失的上游产物。
必需结构(7 个章节) TDD 使用单一统一模板,没有测试子类型或独立的测试产物:
- Document Control——状态、版本、日期、作者、组件、SPEC 引用、IPLAN-Ready 分数。
- Test Pyramid——工作量分布(默认 unit 70 / integration 20 / e2e 10,是目标而非配额)。
- BDD Scenario → Test Mapping——每个 @bdd: 场景映射到测试类型、文件与函数,并声明测试存放位置。
- Test Case Definitions——具体用例,每个带元素 ID 与 type 属性。
- Test Thresholds——按类型给出覆盖率目标与通过/失败标准。
- TDD Execution Order——Red → Green → Refactor 阶段。
- Traceability——必需的上游标签 + 下游 IPLAN。
测试类型(内容分类,非子类型) 每个第 4 节用例携带 type 属性,而不是独立 ID 编码或文档:unit 验证单个函数/方法与数据模型约束,主要来源 SPEC §3–4;integration 验证组件交互、状态迁移与错误处理,来源 SPEC §5;functional 依据验收标准验证功能行为,来源 EARS/BDD;e2e 从验收场景映射完整工作流,来源 BDD(第 4 层);smoke 用于关键路径健全性检查(构建/部署后),来源 BDD 关键场景;performance 依据 @threshold 目标验证延迟/吞吐,来源 EARS 质量属性;security 可选,验证威胁/漏洞路径,来源 SPEC/ADR(仅在强制要求时)。单元用例包含 target、inputs、expected_output、edge_cases;集成用例额外包含 contract、setup、action、expected_state、error_paths;E2E 用例额外包含 bdd_ref、编号工作流、timeout_seconds、cleanup;安全用例额外包含威胁引用与 expected_result。
测试阈值(第 5 节) unit 覆盖率目标 ≥90%,失败动作 block merge;integration ≥85%(契约校验通过),block merge;e2e ≥75% 的 happy path(预算 ≤300s),block deploy to staging;security(可选)覆盖所有认证/授权路径、无 OWASP Top 10 问题,block deploy。
执行顺序(第 6 节) AI 生成代码时必须遵循的顺序:1) 编写测试 → 2) 运行测试(Red,确认失败)→ 3) 实现 → 4) 验证(Green)→ 5) 重构。测试文件先于实现文件生成。
元素 ID 与标签 测试用例元素 ID 为 TDD.{doc_id}.{section_id}.{hash}(4 段),用例位于第 4 节,因此形如 TDD.NN.04.xxxx(例如 TDD.01.04.a3c1)。每个元素生成稳定的 4 位十六进制标识符,在同一章节内唯一(HASH01),冲突时扩展到 8 位。不要在此提示中计算 SHA-256——哈希形式是确定性工具处理产出的规范化目标,逐字节字段提取仅对 BRD §7 定义(TDD 为第 2 阶段及以后)。权威规范见 framework/governance/ID_NAMING_STANDARDS.md。 TDD 属于第 7 层,按 necessary-upstream 契约携带必需上游标签:@ears @bdd @adr @spec(EARS/BDD 使用点号元素形式,ADR 与 @spec: SPEC-NN 使用文档级短横形式),自标签为 @tdd: TDD-NN。上游 PRD/BRD 谱系可通过 EARS/BDD 的 @ 标签链传递抵达——不要在 TDD 元素上输出 @brd:/@prd:。已移除的模式(禁止使用):TC-XXX、UT-XXX、IT-XXX、ST-XXX、FT-XXX 以及旧的三段式 TDD.NN.xxxx。
创建流程
- 阅读上游——SPEC(组件契约)+ BDD(行为场景)。2) 预留 ID——下一个空闲的 TDD-NN(两位数字:TDD-01、TDD-99),每个 SPEC 组件一份,写入 docs/07_TDD/TDD-NN_{component_slug}.yaml;按层独立性原则,选择你所在层索引中下一个空闲编号,上游编号不是你的编号。3) 先写 Document Control,再按模板完成全部 7 个章节。4) 设置测试金字塔,将每个 BDD 场景映射到测试类型/文件。5) 编写测试用例——元素 ID TDD.NN.04.xxxx、type、spec_ref(e2e 还带 bdd_ref)、输入/输出、边界情况/错误路径。6) 设置阈值,确认 Red → Green → Refactor 顺序。7) 添加必需上游标签 + @tdd 自标签 + 下游 IPLAN。8) 在同一次变更中更新 TDD 索引 docs/07_TDD/TDD-00_index.md。9) 校验后一并提交 TDD 与索引。
校验 本技能即校验器(不含运行时代码),依据 ${CLAUDE_PLUGIN_ROOT}/framework/layers/07_TDD/README.md 与 ID_NAMING_STANDARDS.md 执行:Document Control 完整、7 个章节齐备且非空;测试金字塔已设置、BDD→测试映射完整(第 3 节);每个用例有 TDD.NN.04.xxxx ID 与合法 type(unit/integration/e2e/security),无已移除模式;每个用例有输入/预期输出,边界情况/错误路径已记录,e2e 用例带 bdd_ref;按类型设置阈值(第 5 节)、执行顺序存在(第 6 节);必需上游标签 @ears @bdd @adr @spec 加 @tdd 自标签,父 SPEC 存在;索引已更新、无断链,图表通过 ../charts-flow/SKILL.md。错误码(均为 error 级):XDOC-006 标签格式无效、XDOC-008 内部链接断裂、XDOC-009 缺少可追溯性章节。质量门(阻塞):IPLAN-Ready 分数 ≥ 90/100 才能继续。
后续与适配 下一个技能为 ../doc-iplan/SKILL.md,IPLAN 会引用本 TDD(@tdd: TDD-NN),继承完整上游标签链并编排构建,强制测试文件先于实现文件。适配方面,读取 .aidoc/profile.yaml,仅遵循本技能的配置项(section_toggles、glossary);忽略未知键;无 profile 时使用框架默认值,权威说明见 ${CLAUDE_PLUGIN_ROOT}/framework/governance/ADAPTATION.md。
相关资源 模板/撰写规则:${CLAUDE_PLUGIN_ROOT}/framework/layers/07_TDD/TDD-TEMPLATE.yaml;层说明与索引模板:同层 README.md 与 TDD-00_index.TEMPLATE.md;ID 与标签标准:${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md;质量门:../doc-tdd-audit/SKILL.md,修复:../doc-tdd-fixer/SKILL.md;生成流水线:../doc-tdd-autopilot/SKILL.md;上游:../doc-spec/SKILL.md,下游:../doc-iplan/SKILL.md。