SuperAPI AI 工具集

tdd-planning

测试与质量

查看项目

更新于 10-15 15:07

技能介绍

用途

TDD Planning 用于创建遵循严格测试驱动开发(TDD)方法的实现计划。每个实现步骤都遵循 TDD 循环:RED(红)→ GREEN(绿)→ COMMIT/ROLLBACK(提交/回滚)。该技能在用户调用 TDD-planning 命令、其他技能引用它、用户明确要求基于 TDD 的规划,或所实现功能属于测试关键/安全关键时激活。

核心原则

该技能强制一套规范化的 TDD 工作流:

  • RED:先写失败测试(测试必须因正确的原因失败)
  • GREEN:编写最小代码使测试通过(不多写)
  • COMMIT/ROLLBACK:若通过则提交;若卡住则回滚到上一个绿色状态。

在没有失败测试之前,不编写任何实现代码,这一点不可妥协。

工作约定

  • AskUserQuestion 是主要沟通工具:每当需要向用户询问(澄清、设计决策、偏好、批准)时,使用该结构化工具而非纯文本提问。
  • 提前确定偏好:在工作流开始时询问用户偏好,而非在结束时。
  • 自主模式引导交互程度:用户选择的自主级别决定检查频率,但所有问题仍通过 AskUserQuestion 提出。

用户偏好

在开始规划前(除非自主模式为 Autopilot),确定以下偏好:

  • 提交粒度(Commit Granularity):选项为 1. 每个 GREEN 后提交(严格 TDD 推荐);2. 每个功能/阶段完成后提交;3. 用户手动处理提交。
  • 回滚策略(Rollback Strategy):选项为 1. git checkout . 回到上次提交(推荐);2. git stash 改动以供后续分析;3. 保留失败代码并请求指导。
  • 文件评审偏好(File Review Preference):检查 file-review 插件是否可用(查找 file-review:file-review 命令)。若已安装,询问是否希望在计划就绪时使用 file-review 进行内联反馈,选项为 1. 是(推荐);2. 否,仅展示计划。

将这些偏好存储下来,并在实现时据此执行。

自主模式

规划开始时,根据自主模式调整交互级别:

  • Autopilot:独立研究,创建完整 TDD 计划,仅在最终评审时呈现。
  • Critical(默认):在主要决策点获取确认,验证测试策略。
  • Verbose:每一步都检查,在每个循环前确认测试方法。

自主模式由调用命令传入。若未指定,默认使用 Critical。

流程步骤

步骤 1:上下文收集与测试基础设施分析

立即完整读取所有提及的文件(研究文档、相关计划、JSON/数据文件等),使用 Read 工具时不带 limit/offset 参数;在派生子任务前亲自读取文件。分析测试基础设施:使用什么测试框架(Jest、pytest、Go testing 等)?测试放在哪里(同目录、tests/、tests/ 等)?测试命令是什么(npm test、make test、pytest 等)?是否有可遵循的现有测试模式?派生初始研究任务:使用 codebase-locator 查找测试文件和测试工具,使用 codebase-analyzer 理解当前测试模式,使用 codebase-pattern-finder 查找类似的测试实现,使用 context7 MCP 获取测试库洞察。若不是 Autopilot,先以文本呈现发现(总结、测试框架、测试位置、测试命令、现有模式),再通过 AskUserQuestion 提问。

步骤 2:测试策略设计

识别可测试单元:哪些是最小的可测试片段?可验证哪些输入/输出?哪些边界情况重要?设计测试推进顺序:从最简单用例(happy path)开始,推进到边界情况,最后处理错误处理。若不是 Autopilot,通过 AskUserQuestion 验证方法(是否从最简单用例开始并推进到更复杂情况),选项为 1. 是,继续;2. 讨论顺序;3. 增加更多测试用例。

步骤 3:计划结构开发

创建 TDD 循环大纲,每个功能/阶段拆分为 TDD 循环,例如:

## Feature: [Name]

### Cycle 1: [Simplest behavior]
- RED: Test for [specific behavior]
- GREEN: Implement [minimal code]
- COMMIT: "[descriptive message]"

### Cycle 2: [Next behavior]
...

在编写细节前获取对结构的反馈(除非 Autopilot)。

步骤 4:详细计划编写

在继续前,退出 plan 模式以写入计划文件。将计划写入 thoughts/<username|shared>/plans/YYYY-MM-DD-tdd-description.md。路径选择:若从上下文得知用户名(如 thoughts/taras/plans/),使用用户名;不确定时回退到 thoughts/shared/plans/。关键:每个 TDD 循环必须包含要编写的确切测试代码和预期失败消息。QA 规格(可选):改变用户可见行为的功能应在 Feature 级别包含可选的 QA Spec 段落(位于功能标题之后、第一个 TDD 循环之前)。遵循模板 cc-plugin/base/skills/tdd-planning/template.md。

步骤 5:评审与迭代

呈现草稿计划位置并请求评审。若不是 Autopilot,根据反馈迭代。提供结构化评审:询问是否希望运行 /review 对 TDD 计划进行完整性与缺口分析;若是,则在计划文档上调用 desplega:reviewing 技能。学习捕获(可选子技能):若工作流中出现重要见解、模式、注意事项或决策,可考虑使用 desplega:learning 通过 /learning capture 捕获。工作流交接:计划定稿(并可选择评审)后,询问下一步,选项为 1. 实现此计划(→ /implement-plan);2. 先运行评审(→ /review);3. 暂时完成(暂存计划)。据此建议或调用相应命令,将计划状态设为 ready 或 parked。最终确定计划,不要开始实现。

评审集成

若 file-review 插件可用且用户在偏好设置中选择了「是」:在创建计划后,调用 /file-review:file-review <path>。若用户选择「否」或自主模式为 Autopilot,则跳过此步骤。

TDD 循环要求(强制)

每个实现步骤都必须遵循 TDD 循环,缺少正确 TDD 循环的计划不完整。每个循环的必需结构:

  • RED 阶段:要编写的测试(确切测试代码);预期失败(预期错误消息或失败输出);验证 RED:测试命令应以上述消息失败。
  • GREEN 阶段:实现方法(所需最小代码的简述);要修改的文件(路径及增改内容);验证 GREEN:测试命令现在应通过。
  • COMMIT/ROLLBACK:若 GREEN,提交消息(遵循约定式提交)与命令 git add -A && git commit -m "[message]";若 STUCK(合理努力后仍无法达到 GREEN),回滚 git checkout .(或依据偏好 git stash),并重新评估(考虑测试是否太大,或设计是否需要重新思考)。

验证清单:定稿任何 TDD 计划前,确认每个实现步骤都有 RED → GREEN → COMMIT/ROLLBACK 结构;RED 阶段包含确切测试代码;RED 阶段包含预期失败消息;GREEN 阶段描述最小实现;每个循环足够小,可一次完成;循环逐步递进;每个循环的回滚策略清晰。

重要指南

  1. 测试优先,始终如此:绝不在没有驱动它的测试的情况下描述实现。
  2. 最小 GREEN:只写足够让测试通过的代码,不多写。
  3. 小循环:若某循环显得过大,拆分为更小的循环。
  4. 递进复杂度:从简单开始,通过新测试增加复杂度。
  5. 清晰回滚点:每次提交都是可安全返回的点。
  6. 无投机代码:不要因为「以后会用到」而添加代码。

适用场景与限制

适用于测试关键或安全关键的开发工作,尤其是需要以 TDD 方式规划实现的场景。具体支持的测试框架、文件路径约定等取决于项目现有基础设施,资料未提供固定适用范围之外的更多细节。除上述已说明的提交与回滚命令及选项外,暂未提供其他收费、平台或效果相关信息。