| name | write-code |
| description | 按 task 文件执行 TDD 红绿重构,逐任务推进 |
| argument-hint | [变更目录] |
Write-Code — TDD 红绿重构
读取 $CHANGE_DIR/tasks/ 下 task 文件,按依赖顺序逐 task 执行 TDD 红绿重构。
输入
- 任务来源:
$CHANGE_DIR/tasks/ 下所有 task 文件,按并行分层和依赖顺序执行
- 上下文:
$CHANGE_DIR/plan.md
TDD 红绿重构
逐 task 执行红→绿→重构循环:
RED:写测试 → 失败
- 读取当前 task 文件的「涉及文件」和「验证方式」
- 为这个 task 编写集成测试——测试通过公共接口验证行为,不测实现细节
- 运行测试 → 必须红(失败)
- 如果不红,说明测试无效或功能已存在,检查测试是否正确
GREEN:最小实现 → 通过
- 写刚好够让测试通过的代码——不预测未来需求
- 运行测试 → 必须绿(通过)
- 如果失败,修复后重试,最多 3 次
REFACTOR:重构 → 仍通过
- 测试全部通过后,重构代码:
- 消除重复
- 深化模块(把复杂逻辑藏到简单接口后面)
- 改进命名
- 每次重构后重新跑测试,确认仍通过
- 绝不在 RED 状态下重构
状态更新
- 开始 task:frontmatter
status: 进行中
- task 完成(测试通过 + 重构完成):frontmatter
status: 完成
- 进入下一个 task
验证规则
- 验证命令来自 task 文件的「验证方式」
- 每完成一个 task 立即验证
- 验证失败 3 次 → 停止,输出失败信息和手动修复指引
change.md 追加
所有 task 完成后:
---
# 变更 v{N}:编码完成
## 产出文件
- src/a.ts(修改)
- tests/a.test.ts(新建)
## 执行摘要
| task | 状态 |
|------|------|
| T01 | 完成 |
| T02 | 完成 |
## 变更文件清单
| 文件 | 对应任务 | 操作 |
|------|---------|------|
| src/a.ts | T01 | 修改 |
| tests/a.test.ts | T01 | 新建 |
停止条件
- tasks/ 目录不存在或为空 → 停止
- task 验证失败 3 次 → 停止,报告失败
- 所有 task 完成 → 更新 change.md,停止