plugins/oh-my-claude/skills/tdd/SKILL.md
Systematic TDD methodology for writing tests first. Use when implementing features or fixes with OMC_TDD_MODE enabled, when unsure how to structure tests, or when test-first discipline needs reinforcement. Triggers on: 'tdd', 'test first', 'test driven', 'red green refactor'.
npx skillsauth add techdufus/oh-my-claude tddInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Write the test. Watch it fail. Make it pass. Clean up. Repeat.
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
If you're writing production code and no test just failed, you're doing it wrong.
OMC_TDD_MODE is enabled (guided or enforced)tdd_enforcer hook blocks an editVerification gate: Test output shows a meaningful failure related to the behavior you're implementing.
Verification gate: Full test suite green. Zero failures.
Verification gate: Tests still green. Code is cleaner. No new functionality added.
| Excuse | Counter | |--------|---------| | "I'll write tests after" | Tests written after prove nothing - they pass immediately | | "Too simple to test" | Simple code breaks. Test takes 30 seconds | | "I know this works" | Confidence is not evidence. The test IS the evidence | | "Tests will slow me down" | Debugging without tests slows you down more | | "Just a refactor" | Refactors without tests are rewrites without safety nets | | "The types guarantee correctness" | Types check structure, not behavior. Test the behavior | | "It's just a config change" | Config changes cause production outages. Test them | | "I'll TDD the next one" | You said that last time. Start now |
Thoughts that signal you're about to violate TDD:
If you catch yourself thinking any of these: STOP. Write the test first.
The tdd_enforcer hook gates file edits when OMC_TDD_MODE is enabled. This skill guides the methodology. The hook fires, you see the gate, invoke this skill for how to proceed.
Flow: Hook blocks edit -> Read the message -> Write/update a test -> Run tests (see RED) -> Now implement (GREEN) -> Clean up (REFACTOR).
| Problem | Solution | |---------|----------| | Can't figure out what to test | Test the simplest case first. What's the most basic input/output? | | Test is too complex | Break the behavior into smaller units. Test each one | | Don't know the test framework | Check existing tests in the project. Copy the pattern | | Test requires too much setup | That's a design smell. Simplify the interface under test | | Multiple things need testing | One test at a time. Pick the smallest behavior first | | Existing code has no tests | Start with the change you're making. Test the new behavior | | Test passes immediately | Your test isn't testing what you think. Check assertions | | Can't make the test fail | You might be testing something already implemented. Test the GAP |
A test that exists before the code proves the code works. A test written after proves nothing but that you can reverse-engineer assertions.
tools
Methodology for creating effective skills using TDD principles. Use when creating new skills, editing existing skills, or authoring plugin components. Triggers on: 'create skill', 'write skill', 'new skill', 'skill authoring'.
tools
Git worktree automation for isolated feature development. Triggers on: '/worktree create', '/worktree list', '/worktree remove'. Creates isolated working directories with automatic setup.
testing
Evidence-based verification methodology before claiming work is complete. Use when about to claim work is done, before committing, before creating PRs, or when verification-reminder hook fires. Triggers on: 'verify', 'verification', 'is it done', 'complete', 'ready to merge'.
development
How to handle code review feedback with technical rigor. Use when receiving review comments from code-reviewer agent, PR reviews, or external feedback. Triggers on: 'review feedback', 'address review', 'fix review comments', 'code review response'.