plugins/ai-pilot/skills/tdd/SKILL.md
Use when writing production code that needs tests - new features, bug fixes, refactoring. Enforces RED-GREEN-REFACTOR cycle before any implementation.
npx skillsauth add fusengine/agents tddInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Write the test first. Watch it fail. Write minimal code to pass.
No production code without a failing test first.
Every line of production code must be justified by a test that failed without it. No exceptions. No shortcuts. No "I'll test after."
1. DETECT -> Identify stack, test framework, existing test patterns
2. RED -> Write ONE failing test for the next behavior
3. VERIFY -> Run test, confirm it fails for the EXPECTED reason
IF the test fails for a DIFFERENT reason (syntax error, wrong import, missing fixture) → fix the test itself and re-run. Do NOT proceed to GREEN until the failure matches the intended behavior.
4. GREEN -> Write the SIMPLEST code that makes the test pass
5. VERIFY -> Run tests, confirm ALL pass (new + existing)
6. REFACTOR -> Clean up while keeping all tests green
7. REPEAT -> Next behavior = next failing test
CRITICAL: Never skip VERIFY steps. A test that passes on first run proves nothing.
See references/red-green-refactor.md for the detailed cycle with rules and verification steps.
| Topic | Reference | |-------|-----------| | Full RED-GREEN-REFACTOR cycle | red-green-refactor.md | | Common mistakes and red flags | anti-patterns.md | | Per-stack test commands | stack-commands.md |
| Stack | Run Tests | Watch Mode |
|-------|-----------|------------|
| React/Next.js | npx vitest run | npx vitest |
| Laravel | php artisan test | php artisan test --watch |
| Swift | swift test | - |
| Generic TS | bunx vitest run | bunx vitest |
| Go | go test ./... | - |
| Rust | cargo test | cargo watch -x test |
testing
Copy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
development
Logged-in web apps — dashboards, auth flows, settings, onboarding, data tables, command palettes, modals, toasts. Register `product`: density and glance-speed over marketing polish, no hero/CTA-tricks, every data surface covers empty/loading/error explicitly, tables and dataviz follow preattentive-processing rules.
development
Marketing sites, landing pages, campaign pages — register `brand` (design IS the product). Structure comes from the register's POV + a macrostructure pick, never from copying an inspiration site's section flow. Hero discipline, deviated section order, asymmetric grids, and a silhouette lookalike-test gate before ship.
development
Token-strategy core — OKLCH color rules, neutral tinting, accent-commitment levels, type scale, 8pt spacing grid, touch targets, and the canonical output format of design-system.md (the file the harness gates on). This is routing step 1 of design-method/SKILL.md — read it before design-web/design-webapp/design-ios/design-android, before picking or auditing a single color/type/spacing value.