install
source · Clone the upstream repo
git clone https://github.com/Yeachan-Heo/oh-my-codex
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Yeachan-Heo/oh-my-codex "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tdd" ~/.claude/skills/yeachan-heo-oh-my-codex-tdd && rm -rf "$T"
manifest:
skills/tdd/SKILL.mdsource content
TDD Mode
[TDD MODE ACTIVATED]
The Iron Law
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
Write code before test? DELETE IT. Start over. No exceptions.
Red-Green-Refactor Cycle
1. RED: Write Failing Test
- Write test for the NEXT piece of functionality
- Run test - MUST FAIL
- If it passes, your test is wrong
2. GREEN: Minimal Implementation
- Write ONLY enough code to pass the test
- No extras. No "while I'm here."
- Run test - MUST PASS
3. REFACTOR: Clean Up
- Improve code quality
- Run tests after EVERY change
- Must stay green
4. REPEAT
- Next failing test
- Continue cycle
Enforcement Rules
| If You See | Action |
|---|---|
| Code written before test | STOP. Delete code. Write test first. |
| Test passes on first run | Test is wrong. Fix it to fail first. |
| Multiple features in one cycle | STOP. One test, one feature. |
| Skipping refactor | Go back. Clean up before next feature. |
Commands
Before each implementation:
# Run the project's test command - should have ONE new failure
After implementation:
# Run the project's test command - new test should pass, all others still pass
Output Format
When guiding TDD:
## TDD Cycle: [Feature Name] ### RED Phase Test: [test code] Expected failure: [what error you expect] Actual: [run result showing failure] ### GREEN Phase Implementation: [minimal code] Result: [run result showing pass] ### REFACTOR Phase Changes: [what was cleaned up] Result: [tests still pass]
External Model Consultation (Preferred)
The tdd-guide agent SHOULD consult Codex for test strategy validation.
Protocol
- Form your OWN test strategy FIRST - Design tests independently
- Consult for validation - Cross-check test coverage strategy
- Critically evaluate - Never blindly adopt external suggestions
- Graceful fallback - Never block if tools unavailable
When to Consult
- Complex domain logic requiring comprehensive test coverage
- Edge case identification for critical paths
- Test architecture for large features
- Unfamiliar testing patterns
When to Skip
- Simple unit tests
- Well-understood testing patterns
- Time-critical TDD cycles
- Small, isolated functionality
Tool Usage
Before first MCP tool use, call
ToolSearch("mcp") to discover deferred MCP tools.
Use mcp__x__ask_codex with agent_role: "tdd-guide".
If ToolSearch finds no MCP tools, fall back to the test-engineer agent.
Remember: The discipline IS the value. Shortcuts destroy the benefit.