@hummer98/cmux-team 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.claude-plugin/marketplace.json +21 -0
  2. package/.claude-plugin/plugin.json +15 -0
  3. package/CHANGELOG.md +279 -0
  4. package/LICENSE +21 -0
  5. package/README.ja.md +238 -0
  6. package/README.md +158 -0
  7. package/bin/cmux-team.js +29 -0
  8. package/bin/postinstall.js +26 -0
  9. package/commands/master.md +8 -0
  10. package/commands/start.md +42 -0
  11. package/commands/team-archive.md +63 -0
  12. package/commands/team-design.md +199 -0
  13. package/commands/team-disband.md +79 -0
  14. package/commands/team-impl.md +201 -0
  15. package/commands/team-research.md +182 -0
  16. package/commands/team-review.md +222 -0
  17. package/commands/team-spec.md +133 -0
  18. package/commands/team-status.md +24 -0
  19. package/commands/team-sync-docs.md +127 -0
  20. package/commands/team-task.md +158 -0
  21. package/commands/team-test.md +230 -0
  22. package/package.json +51 -0
  23. package/skills/cmux-agent-role/SKILL.md +166 -0
  24. package/skills/cmux-team/SKILL.md +568 -0
  25. package/skills/cmux-team/manager/bun.lock +118 -0
  26. package/skills/cmux-team/manager/cmux.ts +134 -0
  27. package/skills/cmux-team/manager/conductor.ts +347 -0
  28. package/skills/cmux-team/manager/daemon.ts +373 -0
  29. package/skills/cmux-team/manager/e2e.ts +550 -0
  30. package/skills/cmux-team/manager/logger.ts +13 -0
  31. package/skills/cmux-team/manager/main.ts +756 -0
  32. package/skills/cmux-team/manager/master.ts +51 -0
  33. package/skills/cmux-team/manager/package.json +18 -0
  34. package/skills/cmux-team/manager/proxy.ts +219 -0
  35. package/skills/cmux-team/manager/queue.ts +73 -0
  36. package/skills/cmux-team/manager/schema.ts +84 -0
  37. package/skills/cmux-team/manager/task.ts +160 -0
  38. package/skills/cmux-team/manager/template.ts +92 -0
  39. package/skills/cmux-team/templates/architect.md +25 -0
  40. package/skills/cmux-team/templates/common-header.md +12 -0
  41. package/skills/cmux-team/templates/conductor-role.md +244 -0
  42. package/skills/cmux-team/templates/conductor-task.md +37 -0
  43. package/skills/cmux-team/templates/conductor.md +275 -0
  44. package/skills/cmux-team/templates/dockeeper.md +23 -0
  45. package/skills/cmux-team/templates/implementer.md +24 -0
  46. package/skills/cmux-team/templates/manager.md +199 -0
  47. package/skills/cmux-team/templates/master.md +94 -0
  48. package/skills/cmux-team/templates/researcher.md +24 -0
  49. package/skills/cmux-team/templates/reviewer.md +28 -0
  50. package/skills/cmux-team/templates/task-manager.md +22 -0
  51. package/skills/cmux-team/templates/tester.md +27 -0
@@ -0,0 +1,568 @@
1
+ ---
2
+ name: cmux-team
3
+ description: >
4
+ Use when orchestrating multi-agent development via cmux.
5
+ Triggers: .team/ directory exists, user says "team", "spawn agents",
6
+ "parallel", "sub-agent", or any /team-* command is invoked.
7
+ Provides: agent spawning, monitoring, result collection, synchronization protocols.
8
+ ---
9
+
10
+ # cmux-team: マルチエージェントオーケストレーション
11
+
12
+ 4層アーキテクチャ(Master → Manager → Conductor → Agent)による
13
+ 自律的マルチエージェント開発オーケストレーションスキル。
14
+
15
+ ## 0. アーキテクチャ概要
16
+
17
+ ### 4層構造
18
+
19
+ ```
20
+ [ユーザー] ↔ [Master] → [Manager (daemon)] → [Conductor (常駐)] → [Agent (実作業)]
21
+ │ │ │ │ │
22
+ │ │ │ │ ├─ コード実装
23
+ │ │ │ │ ├─ テスト実行
24
+ │ │ │ │ └─ 完了→停止
25
+ │ │ │ │
26
+ │ │ │ ├─ git worktree 内で作業
27
+ │ │ │ ├─ Agent 起動・監視(タブとして作成)
28
+ │ │ │ ├─ 結果統合
29
+ │ │ │ ├─ タスクを close(bun run main.ts close-task)
30
+ │ │ │ └─ done マーカー作成→idle に戻る
31
+ │ │ │
32
+ │ │ ├─ タスク検出→idle Conductor にタスク割り当て
33
+ │ │ ├─ done マーカーで完了検出(pull 型)
34
+ │ │ └─ Journal 読み取り + ログ記録 + Conductor リセット
35
+ │ │
36
+ │ ├─ タスク作成
37
+ │ ├─ 真のソース直接参照→報告
38
+ │ └─ Manager 健全性確認
39
+
40
+ └─ 指示・確認
41
+ ```
42
+
43
+ ### 各層の責務
44
+
45
+ | 層 | 責務 | 特徴 |
46
+ |----|------|------|
47
+ | **Master** | ユーザー対話。タスク作成。真のソース直接参照で進捗報告。 | 作業しない。ポーリングしない。 |
48
+ | **Manager** | daemon として常駐。[TASK_CREATED] 通知で起床→タスク検出→idle Conductor にタスク割り当て→done マーカーで完了検出→ログ記録→Conductor リセット→アイドル化。 | アイドル時停止、イベント駆動。 |
49
+ | **Conductor** | 常駐。タスクを割り当てられると自律実行。git worktree 隔離。Agent spawn(タブ)→結果統合→タスクを close(`bun run main.ts close-task`)→done マーカー作成→idle に戻る。 | 常駐。タスク完了後も停止しない。 |
50
+ | **Agent** | 実作業(実装・テスト・リサーチ等)。 | 完了したら停止。上位が見に来る。 |
51
+
52
+ ### 通信方式
53
+
54
+ | 方向 | 手段 |
55
+ |------|------|
56
+ | Master → Manager | `.team/tasks/` + `task-state.json` + `cmux send` 通知(イベント駆動) |
57
+ | Manager → Conductor | `cmux send`(`/clear` + 新プロンプト送信) |
58
+ | Manager ← Conductor | done マーカーファイル(`.team/output/conductor-N/done`)の存在確認(pull 型) |
59
+ | Conductor → Agent | `cmux send`(プロンプト送信) |
60
+ | Conductor ← Agent | pull(`cmux read-screen` で `❯` 検出) |
61
+ | Manager → Master | `.team/logs/manager.log` + `cmux read-screen`(直接参照) |
62
+
63
+ ## 1. Master の行動原則
64
+
65
+ **あなたは Master です。** 以下の原則を厳守すること。
66
+
67
+ ### やること
68
+
69
+ - ユーザーの指示を解釈し `bun run main.ts create-task` でタスクを作成(`.team/tasks/` に配置、状態は `task-state.json` で管理)
70
+ - `/team-init` で Manager を spawn
71
+ - 真のソースを直接参照してユーザーに進捗を報告(`cmux tree`, `ls .team/tasks/`, `manager.log`, `cmux read-screen`)
72
+ - Manager の健全性を `cmux read-screen` で確認(Manager が止まっていたら再 spawn)
73
+
74
+ ### やらないこと
75
+
76
+ - コードの読解・実装・テスト・レビュー
77
+ - Conductor / Agent の直接起動・監視
78
+ - ポーリング・ループ実行
79
+ - `.team/` 管理ファイル以外のファイル操作
80
+
81
+ ### Manager spawn 手順
82
+
83
+ ```bash
84
+ # 1. Manager 用ペインを作成
85
+ cmux new-split right # → surface:M
86
+ cmux rename-tab --surface surface:M "[M] Manager"
87
+
88
+ # 2. Claude を初期プロンプト付きで起動(Sonnet)
89
+ cmux send --surface surface:M "claude --dangerously-skip-permissions --model sonnet '.team/prompts/manager.md を読んで指示に従って作業を開始してください。'\n"
90
+
91
+ # 3. Trust 確認が出たら承認
92
+ for i in $(seq 1 10); do
93
+ SCREEN=$(cmux read-screen --surface surface:M 2>&1)
94
+ if echo "$SCREEN" | grep -q "Yes, I trust"; then
95
+ cmux send-key --surface surface:M "return"
96
+ sleep 3; break
97
+ elif echo "$SCREEN" | grep -qE '(Thinking|Reading|❯)'; then
98
+ break
99
+ fi
100
+ sleep 3
101
+ done
102
+ ```
103
+
104
+ ### タスクファイル形式
105
+
106
+ `.team/tasks/<task-id>.md`(状態は `.team/task-state.json` で管理):
107
+
108
+ ```markdown
109
+ ---
110
+ id: task-001
111
+ title: ログイン機能の実装
112
+ priority: high
113
+ ---
114
+
115
+ ## 要件
116
+ ユーザーがメールアドレスとパスワードでログインできるようにする。
117
+
118
+ ## 受け入れ基準
119
+ - ...
120
+ ```
121
+
122
+ ## 2. Manager プロトコル
123
+
124
+ Manager は **TypeScript daemon** (`skills/cmux-team/manager/main.ts`) として動作する。Sonnet の Claude セッションではなく、Bun で実行される Node/Bun プロセスとして常駐し、キューベースのイベント駆動でタスク検出・Conductor 割り当て・完了検出を行う。
125
+
126
+ ### 2.1 タスク検出
127
+
128
+ ```bash
129
+ # タスクファイル一覧
130
+ ls .team/tasks/*.md 2>/dev/null
131
+
132
+ # タスクの状態を確認(status は task-state.json で管理)
133
+ cat .team/task-state.json
134
+ ```
135
+
136
+ `task-state.json` で `status: ready` のタスクが存在すれば Conductor に割り当てる。なければ待機して再チェック。
137
+
138
+ ### 2.2 Conductor へのタスク割り当て
139
+
140
+ Conductor は起動時に固定ペインとして常駐している。新しいタスクがある場合、daemon が idle 状態の Conductor を見つけてタスクを割り当てる:
141
+
142
+ 1. daemon が idle Conductor を見つける(done マーカーなし + surface 生存 + `❯` 表示中)
143
+ 2. worktree 作成・プロンプト生成
144
+ 3. Conductor の surface に `/clear` + 新プロンプトを送信
145
+ 4. Conductor がタスク実行開始
146
+
147
+ ```bash
148
+ # daemon の assignTask() が以下を実行:
149
+ # 1. git worktree 作成
150
+ # 2. Conductor プロンプト生成(.team/prompts/conductor-N.md)
151
+ # 3. Conductor surface に /clear + プロンプト送信
152
+ cmux send --surface surface:C "/clear\n"
153
+ sleep 1
154
+ cmux send --surface surface:C "${PROMPT}"
155
+ sleep 0.5
156
+ cmux send-key --surface surface:C "return"
157
+ ```
158
+
159
+ **Conductor は spawn しない。** 起動時に作成された固定ペインに対してタスクを送信するだけ。
160
+
161
+ ### 2.3 Conductor 監視(pull 型)
162
+
163
+ done マーカーファイル(`.team/output/conductor-N/done`)の存在で Conductor の状態を判定する:
164
+
165
+ ```bash
166
+ # 主要な判定方法: done マーカーファイル
167
+ if [ -f .team/output/conductor-N/done ]; then
168
+ # → 完了
169
+ elif bash .team/scripts/validate-surface.sh surface:C; then
170
+ # done ファイルなし + surface 生存 → 実行中
171
+ echo "Conductor-N: 実行中"
172
+ else
173
+ # surface 消失 → クラッシュ
174
+ echo "WARNING: Conductor-N がクラッシュ"
175
+ fi
176
+ ```
177
+
178
+ **フォールバック:** done マーカーが確認できない場合は `cmux read-screen` で `❯` 検出を使用する:
179
+
180
+ ```bash
181
+ SCREEN=$(cmux read-screen --surface surface:C 2>&1)
182
+ # ❯ あり AND "esc to interrupt" なし → 完了(アイドル状態)
183
+ # ❯ あり AND "esc to interrupt" あり → 実行中
184
+ ```
185
+
186
+ **重要: push ではなく pull 型。Conductor は完了したら done マーカーを作成して idle に戻る。Manager が見に来る。**
187
+
188
+ ### 2.4 結果回収
189
+
190
+ Conductor 完了(done マーカー検出)後、Manager は以下のみを行う:
191
+
192
+ ```bash
193
+ # 1. 完了タスクの Journal を確認(task-state.json で closed のタスクを特定)
194
+ cat .team/task-state.json | grep -A5 '"closed"'
195
+
196
+ # 2. ログ記録
197
+ echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] task_completed id=<task-id> conductor=conductor-N" >> .team/logs/manager.log
198
+
199
+ # 3. Conductor リセット(/clear 送信で次のタスクに備える)
200
+ cmux send --surface surface:C "/clear\n"
201
+
202
+ # 4. done マーカーを削除
203
+ rm -f .team/output/conductor-N/done
204
+ ```
205
+
206
+ **Manager がやらないこと:**
207
+ - タスクの close(Conductor が `bun run main.ts close-task` を実行)
208
+ - Conductor ペインの close(persistent — 閉じない)
209
+ - worktree の削除(Conductor の責務)
210
+ - マージ処理(Conductor が納品方法を判断する)
211
+
212
+ ### 2.5 ループ継続・アイドル化
213
+
214
+ 結果回収後、タスクを再スキャンする。タスクがあれば Conductor を起動、なければアイドル化して Master からの通知を待機。
215
+
216
+ - **Conductor 稼働中**: 30秒間隔で pull 型監視を実行
217
+ - **アイドル時(open tasks ゼロ)**: Manager は停止して待機。`.team/logs/manager.log` に `idle_start` を記録
218
+ - **起床トリガー**: Master が新規 issue を作成すると、システムが `[TASK_CREATED]` 通知をユーザーに表示。ユーザーが新しいセッションで Manager を再 spawn するか、既存 Manager ペインで restart コマンドを実行
219
+
220
+ ## 3. Conductor プロトコル
221
+
222
+ Conductor は **常駐 Claude セッション** として固定ペインに配置される。タスクを割り当てられると自律的に完遂し、完了後は idle 状態に戻って daemon から次のタスクの割り当てを待つ。テンプレート `templates/conductor.md` 参照。
223
+
224
+ ### 3.1 タスク受領
225
+
226
+ ```bash
227
+ # Manager が書き出したタスク定義を読む
228
+ cat .team/tasks/conductor-N.md
229
+ ```
230
+
231
+ ### 3.2 git worktree 内で作業
232
+
233
+ **すべての作業は `.worktrees/conductor-N/` 内で行う。main ブランチは無傷。**
234
+
235
+ ```bash
236
+ cd .worktrees/conductor-N
237
+ # 以降すべてここで作業
238
+ ```
239
+
240
+ ### 3.3 Agent 起動
241
+
242
+ **Agent は必ず `spawn-agent` CLI で起動すること。** 直接 `cmux new-surface` + `cmux send` で起動してはならない。CLI がプロキシ設定・タブ作成・Trust 承認・ログ記録を一括で行う。
243
+
244
+ ```bash
245
+ # MAIN_TS のパスを取得(Conductor プロンプトに記載)
246
+ MAIN_TS="$PROJECT_ROOT/skills/cmux-team/manager/main.ts"
247
+
248
+ # 1. プロンプトファイルを作成
249
+ PROMPT_FILE="$PROJECT_ROOT/.team/prompts/${CONDUCTOR_ID}-agent-N.md"
250
+ cat > "$PROMPT_FILE" << 'AGENT_PROMPT'
251
+ # Agent タスク
252
+ ## 作業内容
253
+ <ここにサブタスクの指示を記述>
254
+ ## 完了条件
255
+ <完了条件を記述>
256
+ ## 完了時
257
+ 作業が完了したら停止してください。
258
+ AGENT_PROMPT
259
+
260
+ # 2. spawn-agent CLI で起動
261
+ RESULT=$(bun run "$MAIN_TS" spawn-agent \
262
+ --conductor-id $CONDUCTOR_ID \
263
+ --role impl \
264
+ --task-title "<サブタスクの簡潔な説明>" \
265
+ --prompt-file "$PROMPT_FILE")
266
+ AGENT_SURFACE=$(echo "$RESULT" | grep -o 'SURFACE=surface:[0-9]*' | cut -d= -f2)
267
+ ```
268
+
269
+ **禁止事項:**
270
+ - `cmux new-surface` で直接タブを作成してはならない
271
+ - `cmux send` で直接 `claude` コマンドを送信してはならない
272
+ - Claude Code の Agent ツール(サブエージェント)を使ってはならない
273
+
274
+ **1体ずつ確実に起動すること。** 起動確認(`cmux read-screen` で処理開始を検出)してから次を起動する。
275
+
276
+ ### 3.4 Agent 監視(pull 型)
277
+
278
+ Manager と同じ判定ロジック:
279
+
280
+ ```bash
281
+ SCREEN=$(cmux read-screen --surface surface:A 2>&1)
282
+ # ❯ あり AND "esc to interrupt" なし → 完了
283
+ # ❯ あり AND "esc to interrupt" あり → 実行中
284
+ ```
285
+
286
+ ### 3.5 結果統合
287
+
288
+ - Agent の出力ファイルを確認
289
+ - 問題があれば修正指示を追加で `cmux send`
290
+ - テストを実行し全パスを確認
291
+
292
+ ### 3.6 完了
293
+
294
+ Conductor は停止しない。以下の手順で完了処理を行い、idle 状態に戻る:
295
+
296
+ ```bash
297
+ # 1. Agent タブをすべて close
298
+ cmux send --surface surface:A "/exit\n"
299
+ cmux close-surface --surface surface:A
300
+
301
+ # 2. worktree を削除
302
+ cd {{PROJECT_ROOT}}
303
+ git worktree remove {{WORKTREE_PATH}} --force 2>/dev/null || true
304
+ git branch -d {{CONDUCTOR_ID}}/task 2>/dev/null || true
305
+
306
+ # 3. タスクを close(task-state.json の status を closed に更新)
307
+ bun run {{PROJECT_ROOT}}/.team/manager/main.ts close-task --task-id <TASK_ID> --journal "タスク完了サマリー"
308
+
309
+ # 4. done マーカーを作成
310
+ touch {{OUTPUT_DIR}}/done
311
+
312
+ # 5. ❯ プロンプトに戻る(idle 状態)
313
+ # daemon がリセット処理(/clear + done マーカー削除)を行う
314
+ ```
315
+
316
+ ## 4. Agent プロトコル
317
+
318
+ Agent は実作業を担当する。`cmux-agent-role` スキル参照。
319
+
320
+ - 割り当てられたタスクを実行する
321
+ - 指定された出力ファイルに結果を書く
322
+ - **完了したら停止する。報告は不要。** 上位(Conductor)が `cmux read-screen` で検出する
323
+ - worktree 内で作業すること(Conductor から指定されたディレクトリ)
324
+
325
+ ## 5. 通信プロトコル
326
+
327
+ ### ファイルベース通信
328
+
329
+ `.team/` ディレクトリ構造:
330
+
331
+ ```
332
+ .team/
333
+ ├── tasks/ # タスクファイル(フラット構造)
334
+ ├── task-state.json # タスク状態管理(status: draft/ready/assigned/closed)
335
+ ├── output/
336
+ │ └── conductor-N/ # Conductor が書く、Manager が読む
337
+ │ └── summary.md
338
+ ├── prompts/ # 各層がプロンプト生成時に書き出す(監査証跡)
339
+ ├── specs/ # 要件・設計ドキュメント
340
+ └── team.json # チーム構成(Master が初期化)
341
+ ```
342
+
343
+ ### cmux コマンド通信
344
+
345
+ | コマンド | 用途 |
346
+ |---------|------|
347
+ | `cmux send` | 上位→下位のプロンプト送信 |
348
+ | `cmux send-key return` | 複数行プロンプトの送信確定 |
349
+ | `cmux read-screen` | 上位が下位の画面を読む(pull 型監視) |
350
+ | `cmux close-surface` | 完了した Agent タブの終了 |
351
+ | `bun run main.ts spawn-agent` | Agent 起動(タブ作成・プロキシ設定・Trust 承認を一括実行) |
352
+
353
+ ### 複数行テキスト送信の注意
354
+
355
+ **単一行テキスト**(シェルコマンドなど)は末尾 `\n` で送信可能。
356
+ **複数行テキスト**(プロンプトなど)は `\n` では送信されない。以下の手順を使うこと:
357
+
358
+ ```bash
359
+ # 1. テキストを送信(\n を付けない)
360
+ cmux send --surface surface:M "${PROMPT}"
361
+ # 2. 明示的に Enter を送信
362
+ sleep 0.5
363
+ cmux send-key --surface surface:M "return"
364
+ ```
365
+
366
+ ## 6. チーム状態管理
367
+
368
+ ### team.json(daemon が自動管理)
369
+
370
+ team.json は daemon の `updateTeamJson()` が定期的に自動更新する。Master、Conductor、手動コマンドから直接書き込んではならない。
371
+
372
+ ```json
373
+ {
374
+ "project": "project-name",
375
+ "description": "",
376
+ "phase": "init",
377
+ "architecture": "4-tier",
378
+ "created_at": "2026-03-23T00:00:00Z",
379
+ "manager": {
380
+ "pid": 12345,
381
+ "surface": "surface:N",
382
+ "status": "running"
383
+ },
384
+ "master": {
385
+ "surface": "surface:M"
386
+ },
387
+ "conductors": [],
388
+ "completed_outputs": []
389
+ }
390
+ ```
391
+
392
+ ### 進捗情報の取得方法(Master 向け)
393
+
394
+ status.json は廃止。Master は以下の真のソースから直接情報を取得する:
395
+
396
+ | 情報 | 真のソース | 取得方法 |
397
+ |------|-----------|---------|
398
+ | Manager の状態 | Manager ペイン | `cmux read-screen --surface MANAGER` |
399
+ | 稼働中 Conductor | cmux ペイン構成 | `cmux tree` |
400
+ | open task 数 | task-state.json | `cat .team/task-state.json`(status で絞り込み) |
401
+ | 完了タスク履歴 | ログ | `cat .team/logs/manager.log` |
402
+
403
+ ## 7. レイアウト戦略
404
+
405
+ ### 基本方針: 固定2x2レイアウト
406
+
407
+ 起動時に固定の2x2レイアウト(4ペイン、5 surface)を作成し、セッション終了まで変更しない。
408
+
409
+ ```
410
+ [Manager|Master] | [Conductor-1]
411
+ [Conductor-2 ] | [Conductor-3]
412
+ ```
413
+
414
+ - **左上**: Manager(daemon)| Master(ユーザーセッション)— 2つの surface がタブとして同居
415
+ - **右上**: Conductor-1(常駐 Claude セッション)
416
+ - **左下**: Conductor-2(常駐 Claude セッション)
417
+ - **右下**: Conductor-3(常駐 Claude セッション)
418
+
419
+ ### レイアウトの特徴
420
+
421
+ - **4ペイン(5 surface)は不動** — close しない
422
+ - **サブエージェント**は `spawn-agent` CLI で Conductor ペイン内にタブとして作成(直接 `cmux new-surface` を使わない)
423
+ - **最大3タスク並列**、4つ目以降はキューイング
424
+ - **タスク完了時**: Conductor が `bun run main.ts close-task` でタスクを close、done マーカー作成
425
+
426
+ ### サブエージェントの配置
427
+
428
+ サブエージェントは `spawn-agent` CLI で起動する。CLI が Conductor ペイン内にタブを作成し、プロキシ設定・Trust 承認を自動処理する:
429
+
430
+ ```bash
431
+ bun run "$MAIN_TS" spawn-agent \
432
+ --conductor-id $CONDUCTOR_ID \
433
+ --role impl \
434
+ --task-title "サブタスク名" \
435
+ --prompt-file "$PROMPT_FILE"
436
+ ```
437
+
438
+ タブはペインのスペースを消費しないため、レイアウトが崩れない。Conductor はタブを切り替えて Agent の画面を確認できる。
439
+
440
+ ### 注意事項
441
+
442
+ - ペイン幅・高さが狭すぎると `cmux send` や `cmux read-screen` が正常に動作しない
443
+ - Agent のタブはタスク完了時に close する(ペインは残す)
444
+ - Conductor ペインは常に残る — 異常終了時もレイアウトは維持される
445
+
446
+ ## 8. git worktree プロトコル
447
+
448
+ ### 作成
449
+
450
+ ```bash
451
+ git worktree add .worktrees/conductor-N -b conductor-N/task
452
+ ```
453
+
454
+ ### ブートストラップ(作成直後に必ず実行)
455
+
456
+ git worktree は tracked files のみチェックアウトする。`.gitignore` されたディレクトリ(`node_modules/`, `dist/`, `workspace/` 等)は手動で再構築する必要がある。
457
+
458
+ ```bash
459
+ cd .worktrees/conductor-N
460
+
461
+ # 依存関係のインストール
462
+ npm install # or yarn install, pnpm install
463
+
464
+ # プロジェクト固有の初期化(例: scaffold からのコピー)
465
+ # 各プロジェクトの README や CLAUDE.md を参照して必要な手順を確認
466
+
467
+ # 環境変数
468
+ direnv allow # .envrc がある場合
469
+ ```
470
+
471
+ **重要**: 必要な初期化手順はプロジェクトごとに異なる。worktree 作成後、作業開始前に以下を確認すること:
472
+ - `package.json` があれば `npm install`
473
+ - `.gitignore` に記載されたビルド成果物やランタイムディレクトリの有無
474
+ - `.envrc` や環境変数の設定
475
+
476
+ ### 作業
477
+
478
+ Agent はすべて worktree 内で作業する。main ブランチは常に無傷。
479
+
480
+ ### 成功時
481
+
482
+ ```bash
483
+ # Conductor が worktree 内で commit
484
+ cd .worktrees/conductor-N
485
+ git add -A
486
+ git commit -m "conductor-N: タスク完了"
487
+
488
+ # Manager が main にマージ
489
+ cd /path/to/project
490
+ git merge conductor-N/task
491
+
492
+ # worktree を削除
493
+ git worktree remove .worktrees/conductor-N
494
+ git branch -D conductor-N/task
495
+ ```
496
+
497
+ ### 失敗時
498
+
499
+ ```bash
500
+ git worktree remove --force .worktrees/conductor-N
501
+ git branch -D conductor-N/task
502
+ ```
503
+
504
+ ## 9. エラーリカバリ
505
+
506
+ | 障害 | 検出者 | 対応 |
507
+ |------|--------|------|
508
+ | Agent クラッシュ | Conductor | `cmux read-screen` で異常検出 → ペイン閉じて再 spawn |
509
+ | Conductor クラッシュ | Manager | `cmux read-screen` で異常検出 → ペイン閉じて再 spawn、または abort してタスクを reopen |
510
+ | Manager クラッシュ | Master | `cmux read-screen` で Manager ペインが応答なし → ペイン閉じて再 spawn |
511
+ | API レート制限 | 各層 | 待機して再試行。同時 Agent 数を減らす |
512
+
513
+ ### 異常検出の基準
514
+
515
+ ```bash
516
+ SCREEN=$(cmux read-screen --surface surface:X 2>&1)
517
+
518
+ # 正常パターン:
519
+ # - "esc to interrupt" が含まれる → 実行中
520
+ # - ❯ が含まれ "esc to interrupt" がない → アイドル(完了)
521
+
522
+ # 異常パターン:
523
+ # - シェルプロンプト ($, %) が見える → Claude が終了した
524
+ # - エラーメッセージが見える → クラッシュ
525
+ # - 画面が空 → ペインが消えた
526
+ ```
527
+
528
+ ## 10. コマンド一覧
529
+
530
+ ### 基本コマンド
531
+
532
+ | コマンド | 説明 |
533
+ |---------|------|
534
+ | `/start` | チーム体制構築(Master + Manager 起動) |
535
+ | `/team-status` | ステータス表示(真のソース直接参照) |
536
+ | `/team-disband` | 全層終了(Agent → Conductor → Manager の順で bottom-up) |
537
+ | `/team-spec` | 要件ブレスト(Master が直接ユーザーと対話) |
538
+ | `/team-task` | タスク管理(タスクの作成・一覧・クローズ) |
539
+
540
+ ### daemon CLI サブコマンド
541
+
542
+ 正規フローは daemon 経由(`cmux-team start` → タスク作成 → Manager → Conductor → Agent)で実行される。
543
+
544
+ | コマンド | 説明 |
545
+ |---------|------|
546
+ | `cmux-team start` | daemon 起動 + Master spawn + レイアウト構築 |
547
+ | `cmux-team status` | ステータス表示(team.json + ログ末尾) |
548
+ | `cmux-team stop` | graceful shutdown(SHUTDOWN メッセージ送信) |
549
+ | `cmux-team send TASK_CREATED` | タスク作成通知(`--task-id`, `--task-file` 必須) |
550
+ | `cmux-team send TODO` | TODO 通知(`--content` 必須) |
551
+ | `cmux-team send SHUTDOWN` | シャットダウン通知 |
552
+ | `cmux-team spawn-agent` | Agent spawn(`--conductor-id`, `--role`, `--prompt` or `--prompt-file`) |
553
+ | `cmux-team agents` | 稼働中エージェント一覧 |
554
+ | `cmux-team kill-agent` | Agent 終了(`--surface` 必須、`--conductor-id` 任意) |
555
+ | `cmux-team create-task` | タスク作成(`--title` 必須、`--priority`, `--status`, `--body` 任意) |
556
+
557
+ ### 手動オーバーライド(daemon 未起動時・デバッグ用)
558
+
559
+ 以下のコマンドは daemon を経由せず Master が直接実行するためのもの。daemon が起動していない環境やデバッグ時に使用する。
560
+
561
+ | コマンド | 説明 |
562
+ |---------|------|
563
+ | `/team-research` | リサーチ直接実行 |
564
+ | `/team-design` | 設計直接実行 |
565
+ | `/team-impl` | 実装直接実行 |
566
+ | `/team-review` | レビュー直接実行 |
567
+ | `/team-test` | テスト直接実行 |
568
+ | `/team-sync-docs` | ドキュメント同期直接実行 |