用途
TDD Test Writer 用于完成 TDD(测试驱动开发)的 RED 阶段:先用测试定义行为,验证测试因正确的原因失败,然后带着客观的通过标准把实现工作交接出去。
适用场景
当用户提出以下需求时使用本技能:
- 测试先行开发
- TDD / RED-GREEN-REFACTOR 工作流
- 编写实现代理必须满足的测试
- 需要在改动代码前补充回归测试的缺陷修复
必须遵守的规则
- 运行本技能时不要修改生产代码。
- 在可用时,使用子代理角色 tdd_test_writer 进行 RED 阶段测试编写。
- 编写行为导向的测试,而不是占位符。
- 每个新增或更新的测试在交接前都必须失败。
- 失败必须来自缺失或错误的生产行为,而不是测试本身损坏。
- 在可能时,优先使用确定性的、有针对性的测试命令,而不是运行整个测试套件。
- 对于缺陷修复任务,添加一个能复现所报告失败模式的回归测试。
工作流程
1. 定义行为契约
- 将用户请求转化为明确的验收标准。
- 识别正常路径、边缘情况以及负向路径的预期。
- 如果需求含糊,在输出中记录 ASSUMPTION: 行。
2. 将测试编写委派给 tdd_test_writer
- 生成一个 tdd_test_writer 子代理,给出任务范围、目标文件和验收标准。
- 要求子代理只编写或更新测试(不修改生产代码)。
- 要求提供命令输出,证明新测试处于 RED 失败状态。
- 如果 tdd_test_writer 不可用,则直接继续,并注明 FALLBACK: tdd_test_writer unavailable。
3. 发现现有测试约定
- 从仓库中检测框架与运行器(例如 vitest、jest、pytest、go test、cargo test)。
- 遵循现有的目录、命名和 fixture 约定。
- 复用已有的辅助工具,而不是引入重复的测试工具。
4. 编写 RED 阶段测试
- 创建或更新编码行为契约的测试文件。
- 保持测试体量小、意图清晰(名称和断言明确)。
- 在适用处至少包含一个负向路径断言。
- 避免网络和时间随机性;对外部系统进行 mock 或使用 fixture。
5. 验证 RED 状态
- 运行能执行新测试的最窄命令。
- 确认它们因预期的行为缺口而失败。
- 如果失败是由测试语法或设置问题导致的,修复测试并重新运行。
6. 产出一份实现交接
返回一个实现代理必须遵循的区块。交接内容必须包括:
- 使用的子代理(tdd_test_writer)或明确的回退原因
- 创建或更新的确切测试文件
- 确切的验证命令
- 证明 RED 状态的简短失败摘要
- 不可变测试约束(除非需求变更,否则不要编辑测试)
- 定义任务完成的通过标准
必需输出格式
TDD RED PHASE COMPLETE
Authoring Mode
- Subagent: tdd_test_writer
- Fallback: [仅在子代理不可用时]
Test Files
- [path]
Verification
- Command: [确切命令]
- Result: FAIL (expected)
- Failure reason: [1-2 行,与缺失行为相关]
Implementation Contract (for next agent)
- Do not modify these tests: [paths]
- Implement production changes only in: [paths or modules]
- Completion gate: [确切命令] 通过且未弱化任何测试。
- Run broader safety check: [次级命令]
- Return evidence: 变更文件 + 命令输出摘要。
Assumptions
- ASSUMPTION: [仅在需要时]
质量标准
- 测试在实现之前失败,并且可在本地复现。
- 断言足够具体,以防止误报。
- 面向缺陷修复的任务具备回归覆盖。
- 交接足够精确,另一个代理无需澄清即可执行。