Best for
- Use when running parallel agents, coordinating with messaging, or setting up a lead/teammate architecture.
laurigates/claude-plugins/agent-patterns-plugin/skills/agent-teams/SKILL.md
Configure Claude Code agent teams (implicit team, SendMessage, TaskUpdate). Use when running parallel agents, coordinating with messaging, or setting up a lead/teammate architecture.
Decision brief
Experimental: Agent teams require CLAUDECODEEXPERIMENTALAGENTTEAMS=1 and may change between Claude Code versions.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/laurigates/claude-plugins --skill "agent-patterns-plugin/skills/agent-teams"Inspect the Agent Skill "agent-teams" from https://github.com/laurigates/claude-plugins/blob/5de06622d8def8c36f7f39d980300aaa15af4357/agent-patterns-plugin/skills/agent-teams/SKILL.md at commit 5de06622d8def8c36f7f39d980300aaa15af4357. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
[ ] CLAUDECODEEXPERIMENTALAGENTTEAMS=1 set (the implicit team exists; no create step)
Review the “When to Use This Skill” section in the pinned source before continuing.
Agent and the related parallel-spawn tools may not be present in a sub-agent's tool surface, even if the parent conversation has them. A sub-agent designed to orchestrate its own team can silently degrade to sequential single-thread execution — same content, 5× longer wall-clock…
The implicit team (2.1.178) needs no create/delete step — these tools operate on the one team the session already has:
Teammates claim tasks in ID order (lowest first) via TaskList + TaskUpdate, and skip blocked tasks until their blocker completes.
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 92/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 53 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Experimental: Agent teams require
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1and may change between Claude Code versions.
BREAKING (Claude Code 2.1.178): The explicit
TeamCreate/TeamDeletetools were removed. Every session now has one implicit team whenCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1is set — there is nothing to create or tear down. Theteam_nameparameter is still accepted but ignored on the tools that took it (e.g.Agent), so older invocations don't error; omit it in new code. Coordination is otherwise unchanged: spawn teammates with theAgenttool, coordinate withSendMessage, and track work withTaskCreate/TaskList/TaskUpdate.
For the worked setup examples, communication snippets, shutdown procedures, the worktree path-resolution recovery routine, and common dispatch patterns, see REFERENCE.md.
| Use agent teams when... | Use subagents instead when... |
|---|---|
| Multiple agents need to work in parallel | Tasks are sequential and interdependent |
| Ongoing communication between agents is needed | One focused task produces one result |
| Background tasks need progress reporting | Agent output feeds directly into next step |
| Complex workflows benefit from task coordination | Simple, bounded, isolated execution |
| Independent changes to the same codebase (with worktrees) | Context sharing is fine and efficient |
Agent and the related parallel-spawn tools may not be present in a
sub-agent's tool surface, even if the parent conversation has them. A
sub-agent designed to orchestrate its own team can silently degrade to sequential
single-thread execution — same content, ~5× longer wall-clock — without surfacing
the failure until its post-completion summary.
| Situation | Recommended pattern |
|---|---|
| Fan-out from the main conversation | Spawn parallel Agent calls directly — full tool surface available |
| Sub-agent orchestrating its own team | Avoid by design: split the work so the main thread does the fan-out |
| Sub-agent must orchestrate a team | Detect tool availability up front; report sequential fallback as a first-class outcome |
Detection contract to brief into a coordinating sub-agent: confirm the
Agent tool is callable; if not, do not silently fall back — report
"Parallel fan-out unavailable in this sandbox; executed sequentially." as the
first line of the summary, then continue sequentially with the same input
contract. Plan top-level orchestration in the main conversation when you can.
The implicit team (2.1.178) needs no create/delete step — these tools operate on the one team the session already has:
| Tool | Purpose |
|---|---|
Agent | Spawn a teammate (give it a name; team_name is accepted but ignored) |
SendMessage | Send DMs, broadcasts, shutdown requests, plan approvals |
TaskCreate / TaskList / TaskUpdate | Create, discover, and assign/advance shared tasks |
TaskOutput | Get output from a background agent |
TaskStop | Stop a running background agent |
The setup sequence — TaskCreate → spawn teammates via the Agent tool (with a
name) → TaskUpdate to assign → receive results automatically — is shown with
full code in REFERENCE.md → Team setup workflow.
Teammate messages are delivered to the lead's inbox between turns; no polling needed.
| State | Meaning |
|---|---|
pending | Not yet started |
in_progress | Assigned and active (one at a time per teammate) |
completed | Finished successfully |
blocked | Waiting on another task (blocked_by field) |
Teammates claim tasks in ID order (lowest first) via TaskList +
TaskUpdate, and skip blocked tasks until their blocker completes.
| Type | Use When |
|---|---|
message | Direct message to a specific teammate (recipient = name, not agentId) |
broadcast | Critical team-wide announcement (N teammates = N round-trips — use sparingly) |
shutdown_request / shutdown_response | Graceful teammate exit handshake |
plan_approval_response | Approve or reject a teammate's plan |
DM, broadcast, and discovery (Read ~/.claude/teams/<name>/config.json →
members) examples are in
REFERENCE.md → Communication.
in_progress at a time.TaskUpdate (not SendMessage) to report task completion.SendMessage — plain text output is NOT visible to the lead.recipient.Before drafting the PRP and launching agents, a 30-second sweep prevents multi-edit renaming work after agents return:
| Check | Command | Why |
|---|---|---|
| Next ADR/PRD/PRP sequence number | ls docs/blueprint/adrs/ | sort -V | tail -1 | Prevents numbering collisions in parallel doc writes |
| Filename conflicts | git ls-files | grep <filename> | Scope tables can't guard against a stale mental model of the tree |
| Hardware pin budget (embedded) | Read pin_config.h or equivalent | Prevents pin assignments overlapping across Phase 1 agents |
Include the out-of-scope discovery protocol in every agent's prompt when that
agent has an exclusive write scope — it prevents the "investigate out of scope →
exhaust budget → truncated summary" failure mode. Copy the verbatim block from
REFERENCE.md → Out-of-scope discovery protocol:
the agent stops immediately on an out-of-scope dependency, lists it under an
Out-of-scope dependencies summary section, and exits for the lead to triage.
Worktree-isolated agents can have Edit/Write silently resolve relative paths
against the parent repo instead of their worktree (upstream bug
#1091), landing
commits on the wrong branch with no immediate signal. Harden every
worktree-isolated prompt with the absolute-path preamble, run the lead
post-flight check (git diff origin/main..HEAD + git status --porcelain from
the parent), and use the cherry-pick + rebase recovery — all in
REFERENCE.md → Worktree path resolution.
See also .claude/rules/agent-coworker-detection.md.
SendMessage-resume of a completed worktree-isolated agent (Agent with isolation: "worktree") loses worktree isolation — the resumed run executes in the orchestrator's main checkout, not the worktree. For parallel file-mutating work, re-dispatch a fresh isolation: "worktree" agent instead of resuming; reserve SendMessage-resume for read-only / single-checkout continuations. See parallel-agent-dispatch → "Resuming agents: SendMessage loses worktree isolation" (issue #1546).
In web sessions (CLAUDE_CODE_REMOTE=true):
git push — delegate all push/PR operations to the lead.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 set (the implicit team exists; no create step)TaskCreate for each work unitAgent tool with a name (no team_name needed)TaskUpdate to assign tasks (or let teammates self-assign)SendMessageSendMessage shutdown_request to each teammate when done (no TeamDelete)| Path | Contents |
|---|---|
~/.claude/teams/ | Implicit-team state (members: name, agentId, agentType) |
~/.claude/tasks/ | Shared task list state |
Address teammates by the name you gave them at spawn — that is the reliable
handle, independent of any on-disk layout.
| Mistake | Correct Approach |
|---|---|
| Using agentId as recipient | Use the name given at spawn |
Calling the removed TeamCreate/TeamDelete | The team is implicit (2.1.178); spawn with Agent, shut down with shutdown_request |
Passing team_name and expecting routing | It is accepted but ignored — there is one implicit team |
| Sending broadcast for every update | Use message for single-recipient comms |
| Polling for messages | Messages delivered automatically — just wait |
| Sending JSON status messages | Use TaskUpdate for status, plain text for messages |
| Sub-agent pushes to remote | Delegate push to lead orchestrator |
parallel-agent-dispatch — worktree preflight, scope budgets, and the Return Contract every teammate must emit on exit. Team dispatches are a superset of plain parallel fan-out; follow both..claude/rules/agent-development.md — agent file structure, model selection, worktree isolation.claude/rules/agentic-permissions.md — granular tool permission patterns.claude/rules/sandbox-guidance.md — web sandbox constraints and push delegationFrequently asked questions
Experimental: Agent teams require CLAUDECODEEXPERIMENTALAGENTTEAMS=1 and may change between Claude Code versions.
The source record exposes this install command: npx skills add https://github.com/laurigates/claude-plugins --skill "agent-patterns-plugin/skills/agent-teams". Inspect the command and pinned source before running it.
The pinned source record declares support for: claude code.
Alternatives
vasilyu1983/AI-Agents-public
Coordinates multi-agent execution across subagents, teams, and workflows. Use when planning dependency-aware fan-out, verifier passes, runtime selection, or Loop Engineering.
Yeachan-Heo/oh-my-claudecode
N coordinated agents on shared task list using Claude Code implicit agent teams
upex-galaxy/agentic-qa-boilerplate
Acts as a QA Lead / QA Architect reviewing a pull request's test-automation work against this repo's KATA doctrine (or the target repo's own doctrine, if it has one) and general QA best practices — grounding every finding in a concrete doctrine citation or code location, never a guess. Use whenever the user wants to review, audit, or give feedback on a colleague's or a teammate's PR, whether it lives in THIS repo or an external repo the user points at (owner/repo#PR via gh). Triggers on: revisa
K-Dense-AI/scientific-agent-skills
Medicinal chemistry filters for compound triage. Apply drug-likeness rules (Lipinski, Veber, CNS), structural alert catalogs (PAINS, NIBR, ChEMBL), complexity metrics, and the medchem query language for library filtering.