{"id":51251438,"url":"https://github.com/heurema/teams-field-guide","last_synced_at":"2026-06-29T07:02:09.682Z","repository":{"id":340347170,"uuid":"1165641521","full_name":"heurema/teams-field-guide","owner":"heurema","description":"Claude Code Agent Teams — Field Guide. Bugs, workarounds, orchestration patterns, ecosystem.","archived":false,"fork":false,"pushed_at":"2026-03-25T13:40:53.000Z","size":83,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-26T16:42:42.742Z","etag":null,"topics":["ai-agent","anthropic","claude","claude-code","guide","multi-agent","subagents"],"latest_commit_sha":null,"homepage":"https://skill7.dev","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heurema.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-24T11:39:21.000Z","updated_at":"2026-03-25T13:40:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/heurema/teams-field-guide","commit_stats":null,"previous_names":["real-ai-engineering/teams-field-guide","heurema/teams-field-guide"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/heurema/teams-field-guide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heurema%2Fteams-field-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heurema%2Fteams-field-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heurema%2Fteams-field-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heurema%2Fteams-field-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heurema","download_url":"https://codeload.github.com/heurema/teams-field-guide/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heurema%2Fteams-field-guide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34916411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","anthropic","claude","claude-code","guide","multi-agent","subagents"],"created_at":"2026-06-29T07:02:07.196Z","updated_at":"2026-06-29T07:02:09.676Z","avatar_url":"https://github.com/heurema.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"```\n   __                                  _____      __    __                  _     __\n  / /____  ____ _____ ___  _____      / __(_)__  / /___/ /     ____ ___  __(_)___/ /__\n / __/ _ \\/ __ `/ __ `__ \\/ ___/_____/ /_/ / _ \\/ / __  /_____/ __ `/ / / / / __  / _ \\\n/ /_/  __/ /_/ / / / / / (__  )_____/ __/ /  __/ / /_/ /_____/ /_/ / /_/ / / /_/ /  __/\n\\__/\\___/\\__,_/_/ /_/ /_/____/     /_/ /_/\\___/_/\\__,_/      \\__, /\\__,_/_/\\__,_/\\___/\n                                                            /____/\n```\n\n**Production reference for Claude Code multi-agent systems.**\n\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n\u003e Subagents, Agent Teams, configuration schemas, known bugs, orchestration patterns, and cost optimization. For multi-model teams, see [arbiter](https://github.com/heurema/arbiter).\n\n---\n\n## Install as Claude Code Skill\n\n**One-liner:**\n\n```bash\ngit clone https://github.com/Real-AI-Engineering/teams-field-guide.git ~/.claude/skills/teams-field-guide \u0026\u0026 ln -s ~/.claude/skills/teams-field-guide/skills/teams-advisor ~/.claude/skills/teams-advisor\n```\n\n**Verify:** restart Claude Code, then ask `\"which agent system should I use?\"` — the `teams-advisor` skill should activate and walk you through the decision tree.\n\n**Update:**\n\n```bash\ncd ~/.claude/skills/teams-field-guide \u0026\u0026 git pull\n```\n\n**Uninstall:**\n\n```bash\nrm ~/.claude/skills/teams-advisor \u0026\u0026 rm -rf ~/.claude/skills/teams-field-guide\n```\n\nThe skill activates automatically on queries about agent teams, subagents, multi-agent patterns, team bugs, or orchestration.\n\n---\n\n## Table of Contents\n\n1. [Requirements \u0026 Version Support](#1-requirements--version-support)\n2. [TL;DR — Which System to Use](#2-tldr--which-system-to-use)\n3. [Two Systems Compared](#3-two-systems-compared)\n4. [Custom Agents Reference](#4-custom-agents-reference)\n5. [Agent Teams Setup](#5-agent-teams-setup)\n6. [Per-Agent Customization Matrix](#6-per-agent-customization-matrix)\n7. [Orchestration Patterns](#7-orchestration-patterns)\n8. [Known Limitations \u0026 Workarounds](#8-known-limitations--workarounds)\n9. [Experimental Features](#9-experimental-features)\n10. [Cost Optimization](#10-cost-optimization)\n11. [Case Studies](#11-case-studies)\n12. [Ecosystem](#12-ecosystem)\n13. [Contributing](#13-contributing)\n14. [Sources](#14-sources)\n15. [Changelog](#15-changelog)\n\n---\n\n## 1. Requirements \u0026 Version Support\n\n**Minimum version:** Claude Code v2.1.45 for full custom agent support (`memory:`, `TeammateIdle`/`TaskCompleted` hooks, `Task(agent_type)` syntax).\n\n**Agent Teams (experimental):** Requires the environment variable `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.\n\n### Version Compatibility Matrix\n\n| Version | Multi-Agent Changes |\n|---------|---------------------|\n| v2.1.33 | Fixed tmux teammate messaging; fixed false \"not available on plan\" warning |\n| v2.1.41 | Guard against launching Claude inside Claude |\n| v2.1.43 | Fixed wrong model identifier for Bedrock/Vertex/Foundry |\n| v2.1.45 | `TeammateIdle`/`TaskCompleted` hooks; `Task(agent_type)` syntax; `memory` field in agent frontmatter |\n| v2.1.47 | Fixed `model` in `.claude/agents/` being ignored for teammates; fixed agents not discovered from worktrees; `last_assistant_message` in Stop/SubagentStop hooks |\n| v2.1.49 | `--worktree`/`-w` CLI flag; `isolation: worktree`; `background: true`; `claude agents` CLI command; `ConfigChange` hook |\n| v2.1.50 | `WorktreeCreate`/`WorktreeRemove` hooks; memory leak fix for completed teammate tasks |\n\n---\n\n## 2. TL;DR — Which System to Use\n\n```\nDo agents need to talk directly to each other?\n    |\n    +--\u003e YES:  Agent Teams (TeamCreate + SendMessage)\n    |          Experimental. Has known bugs. Use only when\n    |          peer-to-peer messaging is genuinely required.\n    |\n    +--\u003e NO: Do you need per-agent tools, skills, or hooks?\n                |\n                +--\u003e YES:  Custom Agents + parallel Task() calls\n                |          Full configuration, stable, no Teams bugs.\n                |          Recommended for most production use cases.\n                |\n                +--\u003e NO:   Parallel Task() calls (general-purpose)\n                           Simplest and cheapest option.\n                           All agents use lead's configuration.\n```\n\n**Recommendation:** The hybrid approach — define agents in `.claude/agents/` and launch them via parallel `Task()` calls — gives you full per-agent configuration (tools, model, skills, hooks, memory) without any of the Agent Teams instability. Use Agent Teams only when agents genuinely must exchange messages with each other.\n\n---\n\n## 3. Two Systems Compared\n\n| | **Subagents (Parallel Tasks)** | **Agent Teams** |\n|---|---|---|\n| **Status** | Stable, production-ready | Experimental (`CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`) |\n| **Communication** | Worker returns result to parent only | Mesh: any agent can message any other directly |\n| **Coordination** | Parent manages all sequencing | Shared task list; agents self-organize |\n| **Per-agent config** | Full: tools, model, hooks, memory, skills, permissions | Minimal: spawn prompt only (most config broken or ignored) |\n| **Cost** | Lower — summary returned to parent | ~3-7x higher — each teammate holds full context window |\n| **Best for** | Focused delegation, independent parallel work, isolation | Parallel research, competing hypotheses, peer coordination |\n\n---\n\n## 4. Custom Agents Reference\n\nCustom agents are defined as Markdown files with YAML frontmatter. The file body is the agent's system prompt. Store them in `.claude/agents/` (project-scoped) or `~/.claude/agents/` (user-scoped).\n\n### Frontmatter Schema\n\n| Field | Required | Type | Default | Description |\n|-------|----------|------|---------|-------------|\n| `name` | Yes | string | — | Unique identifier. Use lowercase letters and hyphens only. |\n| `description` | Yes | string | — | Tells Claude when to auto-delegate. Write \"Use when...\" with concrete examples. |\n| `tools` | No | string or array | inherit all | Allowlist of permitted tools. Use `Task(agent1, agent2)` to restrict which subagents this agent can spawn. |\n| `disallowedTools` | No | string or array | none | Denylist. Removed from the inherited tool set. |\n| `model` | No | string | inherit | `sonnet`, `opus`, `haiku`, or `inherit`. |\n| `permissionMode` | No | string | inherited | `default`, `acceptEdits`, `dontAsk`, `bypassPermissions`, or `plan`. |\n| `maxTurns` | No | integer | unlimited | Maximum agentic turns before the agent stops. |\n| `skills` | No | list | none | Skills loaded at agent startup. Listed skills are fully injected (not lazy). Unlisted skills are invisible to the agent. |\n| `mcpServers` | No | list | inherited | MCP servers available to this agent. String reference or inline `{name: config}` object. |\n| `hooks` | No | object | none | Lifecycle hooks scoped to this agent. Note: only 6 of the 16 hook types work in agent frontmatter: `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PostToolUseFailure`, `Stop`, `SubagentStop` (see [Experimental Features](#9-experimental-features)). |\n| `memory` | No | string | none | `user`, `project`, or `local`. Enables persistent cross-session memory. First 200 lines of `MEMORY.md` are auto-injected. |\n| `background` | No | boolean | false | Always run as a background task. Added v2.1.49. |\n| `isolation` | No | string | none | `worktree` — run in an isolated git worktree with auto-cleanup. Added v2.1.49. |\n| `color` | No | string | — | UI color in the terminal: `green`, `cyan`, `red`, `blue`, `yellow`, `magenta`. |\n\n### Example Agent Definition\n\n```yaml\n---\nname: security-reviewer\ndescription: |\n  Use this agent when code needs security review, vulnerability assessment,\n  or OWASP compliance checking.\n  \u003cexample\u003e\n  user: \"Check the auth module for vulnerabilities\"\n  assistant: \"I'll use security-reviewer agent to audit src/auth/\"\n  \u003c/example\u003e\ntools: Read, Glob, Grep, Bash\ndisallowedTools: Write, Edit\nmodel: sonnet\npermissionMode: plan\nmaxTurns: 30\nskills:\n  - api-conventions\nmemory: project\ncolor: red\n---\n\nYou are a senior security engineer. Focus on OWASP Top 10, injection\nvulnerabilities, authentication flaws, and secrets in code. Report\nfindings with severity (critical/high/medium/low) and a specific fix.\n```\n\n### Context Rules\n\nAgents are isolated by design. What an agent does and does not see:\n\n- **Receives:** its own system prompt (file body) + basic environment info + `CLAUDE.md` from the project\n- **Does NOT receive:** parent conversation history\n- **Does NOT receive:** parent's Claude Code system prompt\n- **Does NOT receive:** skills loaded by the parent (must be listed in the agent's own `skills:` field)\n- **Loads fresh:** project's `CLAUDE.md` and git status\n\n### Tools Field Syntax\n\n```yaml\n# Allowlist — agent can only use these tools\ntools: Read, Glob, Grep, Bash\n\n# Restrict which subagents this agent can spawn\ntools: Task(worker, researcher), Read, Bash\n\n# If Task is omitted entirely, the agent cannot spawn any subagents\n```\n\nAvailable tool names: `Read`, `Write`, `Edit`, `Bash`, `Glob`, `Grep`, `Task`, `WebFetch`, `WebSearch`, `NotebookRead`, `NotebookEdit`, `LS`, `KillShell`, `BashOutput`, `TodoWrite`, plus any MCP tool names.\n\n**Critical:** use `tools:` not `allowed-tools:`. The wrong field name silently grants ALL tools. See [Known Limitations](#8-known-limitations--workarounds).\n\n### Memory Field\n\n```yaml\nmemory: user     # ~/.claude/agent-memory/\u003cname\u003e/         (shared across all projects)\nmemory: project  # .claude/agent-memory/\u003cname\u003e/           (git-tracked, project-specific)\nmemory: local    # .claude/agent-memory-local/\u003cname\u003e/     (gitignored, local only)\n```\n\nWhen a memory location is configured, the first 200 lines of `MEMORY.md` in that directory are automatically injected into the agent's context. `Read`, `Write`, and `Edit` are automatically enabled for the memory path.\n\n### Discovery Priority\n\n| Location | Scope | Priority |\n|----------|-------|----------|\n| `--agents` CLI JSON flag | Current session only | 1 (highest) |\n| `.claude/agents/` | Project (git-committable) | 2 |\n| `~/.claude/agents/` | User (all projects) | 3 |\n| Plugin `agents/` directory | Per installed plugin | 4 (lowest) |\n\n### CLI Ephemeral Agents\n\nAgents can be defined inline without a file, useful for one-off sessions:\n\n```bash\nclaude --agents '{\n  \"reviewer\": {\n    \"description\": \"Reviews code for security vulnerabilities\",\n    \"prompt\": \"You are a security expert...\",\n    \"tools\": [\"Read\", \"Grep\", \"Glob\"],\n    \"model\": \"opus\",\n    \"maxTurns\": 30\n  }\n}'\n```\n\n### Managing Agents\n\n```bash\nclaude agents    # List all discovered agents from CLI\n/agents          # Interactive TUI: view, create, edit, delete agent files\n```\n\n---\n\n## 5. Agent Teams Setup\n\nAgent Teams enable mesh communication between agents — each teammate can send messages directly to any other. This comes at significant cost and stability tradeoffs.\n\n### Activation\n\n```json\n// .claude/settings.json or ~/.claude/settings.json\n{\n  \"env\": {\n    \"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS\": \"1\"\n  },\n  \"teammateMode\": \"auto\"\n}\n```\n\n`teammateMode` options: `auto` (Claude picks the best available display), `tmux`, `in-process`.\n\n### The 7 Core Tools\n\n| Tool | Purpose |\n|------|---------|\n| `TeamCreate` | Create a named team; writes `~/.claude/teams/{name}/config.json` |\n| `TaskCreate` | Add a task to the team's shared task list |\n| `TaskUpdate` | Update task status, owner, or dependencies |\n| `TaskList` | List all tasks (used by workers to claim available work) |\n| `Task(team_name=)` | Spawn a teammate into the named team |\n| `SendMessage` | Send a message to one or all teammates |\n| `TeamDelete` | Tear down the team and clean up resources |\n\n### SendMessage Types\n\n| Type | Behavior |\n|------|---------|\n| `message` | Targeted direct message to one named teammate |\n| `broadcast` | Sent to all active teammates simultaneously (costs N times as much) |\n| `shutdown_request` / `shutdown_response` | Graceful coordinated teardown |\n| `plan_approval_response` | Approve or reject a teammate's proposed plan |\n\n### Display Modes\n\n| Mode | Navigation Keys | Requirements |\n|------|----------------|-------------|\n| `in-process` | Shift+Up/Down (switch agents), Enter (select), Esc (back), Ctrl+T (team view) | Any terminal |\n| `tmux` | Standard tmux pane navigation | tmux installed |\n| `iterm2` | Split pane navigation | iTerm2 + `it2` CLI tool |\n\n**Not supported:** VS Code terminal, Windows Terminal, Ghostty, Zellij, WezTerm.\n\n### Team-Specific Hooks\n\n| Hook Event | Fires When | Blocking? |\n|-----------|-----------|-----------|\n| `TeammateIdle` | A teammate signals it is going idle | Yes — exit code 2 keeps the teammate working |\n| `TaskCompleted` | A task is marked as done in the shared list | Yes — exit code 2 keeps the task open |\n| `SubagentStart` | A subagent spawns | No |\n| `SubagentStop` | A subagent finishes | Yes |\n\n### Environment Variables Set on Teammates\n\nWhen a teammate is spawned, these environment variables are set in its process:\n\n```\nCLAUDE_CODE_TEAM_NAME           # Name of the team this agent belongs to\nCLAUDE_CODE_AGENT_ID            # Unique agent identifier (name@team-name format)\nCLAUDE_CODE_AGENT_NAME          # Human-readable agent name\nCLAUDE_CODE_AGENT_TYPE          # Agent type (e.g., \"general-purpose\")\nCLAUDE_CODE_PLAN_MODE_REQUIRED  # Whether plan mode is enforced\nCLAUDE_CODE_PARENT_SESSION_ID   # Session ID of the lead agent\n```\n\n### File System Layout\n\n```\n~/.claude/\n├── teams/{team-name}/\n│   ├── config.json           # members[], leadAgentId, leadSessionId\n│   └── inboxes/              # Per-agent message queues\n├── tasks/{team-name}/\n│   └── {id}.json             # Individual task files\n└── agents/\n    └── *.md                  # Custom agent definitions\n```\n\n---\n\n## 6. Per-Agent Customization Matrix\n\n| Capability | Subagents (Custom Agents + Tasks) | Agent Teams |\n|-----------|----------------------------------|------------|\n| Custom system prompt | Via `.claude/agents/*.md` body | Spawn prompt (natural language only) |\n| Tools allowlist | `tools:` field | ⚠️ Broken — agents lose tools when spawned with `team_name` (#25608) |\n| Tools denylist | `disallowedTools:` field | ⚠️ Broken |\n| Model selection | `model:` field | `model=` parameter on Task (⚠️ unreliable for in-process teammates, fixed in v2.1.47 for `.claude/agents/`) |\n| Skills | `skills:` field (explicit list) | Inherited from project (no per-agent control) |\n| MCP servers | `mcpServers:` field | Inherited (no per-agent control) |\n| Hooks | `hooks:` in frontmatter | ⚠️ Broken — session ID mismatch prevents firing (#27655) |\n| Persistent memory | `memory: user/project/local` | Not supported |\n| Permission mode | `permissionMode:` field | Post-spawn only (workaround required) |\n| Max turns | `maxTurns:` field | Not supported |\n| Git isolation | `isolation: worktree` | Not supported |\n| Background mode | `background: true` | Not supported |\n\n---\n\n## 7. Orchestration Patterns\n\n### Pattern 1: Parallel Specialists\n\nRun multiple independent reviewers simultaneously, each with a different lens. Results are returned to the lead for synthesis.\n\n**When to use:** Code review, multi-angle analysis, parallel audits.\n\n```python\n# Launch all reviewers simultaneously (run_in_background=True)\nTask(subagent_type=\"security-reviewer\", model=\"sonnet\", run_in_background=True,\n     prompt=\"Review src/auth/ for OWASP Top 10 vulnerabilities\")\n\nTask(subagent_type=\"perf-analyst\", model=\"sonnet\", run_in_background=True,\n     prompt=\"Profile src/api/ for latency and memory issues\")\n\nTask(subagent_type=\"test-writer\", model=\"sonnet\", run_in_background=True,\n     prompt=\"Write unit tests for src/auth/ targeting edge cases\")\n\n# Wait for all three, then synthesize findings\n```\n\n### Pattern 2: Dependency Wave\n\nExecute tasks in parallel batches where each batch depends on the previous one completing. Avoids sequential bottlenecks while respecting true dependencies.\n\n**When to use:** Build pipelines, staged migrations, multi-phase feature development.\n\n```python\n# Wave 1 — independent modules (parallel)\nTask(model=\"sonnet\", run_in_background=True, prompt=\"Build module A\")\nTask(model=\"sonnet\", run_in_background=True, prompt=\"Build module B\")\nTask(model=\"sonnet\", run_in_background=True, prompt=\"Build module C\")\n# Wait for all wave 1 tasks\n\n# Wave 2 — depends on wave 1 output (parallel)\nTask(model=\"sonnet\", run_in_background=True, prompt=\"Integrate module A and B\")\nTask(model=\"opus\",   run_in_background=True, prompt=\"Architecture review of all modules\")\n```\n\n### Pattern 3: Self-Organizing Swarm\n\nWorkers poll a shared task list and atomically claim unclaimed work. No central dispatcher needed — the task list is the coordination mechanism.\n\n**When to use:** Large backlogs of independent tasks, processing queues, workloads of unknown size.\n\n```python\nTeamCreate(team_name=\"file-processor\")\n\n# Add many tasks to the shared list\nfor file in file_list:\n    TaskCreate(subject=f\"Process {file}\", description=f\"Extract and transform {file}\")\n\n# Spawn workers that self-direct\nfor i in range(4):\n    Task(team_name=\"file-processor\", model=\"sonnet\",\n         prompt=\"Poll TaskList for unclaimed tasks. Claim one, complete it, repeat until no tasks remain.\")\n```\n\nNote: Use [safe-task-claim](https://github.com/Osso/safe-task-claim) to prevent race conditions when multiple workers claim the same task.\n\n### Pattern 4: Competing Hypotheses\n\nMultiple agents simultaneously test different approaches to the same problem. The lead evaluates results and picks the winner (or synthesizes the best elements from each).\n\n**When to use:** Uncertain implementation approach, algorithm selection, architectural trade-offs.\n\n```python\nTask(model=\"sonnet\", run_in_background=True,\n     prompt=\"Implement the caching layer using Redis. Write full implementation + benchmarks.\")\n\nTask(model=\"sonnet\", run_in_background=True,\n     prompt=\"Implement the caching layer using in-memory LRU. Write full implementation + benchmarks.\")\n\nTask(model=\"sonnet\", run_in_background=True,\n     prompt=\"Implement the caching layer using a CDN-first approach. Write full implementation + benchmarks.\")\n\n# Lead compares benchmark results and chooses\n```\n\n### Pattern 5: Council / Debate\n\nAgents independently propose approaches, then the lead (or an opus agent) synthesizes them into a consensus design. Avoids anchoring bias from a single proposal.\n\n**When to use:** Architecture decisions, API design, major refactors.\n\n```python\n# Proposal phase — parallel\nTask(model=\"sonnet\", run_in_background=True,\n     prompt=\"Propose a database schema for the orders system. Justify trade-offs.\")\nTask(model=\"sonnet\", run_in_background=True,\n     prompt=\"Propose a database schema for the orders system from a read-performance perspective.\")\nTask(model=\"sonnet\", run_in_background=True,\n     prompt=\"Propose a database schema for the orders system prioritizing write throughput.\")\n\n# Synthesis phase — single opus agent reviews all proposals\nTask(model=\"opus\", prompt=\"Here are three schema proposals: [A] [B] [C]. Synthesize the best design.\")\n```\n\n### Pattern 6: Plan-First\n\nGenerate a detailed plan before spawning any implementation agents. Planning costs ~10K tokens; a swarm costs ~800K tokens. Catching a bad plan early is far cheaper than discarding work.\n\n**When to use:** Any non-trivial feature; whenever scope is ambiguous.\n\n```python\n# Phase 1 — plan (cheap, ~10K tokens)\nplan = Task(model=\"opus\",\n            prompt=\"Create a detailed step-by-step implementation plan for: [feature description]. \"\n                   \"Output JSON: {steps: [{id, title, files_affected, dependencies}]}\")\n\n# Phase 2 — implement in parallel (expensive, ~800K tokens)\nfor step in plan.steps:\n    Task(model=\"sonnet\", run_in_background=True,\n         isolation=\"worktree\",\n         prompt=f\"Implement step {step.id}: {step.title}. Files: {step.files_affected}\")\n```\n\n### Pattern 7: Adversarial Review Loop\n\nOne agent implements, another critiques. The implementer revises based on critique. Cycle until the critic approves or the loop limit is reached.\n\n**When to use:** High-stakes code, security-critical paths, complex algorithms.\n\n```python\nrevision = 0\napproved = False\n\nwhile not approved and revision \u003c 3:\n    Task(model=\"sonnet\", prompt=f\"Implement the payment processor. Previous critique: {critique}\")\n    critique = Task(model=\"sonnet\", subagent_type=\"security-reviewer\",\n                    prompt=\"Review this implementation. Output: APPROVED or CHANGES_NEEDED + list of issues.\")\n    approved = \"APPROVED\" in critique\n    revision += 1\n```\n\n### Pattern 8: Codebase-Mediated Coordination\n\nAgents coordinate through shared code and documentation rather than direct messages. File ownership boundaries are defined in `CLAUDE.md`. Each agent owns specific directories; they read shared contracts (interfaces, schemas) but never touch each other's files.\n\n**When to use:** Large parallel builds, 5+ agent teams, any scenario where peer messaging is error-prone.\n\n```\n# In CLAUDE.md (the shared contract every agent reads):\n# Module Ownership:\n# - Agent \"api-builder\": owns src/api/ only\n# - Agent \"frontend-dev\": owns src/ui/ only\n# - Agent \"db-layer\": owns src/db/ only\n# - Shared interfaces in src/contracts/ — read by all, written by none\n```\n\nNo `SendMessage` calls needed. Each agent reads `CLAUDE.md`, knows its boundaries, and coordinates through the git repository.\n\n### Pattern 9: Two-Layer Agent Definitions\n\nSeparate the persistent HOW (agent identity, skills, tools — defined in `.claude/agents/*.md`) from the ephemeral WHAT (task-specific instructions passed at spawn time). This avoids duplicating configuration while enabling reuse across many different tasks.\n\n**When to use:** Reusable specialist agents deployed across many sessions or projects.\n\n```python\n# .claude/agents/backend-engineer.md defines:\n#   model: sonnet, tools: [Read, Write, Edit, Bash, Grep],\n#   skills: [api-conventions, db-patterns], memory: project\n#   System prompt: \"You are a backend engineer specializing in Go...\"\n\n# At spawn time, pass only WHAT (task-specific)\nTask(subagent_type=\"backend-engineer\", run_in_background=True,\n     prompt=\"Implement the order processing endpoint per the spec in docs/orders-api.md\")\n\nTask(subagent_type=\"backend-engineer\", run_in_background=True,\n     prompt=\"Refactor the payment service to use the new retry library\")\n```\n\n---\n\n## 8. Known Limitations \u0026 Workarounds\n\nLast verified: 2026-02-23. Check linked issues for current status.\n\n| Limitation | Issue | Workaround |\n|-----------|-------|-----------|\n| `model=` silently ignored for in-process teammates (all run at lead's model) | [#27038](https://github.com/anthropics/claude-code/issues/27038) | Fixed in v2.1.47 for `.claude/agents/` — update to latest |\n| Custom agents lose their `tools` list when spawned with `team_name` | [#25608](https://github.com/anthropics/claude-code/issues/25608) | Use custom agents + parallel `Task()` calls instead of Teams |\n| Agent frontmatter hooks don't fire in teams (session ID mismatch) | [#27655](https://github.com/anthropics/claude-code/issues/27655) | Use custom agents + parallel `Task()` calls instead of Teams |\n| `allowed-tools:` (wrong field name) silently grants ALL tools | [#27099](https://github.com/anthropics/claude-code/issues/27099) | Use `tools:` (no `allowed-` prefix) |\n| `/resume` does not restore teammates | [#26323](https://github.com/anthropics/claude-code/issues/26323) | No workaround; avoid using `/resume` in team sessions |\n| Zombie teammates remain after `TeamDelete` | [#26955](https://github.com/anthropics/claude-code/issues/26955) | Kill processes manually; claude-code-teams-mcp has `force_kill_teammate` |\n| Plan mode auto-approves before lead reviews | [#27265](https://github.com/anthropics/claude-code/issues/27265) | Do not use `plan_approval_response` until fixed |\n| Bedrock: 400 errors from normalized model ID | [#25193](https://github.com/anthropics/claude-code/issues/25193) | Fixed in v2.1.43 — update |\n| Vertex AI: agent teams fail to launch | [#27729](https://github.com/anthropics/claude-code/issues/27729) | No workaround yet; use standard API |\n| `PreToolUse` hooks not inherited by subagents (security gap) | [#21460](https://github.com/anthropics/claude-code/issues/21460) | Define hooks in agent frontmatter; validate in agent's own system prompt |\n| Auto memory race condition with concurrent teams | [#24130](https://github.com/anthropics/claude-code/issues/24130) | Use `memory: local` per agent; avoid shared memory in concurrent teams |\n| `CLAUDE_CONFIG_DIR` not passed to teammate processes | [#24989](https://github.com/anthropics/claude-code/issues/24989) | Set in global environment; avoid relying on custom config paths in teams |\n| `CLAUDE_PROJECT_DIR` empty in subagent environments | [#26429](https://github.com/anthropics/claude-code/issues/26429) | Pass project path explicitly in agent prompt |\n| Deferred MCP tools unavailable in custom agents | [#25200](https://github.com/anthropics/claude-code/issues/25200) | Use non-deferred (eager) MCP tool configuration |\n| `SubagentStart`/`SubagentStop` hooks have unreliable delivery | [#27153](https://github.com/anthropics/claude-code/issues/27153) | Do not rely on these hooks for critical logic |\n| `--agent` key in `settings.json` causes `Task` tool to disappear in Teams | [#13533](https://github.com/anthropics/claude-code/issues/13533) | Rename key to `_agent` temporarily to disable |\n| ~37 agent limit: silently stops loading after ~37 agents, no error | [#18993](https://github.com/anthropics/claude-code/issues/18993) | Keep total agent definitions below 37; consolidate with broader descriptions |\n\n### Additional Known Gotchas\n\nThese are behavioral quirks that are not bugs per se but will trip you up:\n\n- **Delegate Mode first in Agent Teams.** Press Shift+Tab immediately after spawning teammates. If you do not, the lead agent will claim implementation tasks from the shared list before teammates can.\n- **File ownership is the #1 rule.** Two agents editing the same file will silently overwrite each other's changes. Define explicit directory boundaries per agent in `CLAUDE.md`.\n- **Plan mode is irreversible per teammate session.** Once a teammate is in plan mode, it cannot switch to execution mode. Spawn a new teammate for implementation.\n- **Agents spawn sequentially.** Each agent takes 6-7 seconds to initialize. A team of 5 agents takes ~35 seconds before all are active.\n- **Teammates do not see each other's text output.** The only way to share information between teammates is via `SendMessage` or through files written to the shared codebase.\n- **`bypassPermissions` for teammates** requires setting it in `~/.claude/settings.json` (global), not project-level settings ([#26479](https://github.com/anthropics/claude-code/issues/26479)).\n- **Git worktree path access** requires adding `additionalDirectories: [\"../worktree-prefix-*\"]` to permissions ([#12748](https://github.com/anthropics/claude-code/issues/12748)).\n- **User-level** custom agents (`~/.claude/agents/`) cannot be used as `subagent_type` in Task calls. **Project-level** agents (`.claude/agents/`) can be referenced by name. Plugin agents (e.g., `superpowers:code-reviewer`) also work. If your user-level agent isn't found, use `subagent_type=\"general-purpose\"` and inline the system prompt.\n\n---\n\n## 9. Experimental Features\n\nThe following features work in current versions but are not documented in official Anthropic docs. They may change or be removed without notice.\n\n### `skills:` in Agent Frontmatter\n\n⚠️ Undocumented but confirmed working.\n\n```yaml\nskills:\n  - api-conventions\n  - db-patterns\n```\n\nRestricts which skills the agent sees. Unlisted skills are invisible to the agent. Useful for reducing context bloat — agents with focused skill sets perform better on specialized tasks.\n\n### `color:` in Agent Frontmatter\n\n⚠️ Undocumented but confirmed working.\n\n```yaml\ncolor: cyan   # Options: blue, cyan, green, yellow, magenta, red\n```\n\nSets the agent's color indicator in the terminal UI. Purely cosmetic; no behavioral effect.\n\n### `background: true`\n\n⚠️ Added in v2.1.49. Not in official docs.\n\n```yaml\nbackground: true\n```\n\nThe agent always runs as a background task regardless of how it is invoked. Useful for monitoring and observer agents.\n\n### `isolation: worktree`\n\n⚠️ Added in v2.1.49. Not in official docs.\n\n```yaml\nisolation: worktree\n```\n\nRuns the agent in an isolated git worktree. The worktree is created at agent start and cleaned up automatically when the agent finishes. Prevents agents from conflicting on shared files. Custom branch name not yet supported ([#27749](https://github.com/anthropics/claude-code/issues/27749)).\n\n### `use-when:` in Skill Frontmatter\n\n⚠️ **Does not work.** Despite appearing in some community examples, the `use-when:` field in skill frontmatter is not functional ([#27569](https://github.com/anthropics/claude-code/issues/27569)). Use the `description:` field instead to control when a skill is triggered.\n\n### Working Hooks in Agent Frontmatter\n\n⚠️ Only 6 of the 16 hook event types fire correctly when defined in agent frontmatter `hooks:`. The 6 that work:\n\n- `PreToolUse`\n- `PostToolUse`\n- `PermissionRequest`\n- `PostToolUseFailure`\n- `Stop`\n- `SubagentStop`\n\nThe remaining 10 hook types (e.g., `TeammateIdle`, `TaskCompleted`, `SubagentStart`, `ConfigChange`, `WorktreeCreate`, `WorktreeRemove`, and others) must be defined in `settings.json` at the project or user level and do not fire from agent frontmatter.\n\n### ~37 Agent Limit\n\n⚠️ Undocumented hard limit.\n\nClaude Code silently stops loading agent definitions after approximately 37 agents. No error is raised. If you have a large agent collection and some agents seem to go missing, this is likely the cause ([#18993](https://github.com/anthropics/claude-code/issues/18993)).\n\n### Skill-Agent Binding\n\n⚠️ Undocumented combination.\n\n```yaml\n# In a skill's SKILL.md frontmatter:\n---\ncontext: fork\nagent: my-specialist-agent\n---\n```\n\nBinds a skill invocation to a specific agent. `agent:` without `context: fork` does not work. `context: fork` without `agent:` creates a fork without agent binding.\n\n### Dynamic Context Injection via SubagentStart Hook\n\n⚠️ Undocumented but functional in some versions.\n\nA `SubagentStart` hook can read the `agent_type` field from the hook input, look up role-specific configuration, and return `hookSpecificOutput.additionalContext` to inject role-specific context before the agent begins. For teammates, the `name` parameter becomes `agent_type` when no matching agent definition exists.\n\n### Hidden Environment Variables\n\nBeyond the 6 documented team environment variables, these additional vars are available:\n\n```\nCLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1   # Disable all background tasks globally\nCLAUDE_AUTOCOMPACT_PCT_OVERRIDE=50       # Trigger context compaction earlier (default ~80%)\n```\n\n### 13 TeammateTool Operations\n\nThe internal `TeammateTool` API has 13 operations, more than the 7 documented tools expose:\n\n```\nspawnTeam, discoverTeams, requestJoin, approveJoin, rejectJoin,\nwrite, broadcast, requestShutdown, approveShutdown, rejectShutdown,\napprovePlan, rejectPlan, cleanup\n```\n\nThese are accessible via [claude-code-teams-mcp](https://github.com/cs50victor/claude-code-teams-mcp), which reimplements the full protocol.\n\n### Undocumented CLI Flags for Teammate Spawning\n\nThe exact command Claude Code uses internally to spawn a teammate (discovered via binary analysis):\n\n```bash\nCLAUDECODE=1 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 \\\nclaude \\\n  --agent-id \"worker-1@my-team\" \\\n  --agent-name \"worker-1\" \\\n  --team-name \"my-team\" \\\n  --agent-color \"blue\" \\\n  --parent-session-id \"...\" \\\n  --agent-type \"general-purpose\" \\\n  --model \"sonnet\"\n  # Optional flags:\n  # --plan-mode-required\n  # --dangerously-skip-permissions\n```\n\n---\n\n## 10. Cost Optimization\n\n### Model Distribution\n\n| Model | Cost | Use For | Never For |\n|-------|------|---------|-----------|\n| **opus** | $$$ | Architecture decisions, synthesis of competing results, critical trade-offs | Bulk research, code review, data gathering, formatting |\n| **sonnet** | $$ | Research, implementation, writing, editing, **code review** | Final architecture decisions |\n| **haiku** | $ | Trivial lookups, formatting, line counts, simple grep-and-report | Complex reasoning, security analysis, nuanced decisions |\n\n**Decision rule:** Architecture / synthesis → opus. Volume / review → sonnet. Simple mechanical tasks → haiku.\n\n**On code review specifically:** Sonnet is approximately 4-6x cheaper than Opus at list pricing. For structured review tasks like code review, sonnet with a focused skill produces comparable or better results — particularly for security issue detection where a narrower focus reduces false negatives. Use sonnet for all code review tasks.\n\n### Practical Tips\n\n- **`write()` over `broadcast()` in Teams.** `broadcast` delivers to N teammates and costs N times as much. Use targeted `SendMessage` with `type: message` unless you genuinely need all agents to receive the information.\n- **Plan before spawning.** A planning phase costs ~10K tokens. A spawned swarm costs ~800K tokens. Catching a design flaw in planning saves the entire swarm cost.\n- **Pre-approve tools.** Add expected tool patterns to `permissions.allow` in settings before starting a team. This prevents permission approval storms that stall every agent.\n- **Trigger compaction early for subagents.** Set `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=50` to compact context at 50% instead of the default ~80%. Prevents context overflow in long-running agents.\n- **Cap team size.** Beyond 4-5 parallel agents, returns diminish and coordination overhead increases. Prefer 3-5 focused agents over 8+ generalist agents.\n- **Use `isolation: worktree` selectively.** Worktree isolation prevents file conflicts but adds overhead. Use it only when agents edit overlapping files.\n\n### Benchmark Numbers\n\nSource: alexop.dev, 2026:\n- Solo agent: ~200K tokens per complex task\n- 3 subagents (parallel Tasks): ~440K tokens total\n- 3-person Agent Team: ~800K tokens total\n\nSource: Daytona benchmark, 2026:\n- Agents in sandboxed environments use ~40% of the context window vs ~80-90% for a solo agent handling the same task (due to cleaner context, no accumulated history).\n\nThe implication: Agent Teams cost approximately 3-7x more than parallel Task calls for the same work. Use Teams only when peer communication genuinely provides value that offsets this cost.\n\n---\n\n## 11. Case Studies\n\n### Anthropic C Compiler (Official)\n\nAnthropic's engineering team built a C compiler using 16 agents running 2,000 sessions over two weeks at a total cost of approximately $20,000, producing ~100,000 lines of code.\n\nThe architecture used a bare git repository as the coordination point, with each agent cloning the repository into `/workspace`. A `current_tasks/` directory served as a file-lock mechanism, preventing agents from duplicating work. There was no central orchestrator — agents simply identified \"the next obvious problem\" from the test output and worked on it. The team discovered that the quality of the test harness mattered more than the agents themselves: \"the task verifier must be nearly perfect.\" A `--fast` flag randomly sampled 1-10% of tests during development to reduce feedback latency.\n\n**Lessons:**\n- Test harness quality is the ceiling for agent quality — invest heavily in it\n- File-based coordination (a directory as a lock) works well at scale without complex messaging\n- No central orchestrator can work; agents can self-direct given clear criteria\n- Random test sampling during development cuts wait time significantly\n\n### 24-Agent Local Hardware (Community)\n\nA community engineer ran 24 simultaneous Claude Code agents on local hardware, using a Rust/Tokio orchestrator and a local Mistral 7B model on an RTX 4070. Coordination happened entirely through the shared codebase — no direct agent messaging. `CLAUDE.md` defined module ownership boundaries. The result: 683 tests, zero failures, a 1.53:1 test-to-production-code ratio, enforced by pre-commit hooks that blocked any commit not meeting the ratio threshold.\n\n**Lessons:**\n- Codebase-mediated coordination scales to 24 agents without peer messaging\n- Pre-commit hooks are an effective quality gate that agents cannot bypass\n- Local models are viable for subagent workloads when latency is less critical\n- File ownership boundaries defined in `CLAUDE.md` prevent silent overwrites at scale\n\n### E-commerce Agent Teams Failure (Community)\n\nA developer ran a 5-person Agent Team for two days on an e-commerce project. The lead agent \"forgot to coordinate half the tasks\" — a consequence of context filling up and the coordination state being lost. The result was 100,000+ tokens consumed with an incomplete, inconsistent codebase.\n\n**Lessons:**\n- Context independence is a strength for divergent work but a weakness for convergent work requiring continuous coordination\n- Plan-First pattern (Pattern 6) would have caught the coordination gap early\n- For convergent tasks (building one coherent system), codebase-mediated coordination (Pattern 8) is more reliable than relying on agent memory\n- Agent Teams' lack of a persistent shared state makes them unsuitable for long-running projects without an external coordination mechanism\n\n---\n\n## 12. Ecosystem\n\nTop projects by usefulness and community adoption:\n\n| Project | Stars | Description |\n|---------|-------|-------------|\n| [steveyegge/gastown](https://github.com/steveyegge/gastown) | 10k | Multi-agent workspace manager with Beads issue tracking integration |\n| [Yeachan-Heo/oh-my-claudecode](https://github.com/Yeachan-Heo/oh-my-claudecode) | 7k | 32 agents, 40+ skills, smart model routing, Autopilot and Ultrapilot modes |\n| [EveryInc/compound-engineering-plugin](https://github.com/EveryInc/compound-engineering-plugin) | 9.4k | Official plugin with `/work` command and pre-built team workflows |\n| [danielmiessler/Personal_AI_Infrastructure](https://github.com/danielmiessler/Personal_AI_Infrastructure) | 9k | PAI v3.0 — Algorithm/Engineer subagent architecture |\n| [cs50victor/claude-code-teams-mcp](https://github.com/cs50victor/claude-code-teams-mcp) | 181 | Standalone MCP reimplementation of the Agent Teams protocol; enables mixed Claude + OpenCode teams |\n| [modu-ai/moai-adk](https://github.com/modu-ai/moai-adk) | 750 | Agent Development Kit with typed team roles (backend-dev, frontend-dev, tester) |\n| [alinaqi/claude-bootstrap](https://github.com/alinaqi/claude-bootstrap) | 508 | Scaffolds agent teams by default in every new project |\n| [jayminwest/overstory](https://github.com/jayminwest/overstory) | — | Coordinator → Supervisor → Workers hierarchy with SQLite-based message passing and 4-tier conflict resolution |\n| [Ruya-AI/cozempic](https://github.com/Ruya-AI/cozempic) | 98 | Context pruning that protects team coordination state |\n| [Osso/safe-task-claim](https://github.com/Osso/safe-task-claim) | — | Atomic task claiming MCP server — prevents race conditions in swarm patterns |\n\nSee [docs/ecosystem.md](docs/ecosystem.md) for the full catalog of 30+ projects, guides, and resources.\n\n---\n\n## 13. Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n---\n\n## 14. Sources\n\n### Official\n\n- [Anthropic — Agent Teams docs](https://code.claude.com/docs/en/agent-teams)\n- [Anthropic — Sub-Agents docs](https://code.claude.com/docs/en/sub-agents)\n- [Anthropic — Hooks reference](https://code.claude.com/docs/en/hooks)\n- [Anthropic — CLI reference](https://code.claude.com/docs/en/cli-reference)\n- [Anthropic Engineering — Building a C Compiler with 16 agents](https://www.anthropic.com/engineering/building-c-compiler)\n- [Anthropic Blog — Agent Skills announcement](https://claude.com/blog/equipping-agents-for-the-real-world-with-agent-skills)\n\n### Community Guides\n\n- [claudefa.st — Complete Agent Teams Guide](https://claudefa.st/blog/guide/agents/agent-teams)\n- [claudefa.st — Agent Teams Controls](https://claudefa.st/blog/guide/agents/agent-teams-controls)\n- [claudefa.st — Agent Teams Best Practices](https://claudefa.st/blog/guide/agents/agent-teams-best-practices)\n- [alexop.dev — From Tasks to Swarms](https://alexop.dev/posts/from-tasks-to-swarms-agent-teams-in-claude-code/)\n- [paddo.dev — The Hidden Swarm](https://paddo.dev/blog/claude-code-hidden-swarm/)\n- [paddo.dev — The Switch Got Flipped](https://paddo.dev/blog/agent-teams-the-switch-got-flipped/)\n- [claudecodecamp.com — Under the Hood](https://www.claudecodecamp.com/p/claude-code-agent-teams-how-they-work-under-the-hood)\n- [addyosmani.com — Agent Teams Overview](https://addyosmani.com/blog/claude-code-agent-teams/)\n- [scottspence.com — Enable Team Mode](https://scottspence.com/posts/enable-team-mode-in-claude-code)\n- [scottspence.com — Claude Code Swarm with Daytona Sandboxes](https://scottspence.com/posts/claude-code-swarm-daytona-sandboxes)\n- [shipyard.build — Multi-Agent Orchestration 2026](https://shipyard.build/blog/claude-code-multi-agent/)\n- [incident.io — Shipping Faster with Worktrees](https://incident.io/blog/shipping-faster-with-claude-code-and-git-worktrees)\n- [zerofuturetech — Two Days with Agent Teams (failure report)](https://zerofuturetech.substack.com/p/i-spent-two-days-with-claude-agent)\n\n### Key Gists\n\n- [kieranklaassen — Swarm Orchestration (13 TeammateTool ops, 6 patterns)](https://gist.github.com/kieranklaassen/4f2aba89594a4aea4ad64d753984b2ea)\n- [kieranklaassen — Extended Multi-Agent System Reference](https://gist.github.com/kieranklaassen/d2b35569be2c7f1412c64861a219d51f)\n- [cs50victor — Claude Code Internals (binary deep dive)](https://gist.github.com/cs50victor/0a7081e6824c135b4bdc28b566e1c719)\n- [ruvnet — Claude Flow vs TeammateTool (92% overlap comparison)](https://gist.github.com/ruvnet/18dc8d060194017b989d1f8993919ee4)\n\n### Hacker News Threads\n\n- [Hidden Feature: Agent Swarms](https://news.ycombinator.com/item?id=46743908)\n- [Orchestrating Claude Code Teams](https://news.ycombinator.com/item?id=46902368)\n- [Shared Local Memory for Agent Teams](https://news.ycombinator.com/item?id=46913360)\n- [24 Simultaneous Agents](https://news.ycombinator.com/item?id=47099597)\n- [Amux tmux Multiplexer for Agents](https://news.ycombinator.com/item?id=47104424)\n\n---\n\n## See Also\n\nOther [Real-AI-Engineering](https://github.com/Real-AI-Engineering) projects:\n\n- **[sigil](https://github.com/Real-AI-Engineering/sigil)** — risk-adaptive development pipeline with adversarial code review\n- **[herald](https://github.com/Real-AI-Engineering/herald)** — daily curated news digest plugin for Claude Code\n- **[arbiter](https://github.com/heurema/arbiter)** — multi-AI orchestrator (Codex + Gemini)\n- **[proofpack](https://github.com/Real-AI-Engineering/proofpack)** — proof-carrying CI gate for AI agent changes\n\n---\n\n## 15. Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for version history.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheurema%2Fteams-field-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheurema%2Fteams-field-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheurema%2Fteams-field-guide/lists"}