tdd
TDD Skill
Write the test first. Watch it fail. Write minimal code to pass.
The Iron Law
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."
Agent Workflow
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
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.
RED-GREEN-REFACTOR Cycle
See references/red-green-refactor.md for the detailed cycle with rules and verification steps.
Reference Guide
| 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 |
Quick Reference: Test Commands
| 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 |
Forbidden Behaviors
- Never write production code before a failing test
- Never skip the VERIFY RED step
- Never accept a test that passes on first run without investigation
- Never mock what you can test directly
- Never write more than one test at a time in RED phase
- Never add features beyond what the current test requires
More from fusengine/agents
laravel-architecture
Design Laravel app architecture with services, repositories, actions, and clean code patterns. Use when structuring projects, creating services, implementing DI, or organizing code layers.
97laravel-blade
Create Blade templates with components, slots, layouts, and directives. Use when building views, reusable components, or templating.
88laravel-livewire
Livewire 3 reactive components - wire:model, actions, events, Volt, Folio. Use when building reactive UI without JavaScript.
86nextjs-i18n
Next.js 16 internationalization with next-intl or DIY. Use when implementing i18n, translations, localization, multilingual, language switch, locale routing, or formatters.
59solid-php
SOLID principles for Laravel 12 and PHP 8.5. Files < 100 lines, interfaces separated, PHPDoc mandatory. Auto-detects Laravel and FuseCore architecture.
51laravel-testing
Write tests with Pest 3/PHPUnit, feature tests, unit tests, mocking, fakes, and factories. Use when testing controllers, services, models, or implementing TDD.
50