Fan-out: Multiple Coding Agents and Ralph Wiggum Loops
When a dev plan has several independent tasks (different files or no shared state), you can fan them out to parallel Claude agents, each running as a Ralph Wiggum loop in its own git worktree. This is not like GasTown, which is a full-blown system, but it is similar in the sense that it cuts time down, compared to tackling each task sequentially. For me, the multiplexing of tasks feels an adequate trade-off between having control and automation. I might eventually get into this zany idea of full automation.
So fan-out starts with extensive planning! Discuss your feature or idea with the LLM, have it ask you questions, make it do all the foundational work: architecture, expected code structure, list of files and API impacted, schema changes. Identify distinct tasks and their dependencies, especially if there is a common task that needs doing first. Implement and commit that before fanning out to multiple agents.
Once the pre-work is done, make sure the plan has an implementation checklist with distinct tasks and a Technical Specifications section listing which files each task touches — this is what /fan-out parses to analyse dependencies and show which tasks can run in parallel. Once you confirm, it fans out the independent tasks to separate Claude agents: /fan-out docs/dev_plans/20260116-feature-auth-system.md.
For each approved task, /fan-out creates a git worktree at ../your-repo-fanout-<task-slug>, spawns a separate claude -p process (Opus, non-interactive), and each agent works in isolation, committing to its own branch.
From there it is a matter of monitoring progress with /fan-out status, checking the logs, and ensuring each agent is moving forward. Once all agents finish, review the individual PRs and merge them into your feature branch. Lastly, the clean-up removes the worktrees, deletes merged branches, and removes the state file.
The key constraint is that tasks must be truly independent and the dependency analysis catches conflicts before spawning, which saved me from a painful merge more than once.
# Plan
/dev-plan create feature user-dashboard
# ... plan has 3 independent tasks:
# 1. Add /api/dashboard endpoint (src/api/)
# 2. Add Dashboard component (src/components/)
# 3. Add dashboard tests (tests/)
# Complete shared prerequisite (types)
# ... manual work, commit ...
# fan-out's options
/fan-out "[plan-file | status | logs N | cancel [N] | merge | cleanup] [--dry-run] [--max-agents N] [--model MODEL]"
# Fan out the 3 independent tasks
/fan-out docs/dev_plans/20260206-feature-user-dashboard.md
# Check in on progress
/fan-out status
# All done — merge
/fan-out merge
# Tear down worktrees
/fan-out cleanup