关于 tdd-red-green-refactor
面向 AI 辅助 TypeScript 编程的 TDD 技能,规定按 Red、Green、Refactor 循环逐步实现并验证行为。强调一次编写一个测试、验证失败原因,并保留现有测试的完整性。
主要功能
- 01Red-Green-Refactor 三阶段循环
- 02每次只编写一个测试
- 03确认失败源于缺失逻辑
- 04最小实现后运行测试
- 05重构后重新验证
- 06禁止为通过而修改测试
适用场景
- 01为 TypeScript 功能逐步编写测试
- 02确认测试失败不是配置错误
- 03在测试通过时清理代码结构
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ google-labs-code/ design.md --skill tdd-red-green-refactor安装后在 Claude Code 中输入/tdd-red-green-refactor确认已加载。
详细介绍
红-绿-重构(TDD)Skill:TypeScript 版
本 Skill 为 AI 辅助编程提供一套结构化框架,确保每一行代码都可验证、有类型约束且目的明确。
三阶段循环
阶段 1:红(确认失败)
你必须证明该功能尚不存在,并且你的测试是有效的。
- 编写一个测试:针对下一个小的行为,创建一个测试用例(例如使用 Vitest 或 Jest)。
- 执行并失败:运行测试,它必须失败。
- 验证:确保失败是由于缺少相应逻辑所致(例如
ReferenceError: add is not defined),而不是配置错误。
阶段 2:绿(最小通过)
尽可能快速、简单地让测试通过。
- 最小实现:编写满足测试的最简代码。不要为未来做准备,严格专注于当前的"红"测试。
- 运行测试:执行测试套件,所有测试都必须为绿色。
- 证据:从红到绿的转变,就是开发者的"工作证明"。
阶段 3:重构(清理)
在保持"绿"状态的前提下改进代码结构。
- 清理:改进命名、消除重复代码,并优化阶段 2 中编写的代码。
- 安全网:每次修改后重新运行测试。如果测试变红,立即撤销该修改。
核心操作规则
1. 禁止"横向铺开"
严格禁止一次性编写大量测试(即"铺开")。你必须遵循严格的增量循环:
- 编写 1 个测试 -> 看到它失败 -> 编写 1 个修复 -> 看到它通过。
- 对每个子功能重复此循环。
2. 施加反压
利用自动化断言和强类型(TypeScript)作为反压机制,防止 AI "猜测"解决方案,或用低质量代码"在泥潭中乱撞"。
3. 完整性验证
切勿为了让失败的实现通过而修改已有测试。只有当需求发生变化时才可以修改测试,而不能因为代码难以编写就修改测试。
示例工作流(TypeScript + Vitest)
步骤 1:红
// math.test.ts
import { describe, it, expect } from 'vitest';
import { add } from './math';
describe('add', () => {
it('should sum two numbers', () => {
expect(add(2, 2)).toBe(4); // Fails: ReferenceError: add is not defined
});
});
步骤 2:绿
// math.ts
export const add = (a: any, b: any) => {
return 4; // Passes: Minimal code to satisfy the test
};
步骤 3:重构
// math.ts
/**
* Sums two numbers with explicit type safety.
*/
export const add = (a: number, b: number): number => {
return a + b; // Passes: Proper implementation with safety net
};
评论
支持 Markdown