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

# Install skill into your project (2 files)
mkdir -p .cursor/skills/test-driven-development
&& curl --retry 3 --retry-delay 2 --retry-all-errors -o .cursor/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 .cursor/skills/test-driven-development/testing-anti-patterns.md "https://raw.githubusercontent.com/obra/superpowers/main/skills/test-driven-development/testing-anti-patterns.md"

Run in your IDE terminal (bash). On Windows, use Git Bash, WSL, or your IDE's built-in terminal. If curl fails with an SSL error, your network may block raw.githubusercontent.com — try using a VPN or download the files directly from the source repo.

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; } `

Quality Score

B

Good

76/100

Standard Compliance45
Documentation Quality75
Usefulness80
Maintenance Signal100
Community Signal100
Scored 4d ago

GitHub Signals

Stars84.2k
Forks6.6k
Issues146
Updated3d ago
View on GitHub

Trust & Transparency

Open Source — MIT

Source code publicly auditable

Verified Open Source

Hosted on GitHub — publicly auditable

Actively Maintained

Last commit 3d ago

84.2k stars — Strong Community

6.6k forks

My Fox Den

Community Rating

Sign in to rate this booster

Works With

Claude Code