Skip to main content

test-first-philosophy

当用户需要了解或执行 TDD(测试驱动开发)原则、RED-GREEN-REFACTOR 循环、或为什么测试应该是强制性的而不是可选的时候调用此 skill。适用于所有功能实现、Bug 修复、重构任务。不适用于:探索性编程、原型开发、一次性脚本。关键 trigger 信号:"TDD"、"test-driven"、"RED-GREEN-REFACTOR"、"write tests first"、"delete code before tests"、"mandatory testing"。

Ir para a instalação

Informações da origem

Repositório
Natsummerance/agents
Última atividade na origem
27 de agosto de 2026 às 07:35
Idioma detectado do SKILL.md
Vários idiomas
Estrelas
3
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
3 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
test-first-philosophy
description
当用户需要了解或执行 TDD(测试驱动开发)原则、RED-GREEN-REFACTOR 循环、或为什么测试应该是强制性的而不是可选的时候调用此 skill。适用于所有功能实现、Bug 修复、重构任务。不适用于:探索性编程、原型开发、一次性脚本。关键 trigger 信号:"TDD"、"test-driven"、"RED-GREEN-REFACTOR"、"write tests first"、"delete code before tests"、"mandatory testing"。
source_book
《Superpowers》 obra
source_project
obra/superpowers
source_chapter
How it works / The Basic Workflow / What's Inside / Philosophy
tags
["principle","tdd","testing","mandatory"]
related_skills
["mandatory-workflow","evidence-over-claims","skipping-tests-anti-pattern"]
# Test-First Philosophy (TDD is Mandatory) ## R (Reading) - 原文引用 > "It emphasizes true red/green TDD, YAGNI (You Aren't Gonna Need It), and DRY." > "test-driven-development - Activates during implementation. Enforces RED-GREEN-REFACTOR: write failing test, watch it fail, write minimal code, watch it pass, commit. Deletes code written before tests." > "Philosophy: Test-Driven Development - Write tests first, always" ## I (Interpretation) - 方法论骨架 Test-First Philosophy 是 Superpowers 的核心设计原则之一,强调 TDD 是强制性的,不是可选的。其核心是: 1. **RED-GREEN-REFACTOR 循环**: - **RED**:写一个失败的测试(描述期望的行为) - **GREEN**:写最少的代码让测试通过 - **REFACTOR**:重构代码,保持测试通过 2. **删除在测试之前写的代码**:如果先写了代码后写测试,必须删除代码重新按 TDD 流程执行 3. **验证测试基线**:确保测试套件在干净状态下通过 这种方法的优势在于:通过测试先行保证代码质量,通过最小化实现避免过度设计,通过严格的重构保证代码可维护性。 ## A1 (Past Application) - 书中作者用过的案例 在 Superpowers 的基本工作流中,第 5 步明确说明:实现过程中会激活 test-driven-development skill,强制执行 RED-GREEN-REFACTOR 循环。作者 Jesse Vincent 强调,TDD 不是建议而是强制性要求,违反者会被要求删除代码重新执行。 ## A2 (Future Trigger) - 何时调用 **调用时机**: - 用户需要实现新功能但不确定如何开始 - 用户需要修复 Bug 但不确定是否真的修复了 - 用户需要重构代码但担心引入回归 - 用户提到"TDD"、"test-driven"、"RED-GREEN-REFACTOR"、"write tests first"等关键词 **不调用时机**: - 探索性编程:需要先尝试不同方案,TDD 可能过于严格 - 原型开发:快速验证想法,不需要完整测试 - 一次性脚本:不需要长期维护,TDD 成本过高 **与相邻 skill 的区分**: - 与 `skipping-tests-anti-pattern` 的关系:test-first-philosophy 是正面指导;skipping-tests-anti-pattern 是反面警示 - 与 `evidence-over-claims` 的区别:test-first-philosophy 关注测试先行;evidence-over-claims 关注验证后再声明成功 **关键 trigger 信号**:用户提到"TDD"、"test-driven"、"RED-GREEN-REFACTOR"、"write tests first"、"delete code before tests"、"mandatory testing"等关键词。 ## E (Execution) - 可执行步骤 1. **理解需求**:明确要实现的功能或要修复的 Bug - 完成标准:需求已被改写为一条可观察的行为描述(输入→期望输出),无歧义词汇残留 2. **写失败测试**:编写一个描述期望行为的测试,确认它失败(RED) - 完成标准:新测试存在于测试套件中且运行结果为失败,失败原因是断言而非语法错误 3. **运行测试**:确认测试确实失败,排除假阳性 - 完成标准:测试运行日志显示该测试 RED 且其余存量测试仍 GREEN 4. **写最少代码**:编写刚好能让测试通过的代码,不做多余工作(GREEN) - 完成标准:实现仅包含使断言通过所需的最小逻辑,无当前测试未要求的额外功能 5. **运行测试**:确认测试通过 - 完成标准:全套测试一次运行全部 GREEN,日志留存 6. **重构**:优化代码结构,保持测试通过(REFACTOR) - 完成标准:重构后重复运行测试仍全部 GREEN,且消除了本轮标记的坏味道 7. **提交**:将测试和代码一起提交 - 完成标准:单个提交同时包含测试与实现的变更,提交信息说明对应的功能点 8. **重复**:回到步骤 2,处理下一个功能点 - 完成标准:下一个功能点已有新的失败测试在运行中,或全部功能点已完成并经最终全量验证 **判停条件**:所有功能点完成且测试全部通过,或用户明确要求停止。 ## B (Boundary) - 边界意识 **不适用的场景**: - 探索性编程:需要先尝试不同方案,TDD 可能限制创造力 - 原型开发:快速验证想法,不需要完整测试 - 一次性脚本:不需要长期维护,TDD 成本过高 **作者的盲点**: - **TDD 学习曲线**:对于不熟悉 TDD 的开发者,RED-GREEN-REFACTOR 循环可能需要时间适应 - **测试覆盖率 vs 速度**:严格的 TDD 可能降低开发速度,对于快速迭代的项目可能不适用 - **"删除代码"的极端性**:要求删除在测试之前写的代码可能过于严格,在某些情况下可能导致大量返工
Ver no GitHub