test-driven-development
About
This Claude Skill enforces strict test-driven development by requiring you to write failing tests first before any implementation code. It follows the RED/GREEN/REFACTOR cycle where you write a test, verify it fails, write minimal code to pass, then refactor. Use this skill for all new features, bug fixes, and behavior changes to ensure test-first development practices.
Documentation
Test-Driven Development (TDD)
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.
This skill enforces strict test-first development following the RED/GREEN/REFACTOR cycle. Violating the letter of the rules is violating the spirit of the rules.
When to Use This Skill
Always:
- New features
- Bug fixes
- Refactoring
- Behavior changes
Exceptions (ask 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
- Delete means delete
Core Principles
- RED: Write a failing test first
- GREEN: Write minimal code to make test pass
- REFACTOR: Improve code while keeping tests green
- NEVER: Write implementation before tests
Quick Start
The RED/GREEN/REFACTOR Cycle
RED → Verify RED → GREEN → Verify GREEN → REFACTOR → Repeat
- RED: Write one minimal test showing desired behavior
- Verify RED: Run test, confirm it fails for right reason
- GREEN: Write simplest code to pass test
- Verify GREEN: Run test, confirm it passes
- REFACTOR: Clean up while keeping tests green
- Repeat: Next test for next feature
Cycle Details
RED: Write one minimal test (one behavior, clear name, real code) Verify RED: MANDATORY - watch it fail for right reason GREEN: Write simplest code to pass (no extras) Verify GREEN: MANDATORY - watch it pass, all tests pass REFACTOR: Clean up while keeping tests green (optional)
Navigation
For detailed information:
- Workflow: Complete RED/GREEN/REFACTOR workflow with detailed examples
- Examples: Real-world TDD scenarios with step-by-step walkthroughs
- Philosophy: Why order matters and why tests-after don't work
- Anti-patterns: Common mistakes, rationalizations, and red flags
- Integration: Using TDD with debugging and other skills
Key Reminders
- ALWAYS write the test BEFORE implementation
- Make each test fail FIRST to verify it's testing something
- Keep implementation minimal - just enough to pass tests
- Refactor only when tests are green
- One cycle at a time - small steps
- If test passes immediately, it's not testing new behavior
Red Flags - STOP and Start Over
If you catch yourself:
- Writing code before test
- Test passes immediately
- Can't explain why test failed
- "I'll test after"
- "Keep as reference"
- "Already spent X hours, deleting is wasteful"
- "Tests after achieve the same purpose"
ALL of these mean: Delete code. Start over with TDD.
Why Order Matters
Tests-after pass immediately (proves nothing), test-first fail then pass (proves it works). See Philosophy for detailed explanation.
Integration with Other Skills
- systematic-debugging: Create failing test in Phase 4 (bug reproduction)
- verification-before-completion: Verify tests exist and watched them fail
- defense-in-depth: Add validation tests after implementing feature
Real-World Impact
From TDD practice:
- Test-first: 95%+ first-time correctness
- Test-after: 40% first-time correctness
- TDD time: 25-45 minutes per feature (including tests)
- Non-TDD time: 15 minutes coding + 60-120 minutes debugging
TDD is pragmatic - finds bugs before commit, prevents regressions, documents behavior, enables refactoring.
Quick Install
/plugin add https://github.com/bobmatnyc/claude-mpm/tree/main/test-driven-developmentCopy and paste this command in Claude Code to install this skill
GitHub 仓库
Related Skills
evaluating-llms-harness
TestingThis Claude Skill runs the lm-evaluation-harness to benchmark LLMs across 60+ standardized academic tasks like MMLU and GSM8K. It's designed for developers to compare model quality, track training progress, or report academic results. The tool supports various backends including HuggingFace and vLLM models.
webapp-testing
TestingThis Claude Skill provides a Playwright-based toolkit for testing local web applications through Python scripts. It enables frontend verification, UI debugging, screenshot capture, and log viewing while managing server lifecycles. Use it for browser automation tasks but run scripts directly rather than reading their source code to avoid context pollution.
finishing-a-development-branch
TestingThis skill helps developers complete finished work by verifying tests pass and then presenting structured integration options. It guides the workflow for merging, creating PRs, or cleaning up branches after implementation is done. Use it when your code is ready and tested to systematically finalize the development process.
go-test
MetaThe go-test skill provides expertise in Go's standard testing package and best practices. It helps developers implement table-driven tests, subtests, benchmarks, and coverage strategies while following Go conventions. Use it when writing test files, creating mocks, detecting race conditions, or organizing integration tests in Go projects.
