From supergraph
Enforces strict test-driven development for behavior changes: requires verified RED before production code, minimal GREEN implementation, and refactor only after passing tests.
How this skill is triggered — by the user, by Claude, or both
Slash command
/supergraph:tddThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Strict TDD for features, bug fixes, refactors.
Strict TDD for features, bug fixes, refactors.
Iron Law: NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
Delete means delete: Production code written before verified failing test → delete and restart from RED.
Full TDD: new features, behavior changes, refactoring. Fast TDD: bug fixes (add regression test → RED verify → minimal fix). Ask to skip: config-only, generated code, throwaway prototype, docs-only.
needs_test → red_verified → green_verified → refactor_allowed → complete
"🔴 /supergraph:tdd — TDD: [full|fast] for [behavior]..."
Behavior: [single externally visible behavior]
Test file: [path] | Test name: [name]
Command: [focused test command]
Expected RED: [why it should fail before implementation]
One behavior per test. Public behavior, not internals. Real code over mocks.
Write one failing test, then run immediately:
<write test> && $TEST_CMD <focused command>
Valid RED: fails for the expected missing behavior, not syntax/import/typo.
Record evidence:
## TDD Evidence — RED
- RED: `[command]` → FAIL ([expected missing behavior])
Serena diagnostics (optional): mcp__serena__get_diagnostics_for_file(file=<test_file>) — confirm no type errors mask the real missing behavior. Skip if Serena unavailable.
Invalid RED → fix test setup, don't write production code yet.
Write only enough code to pass the test. No abstractions, no cleanup, no extra features.
Delete any production code written before RED.
Serena surgery (optional): Prefer mcp__serena__replace_symbol_body(symbol=<fn>) over raw file edits for targeted function-body implementation — exact, no risk of touching surrounding code. Skip if Serena unavailable.
Run focused test → broader suite:
## TDD Evidence — GREEN
- GREEN: `[command]` → PASS
- Suite: PASS
Serena diagnostics (optional): mcp__serena__get_diagnostics_for_file(file=<source_file>) — confirm no new type errors introduced by implementation. Skip if Serena unavailable.
Failing test → fix code, not test. Other tests fail → fix now.
Rename, deduplicate, extract. No behavior changes. Re-run tests.
Before any rename (optional): Enumerate all callers first to confirm scope:
mcp__serena__find_referencing_symbols(symbol=<symbol_to_rename>)
Then use mcp__serena__rename_symbol(old=<name>, new=<name>) for safe codebase-wide rename instead of grep/replace.
Skip if Serena unavailable — fall back to manual grep + Edit.
Before marking complete:
## TDD Complete
- Behavior: [behavior]
- Mode: full|fast
- RED verified: yes | GREEN verified: yes | Refactor: yes|none
- Tests: PASS
Per behavior: ✅ /supergraph:tdd — behavior N: [brief]
Final:
✅ /supergraph:tdd complete
- Behaviors: N | Mode: full|fast | Tests: PASS | Lint: PASS
- Next: /supergraph:fix → /supergraph:verify → /supergraph:review
For bugs, skip full TDD ceremony:
Plans must include TDD metadata per behavior task:
TDD:
- Behavior: [single behavior] | Test file: [path] | Test name: [name]
- RED command: `[focused test command]` | Expected RED failure: [missing behavior]
- Minimal GREEN change: [smallest implementation] | Mocking: none | [why unavoidable]
red_verified| Symptom | Fix |
|---|---|
| Production code before failing test | Delete, start RED |
| Tests after implementation | Next behavior test-first, remove untested code |
| "Too small to test" | Write one-liner test |
| Immediate pass accepted as RED | Test is wrong — revise |
| Pre-written implementation kept as reference | Delete, start fresh |
| Over-building before tests need it | YAGNI — remove |
Reject tests that only prove mocks exist or were called.
npx claudepluginhub datit309/supergraph --plugin supergraphEnforces strict test-first development with RED/GREEN/REFACTOR cycles. Useful when the user explicitly requests TDD or the conversation contains a strict TDD route decision.
Enforces RED-GREEN-REFACTOR TDD cycle: write a failing test first, then minimal code to pass, then refactor. Use when implementing features or fixing bugs during the implement phase.