File contents TDD 测试先行
根据设计文档,先编写测试用例,再实现代码。严格遵循 TDD 工作流。
PDLC 前置检查(必须执行,不可跳过)
从用户输入中提取功能名称关键词
在 docs/02_design/ 的子目录(api/、architecture/、database/、ui-ux/)下搜索包含该关键词的设计文档
匹配新格式:F<日期>-<编号>-*<关键词>*-<类型>.md
匹配旧格式:YYYYMMDD-*<关键词>*-<类型>.md
同时检查文件内容中是否包含该关键词
未找到任何设计文档 → 输出以下信息后立即停止,不继续执行 :⛔ PDLC 守卫:未找到与「<功能名>」相关的设计文档(API/架构/数据库/UI 任一)。
测试用例必须基于已有的设计文档。请先运行:
👉 /pdlc-design <设计目标>
找到 → 提取功能ID(如 F20260326-090000),读取设计文档内容,继续执行
工作流程
阅读设计文档 : 阅读找到的设计文档,全面理解接口/架构/数据模型
阅读编码规范 : 阅读 docs/00_standards/coding/ 目录了解编码规范(未命中 → 提示 consider /pdlc-standard add coding/<topic>)
编写测试计划 : 在 docs/04_testing/unit-tests/ 下创建测试计划文档
编写测试代码 : 写到项目既有的 测试布局里,按下面的规则定位;
不要 为迎合某种预设结构新造一套平行的测试目录。
测试计划自审与自动修复 (编写完成后、运行前执行,不可跳过):
重新阅读测试计划和测试代码,对照设计文档和 PRD 逐项检查以下质量门禁:
验收标准覆盖度 :
场景完备性 :
测试质量 :
自动修复 :
确认测试失败 : 运行测试确认全部失败(红灯)。运行命令取自 docs/00_standards/test-commands.yml 的 unit(不存在则回退项目约定)。收尾写 last_phase_result.checks = { "red_verified": true }(红灯已由真跑退出码验证,非模型自评)
实现代码 : 编写最少量的代码使测试通过
重构 : 在测试通过的前提下优化代码
要求
测试用例必须覆盖:正常流程、边界条件、异常场景
测试方法命名清晰描述测试场景
单元测试覆盖率:覆盖率达标线以项目配置为准 :优先取 docs/00_standards/test-commands.yml 的 coverage 命令阈值参数(那才是强制点,退出码即判定),其次 quality-targets.yml;两者都没有时按 >= 80% 兜底。
目标功能: $ARGUMENTS
1 --- 2 name: pdlc-tdd 3 description: TDD 测试先行(按设计文档生成失败的测试用例) 4 --- 5 6 # TDD 测试先行 7 8 <!-- @include templates/prompts/iron-law.md --> 9 <!-- @include templates/prompts/noninteractive.md --> 10 11 根据设计文档,先编写测试用例,再实现代码。严格遵循 TDD 工作流。 12 13 ## PDLC 前置检查(必须执行,不可跳过) 14 15 1. 从用户输入中提取功能名称关键词 16 2. 在 `docs/02_design/` 的子目录(api/、architecture/、database/、ui-ux/)下搜索包含该关键词的设计文档 17 - 匹配新格式:`F<日期>-<编号>-*<关键词>*-<类型>.md` 18 - 匹配旧格式:`YYYYMMDD-*<关键词>*-<类型>.md` 19 - 同时检查文件内容中是否包含该关键词 20 3. **未找到任何设计文档** → 输出以下信息后**立即停止,不继续执行**: 21 ``` 22 ⛔ PDLC 守卫:未找到与「<功能名>」相关的设计文档(API/架构/数据库/UI 任一)。 23 测试用例必须基于已有的设计文档。请先运行: 24 👉 /pdlc-design <设计目标> 25 ``` 26 4. **找到** → 提取功能ID(如 `F20260326-090000`),读取设计文档内容,继续执行 27 28 ## 工作流程 29 30 1. **阅读设计文档**: 阅读找到的设计文档,全面理解接口/架构/数据模型 31 2. **阅读编码规范**: 阅读 `docs/00_standards/coding/` 目录了解编码规范(未命中 → 提示 `consider /pdlc-standard add coding/<topic>`) 32 3. **编写测试计划**: 在 `docs/04_testing/unit-tests/` 下创建测试计划文档 33 - **使用模板**: `templates/test-plan-template.md` 34 - **文件名格式**: `<功能ID>-<功能名>-test-plan.md`(如 `F20260326-090000-user-auth-test-plan.md`) 35 - **文档顶部必须包含 PDLC 追溯头**: 36 ``` 37 <!-- PDLC-TRACE --> 38 <!-- 功能ID: F20260326-090000 --> 39 <!-- 功能名称: user-auth --> 40 <!-- 阶段: 测试 --> 41 <!-- 前置文档: docs/02_design/api/F20260326-090000-user-auth-api.md --> 42 ``` 43 4. **编写测试代码**: 写到项目**既有的**测试布局里,按下面的规则定位; 44 **不要**为迎合某种预设结构新造一套平行的测试目录。 45 46 <!-- @include templates/prompts/test-location.md --> 47 48 5. **测试计划自审与自动修复**(编写完成后、运行前执行,不可跳过): 49 - 重新阅读测试计划和测试代码,对照设计文档和 PRD 逐项检查以下质量门禁: 50 51 **验收标准覆盖度**: 52 - [ ] PRD 中每条验收标准是否至少有一个对应的测试用例 53 - [ ] 设计文档中每个接口是否至少有正常流程 + 异常流程的测试 54 55 **场景完备性**: 56 - [ ] 正常流程:核心业务路径是否全部覆盖 57 - [ ] 边界条件:空值/null、空字符串、最大值/最小值、零值、超长输入 58 - [ ] 异常场景:无权限、资源不存在(404)、重复操作(409)、参数校验失败(400) 59 - [ ] 并发场景:是否考虑了同时操作的冲突(如适用) 60 - [ ] 幂等性:重复提交同一请求是否有对应测试(如适用) 61 62 **测试质量**: 63 - [ ] 测试方法命名是否清晰描述场景(如 `should_return_404_when_user_not_found`) 64 - [ ] 每个测试是否只验证一个行为(单一断言原则) 65 - [ ] 测试数据是否有意义(非 `test1`、`abc123` 等无意义数据) 66 67 **自动修复**: 68 - 缺失的验收标准测试:自动补充对应的测试用例骨架 69 - 缺失的边界条件测试:自动添加空值、超长输入、类型错误等测试 70 - 缺失的异常场景测试:根据 API 错误码自动补充 401/403/404/409 等场景测试 71 - 命名不规范的测试方法:自动重命名为描述性命名 72 - 修复后在测试计划文档末尾追加审查记录: 73 ``` 74 ## 自审记录 75 - 审查时间:<ISO 8601> 76 - 对照 PRD 验收标准:X 条,已覆盖:X 条 77 - 对照 API 接口:X 个,已覆盖:X 个 78 - 发现问题:X 项 79 - 自动修复:X 项 80 - 修复明细: 81 - [已修复] <问题描述> 82 ``` 83 84 6. **确认测试失败**: 运行测试确认全部失败(红灯)。运行命令取自 `docs/00_standards/test-commands.yml` 的 `unit`(不存在则回退项目约定)。收尾写 `last_phase_result.checks = { "red_verified": true }`(红灯已由真跑退出码验证,非模型自评) 85 7. **实现代码**: 编写最少量的代码使测试通过 86 8. **重构**: 在测试通过的前提下优化代码 87 88 ## 要求 89 90 <!-- @include templates/prompts/output-language.md --> 91 - 测试用例必须覆盖:正常流程、边界条件、异常场景 92 - 测试方法命名清晰描述测试场景 93 - 单元测试覆盖率:覆盖率达标线**以项目配置为准**:优先取 `docs/00_standards/test-commands.yml` 的 coverage 命令阈值参数(那才是强制点,退出码即判定),其次 `quality-targets.yml`;两者都没有时按 >= 80% 兜底。 94 95 目标功能: $ARGUMENTS 96 97 <!-- @include templates/prompts/check-commands.md --> 98 <!-- @include templates/prompts/state-update.md --> 99 <!-- @include templates/prompts/handoff.md -->
kanfu-panda/pdlc-skills/tree/main/skills/pdlc-tdd commit 523ea12615
Frequently asked questions How do I install the Pdlc Tdd skill? Run npx skillmds@latest add kanfu-panda/pdlc-tdd in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Pdlc Tdd skill do? TDD 测试先行(按设计文档生成失败的测试用例) It is listed under Coding & Dev Tools on SkillMD.
Is Pdlc Tdd safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Pdlc Tdd? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Pdlc Tdd free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Pdlc Tdd? kanfu-panda (@kanfu-panda) published this skill. Their other Agent Skills are listed on their SkillMD profile.