From oh-my-claude
Enforces Test-Driven Development (TDD) with red-green-refactor cycle. Guides writing failing tests first for features, bug fixes, or when OMC_TDD_MODE enabled and TDD keywords detected.
How this skill is triggered — by the user, by Claude, or both
Slash command
/oh-my-claude:tddThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Write the test. Watch it fail. Make it pass. Clean up. Repeat.
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.
npx claudepluginhub techdufus/oh-my-claude --plugin oh-my-claudeEnforces red-green-refactor TDD cycle with configurable strictness (strict/recommended/off). Use before writing implementation code for any feature or bugfix.