Skip to main content

team-builder

agent-amigos 向けに、ミッション(ゴール)だけから最適なノード役割と各役割へ渡すプロンプトを設計し、mission.schema.json 準拠のロールミッション表を組み立てます。ロールが決まっていないミッションからチーム構成や役割を設計する場合に使用してください。

Source facts

Repository
ynitto/sandbox
Last source activity
September 19, 2026 at 00:44
Detected SKILL.md language
Japanese
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
40 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
team-builder
description
agent-amigos 向けに、ミッション(ゴール)だけから最適なノード役割と各役割へ渡すプロンプトを設計し、mission.schema.json 準拠のロールミッション表を組み立てます。ロールが決まっていないミッションからチーム構成や役割を設計する場合に使用してください。
metadata
{"version":"1.0.0","tier":"stable","category":"orchestration","tags":["team-builder","agent-amigos","role-design","multi-agent","staffing","orchestration"]}
# team-builder — ミッションから最適なチームを設計する ## 概要 達成したいこと(ミッション)だけを入力に、それを**協働で仕上げるのに最適なロール構成**と、 **各ロールへ渡すミッション文(=そのノードのプロンプト)**を設計する。出力は [agent-amigos](../../../tools/agent-amigos/) の**ロールミッション表**(`mission.schema.json` の `roles` と同形)で、そのまま `agent-amigos post --roles <file>` に流せる。 agent-amigos の従来入力(design doc + ロールミッション表)は変えない。本スキルは 「ロールを人が書く」代わりに「ミッションからロールを設計する」段だけを担い、以降は従来経路 (公示 → アサイン → 協働 → 統合 → 受入)に合流する。 - **人が使うとき**: このファイルの手順に従って設計し、`roles.yaml` / `roles.json` を出力する。 - **agent-amigos が呼ぶとき**: `build-team` コマンドが本スキルの手順をプロンプト化して agent CLI に投げ、下記「出力契約」の JSON を受け取ってロールミッション表として公示する。 正典実装は [`agent_amigos/teambuilding.py`](../../../tools/agent-amigos/agent_amigos/teambuilding.py)。 ロールミッション表の契約: `docs/specs/agent-amigos-spec.md` §7。 設計の「なぜ」: `docs/designs/agent-amigos-design.md`。 --- ## 適用条件 以下に**いずれも**該当するときに実行する。1つでも外れる場合は人へ確認する。 - [ ] ゴール(達成したい状態)が言語化されている - [ ] ロール構成が未定、または既存のロール表を作り直したい - [ ] 成果物を**複数の役割で分担・協働**して仕上げる価値がある(単発の 1 タスクなら分割しない) 既に承認済みのロールミッション表があるならそれを使う(本スキルは発動しない)。 --- ## 入力(ミッションブリーフ) | 項目 | 必須 | 説明 | |------|:---:|------| | `goal` | ✔ | ミッション全体の目標(完了したときの状態)。全 amigo のプロンプトに載る | | `title` | | ミッションの短い名前 | | `design` | | 進め方・受入基準・制約を書いた design doc 本文(あれば正典として尊重する) | | `constraints` | | 予算・締切・技術制約・体制上の制約など | | `capabilities` | | 使えるノードの能力(`tags` の候補)と `agent_cli` の選択肢。分かる範囲でよい | | `agent_cli` | | ロールの既定 agent CLI(未指定なら各ロールで省略=ノード既定に委ねる) | `design` が無くても `goal` から設計できる。ある場合は design doc を正典として、そこに書かれた 受入基準・非機能要件・スコープ外を必ずロール設計へ反映する。 --- ## オーケストレーションパターン(設計テンプレの選択) `patterns/` に、論文由来のマルチエージェント・オーケストレーションパターンを agent-amigos の ロール構成へ写した**設計テンプレ**を持つ(カタログの出典: h5i-python/examples/papers)。 ゴールの性質に応じて最適なパターンを選び、その**ロール骨格と収束条件を出発点**にすると、 毎回ゼロから考えるより速く・確実に良いチームになる。 - **tier=high(自動選択対象)**: 高価値で現実装に有効に写せるパターン。agent-amigos が `build-team` を実行するとき、これらのカタログがプロンプトへ注入され、あなた(設計者)が ミッションに最も合う 1 つを選ぶ(複数の組み合わせ・どれも合わなければ素の設計でもよい)。 - **tier=medium(明示指定のみ)**: 有用だが自動選択には載せないパターン。`--pattern <id>` / commands の `"pattern": "<id>"` で明示指定したときだけ使う。 - 選んだら、出力の `"pattern"` にその id(使わなければ `"none"`)を書く。 高価値パターン(tier=high)と使いどころの要約: | id | 使いどころ | |----|-----------| | **self-refine** | 明確な品質基準がある 1 成果物を、批評→改稿で磨く(最も汎用) | | **metagpt-sop** | 要件→設計→実装→検証と工程が定まった構築(開発の王道) | | **agentcoder** | テストで正誤判定できるコード生成(作り手とテスト設計を分離) | | **multiagent-debate** | 結論が割れうる推論を、対立する立場+裁定者で詰める | | **mixture-of-agents** | 多様な独立案を集めて 1 つに統合し質を底上げする | | **chateval** | 成果物を複数観点の審査員で多面的に品質保証・評価する | | **self-consistency** | 単発だと不安定な問題を、複数解の合意で頑健化する | | **least-to-most** | 難問を易→難の順序付き部分問題へ分解して積み上げる | パターンは**出発点**であって拘束ではない。ミッションに合わせてロールの `mission` 文・ `deliverables`・`requires.tags`・収束条件を必ず具体化する。カタログ契約は [`references/pattern.schema.json`](references/pattern.schema.json)。 > **現実装の対応状況**: 並列同一シート(`seats>1`・G1)/決定的集約(`aggregate`: majority / > consensus / weighted-vote / approval-count / gather・G2)/`done_when: consensus`/同期討論 > `rounds` + 通信 `topology`(G3)/実行中の動的編成 `restaff`(G5)は**実装済み**。 > **探索木・動的分解(Tree/Graph-of-Thoughts・LATS・G4)は agent-flow へ委譲**する > (target=agent-flow)。まだ無いのは pairwise-rank(ranker ロールで代替)等。各 JSON の > `feasibility_note` と、全体の対応状況は > `docs/specs/agent-amigos-spec.md` §11。 --- ## プロセス ### Step 1: ゴールを成果物へ分解する ゴールを「最終的にバスへ積まれるべき成果物(deliverables)」の集合へ写像する。 例: API を作る → `architecture.md`(設計), `src/`(実装), `tests/`(テスト), レビュー指摘。 成果物が見えないゴールは、まず「完了の定義」を 1〜3 個の具体物として言語化する。 ### Step 2: 必要な専門性を同定する 各成果物を仕上げるのに必要な**専門性の軸**(設計・実装・データ・フロント・レビュー・文書 …)を 挙げる。**軸が重なるものは 1 ロールに束ねる**。人数を増やすほど調整コスト(質問往復)が増えるため、 「最小の人数で成果物を過不足なく覆う」ことを目標にする(→ [設計原則](#設計原則))。 ### Step 3: ロールを設計する(責務を直交させる) 同定した専門性を**責務の重ならないロール**へ落とす。各ロールに: - `id`: 短い識別子(`architect` / `impl-api` / `reviewer` …。`all` / `owner` は予約語で不可、`/` 不可) - `title`: 人が読む役割名 - `deliverables`: そのロールが書く成果物(artifacts 内の相対パス/ディレクトリ) - `required`: そのロールが欠けると収束できないなら `true`(必須の最小化 — [原則](#設計原則)) - `requires.tags`: そのロールに要るノード能力(例 `{tags: [python]}`)。`capabilities` と整合させる - `agent_cli`: 指定があれば載せる(未指定はノード既定) - `approver`: レビュー承認者なら `true`(`done_when: reviewer-approved` の承認ゲート) - `collaborates_with`: 主に会話する相手ロールの id(順序の強制ではなく会話ヒント) **integrator は書かなくてよい**(省略時はオーナーノードが組み込みロールとして自己補充する)。 明示したい場合のみ `{id: integrator, builtin: integrator}` を置く。 ### Step 4: 各ロールのミッション文(プロンプト)を書く `mission` フィールドが**そのノードへ渡るプロンプト**になる。次を満たすように書く: - **何を作り、何を根拠にするか**(design doc / 他ロールの成果物)を明示する - **完了条件**(このロールがいつ `declare_done` してよいか)を書く - **誰と何を会話するか**(質問の投げ先・レビュー依頼先)を促す - 命令口調で簡潔に。amigo は受け取ったミッションと design doc と新着メッセージから自律的に動く - 迷う設計判断は owner へ `decision-request` を上げるよう促す(勝手に決めさせない) 各ロールのミッションは独立して読めること(他ロールの文脈が無くても着手できる粒度)。 ### Step 5: 収束条件と予算を見積もる(任意・保守的に) 必要なら `mission` ブロックに収束条件・予算を提案する(未指定は agent-amigos の既定に委ねる): - `convergence.done_when`: レビュー承認で締めるなら `reviewer-approved`(`approver` ロールが要る) - `budget.execution_minutes`: 規模から控えめに見積もる(0 = 無制限。過大より過小+追加を推奨) **予算・収束を確信できないときは省略する**(既定が安全側に働く)。勝手に厳しい締切を課さない。 ### Step 6: 自己検証する 出力する前に次を確認する([出力契約](#出力契約)の機械検証は agent-amigos 側の `normalize_mission` が行うが、意味の妥当性は本スキルの責任): - [ ] すべての deliverables が、いずれかのロールに割り当たっている(取りこぼしなし) - [ ] ロールの責務が重なっていない(同じ成果物を 2 ロールが書かない) - [ ] `required: true` は本当に欠かせないロールだけ(過剰必須は staffing を詰まらせる) - [ ] `collaborates_with` の相手が実在するロール id を指している - [ ] `requires.tags` が入力の `capabilities` と矛盾しない(存在しない能力を要求しない) - [ ] `done_when: reviewer-approved` を使うなら `approver: true` のロールが 1 つ以上ある - [ ] 各 `mission` 文だけを読んで担当が着手できる - [ ] パターンを採ったなら、そのロール骨格・収束条件をミッションに合わせて具体化し、`pattern` に id を記録した --- ## 出力契約 **agent-amigos の `build-team` はこの JSON だけをパースする。前後に説明文を付けない。** ```json { "pattern": "self-refine", "mission": { "title": "(任意)ミッション名", "goal": "(任意)ゴールの再掲・明確化", "convergence": { "done_when": "reviewer-approved" }, "budget": { "execution_minutes": 120 } }, "roles": [ { "id": "architect", "title": "アーキテクト", "mission": "design doc を正として構成を確定し、他ロールの設計質問に回答する。迷う判断は owner へ decision-request を上げる。", "deliverables": ["architecture.md"], "required": true, "agent_cli": "claude" }, { "id": "impl-api", "title": "API 実装", "mission": "architecture.md に従い API を実装し、単体テストを通す。設計の疑問は architect へ question を送る。", "deliverables": ["src/", "tests/"], "required": true, "requires": { "tags": ["python"] }, "collaborates_with": ["architect"] }, { "id": "reviewer", "title": "レビュアー", "mission": "全ロールの成果物を design doc と突き合わせてレビューし、指摘を返す。基準を満たしたら approve する。", "required": true, "approver": true } ] } ``` **並列同一シート(seats)と集約(aggregate)** — sampling/voting/ensembling 系では、同じロールを `seats: N` で N 席に増やし、`aggregate` で integrator に決定的集約させられる(各席は回答を `ANSWER.md` に書く): ```json { "id": "solver", "mission": "問題を独立に解き、最終回答を ANSWER.md に書く(他席は見ない)。", "deliverables": ["ANSWER.md"], "seats": 5, "aggregate": "majority" } ``` - `seats: N`(N≥2)は正規化時に `solver#0..#N-1` の独立席へ展開される(各席が同じミッションを実行)。 - `aggregate`: `majority`(多数決)/ `consensus`(全席一致の判定つき最頻値)/ `weighted-vote` (席ごとの重み `SCORE` を回答ごとに合計)/ `approval-count`(`SCORE` 最大の候補席を選抜)/ `gather`(全席を集める)。`weighted-vote` / `approval-count` を使う席は数値を `SCORE` ファイル(`aggregate_score` で変更可)に書く。結果は `deliverable/<id>/AGGREGATE.{md,json}` と manifest の `aggregates` に載る。意味的選抜・合成が要るなら `gather` + 別途 approver/aggregator。 - 収束を早めたいときは `convergence.done_when: consensus`(+ `consensus_ratio` / `consensus_min`)で、 席グループが合意に達した時点で全席の完了を待たず収束できる。 - **同期討論(G3)**: 席グループに `rounds: N` を付けると、各席が `round-<k>.md` を 1 ラウンドずつ 書き、**全席が前ラウンドを出し切るまで次へ進めない**(ラウンドバリア)。最終ラウンドの主張が ANSWER.md になる。討論(debate/round-table)で使い、裁定は judge(approver)か aggregate で締める。 `done_when: consensus` と併用すると合意到達時に早期終了する。 - **通信トポロジ**: 討論席に `topology`(`complete`(既定)/ `ring` / `star` / `tree`)を付けると、 各席が毎ラウンド読む相手を制限できる(exchange-of-thought)。バリアは全席同期のまま。 - **動的編成は静的設計の対象外**: 実行中のロール追加・剪定はオーナー操作 `restaff`(agent-amigos 側)で行う。team-builder は初期のチームを設計する — 途中で編成を見直したいときは、現状を踏まえて 再度 team-builder を呼び、その差分を `restaff --add` / `--prune` で反映する運用にする。 これを自動で回したいミッションでは `mission.conductor.enabled: true`(自律コンダクタ)を提案する と、オーナーが実行中に restaff を自律的に回す(AgentVerse / DyLAN / meta-prompting 相当)。 - ペア比較順位(pairwise-rank)は決定的集約にできない(比較が意味判断)ため、ranker ロール (approver)に委ねる — 例: llm-blender / prd-peer-rank。 - `roles` は**1 つ以上必須**。`mission` ブロックは任意(省略時は agent-amigos の既定)。 - `pattern` は採用したパターンの id([パターン選択](#オーケストレーションパターン設計テンプレの選択))。 どれも使わなければ `"none"`。記録用で、無くても公示はできる。 - キー・値の意味は `mission.schema.json` に従う。未知キーは無視される(前方互換)。 - `mission.title` / `mission.goal` は入力ブリーフの値を上書きしたいときだけ載せる。 正典スキーマ: [`schemas/mission.schema.json`](../../../schemas/mission.schema.json)。 ロールミッション表の雛形: [`tools/agent-amigos/roles.yaml.example`](../../../tools/agent-amigos/roles.yaml.example)。 --- ## 設計原則 - **最小人数**: ロールは少ないほど調整コストが小さい。1 ロールで覆えるなら分けない。 - **責務の直交**: 2 ロールが同じ成果物・同じ判断を持たない。境界を明確にする。 - **必須の最小化**: `required: true` は「欠けると収束不能」なロールだけ。あれば嬉しい程度は `required: false`(self-staff / staffing のボトルネックを作らない)。 - **能力整合**: `requires.tags` は入力 `capabilities` の範囲で。存在しない能力を要求して 未充足で詰ませない。 - **承認ゲートは 1 本**: レビュー承認で締めるなら `approver` を明確に 1 ロールへ寄せる。 - **プロンプトは自律の起点**: `mission` 文は「指示の全部」ではなく「自律判断の起点」。 細かな手順の列挙より、ゴール・根拠・完了条件・会話相手を書く。 - **保守的な予算**: 迷ったら予算・締切は省略して既定に委ねる。過小に見積もり、足りなければ `agent-amigos budget add` で足す運用を前提にする。 詳細な設計ヒューリスティクスと例: [`references/design-heuristics.md`](references/design-heuristics.md)。
View on GitHub