بنقرة واحدة
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.