원클릭으로
sloth-tdd
Use when building any Maycrest client deliverable, feature, or bug fix — before writing implementation code.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when building any Maycrest client deliverable, feature, or bug fix — before writing implementation code.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when an approved Maycrest spec needs turning into a bite-sized TDD implementation plan a contractor could execute cold — before any code is touched on a client build.
Use when the Maycrest deliver pipeline executes an implementation plan of independent tasks in the current session — one fresh subagent per task, two-stage review each.
Use when a Maycrest build hits any bug, test failure, or unexpected behavior on the Expo/Supabase/Vercel stack — before proposing any fix.
Use when review feedback lands on a Maycrest deliverable — before implementing any suggestion, especially an unclear or questionable one — demanding verification over performative agreement.
Use when completing a task or major feature on a Maycrest build, or before merging — dispatch an independent reviewer subagent as the internal QA gate before the client sees the work.
Use when a Maycrest engagement branch is complete and tests pass — gating the handoff: verify the suite first, then choose merge, PR, keep, or discard, and produce a short client handoff package.
| name | sloth-tdd |
| description | Use when building any Maycrest client deliverable, feature, or bug fix — before writing implementation code. |
Write the test first. Watch it fail. Write minimal code to pass. At Maycrest we hand verified work to SMB clients who trust us — untested code is a liability we don't ship.
Core principle: If you didn't watch the test fail, you don't know it tests the right thing.
Violating the letter of this rule is violating the spirit of this rule.
Always: new features, bug fixes, refactors, behavior changes — on any Maycrest build (client apps, the Maycrest website, internal tooling).
Exceptions (ask Corey): throwaway prototypes, generated code, configuration files.
Thinking "skip TDD just this once for this client"? Stop. That's rationalization.
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
Wrote code before the test? Delete it. Start over.
No exceptions: don't keep it as "reference," don't "adapt" it while writing the test, don't look at it. Delete means delete. Implement fresh from the test.
digraph tdd_cycle {
rankdir=LR;
red [label="RED\nWrite failing test", shape=box, style=filled, fillcolor="#FF4D6A", fontcolor="white"];
verify_red [label="Verify it\nfails correctly", shape=diamond];
green [label="GREEN\nMinimal code", shape=box, style=filled, fillcolor="#22C55E", fontcolor="white"];
refactor [label="REFACTOR\nClean up", shape=box, style=filled, fillcolor="#00E5CC"];
red -> verify_red;
verify_red -> green [label="fails right"];
verify_red -> red [label="wrong failure"];
green -> refactor [label="all green"];
refactor -> red [label="next behavior"];
}
| Excuse | Reality |
|---|---|
| "Client deadline — no time for tests" | TDD is faster than debugging in front of the client. |
| "Too simple to test" | Simple code breaks. The test takes 30 seconds. |
| "I'll test after the demo" | Tests written after pass immediately and prove nothing. |
| "Already spent hours, deleting is wasteful" | Sunk cost. Keeping unverified code is the waste. |
| "I manually tested it in the Expo preview" | Ad-hoc ≠ systematic. No record, can't re-run. |
| "This client is different because…" | It isn't. Write the test first. |
All of these mean: delete the code, start over with TDD.
Bug: empty client email is accepted on the intake form.
RED
test('rejects empty email on intake', async () => {
const result = await submitIntake({ email: '' });
expect(result.error).toBe('Email required');
});
Verify RED → FAIL: expected 'Email required', got undefined (good — the guard is missing).
GREEN
function submitIntake(data: IntakeData) {
if (!data.email?.trim()) return { error: 'Email required' };
// ...persist to Supabase
}
Verify GREEN → PASS. REFACTOR → extract field validation if more fields need it.
maycrest-ops:reality-checker for the production-readiness verdict.Adapted from the MIT-licensed obra/superpowers project (© 2025 Jesse Vincent). See NOTICE.