agent-teams
Original:🇺🇸 English
Translated
Configure and orchestrate Claude Code agent teams (TeamCreate, SendMessage, TaskUpdate workflow). Use when you need multiple agents working in parallel on a complex task, want to coordinate background agents with messaging, or are setting up a lead/teammate architecture with a shared task list. Teams are experimental — enable with --enable-teams flag.
10installs
Added on
NPX Install
npx skill4agent add laurigates/claude-plugins agent-teamsTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Agent Teams
Experimental: Agent teams require theflag and may change between Claude Code versions.--enable-teams
When to Use This Skill
| 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 |
Core Concepts
Team Architecture
Lead Agent (orchestrator)
├── TeamCreate — creates team + shared task list
├── Task tool — spawns teammate agents
├── SendMessage — communicates with teammates
├── TaskUpdate — assigns tasks to teammates
└── Teammates (run in parallel)
├── Read team config from ~/.claude/teams/<name>/config.json
├── TaskList/TaskUpdate — claim and complete tasks
└── SendMessage — report back to leadNative Team Tools
| Tool | Purpose |
|---|---|
| Create team and shared task list directory |
| Clean up team when all work is complete |
| Send DMs, broadcasts, shutdown requests, plan approvals |
| Get output from a background agent |
| Stop a running background agent |
Team Setup Workflow
1. Create the Team
TeamCreate({
team_name: "my-project",
description: "Working on feature X"
})This creates:
- — team config directory
~/.claude/teams/<team-name>/ - — shared task list directory
~/.claude/tasks/<team-name>/
2. Create Initial Tasks
TaskCreate({
team_name: "my-project",
title: "Implement security review",
description: "Audit auth module for vulnerabilities",
status: "pending"
})3. Spawn Teammates
Use the Task tool to spawn each teammate with the team context:
Agent tool with:
subagent_type: "agents-plugin:security-audit"
team_name: "my-project"
name: "security-reviewer"
prompt: "Join team my-project and work on security review task..."4. Assign Tasks
TaskUpdate({
team_name: "my-project",
task_id: "task-1",
owner: "security-reviewer",
status: "in_progress"
})5. Receive Results
Teammates send messages automatically — they are delivered to the lead's inbox between turns. No polling needed.
Task Management
Task States
| State | Meaning |
|---|---|
| Not yet started |
| Assigned and active (one at a time per teammate) |
| Finished successfully |
| Waiting on another task |
Task Priority
Teammates should claim tasks in ID order (lowest first) — earlier tasks often set up context for later ones.
TaskList Usage
Teammates should check after completing each task to find available work:
TaskListTaskList({ team_name: "my-project" })
→ Returns all tasks with status, owner, and blocked-by infoClaim an unassigned task:
TaskUpdate({ team_name: "my-project", task_id: "N", owner: "my-name" })Communication (SendMessage)
Message Types
| Type | Use When |
|---|---|
| Direct message to a specific teammate |
| Critical team-wide announcement (use sparingly — expensive) |
| Ask a teammate to gracefully exit |
| Approve or reject a shutdown request |
| Approve or reject a teammate's plan |
DM Example
SendMessage({
type: "message",
recipient: "security-reviewer", // Use NAME, not agent ID
content: "Please also check the payment module",
summary: "Adding payment module to scope"
})Broadcast (use sparingly)
SendMessage({
type: "broadcast",
content: "Stop all work — critical blocker found in auth module",
summary: "Critical blocker: halt work"
})Broadcasting sends a separate delivery to every teammate. With N teammates, that's N API round-trips. Reserve for genuine team-wide blockers.
Teammate Behavior
Discovering Team Members
Read the team config to find other members:
Read ~/.claude/teams/<team-name>/config.json
→ members array with name, agentId, agentTypeAlways use the name field (not agentId) for in SendMessage.
recipientIdle State
Teammates go idle after every turn — this is normal. Idle ≠ unavailable. Sending a message to an idle teammate wakes them.
Key Teammate Rules
- Mark exactly ONE task at a time
in_progress - Use (not
TaskUpdate) to report task completionSendMessage - System sends idle notifications automatically — no need for status JSON messages
- All communication requires — plain text output is NOT visible to the team lead
SendMessage
Shutdown Procedures
Graceful Shutdown (Lead → Teammates)
SendMessage({
type: "shutdown_request",
recipient: "security-reviewer",
content: "All tasks complete, wrapping up"
})Teammate Approves Shutdown
SendMessage({
type: "shutdown_response",
request_id: "<id from shutdown_request JSON>",
approve: true
})Cleanup (Lead)
After all teammates shut down:
TeamDelete()
→ Removes ~/.claude/teams/<name>/ and ~/.claude/tasks/<name>/TeamDelete fails if teammates are still active.
Common Patterns
Parallel Code Review
TeamCreate: "code-review"
Tasks: security-audit, performance-review, correctness-check
Teammates: security-agent, performance-agent, correctness-agent (all parallel)
Lead: collects results, synthesizes findingsParallel Implementation with Worktrees
TeamCreate: "feature-impl"
Tasks: backend-api, frontend-ui, tests
Teammates: each spawned with isolation: "worktree"
Lead: delegates git push (sub-agents must not push independently in sandbox)Blocked Task Resolution
If a task is blocked on another, set the field in TaskCreate. Teammates check TaskList and skip blocked tasks until the blocking task is completed.
blocked_byTeam Roles
| Role | Behavior | When to Use |
|---|---|---|
| Lead | Orchestrates, assigns tasks, receives results | Always — coordinates the team |
| Teammate | Parallel execution with messaging | Ongoing collaboration, progress reporting |
| Subagent | Focused, isolated, returns single result | Simple bounded tasks, no coordination needed |
Sandbox Considerations
In web sessions ():
CLAUDE_CODE_REMOTE=true- Sub-agents (teammates) may encounter TLS errors on — delegate all push/PR operations to the lead
git push - Each teammate runs in its own process context
- Worktree isolation is recommended for independent filesystem changes
Agentic Optimizations
| Context | Approach |
|---|---|
| Quick parallel review | Spawn 2–4 teammates, broadcast task assignments |
| Large codebase split | Assign directory subsets as separate tasks |
| Long-running work | Background teammates, poll via TaskList |
| Minimize API cost | Prefer |
| Fast shutdown | Send shutdown_request to each teammate, then TeamDelete |
Quick Reference
Workflow Checklist
- with team name and description
TeamCreate - for each work unit
TaskCreate - Spawn teammates via Agent tool with and
team_namename - to assign tasks to teammates (or let teammates self-assign)
TaskUpdate - Receive messages automatically; respond via
SendMessage - to each teammate when done
SendMessage shutdown_request - after all teammates shut down
TeamDelete
Key Paths
| Path | Contents |
|---|---|
| Team members (name, agentId, agentType) |
| Shared task list directory |
Common Mistakes
| Mistake | Correct Approach |
|---|---|
| Using agentId as recipient | Use |
| Sending broadcast for every update | Use |
| Polling for messages | Messages delivered automatically — just wait |
| Sending JSON status messages | Use |
| Sub-agent pushes to remote | Delegate push to lead orchestrator |
| TeamDelete before shutdown | Shutdown all teammates first |
Related Rules
- — agent file structure, model selection, worktree isolation
.claude/rules/agent-development.md - — granular tool permission patterns
.claude/rules/agentic-permissions.md - — web sandbox constraints and push delegation
.claude/rules/sandbox-guidance.md