swarm-coordination
Original:🇺🇸 English
Translated
Multi-agent coordination patterns for OpenCode swarm workflows. Use when work benefits from parallelization or coordination. Covers: decomposition, worker spawning, file reservations, progress tracking, and review loops.
35installs
Sourcejoelhooks/swarm-tools
Added on
NPX Install
npx skill4agent add joelhooks/swarm-tools swarm-coordinationTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Swarm Coordination
This skill guides multi-agent coordination for OpenCode swarm workflows.
When to Use
- Tasks touching 3+ files
- Parallelizable work (frontend/backend/tests)
- Work requiring specialized agents
- Time-to-completion matters
Avoid swarming for 1–2 file changes or tightly sequential work.
Tool Access (Wildcard)
This skill is configured with per user choice. If you need curated access later, replace the wildcard with explicit tool lists.
tools: ["*"]Foreground vs Background vs Agent Teams
- Foreground agents can access MCP tools.
- Background agents do not have MCP tools.
- Agent Team Teammates (when enabled) have independent context and messaging.
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS - Use foreground workers for ,
swarmmail_*,swarm_*, and MCP calls.hive_* - Use background workers for doc edits and static work only.
MCP Lifecycle
Claude Code auto-launches MCP servers from configuration. Do not require manual except for debugging.
mcpServersswarm mcp-serveAgent teams spawn separate instances with their own MCP connections. Each teammate has independent tool access.
Coordinator Protocol (Dual-Path)
Native Teams (When Available)
- Initialize Swarm Mail ().
swarmmail_init - Query past learnings ().
hivemind_find - Decompose (+
swarm_plan_prompt).swarm_validate_decomposition - Spawn via for real-time coordination.
TeammateTool - Review via native team messaging + for persistence.
swarm_review - Record outcomes ().
swarm_complete
Fallback (Task Subagents)
- Initialize Swarm Mail ().
swarmmail_init - Query past learnings ().
hivemind_find - Decompose (+
swarm_plan_prompt).swarm_validate_decomposition - Spawn workers via .
Task(subagent_type="swarm-worker", prompt="...") - Review worker output (+
swarm_review).swarm_review_feedback - Record outcomes ().
swarm_complete
Worker Protocol (Dual-Path)
With Agent Teams
- Auto-initialize via hook.
session-start - Reserve files () — native teams have NO file locking.
swarmmail_reserve - Use for UI spinners +
TaskUpdatefor persistent tracking.swarm_progress - Complete with (auto-releases reservations).
swarm_complete
Without Agent Teams
- Initialize Swarm Mail ().
swarmmail_init - Reserve files ().
swarmmail_reserve - Work within scope and report progress ().
swarm_progress - Complete with .
swarm_complete
File Reservations
Workers must reserve files before editing and release via .
Coordinators never reserve files.
swarm_completeProgress Reporting
Use for UI spinners (shows instant feedback in Claude Code) and at 25%, 50%, and 75% completion for persistent tracking and auto-checkpoints.
TaskUpdateswarm_progressSpawning Workers (CRITICAL - Read This)
Step 1: Prepare the subtask
typescript
const spawnResult = await swarm_spawn_subtask({
bead_id: "cell-abc123", // The hive cell ID for this subtask
epic_id: "epic-xyz789", // Parent epic ID
subtask_title: "Add logging utilities",
subtask_description: "Create a logger module with structured logging support",
files: ["src/utils/logger.ts", "src/utils/logger.test.ts"], // Array of strings, NOT a JSON string
shared_context: "This epic is adding observability. Other workers are adding metrics and tracing.",
project_path: "/absolute/path/to/project" // Required for tracking
});Step 2: Spawn the worker with Task
typescript
// Parse the result to get the prompt
const { prompt, recommended_model } = JSON.parse(spawnResult);
// Spawn the worker
await Task({
subagent_type: "swarm:worker",
prompt: prompt,
model: recommended_model // Optional: use the auto-selected model
});Common Mistakes
WRONG - files as JSON string:
typescript
files: '["src/auth.ts"]' // DON'T do thisCORRECT - files as array:
typescript
files: ["src/auth.ts", "src/auth.test.ts"] // Do thisWRONG - missing project_path:
typescript
swarm_spawn_subtask({
bead_id: "...",
epic_id: "...",
// No project_path - worker can't initialize tracking!
})CORRECT - include project_path:
typescript
swarm_spawn_subtask({
bead_id: "...",
epic_id: "...",
project_path: "/Users/joel/myproject" // Required!
})Parallel vs Sequential Spawning
Parallel (independent tasks)
Send multiple Task calls in a single message:
typescript
// All in one message - runs in parallel
Task({ subagent_type: "swarm:worker", prompt: prompt1 })
Task({ subagent_type: "swarm:worker", prompt: prompt2 })
Task({ subagent_type: "swarm:worker", prompt: prompt3 })Sequential (dependent tasks)
Await each before spawning next:
typescript
const result1 = await Task({ subagent_type: "swarm:worker", prompt: prompt1 });
// Review result1...
const result2 = await Task({ subagent_type: "swarm:worker", prompt: prompt2 });Story Status Flow
Status transitions should flow:
- Coordinator sets story to when spawning worker
in_progress - Worker completes work and sets to
ready_for_review - Coordinator reviews and sets to or
passedfailed
Workers do NOT set final status - that's the coordinator's job after review.
Skill Loading Guidance
Workers should load skills based on task type:
- Tests or fixes →
testing-patterns - Architecture →
system-design - CLI work →
cli-builder - Coordination →
swarm-coordination