Write Code

按 task 文件执行 TDD 红绿重构,逐任务推进

cnife f8281ee 2.1 KB Updated

File contents

Write-Code — TDD 红绿重构

读取 $CHANGE_DIR/tasks/ 下 task 文件,按依赖顺序逐 task 执行 TDD 红绿重构。

输入

  • 任务来源$CHANGE_DIR/tasks/ 下所有 task 文件,按并行分层和依赖顺序执行
  • 上下文$CHANGE_DIR/plan.md

TDD 红绿重构

逐 task 执行红→绿→重构循环:

RED:写测试 → 失败

  1. 读取当前 task 文件的「涉及文件」和「验证方式」
  2. 为这个 task 编写集成测试——测试通过公共接口验证行为,不测实现细节
  3. 运行测试 → 必须红(失败)
  4. 如果不红,说明测试无效或功能已存在,检查测试是否正确

GREEN:最小实现 → 通过

  1. 写刚好够让测试通过的代码——不预测未来需求
  2. 运行测试 → 必须绿(通过)
  3. 如果失败,修复后重试,最多 3 次

REFACTOR:重构 → 仍通过

  1. 测试全部通过后,重构代码:
    • 消除重复
    • 深化模块(把复杂逻辑藏到简单接口后面)
    • 改进命名
  2. 每次重构后重新跑测试,确认仍通过
  3. 绝不在 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,停止

cnife/pi-extensions/tree/main/archive/change-based-workflow/skills/write-code commit f8281eed55

Frequently asked questions

npx skillmds@latest add cnife/write-code