| name | spawn-parallel |
| description | Pattern for spawning parallel subagents efficiently. Use when you need multiple independent tasks done concurrently. |
| allowed-tools | Task |
Spawn Parallel Skill
Pattern for spawning and coordinating parallel subagents.
When to Load This Skill
- You have multiple independent tasks
- Tasks don't depend on each other's output
- You want to maximize concurrency
Spawning Pattern
1. Identify Independent Tasks
Tasks are independent if:
- No data dependencies between them
- No file conflicts (different files or read-only)
- Can complete in any order
2. Prepare Contexts
Each subagent needs minimal, focused context:
{"task":{"id":"unique_id","description":"specific task"},"context_files":["only relevant files"],"boundaries":{"owns":["files this agent can modify"],"reads":["files for reference"]},"output_path":"memory/tasks/{id}/output.json"}
3. Spawn All at Once
Use multiple Task calls in single response:
Task(subagent_type: "implementer", model: "sonnet", prompt: "Task 1...")
Task(subagent_type: "implementer", model: "sonnet", prompt: "Task 2...")
Task(subagent_type: "implementer", model: "sonnet", prompt: "Task 3...")
Subagent Type Reference (Custom Dotagent Agents):
| Type | Model | Use For |
|---|---|---|
explorer |
haiku | Fast codebase scouting |
implementer |
sonnet | Focused code writing |
verifier |
haiku | Independent verification |
tester |
haiku | Test execution |
Note: These are custom dotagent agents (lowercase). Built-in Claude Code
agents like Explore and Plan (capitalized) have different behavior.
4. Collect and Validate
After all complete:
- Check each output file exists
- Validate against schema
- Handle failures (retry or escalate)
Coordination Rules
Prevent Conflicts
- Define clear file ownership per agent
- Use contracts for shared interfaces
- Read-only access to shared resources
Handle Failures
Individual failures don't fail the batch. Apply recovery strategies from @.claude/skills/error-recovery/SKILL.md:
FOR each failed task in batch:
IF output malformed/timeout:
→ Simple Retry (same prompt, up to 3x)
ELIF agent said "unclear"/"don't understand":
→ Context Enhancement (add files, clarify)
ELIF partial completion:
→ Scope Reduction (split into subtasks)
ELIF boundary/contract violation:
→ Escalation (spawn contract-resolver)
ELIF 3+ attempts failed:
→ Abort, record failure, continue with others
Retry with Context Enhancement Example:
Task(
subagent_type: "implementer",
model: "sonnet",
prompt: |
## RETRY - Previous attempt failed
Error: "Unclear how to connect to database"
## Additional Context
See database config: @src/config/database.ts
Connection pattern: @src/services/db-connection.ts
## Original Task
{original_task_description}
Output: memory/tasks/{id}/output.json
)
Example: Parallel Explorers
# Spawn 3 custom explorer agents in parallel
Task(
subagent_type: "explorer", # Custom dotagent agent
model: "haiku",
prompt: "Explore authentication code. Return compact JSON with findings."
)
Task(
subagent_type: "explorer",
model: "haiku",
prompt: "Explore API routes. Return compact JSON with findings."
)
Task(
subagent_type: "explorer",
model: "haiku",
prompt: "Explore database models. Return compact JSON with findings."
)
All run concurrently, results collected when all complete.
Example: Mixed Agent Types
# Parallel implementation with different boundaries
Task(
subagent_type: "implementer",
model: "sonnet",
prompt: |
Task: Add user validation
Boundaries: owns=[src/validators/user.ts], reads=[src/types/]
Output: memory/tasks/task-001/output.json
)
Task(
subagent_type: "implementer",
model: "sonnet",
prompt: |
Task: Add email service
Boundaries: owns=[src/services/email.ts], reads=[src/config/]
Output: memory/tasks/task-002/output.json
)