プロジェクトチーム
3つの役割があります。以下の共通ルールを読み、自分の役割ファイルだけを参照してください:
- ブレインストーム: 「ブレインストームエージェントになって」→ brainstorm.md
- コーディネーター: 「コーディネーターになって」→ coordinator.md。独立したセッション。番号は付けません。
- パートN: 「パートNになって」(「タスクN」「エージェントN」も同様)→ worker.md
<repo> = フォルダ ~/<repo>;<proj> = セッション名で使う短い名前(多くの場合同一)。<NN> = 2桁のパート番号。
スキルファイル: ~/.claude/skills/project-team/(templates/、scripts/tokens.sh セッションごとのトークン、scripts/patrol.sh コーディネーター巡回)。
ユーザー自身のマルチエージェントプロジェクト実行結果から構築(2026-10)。
プロジェクトレイアウト(ブレインストーム作成)
CLAUDE.md 3行のみのポインタ(templates/CLAUDE_pointer.md)
.claude/settings.json {"crossSessionInbound": "accept"} ← セッションはメッセージを受信可能
docs/INTERFACES.md パート間の契約;git管理;コードと同じコミットで変更
team/ 調整状態;`/team/`はgitignore;`~/<repo>/team` にのみ存在
TEAM.md プロジェクトの事実、読み順、コーディネーター権限、プロジェクト固有ルール
SCOPE.md 目標・ユーザー決定(日付)・提案デフォルト・スコープ外
PARTS.md パート一覧・ディスパッチ表・フローチャート・ウェーブ
parts/P<NN>_<name>.md パートごとのブリーフ1つ
STATUS.md パートごとに1行・ユーザー必要・直近10のマイルストーン
REQUESTS.md ユーザーのリクエスト/バグ報告、そのままの言葉、担当者、状態
ISSUES.md パート間のバグ・DECISIONS.md 逸脱・log/P<NN>.md パートごとのメモ
research/NN_<topic>.md ・ launch.sh(tmux内の名前付きセッション;オプション)
ワークツリーには team/ はありません:常に絶対パス ~/<repo>/team/... を使用。
共通ルール(全役割)
名前はアドレスです。 <proj> coordinator、<proj> part N;その正確な名前に対してSendMessageします。エージェントは自分で名前を変更できません:ListAgentsの最初の行(「このセッションは...」)が自分の名前でない場合、ユーザーに一度だけ「/rename <proj> part N お願いします」と伝え、その間も読み続けてください。
メッセージは誰かが行動すべきときだけに送信します。 1つのタグ、先頭の単語:
| タグ | 送信元 → 送信先 | タイミング |
|---|---|---|
DONE P3.2 <sha> | パート → コーディネーター | ディスパッチ内のNamedステップが完了、またはパート全体がマージされた。マイルストーンはここにのみ記載 |
START P4.2 | コーディネーター → パート | そのステップのすべてのNeedがマージされた |
STOP / RESUME | コーディネーター → パート | 実行制御 |
REQ R7 <ユーザーの言葉> / DONE R7 <sha> | コーディネーター ↔ 担当パート | ユーザーのリクエストがルーティング/完了 |
DECISION <ユーザーの言葉> | コーディネーター → 影響を受けるパート;パート → コーディネーター(ユーザーがパートに伝えた場合) | ユーザーが何かを決定した |
ISSUES N | パート → 担当パート | ISSUES.mdにあなた向けの新しい行がN行。バッチ処理 |
IFACE | パート → 影響を受けるパート | INTERFACES.mdの契約があなたの下で変更された |
BLOCKED | パート → コーディネーター | 続行不可能かつ回避策もない(そうでなければNeed user行を入れ、メッセージは不要) |
ASK | 誰でも → 誰でも | 回答が必要。返信が許可される唯一のタグ |
- 原始的に、≤2行、≤300文字、事実を先に。ファイルやコミットを指し示し、説明は不要。
ASK以外には返信しません。 決して確認応答、感謝、「了解」、「今から始めます」、「進捗」、「すべて順調」とは言いません。- 記録に値する → ディスク(STATUS行、ログ、ISSUES、DECISIONS)に書き込み、メッセージにはしません。
- 待機:自分のターンを終了します。ポーリングやスリープループは行いません。メッセージが起動します。
- エージェントの逸脱(おしゃべり、確認応答、スコープ外):一行で一度だけ注意します。
共有ファイル。 多くのエージェントが team/ に書き込みます:STATUS/REQUESTSはEditツールのみで変更(古い書き込みを拒否するので、再読み込みして再試行)。ISSUES/DECISIONSには >> で追記。sed -i やWriteで上書きしてはいけません。
ユーザーへの質問はコーディネーターを通じてのみ、バッチ化して番号を振ります。パートはユーザーをブロックしてはいけません。またAskUserQuestionを使用してはいけません:STATUSにNeed user行(- [ ] P3: 質問; 使用した回避策; 影響)を入れ、ブリーフの提案を使用し、DECISIONS.mdに記録し、続行します。
すべての役割はリーダーです。 広範な読み取り、コーディング、長時間のテスト→サブエージェントに原始的なブリーフ(スコープ、編集可能な絶対パス、完了条件)を与え、≤100語のレポート、長い出力はファイルに書き込みます。同時実行するサブエージェントは同じファイルを編集してはいけません。共有レジストリ/インデックスファイルはリーダーのみが編集します。
マシンを共有。 自分が開始したPIDのみをkillします(あるパートの pkill -f vite が全員のサーバーを殺します)。自分のポート範囲のみ使用します。GPU使用前に nvidia-smi を実行します。ListAgentsだけで別のエージェントが死んだと宣言してはいけません(ps、tmux、トランスクリプトのmtimeを確認)。ユーザーの許可なく、他のエージェントの作業やプロセスをkillしたり引き継いだりしてはいけません。誰かが使用している可能性のあるサービス(ユーザーがプレイ中、デモ中)を、アイドル状態であることを確認せずに再起動してはいけません。自動モードでコマンドがブロックされた場合は、再試行や回避策を試みず、Need user行を入れ、次に進みます。ユーザーのグローバルルールは依然として適用されます。
STOP:現在の小さなアクションを完了し、サブエージェントと開発サーバーを停止し(本番/ライブサービスはそのまま)、自分のブランチ(mainは不可)にWIPをコミットし、「Xで停止、次にY」とログに記録し、自分の行を stopped に設定し、ターンを終了します。
RESUME / コンパクション後:TEAM.md(ルールが変更されている可能性があります)、自分のログ、自分の行、git status を再読み込みし、続行します。