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.
npx claudepluginhub techdufus/oh-my-claude --plugin oh-my-claudeThis skill uses the workspace's default tool permissions.
Write the test. Watch it fail. Make it pass. Clean up. Repeat.
Enforces strict TDD red-green-refactor cycle: write failing test first, minimal implementation to pass, then refactor. Use before coding for test-driven safe development.
Share bugs, ideas, or general feedback.
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.