Skip to content
Back to skills

Orchestrating

ASecurity

Master multi-agent orchestration using Claude Code's agent teams and task system. Use when coordinating multiple agents, running parallel code reviews, creating pipeline workflows with dependencies, building self-organizing task queues, or any task benefiting from divide-and-conquer patterns. Routes to specialized sub-skills for team management, tasks, messaging, patterns, backends, and error handling.

  • 14 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added August 31, 2026
ai-agentsjavascriptrustjavashellbashnodeexpressdebuggingrefactoringgit

Works with

  • claude code

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned August 31, 2026

npx -y skills add zircote-plugins/claude-team-orchestration --skill orchestrating --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Orchestrating?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Orchestrating
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/zircote-plugins-orchestrating/badge)](https://www.skillsdirectory.com/skills/zircote-plugins-orchestrating)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: orchestrating
description: Master multi-agent orchestration using Claude Code's agent teams and task system. Use when coordinating multiple agents, running parallel code reviews, creating pipeline workflows with dependencies, building self-organizing task queues, or any task benefiting from divide-and-conquer patterns. Routes to specialized sub-skills for team management, tasks, messaging, patterns, backends, and error handling.
user-invocable: true
argument-hint: "[pattern or question]"
---

# Claude Code Swarm Orchestration

Master multi-agent orchestration using Claude Code's agent teams and task system.

> **Experimental**: Agent teams are disabled by default. Enable with `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` in your [settings.json](https://code.claude.com/docs/en/settings) or environment.

---

## Primitives

| Primitive | What It Is | File Location |
|-----------|-----------|---------------|
| **Agent** | A Claude instance that can use tools. You are an agent. Subagents are agents you spawn. | N/A (process) |
| **Team** | A named group of agents working together. One leader, multiple teammates. | `~/.claude/teams/{name}/config.json` |
| **Teammate** | An agent that joined a team. Has a name, color, inbox. Spawned via Task with `team_name` + `name`. | Listed in team config |
| **Leader** | The agent that created the team. Receives teammate messages, approves plans/shutdowns. | First member in config |
| **Task** | A work item with subject, description, status, owner, and dependencies. | `~/.claude/tasks/{team}/N.json` |
| **Inbox** | JSON file where an agent receives messages from teammates. | `~/.claude/teams/{name}/inboxes/{agent}.json` |
| **Message** | A JSON object sent between agents. Can be text or structured (shutdown_request, idle_notification, etc). | Stored in inbox files |
| **Backend** | How teammates run. Auto-detected: `in-process` (same Node.js, invisible), `tmux` (separate panes, visible), `iterm2` (split panes in iTerm2). See [Spawn Backends](../spawn-backends/SKILL.md). | Auto-detected based on environment |
| **Mode** | Permission mode for spawned agents. Set `mode: "plan"` to require plan approval before the agent acts. See [Plan Approval pattern](../orchestration-patterns/SKILL.md). | Task parameter |
| **Isolation** | Set `isolation: "worktree"` to give an agent an isolated git worktree copy. Cleaned up if no changes; returns worktree path/branch if changes are made. Recommended for agents making code changes. | Task parameter |

### How They Connect

```mermaid
flowchart TB
    subgraph TEAM[TEAM]
        Leader[Leader - you]
        T1[Teammate 1]
        T2[Teammate 2]

        Leader <-->|messages via inbox| T1
        Leader <-->|messages via inbox| T2
        T1 <-.->|can message| T2
    end

    subgraph TASKS[TASK LIST]
        Task1["#1 completed: Research<br/>owner: teammate1"]
        Task2["#2 in_progress: Implement<br/>owner: teammate2"]
        Task3["#3 pending: Test<br/>blocked by #2"]
    end

    T1 --> Task1
    T2 --> Task2
    Task2 -.->|unblocks| Task3
```

### Lifecycle

```mermaid
flowchart LR
    A[1. Create Team] --> B[2. Create Tasks]
    B --> C[3. Spawn Teammates]
    C --> D[4. Work]
    D --> E[5. Coordinate]
    E --> F[6. Shutdown]
    F --> G[7. Cleanup]
```

### Message Flow

```mermaid
sequenceDiagram
    participant L as Leader
    participant T1 as Teammate 1
    participant T2 as Teammate 2
    participant Tasks as Task List

    L->>Tasks: TaskCreate (3 tasks)
    L->>T1: spawn with prompt
    L->>T2: spawn with prompt

    T1->>Tasks: claim task #1
    T2->>Tasks: claim task #2

    T1->>Tasks: complete #1
    T1->>L: SendMessage (findings)

    Note over Tasks: #3 auto-unblocks

    T2->>Tasks: complete #2
    T2->>L: SendMessage (findings)

    L->>T1: SendMessage (shutdown_request)
    T1->>L: SendMessage (shutdown_response, approve)
    L->>T2: SendMessage (shutdown_request)
    T2->>L: SendMessage (shutdown_response, approve)

    L->>L: TeamDelete
```

---

## Sub-Skills Index

| Skill | What It Covers |
|-------|---------------|
| [Team Management](../team-management/SKILL.md) | Create teams, spawn teammates, delegate mode, permissions, shutdown, cleanup |
| [Task System](../task-system/SKILL.md) | TaskCreate, TaskList, TaskGet, TaskUpdate, dependencies, file locking |
| [Agent Types](../agent-types/SKILL.md) | Built-in agents (Bash, Explore, Plan, general-purpose), plugin agents, selection guide |
| [Messaging](../messaging/SKILL.md) | SendMessage (all types), message formats, automatic delivery, direct interaction |
| [Orchestration Patterns](../orchestration-patterns/SKILL.md) | 7 patterns (parallel, pipeline, swarm, research, plan approval, refactoring, RLM) |
| [RLM Pattern](../rlm-pattern/SKILL.md) | Content-aware chunked analysis of large files and directories using RLM pattern |
| [Spawn Backends](../spawn-backends/SKILL.md) | in-process, tmux, iTerm2, teammateMode setting, auto-detection |
| [Error Handling](../error-handling/SKILL.md) | Common errors, hooks (TeammateIdle, TaskCompleted), limitations, debugging |

---

## Quick Reference

### Create Team and Spawn Teammate
```javascript
TeamCreate({ team_name: "my-team", description: "Working on feature X" })
Task({ team_name: "my-team", name: "worker", subagent_type: "general-purpose", prompt: "...", run_in_background: true })
```

### Spawn Subagent (No Team)
```javascript
Task({ subagent_type: "Explore", description: "Find files", prompt: "..." })

// With isolated worktree (for agents making code changes)
Task({ subagent_type: "general-purpose", description: "Apply patch", prompt: "...", isolation: "worktree" })
```

### Message Teammate
```javascript
SendMessage({ to: "worker-1", message: "...", summary: "Brief update" })
```

### Create Task Pipeline
```javascript
TaskCreate({ subject: "Step 1", description: "...", activeForm: "Working on step 1..." })
TaskCreate({ subject: "Step 2", description: "...", activeForm: "Working on step 2..." })
TaskUpdate({ taskId: "2", addBlockedBy: ["1"] })
```

### Spawn with Plan Approval
```javascript
Task({ team_name: "my-team", name: "planner", subagent_type: "general-purpose", prompt: "...", mode: "plan", run_in_background: true })
// Teammate works read-only, sends plan_approval_request, you approve/reject
```

### Shutdown Team
```javascript
SendMessage({ to: "worker-1", message: { type: "shutdown_request", reason: "All done" } })
// Wait for approval...
TeamDelete()
```

---

## Skill Frontmatter Reference

Every skill's `SKILL.md` starts with YAML frontmatter. `name` and `description` are required; all other fields are optional.

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | **Required.** Identifier used to invoke the skill |
| `description` | string | **Required.** Shown in autocomplete and used by Claude to select the skill |
| `argument-hint` | string | Hint shown during autocomplete (e.g. `"[file path or query]"`) |
| `user-invocable` | boolean | When `false`, hides from the `/` menu; skill is background knowledge for Claude only (default: `true`) |
| `disable-model-invocation` | boolean | When `true`, Claude won't auto-load this skill; user must invoke via `/` menu |
| `allowed-tools` | string | Restrict tool access when skill is active (e.g. `"Read, Grep, Glob"`) |
| `model` | string | Model override when skill is active (e.g. `"haiku"`, `"sonnet"`) |
| `context` | string | Set to `"fork"` to run skill in an isolated subagent context |
| `agent` | string | Subagent type to use when `context: fork` (e.g. `"Explore"`, `"general-purpose"`) |
| `hooks` | object | Lifecycle hooks scoped to this skill |

### String Substitutions

Use these placeholders in your skill content to inject runtime values:

| Substitution | Value |
|-------------|-------|
| `$ARGUMENTS` | Full user input passed to the skill |
| `$ARGUMENTS[N]` / `$N` | Nth space-separated argument (1-indexed) |
| `${CLAUDE_SESSION_ID}` | Current Claude session ID |
| `${CLAUDE_SKILL_DIR}` | Absolute path to the directory containing this skill's SKILL.md |

> **Security:** Do not interpolate `$ARGUMENTS` into `` !`command` `` expressions — treat it as untrusted user input. Use `$ARGUMENTS` in skill body text only, never in shell command substitutions.

### Dynamic Context Injection

Add a `context` field in frontmatter with the bang-backtick syntax to execute a shell command and inject its output when the skill loads. For example, setting `context` to bang-backtick `cat ${CLAUDE_SKILL_DIR}/extra-context.md` backtick will read that file into context at load time.

> **Security:** Commands execute locally when the skill loads. Use only safe, read-only commands (e.g., `cat`, `git log`, `date`). Avoid network calls or mutations. Review bang-backtick expressions in third-party plugins before loading.
>
> **Note:** Do not put the bang-backtick syntax inside code blocks in skill content — the skill loader will attempt to execute it even within fenced code blocks.

### Example: Isolated Subagent Skill

```yaml
---
name: my-explorer
description: Explore codebase for patterns
user-invocable: true
argument-hint: "[pattern or question]"
context: fork
agent: Explore
---
```

When `context: fork` is set, Claude spawns a fresh subagent of type `agent` to handle the skill invocation, keeping the main context clean.

The `agent:` type determines the tool access scope of the forked subagent:
- `Explore` — read-only (no Edit, Write, or Bash)
- `Plan` — read-only, thoughtful analysis
- `Bash` — shell commands only
- `general-purpose` — full tool access (*)

Choose the most restrictive agent type that meets the skill's needs.

---

*Based on Claude Code agent teams documentation - Updated 2026-03-18*

Files in this skill

  • SKILL.md9.5 KB
  • evals/evals.json5.8 KB
  • evals/trigger-eval.json1.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.