Test-Driven Development Workflow
The Cycle
code
┌─────────────────────────────────────────────────┐ │ RED → GREEN → REFACTOR → DOCUMENT → COMMIT │ └─────────────────────────────────────────────────┘
Phase 1: RED (Write Failing Test)
- •Understand the requirement
- •Write a test that describes expected behavior
- •Run the test - it MUST fail
- •If test passes, the test is wrong or feature exists
Phase 2: GREEN (Minimal Implementation)
- •Write the minimum code to pass the test
- •Run the test - it MUST pass
- •Do not optimize, do not refactor yet
Phase 3: REFACTOR (Improve)
- •Clean up the implementation
- •Run tests after each change
- •Tests must stay green throughout
Phase 4: DOCUMENT (If Tests Pass)
- •Update docstrings/comments
- •Update README if public API changed
- •Only document after tests pass
Phase 5: COMMIT
- •Stage changes
- •Write descriptive commit message
- •Tests must pass before commit
Gate Enforcement
Mode: {{TDD_GATE}}
Soft Gate (default)
- •Warn if tests fail
- •Allow proceeding with user acknowledgment
- •Log warning in output
Hard Gate
- •Block all progress until tests pass
- •No exceptions
- •Must fix tests before any other action
Validation
Run before committing:
bash
~/.claude/skills/tdd/scripts/check-tests.sh
Check current gate status:
bash
~/.claude/skills/tdd/scripts/gate-status.sh
Checklist
Copy and track progress:
code
TDD Progress: - [ ] Requirement understood - [ ] Failing test written - [ ] Test fails for right reason - [ ] Minimal implementation done - [ ] Test passes - [ ] Code refactored - [ ] All tests still pass - [ ] Documentation updated - [ ] Ready to commit