用途
该技能为 AI 辅助编程提供一套结构化框架,确保每一行代码都是可验证、有类型且目的明确的。它强制在 TypeScript/Node.js 环境中遵循 Red-Green-Refactor(测试驱动开发)工作流,适用于创建新功能、修复缺陷或将逻辑迁移到 TypeScript 等场景。
主要能力
技能将开发过程划分为三个严格阶段:
阶段一:Red(确立失败) 必须证明功能尚不存在,且测试本身有效。具体做法是:为下一小块行为编写单个测试用例(例如使用 Vitest 或 Jest);运行测试,它必须失败;确认失败与缺失的逻辑相关(如 ReferenceError: add is not defined),而非配置错误。
阶段二:Green(最小通过) 以尽可能快速、简单的方式让测试通过。编写满足该测试的最简代码,不为未来过度设计,严格聚焦当前 Red 测试。运行测试套件,所有测试必须为 Green。从 Red 到 Green 的转变即为开发者的“工作证明”。
阶段三:Refactor(清理) 在保持 Green 状态的前提下改进代码结构:改善命名、消除重复、优化阶段二编写的代码。每次修改后重新运行测试作为安全网;若测试变红,立即回退该修改。
核心操作规则
- 禁止“横向挥霍”:严禁一次性编写大量测试。必须遵循严格增量循环:写 1 个测试 -> 看它失败 -> 写 1 个修复 -> 看它通过。对每个子功能重复此循环。
- 施加反向压力:使用自动化断言和强类型(TypeScript)作为反向压力,防止 AI 猜测解决方案或用低质量代码“和稀泥”。
- 完整性验证:绝不修改既有测试来让失败的实现通过。若测试必须更改,原因应是需求变更,而非代码难以编写。
使用方式
技能以工作流规则和示例的形式提供。示例工作流(TypeScript + Vitest)如下:
步骤 1:Red
// 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:Green
// math.ts
export const add = (a: any, b: any) => {
return 4; // Passes: Minimal code to satisfy the test
};
步骤 3:Refactor
// 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
};
适用场景
- 在 TypeScript/Node.js 项目中创建新功能
- 修复缺陷
- 将逻辑迁移到 TypeScript
- 需要 AI 辅助编程但要求代码可验证、有类型且目的明确的场景
限制
资料未提供关于该技能的具体安装命令、支持的测试框架完整列表、与其他工具的集成方式、收费模式或平台限制等信息,暂未提供。