Skip to content
Skill

test-driven-development

by obra

AI Summary

Guides AI coding assistants to follow Test-Driven Development principles by writing failing tests before implementation code. Useful for developers who want to maintain code quality and ensure comprehensive test coverage.

Install

Copy this and paste it into Claude Code, Cursor, or any AI assistant:

I want to install the "test-driven-development" skill in my project.

Please run this command in my terminal:
# Install skill into your project (2 files)
mkdir -p .claude/skills/test-driven-development && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/test-driven-development/SKILL.md "https://raw.githubusercontent.com/obra/superpowers/main/skills/test-driven-development/SKILL.md" && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/test-driven-development/testing-anti-patterns.md "https://raw.githubusercontent.com/obra/superpowers/main/skills/test-driven-development/testing-anti-patterns.md"

Then restart Claude Code (or reload the window in Cursor) so the skill is picked up.

Description

Use when implementing any feature or bugfix, before writing implementation code

Overview

Write the test first. Watch it fail. Write minimal code to pass. Core principle: If you didn't watch the test fail, you don't know if it tests the right thing. Violating the letter of the rules is violating the spirit of the rules.

When to Use

Always: • New features • Bug fixes • Refactoring • Behavior changes Exceptions (ask your human partner): • Throwaway prototypes • Generated code • Configuration files Thinking "skip TDD just this once"? Stop. That's rationalization.

The Iron Law

` NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST ` Write code before the test? Delete it. Start over. No exceptions: • Don't keep it as "reference" • Don't "adapt" it while writing tests • Don't look at it • Delete means delete Implement fresh from tests. Period.

Red-Green-Refactor

`dot digraph tdd_cycle { rankdir=LR; red [label="RED\nWrite failing test", shape=box, style=filled, fillcolor="#ffcccc"]; verify_red [label="Verify fails\ncorrectly", shape=diamond]; green [label="GREEN\nMinimal code", shape=box, style=filled, fillcolor="#ccffcc"]; verify_green [label="Verify passes\nAll green", shape=diamond]; refactor [label="REFACTOR\nClean up", shape=box, style=filled, fillcolor="#ccccff"]; next [label="Next", shape=ellipse]; red -> verify_red; verify_red -> green [label="yes"]; verify_red -> red [label="wrong\nfailure"]; green -> verify_green; verify_green -> refactor [label="yes"]; verify_green -> green [label="no"]; refactor -> verify_green [label="stay\ngreen"]; verify_green -> next; next -> red; } `

Discussion

0/2000
Loading comments...

Health Signals

MaintenanceCommitted 13d ago
Active
Adoption1K+ stars on GitHub
162.8k ★ · Popular
DocsMissing or thin
Undocumented

GitHub Signals

Stars162.8k
Forks14.2k
Issues306
Updated13d ago
View on GitHub
MIT License

My Fox Den

Community Rating

Sign in to rate this booster

Works With

Claude Code