mcpField
T
team-orchestration

team-orchestration

github.com/noobygainsエージェントワークフロー11557 回インストール3 日前に更新
リポジトリ

team-orchestration について

Claude Code向けのスキルで、エージェントチームが必要な場面を判断し、複数セッションの共同作業を調整します。タスク境界、メッセージ連携、分離したworktree、統合レビューを扱います。

主な機能

  1. 01チームとサブエージェントの選択基準
  2. 02共有タスク計画と依存関係の追跡
  3. 03メンバー間の直接メッセージ連携
  4. 04分離Git worktreeの指針
  5. 05統合レビューとテストのチェックリスト

活用シーン

  1. 01フロントエンド、バックエンド、テストの連携
  2. 02異なる仮説による問題の並行調査
  3. 03複数モジュールにまたがるリファクタリング
  4. 04並行調査での発見事項の共有

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/noobygains/godmode --skill team-orchestration

インストール後、Claude Code で/team-orchestrationを入力して読み込まれたか確認します。

同梱ファイルteam-patterns.md

詳細

チームオーケストレーション

概要

Agent Teams を使うと、複数の Claude Code セッションが、直接のピアツーピアメッセージと共有タスクリストを使って、同じプロジェクトで連携できます。サブエージェントとは異なり、チームメイト同士でやり取りし、タスクを動的に引き受け、共有課題について調整できます。

基本原則: 単に並列化するのではなく、連携によって成果が高まるタスクでチームを編成してください。チームメイト同士がメッセージをやり取りする必要がない場合は、代わりに並列サブエージェントを使ってください。

例外なし。回避策なし。近道なし。

最優先指令

NO TEAM WITHOUT A COLLABORATION REQUIREMENT

チームメイト同士でメッセージをやり取りしないなら、チームは必要ありません。

使用するタイミング

digraph when_teams {
    "Multiple tasks?" [shape=diamond];
    "Need peer-to-peer collaboration?" [shape=diamond];
    "Tasks independent?" [shape=diamond];
    "Agent Teams" [shape=box style=filled fillcolor=lightgreen];
    "parallel-execution" [shape=box];
    "delegated-execution" [shape=box];
    "Single agent" [shape=box];

    "Multiple tasks?" -> "Need peer-to-peer collaboration?" [label="yes"];
    "Multiple tasks?" -> "Single agent" [label="no"];
    "Need peer-to-peer collaboration?" -> "Agent Teams" [label="yes - teammates must share discoveries"];
    "Need peer-to-peer collaboration?" -> "Tasks independent?" [label="no"];
    "Tasks independent?" -> "parallel-execution" [label="yes - fire and forget"];
    "Tasks independent?" -> "delegated-execution" [label="no - sequential"];
}

チームを編成する場合:

  • ある調査で得た発見が、別の調査の方向性を変えるような並列調査
  • フロントエンド、バックエンド、テストの連携が必要な複数モジュールにまたがる機能
  • インターフェースの調整が必要な複数レイヤーにまたがる変更
  • 競合する仮説を検証するため、証拠の共有が必要なデバッグ
  • 共通の規約を適用する、複数のサブシステムにまたがる大規模なリファクタリング

使用しない場合:

  • 単純で独立したタスク(godmode:parallel-execution を使用)
  • 逐次的な依存関係があるタスク(godmode:delegated-execution を使用)
  • 単一ファイルまたは単一モジュールの変更
  • Agent Teams 機能が有効になっていない場合
  • 真に連携が必要なタスクが2件未満の場合

前提条件

Agent Teams は実験的な機能です。有効にする必要があります。

CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=true

これが有効でない場合、TeamCreate、TaskCreate、SendMessage ツールは使用できません。

遅延ツール: TeamCreate、TaskCreate、TaskUpdate、TaskGet、TaskList、SendMessage、EnterWorktree は遅延ツールです。初めて使用する前に、ToolSearch で読み込む必要があります。

// Load all team tools at once
ToolSearch: { "query": "select:SendMessage,TaskCreate,TaskUpdate,TaskList,TaskGet,EnterWorktree" }

開始プロトコル

BEFORE forming a team:

1. ENUMERATE: What are all the tasks?
2. MAP: Which tasks need information from other tasks?
3. COUNT: How many task pairs require shared discoveries?
4. DECIDE:
   - 0 pairs need collaboration -> Use parallel-execution
   - 1 pair needs collaboration -> Consider single agent or subagents
   - 2+ pairs need collaboration -> Use Agent Teams
5. ONLY THEN: Form the team

Skip any step = unnecessary team overhead

ワークフロー

ステップ 1:タスクとチームの適合性を評価する

TeamCreate を使う前に、次の質問に答えてください。

質問はいの場合いいえの場合
1つのエージェントで対応できますか?代わりにそうしてください続行
並列サブエージェントで対応できますか?parallel-execution を使用続行
作業中にエージェント同士で発見事項を共有する必要がありますか?チームサブエージェント
エージェント同士でインターフェースを調整する必要がありますか?チームサブエージェント
調整にかかるコストに見合う価値がありますか?チームよりシンプルな方法
ステップ 2:チームを設計する

チームを作成してから、Agent ツールを使ってチームメイトを起動します。

// 1. Create the team
TeamCreate: {
  "team_name": "auth-refactor-team",
  "description": "Refactor authentication across API and frontend modules"
}

// 2. Spawn each teammate (2-5 max)
Agent: {
  "name": "backend-eng",
  "team_name": "auth-refactor-team",
  "prompt": "You are the backend engineer. Own all files in src/api/auth/. Implement the new token refresh flow. Coordinate with frontend-eng on the session interface.",
  "description": "Backend auth implementation",
  "mode": "bypassPermissions"
}

Agent: {
  "name": "frontend-eng",
  "team_name": "auth-refactor-team",
  "prompt": "You are the frontend engineer. Own all files in src/ui/auth/. Update login flow to use new token refresh. Coordinate with backend-eng on the session interface.",
  "description": "Frontend auth implementation",
  "mode": "bypassPermissions"
}

チームメイトの人数の目安:

人数条件調整コスト
2インターフェースの合意が必要な、異なる2つのモジュール低
3フロントエンド+バックエンド+テスト、または独立した3つのサブシステム中
44つのモジュールにまたがる横断的なリファクタリング高
5上限 — 真に大規模な作業に限る非常に高
ステップ 2b:ワークスペースを分離する

ファイルシステム上のマージ競合を防ぐため、各チームメイトは独立した git worktree で作業してください。

// Called by each teammate at the start of their work
EnterWorktree: { "name": "auth-backend" }

EnterWorktree は個別の git worktree を作成するため、チームメイトは互いの作業を妨げずに並行してファイルを編集できます。チームリードは最後に godmode:merge-protocol を実行して worktree を統合します。

ステップ 3:明確な境界を設けてタスクを定義する
// Create tasks with clear scope and success criteria
TaskCreate: {
  "subject": "Implement token refresh endpoint",
  "description": "Build POST /api/auth/refresh that validates expired access tokens against refresh tokens. Return new access+refresh token pair. Files: src/api/auth/refresh.ts, src/api/auth/refresh.test.ts",
  "activeForm": "Implementing token refresh endpoint"
}

TaskCreate: {
  "subject": "Update login UI for token refresh",
  "description": "Update login flow to store refresh token and auto-refresh on 401. Files: src/ui/auth/login.tsx, src/ui/auth/session.ts",
  "activeForm": "Updating login UI for token refresh"
}

// Set up dependencies and assign owners
TaskUpdate: { "taskId": "2", "addBlockedBy": ["1"] }
TaskUpdate: { "taskId": "1", "owner": "backend-eng" }
TaskUpdate: { "taskId": "2", "owner": "frontend-eng" }

タスク設計のルール:

  • スコープを明確にする:このチームメイトが担当するファイル/モジュールを正確に指定する
  • 依存関係:先に完了する必要があるタスクには addBlockedBy を使用する
  • 成功基準:説明に「完了」の条件を記載する
  • ファイルの担当範囲:チームメイト間で重複させない(マージ競合を防ぐ)

ファイルの担当範囲は譲れません。 2人のチームメイトが同じファイルを編集すれば、マージ競合は避けられません。複数の観点から共有ファイルを変更する必要がある場合は、メッセージを通じて他のメンバーと調整する担当者を1人だけ割り当ててください。

ステップ 4:チームリードとして調整する
digraph team_lead_loop {
    "Check TaskList" [shape=box];
    "All tasks completed?" [shape=diamond];
    "Any teammate blocked?" [shape=diamond];
    "Send clarifying message" [shape=box];
    "Resolve dependency" [shape=box];
    "Integrate results" [shape=box style=filled fillcolor=lightgreen];

    "Check TaskList" -> "All tasks completed?";
    "All tasks completed?" -> "Integrate results" [label="yes"];
    "All tasks completed?" -> "Any teammate blocked?" [label="no"];
    "Any teammate blocked?" -> "Send clarifying message" [label="needs info"];
    "Any teammate blocked?" -> "Resolve dependency" [label="blocked by task"];
    "Any teammate blocked?" -> "Check TaskList" [label="no - working"];
    "Send clarifying message" -> "Check TaskList";
    "Resolve dependency" -> "Check TaskList";
}

チームリードとして、次のことを行います。

  • TaskList を使ってタスクの完了状況を追跡する(パラメーターは不要です。呼び出すだけです)
  • 直接メッセージを使って、チームメイト間で発見事項を伝達する:
// Direct message to relay a discovery
SendMessage: {
  "type": "message",
  "recipient": "frontend-eng",
  "content": "backend-eng finished the refresh endpoint. The response shape is { accessToken, refreshToken, expiresIn }. You can unblock now.",
  "summary": "Refresh endpoint contract ready"
}
  • 前提タスクを完了済みにして、依存関係のブロックを解除する:
TaskUpdate: { "taskId": "1", "status": "completed" }
  • チームメイト間で進め方について意見が分かれた場合は、調停する
  • ブロードキャストは、チーム全体に関わる重大な問題に限って使用する(コストが高く、N件のメッセージを送信します):
// Broadcast — use sparingly, sends N separate messages
SendMessage: {
  "type": "broadcast",
  "content": "Convention change: all auth endpoints now return camelCase keys",
  "summary": "Auth API convention change"
}
ステップ 5:結果を統合する

すべてのタスクが完了したら:

  1. すべての変更をまとめて確認し、一貫性を保ちます
  2. チームメイト間でファイルの競合がないことを確認します
  3. テストスイート全体を実行します
  4. モジュール間のインターフェースに不整合がないことを確認します
  5. 必須のサブプロトコル: godmode:merge-protocol を使用します

チームのパターン

このディレクトリにある team-patterns.md で、次の 5 つのチームパターンを確認してください:

  1. 調査チーム — 異なる観点を並行して調査します
  2. 機能チーム — 複数モジュールの開発(フロントエンド+バックエンド+テスト)
  3. 診断チーム — 複数の仮説を並行して検証します
  4. レビュー担当チーム — 複数の観点からコードレビューを行います
  5. 移行チーム — コードベース全体にわたる規約の変更を行います

各パターンには、使用するタイミング、チーム構成、タスク設計、連携の流れ、例が含まれます。

ツール一覧

ツール目的主なパラメータータイミング
TeamCreateチームを編成するteam_name、description開始時に 1 回
Agentチームメイトを起動するname、team_name、prompt、description、modeチームメイトごとに 1 回
EnterWorktreeワークスペースを分離するname各チームメイトの開始時
TaskCreateタスクを追加するsubject、description、activeFormセットアップ中
TaskListすべてのタスクを表示する(なし)進捗確認
TaskGetタスクの詳細を取得するtaskId作業開始前
TaskUpdateタスクの担当・完了・更新を行うtaskId、status、owner、addBlockedBy作業全体を通じて
SendMessage直接メッセージを送信するtype: "message"、recipient、content、summary連携
SendMessage全員にメッセージを送信するtype: "broadcast"、content、summary重大な問題に限る
SendMessageシャットダウンを依頼するtype: "shutdown_request"、recipient、content終了時

チームメイトの動作:想定されること

チームメイトは独立した Claude セッションです。主な動作は次のとおりです。

  • ターン間は待機状態になります — これは通常の動作です。チームメイトはメッセージやタスクを待つ間、待機状態になります。メッセージを受信するか、タスクが利用可能になると、再び動作します。
  • タスクを担当します — チームメイトは作業を開始する前に、TaskUpdate を使って自分を担当者に設定します。
  • 互いにメッセージを送信します — チームメイトはチームリードだけでなく、互いに直接メッセージを送信できますし、そうするべきです。
  • 自律的に作業します — タスクを受け取ったチームメイトは、自律して作業します。過度な管理は避けてください。

認知上の落とし穴

正当化実態
「チームは常にサブエージェントより優れている」チームには連携のオーバーヘッドが伴います。協力が必要な場合に限り編成してください。
「チームメイトが多いほど、納品が速くなる」チームメイトが増えるほど、連携も増えます。集中した 3 人のチームメイトは、分散した 6 人より高い成果を上げます。
「まずチームを編成して、タスクは後で考えよう」チーム編成前にタスクを設計する必要があります。タスクがないと、チームメイトは待機しながらトークンを消費します。
「チームメイトはファイルを共有できる」ファイルの共有はマージ競合につながります。担当範囲を明確にしてください。
「定期的な更新には全員への送信でよい」全員への送信では N 件のメッセージが送られます。特定のチームメイトには SendMessage を使ってください。
「依存関係は暗黙にわかる」依存関係が定義されていないと、チームメイト同士の作業が衝突します。

ガードレール

禁止事項:

  • 単純なタスクでチームを編成すること(オーバーヘッドに見合いません)
  • チームメイトが同じファイルを編集できるようにすること(マージ競合につながります)
  • チームの作業完了後に統合レビューを省略すること
  • チームメイトのメッセージを無視すること(そこには発見事項が含まれています)
  • 5 人を超えるチームメイトでチームを編成すること(連携が急激に複雑になります)
  • 定期的な更新に全員への送信を使うこと(直接メッセージを使ってください)
  • タスクを明確に設計せずにチームを開始すること
  • タスク間の依存関係を未定義のままにすること

必須事項:

  • ファイルの担当範囲を明確に定義する
  • blockedBy を使ってタスクの依存関係を設定する
  • 完了後、すべての変更をまとめて確認する
  • 統合後にテストスイート全体を実行する
  • チームメイト同士の連携には SendMessage を使う
  • タスクが完了したら完了としてマークする(チームメイトは TaskList で利用可能な作業を確認します)

ツール呼び出しリファレンス

Agent Teams のすべてのツールについて、パラメーターの仕様を網羅しています。これらをそのままコピーしてください。パラメーター名は正確に指定する必要があります。

TeamCreate

名前付きチームを作成します。チームメイトを起動する前に一度呼び出してください。

{
  "team_name": "feature-billing-team",
  "description": "Build subscription billing feature"
}
パラメーター型必須備考
team_namestringはいケバブケースの識別子
descriptionstringはいチームの作業内容
Agent(チームメイトの起動)

既存のチームにチームメイトを起動します。各チームメイトは独立した Claude セッションです。

{
  "name": "backend-eng",
  "team_name": "feature-billing-team",
  "prompt": "You are the backend engineer on this team. Own src/api/billing/. Build the Stripe webhook handler and subscription CRUD endpoints. Use godmode:test-first for implementation. Coordinate with frontend-eng on API contracts via SendMessage.",
  "description": "Backend billing implementation",
  "mode": "bypassPermissions"
}
パラメーター型必須備考
namestringはいチームメイトの識別子(SendMessage の recipient で使用)
team_namestringはいTeamCreate の team_name と一致させる必要があります
promptstringはいファイルの担当範囲、作業範囲、調整ルールを含む完全な指示
descriptionstringはいUI に表示される短い説明
modestringいいえ"bypassPermissions" を指定すると、チームメイトは権限の確認なしで作業できます
EnterWorktree

チームメイト用の隔離された git ワークツリーを作成します。複数のチームメイトが並行してファイルを編集する際の、ファイルシステムの競合を防ぎます。

{
  "name": "billing-feature"
}
パラメーター型必須備考
namestringはいワークツリーの識別子。ブランチ名/ディレクトリー名になります
TaskCreate

すべてのチームメイトから参照できる共有タスクリストにタスクを追加します。

{
  "subject": "Implement Stripe webhook handler",
  "description": "Build POST /webhooks/stripe endpoint that handles subscription.created, subscription.updated, and subscription.deleted events. Files: src/api/billing/webhooks.ts, src/api/billing/webhooks.test.ts",
  "activeForm": "Implementing Stripe webhook handler"
}
パラメーター型必須備考
subjectstringはい命令形のタイトル(例:「認証バグを修正する」)
descriptionstringはい作業範囲、ファイル一覧、受け入れ基準の全体
activeFormstringいいえスピナーに表示する現在進行形の文(例:「認証バグを修正中」)
TaskUpdate

タスクのステータス、担当者、または依存関係を更新します。タスクの引き受け、完了、ブロック関係の設定に使用します。

// Assign owner
{ "taskId": "1", "owner": "backend-eng" }

// Set dependency — task 3 cannot start until tasks 1 and 2 complete
{ "taskId": "3", "addBlockedBy": ["1", "2"] }

// Mark in progress
{ "taskId": "1", "status": "in_progress" }

// Mark complete
{ "taskId": "1", "status": "completed" }
パラメーター型必須備考
taskIdstringはいTaskCreate/TaskList で取得したタスク ID
statusstringいいえ"pending"、"in_progress"、"completed"、または "deleted"
ownerstringいいえ割り当てるチームメイト名
addBlockedBystring[]いいえこのタスクより先に完了する必要があるタスク ID
addBlocksstring[]いいえこのタスクがブロックするタスク ID
subjectstringいいえ更新後のタイトル
descriptionstringいいえ更新後の説明
activeFormstringいいえ更新後のスピナー表示テキスト
TaskList

すべてのタスクについて、ステータス、担当者、ブロック関係の情報を返します。パラメーターはありません。

// No parameters — just call it
TaskList: {}
TaskGet

指定したタスクの詳細を取得します。

{ "taskId": "1" }
パラメーター型必須備考
taskIdstringはい取得するタスク ID
SendMessage

チーム内のコミュニケーションに使用する3種類のメッセージです。

ダイレクトメッセージ(デフォルト。ほとんどのコミュニケーションで使用します):

{
  "type": "message",
  "recipient": "backend-eng",
  "content": "The profile API needs a PUT /profile/preferences endpoint. Frontend needs to update preferences without replacing the full profile.",
  "summary": "API contract update request"
}

ブロードキャスト(すべてのチームメイトに送信。必要な場合にのみ使用します):

{
  "type": "broadcast",
  "content": "Convention change: all API responses now use camelCase keys",
  "summary": "API convention change"
}

シャットダウンリクエスト(チームメイトを正常にシャットダウンします):

{
  "type": "shutdown_request",
  "recipient": "backend-eng",
  "content": "All tasks complete, wrapping up"
}
パラメーター型必須備考
typestringはい"message"、"broadcast"、または "shutdown_request"
recipientstringmessage/shutdown の場合チームメイト名
contentstringはいメッセージ本文
summarystringmessage/broadcast の場合UI に表示される5~10語のプレビュー
チーム設定の完全な例

2人の機能チームを設定する最初から最後までの例:

// 1. Create team
TeamCreate: { "team_name": "billing-team", "description": "Build subscription billing" }

// 2. Create tasks
TaskCreate: {
  "subject": "Build Stripe webhook handler",
  "description": "POST /webhooks/stripe handling subscription events. Files: src/api/billing/webhooks.ts",
  "activeForm": "Building Stripe webhook handler"
}
TaskCreate: {
  "subject": "Build billing dashboard UI",
  "description": "Subscription management page showing plan, usage, invoices. Files: src/ui/billing/",
  "activeForm": "Building billing dashboard"
}

// 3. Wire dependencies and assign owners
TaskUpdate: { "taskId": "2", "addBlockedBy": ["1"] }
TaskUpdate: { "taskId": "1", "owner": "backend-eng" }
TaskUpdate: { "taskId": "2", "owner": "frontend-eng" }

// 4. Spawn teammates (they auto-claim their assigned tasks)
Agent: {
  "name": "backend-eng",
  "team_name": "billing-team",
  "prompt": "You are the backend engineer. Own src/api/billing/. Start with task #1. Use EnterWorktree to isolate your workspace. Use godmode:test-first. Message frontend-eng with the API contract when done.",
  "description": "Backend billing implementation",
  "mode": "bypassPermissions"
}
Agent: {
  "name": "frontend-eng",
  "team_name": "billing-team",
  "prompt": "You are the frontend engineer. Own src/ui/billing/. Task #2 is blocked by #1. Wait for backend-eng to share the API contract, then implement. Use EnterWorktree to isolate your workspace.",
  "description": "Frontend billing implementation",
  "mode": "bypassPermissions"
}

// 5. Monitor as team lead
TaskList: {}

// 6. When all tasks complete, shutdown teammates
SendMessage: { "type": "shutdown_request", "recipient": "backend-eng", "content": "All done, wrapping up" }
SendMessage: { "type": "shutdown_request", "recipient": "frontend-eng", "content": "All done, wrapping up" }

統合

関連するオーケストレーションプロトコル:

  • godmode:parallel-execution — 協力が不要な独立タスク向け
  • godmode:delegated-execution — レビューチェックポイントを設ける逐次タスク向け
  • godmode:task-runner — 別のセッションで計画を実行する場合

チームメイトは次を使用してください:

  • godmode:test-first — 実装タスク向け
  • godmode:fault-diagnosis — 診断チームの調査向け
  • godmode:completion-gate — タスクを完了としてマークする前

完了に必須:

  • godmode:merge-protocol — チームの全タスク完了後

コメント