| name | tdd |
| description | 通过用户可观察的公开 seam 严格执行一个失败测试、最小实现、同一测试转绿的纵向开发循环。 |
| user-invocable | true |
| disable-model-invocation | false |
测试驱动开发
本 Skill 改造自 mattpocock/skills 的 tdd,固定上游提交为 068b6e0c62393147daf03530149cdce209c93da8。测试和 Mock 指南见同目录 tests.md、mocking.md,许可证见 LICENSE.txt。
开始前
- 读取
AGENTS.md、CONTEXT.md、相关 ADR 和 .scratch/<slug>/spec.md。
- 规格必须为
ready-for-agent,并明确公开测试 seam。没有规格或 seam 未确认时停止开发。
- 查看现有测试,优先沿用最高层 seam:浏览器公开行为、CLI 输出或公开 API。
- 期望值必须来自规格中的独立字面量或已知正确示例,不得复制实现算法计算期望。
Red → Green 循环
每次只做一个纵切:
- 写一个最小测试,只验证一项用户可观察行为。
- 立即运行该测试并保留真实非零退出结果。失败必须因为产品能力缺失,不能通过写错选择器、破坏依赖或关闭服务制造。
- 只实现让当前测试通过所需的最少代码,不顺手加入下一项功能。
- 再次运行同一个测试,必须真实返回零。
- 运行相邻回归测试,确认没有破坏已确认视觉和交互。
- 完成本轮后才进入下一个纵切。禁止先批量写测试再批量实现。
每轮记录:测试 seam、Red 命令与关键失败、Green 命令与结果、修改文件。可以写入 output/dev-trace/,但记录不能代替真实命令。
Seam 判断表
- 用户在网页上点击、拖拽或下载:使用 Playwright 浏览器 seam。
- 用户运行命令得到文件或文本:使用 CLI seam。
- 外部调用方使用函数或接口:使用公开 API seam。
- 只能通过私有方法或内部调用次数验证:seam 选择错误,应回到更高层公开边界。
测试约束
- 只 Mock 外部 API、数据库、时间、随机性等系统边界;不要 Mock 自己控制的内部模块。
- 不查询旁路状态来替代公开行为验证。
- 不做与实现同构的计算或快照堆积。
- Red 状态不重构;全绿后再单独评审结构。
- 最终使用 DeepSeek Harness 的 Shell 工具执行项目构建和浏览器验收;它们不能替代每一轮真实 Red/Green。
完成条件
- 至少一组同测试的真实 Red 与 Green。
- 规格中的用户故事由公开 seam 覆盖。
- 完整回归、构建和浏览器验收通过,或如实列出未通过项。