| name | tdd |
| description | Implement features using Test-Driven Development (TDD) with Red-Green-Refactor cycle. |
| disable-model-invocation | true |
Test-Driven Development
Implement $ARGUMENTS using Test-Driven Development (TDD).
TDD Cycle
Repeat: Red → Green → Refactor
1. Red: Write a failing test
2. Green: Write minimal code to pass the test
3. Refactor: Clean up code (tests still pass)
Implementation Steps
Phase 1: Test Design
-
Confirm Requirements
- What is the input
- What is the output
- What are the edge cases
-
List Test Cases
- [ ] Happy path: Basic functionality
- [ ] Happy path: Boundary values
- [ ] Error case: Invalid input
- [ ] Error case: Error handling
Phase 2: Red-Green-Refactor
Step 1: Write First Test (Red)
def test_{function}_basic():
"""Test the most basic case"""
result = function(input)
assert result == expected
Run test and confirm failure:
uv run pytest tests/test_{module}.py -v
Step 2: Implementation (Green)
Write minimal code to pass the test:
- Don't aim for perfection
- Hardcoding is OK
- Just make the test pass
Run test and confirm success:
uv run pytest tests/test_{module}.py -v
Step 3: Refactoring (Refactor)
Improve while tests still pass:
- Remove duplication
- Improve naming
- Clean up structure
uv run pytest tests/test_{module}.py -v
Step 4: Next Test
Return to Step 1 with next test case from the list.
Phase 3: Completion Check
Run the quality gates:
bash .claude/skills/_shared/verify.sh
Read the JSON: overall is pass / fail / no_gates. On fail, inspect the log_file. On no_gates (project has no configured gates), fall back to the project's own verification commands and confirm manually.
Then check coverage separately:
uv run pytest --cov={module} --cov-report=term-missing
Report Format
## TDD Complete: {Feature Name}
### Test Cases
- [x] {test1}: {description}
- [x] {test2}: {description}
...
### Coverage
{Coverage report}
### Implementation Files
- `src/{module}.py`: {description}
- `tests/test_{module}.py`: {N} tests
Notes
- Write tests first (not after)
- Keep each cycle small
- Refactor after tests pass
- Prioritize working code over perfection