| name | workflow-debate |
| description | 複数サブエージェントに異なる立場を与えて議論を反復し、相違が収束するまで議題を検証して結論を提示する。設計妥当性検証・実装方針比較・原因分析のセカンドオピニオン・アイデアの壁打ちに使用。「議論したい」「壁打ちしたい」「セカンドオピニオン」「複数視点で検証したい」などで起動。 |
/workflow-debate
複数のサブエージェントに異なる役割(観点)を与えて議論を反復させ、合意できる結論と残るトレードオフを抽出する。
ワークフロー
フェーズ1: 議題の整理
ユーザーから議題と必要なコンテキスト(関連ファイル、前提条件、ゴール)を受け取る。不明確な場合は AskUserQuestion で確認する。
整理する項目:
- 議題(何を議論するか)
- 前提(議論対象のコード、設計、状況)
- ゴール(議論で何を決めたいか)
- 制約(時間、技術選択、運用制約など)
フェーズ2: ロール設計
議題の性質に応じて 2〜3 個のサブエージェントロールを動的に決定する。
ロール候補
| 議題タイプ | ロール候補 |
|---|
| 設計の妥当性 | 設計純粋主義 (SOLID/DDD 原理派) / 実用主義 (YAGNI 派) / 運用視点 |
| 実装方針の比較 | シンプル派 / 拡張性派 / 性能派 |
| 原因分析のセカンドオピニオン | 表層分析派 / 根本原因派 / システム全体視点 |
| アイデアの壁打ち | 推進派 / Devil's advocate / ユーザー視点 |
| トレードオフ判断 | 短期視点 / 長期視点 / コスト視点 |
議題が表に当てはまらない場合も、対立軸を明示できる 2〜3 ロールを作る。
ロールを決定したら、ユーザーに以下の形式で提示して承認を得る:
議題: <議題>
提案ロール:
- ロールA: <名前> — <立場と価値観>
- ロールB: <名前> — <立場と価値観>
- ロールC: <名前> — <立場と価値観>
AskUserQuestion で「この構成で議論を開始してよいか / 調整したいか」を確認する。ユーザーがロール変更を求めたら調整してから次へ進む。
フェーズ3: 初回意見の収集
各ロールに並列で意見を出してもらう。Agent ツールを subagent_type=general-purpose で複数同時に起動する(並列性を活かす)。
各サブエージェントへのプロンプトテンプレート:
あなたは「<ロール名>」の立場で議論に参加します。
<ロールの説明 — 何を重視し何を懸念するか。価値観を明確に。>
## 議題
<議題>
## 前提・コンテキスト
<フェーズ1で整理した情報、関連ファイルの抜粋、必要な背景>
## 求める出力
1. このロールの立場での主張 (1-3個)
2. 各主張の根拠
3. 想定される反対意見と、それへの応答
4. このロールが特に懸念する点
400字以内で簡潔に。冗長な前置きは不要。markdown 形式。
フェーズ4: 相違点の抽出(各ラウンドで実行)
各サブエージェントの意見を読み、以下を整理する:
- 合意点: 複数のサブエージェントが共通して述べている主張
- 相違点: サブエージェント間で意見が割れている論点
- 未触圏: どのサブエージェントも触れていないが重要そうな観点
整理結果は内部で保持しつつ、ユーザーに簡潔に共有する(任意で追加論点があるか確認)。
フェーズ5: 反論ラウンド
各サブエージェントに他のロールの主張をフィードバックして反論・補足・修正を求める。並列起動。
前ラウンドのあなたの主張:
<前回の主張>
他ロールの主張:
- 「<ロールA>」: <主張>
- 「<ロールC>」: <主張>
特に以下の相違点について、あなたの立場から反論・補足してください:
- 論点1: <相違点>
- 論点2: <相違点>
求める出力:
1. 反論または同意/修正
2. 自分の立場を維持するか変更するかの判断
3. 譲歩できる点と譲歩できない点
300字以内。
各ラウンド後にフェーズ4 に戻って相違点を再抽出する。最大 3 ラウンドまで反復する(経験的に 2〜3 ラウンドで価値観の相違は表面化し、それ以上反復しても収束しないことが多いため)。
フェーズ6: 収束判定
以下のいずれかで終了:
- 全サブエージェントが残る相違について「これ以上収束しない(前提が違う/価値観が違う)」と判断
- 残った相違が単なるトレードオフであり、ユーザー判断に委ねるべきと結論
- 3 ラウンド消化
フェーズ7: 結論の提示
ユーザーに以下のフォーマットで提示する:
## 議論サマリ
### 議題
<議題>
### ロール構成
- <ロールA>: <立場>
- <ロールB>: <立場>
- <ロールC>: <立場>
### 合意できた点(結論)
- ...
- ...
### 残ったトレードオフ
- 論点: <論点>
- <ロールA> の主張: ...
- <ロールB> の主張: ...
- 判断材料: ...
### 推奨アクション
<議題に対する推奨>
理由: <根拠>
ユーザーが追加で深掘りしたい論点があれば、フェーズ5 から再実行する。
注意事項
- サブエージェントは並列起動: フェーズ3・5 では並列で起動してターン消費を抑える
- コンテキスト保護: 各サブエージェントには 300〜400 字以内の簡潔な回答を求める。長文は避ける
- ロールの一貫性: ラウンド間で同じロールを維持する。ロールがブレると議論が無意味になる
- ロールと議題のフィット: ロールが議題に合っていないと議論が表層的になる。フェーズ2 の承認は省略しない
- 過剰反復の回避: 3 ラウンドで合意できなければ「価値観の相違」として明示する。永遠に議論しない
- メイン Claude は司会: メインは自分の意見を主張せず、各ロールの意見を整理して相違点を抽出する役に徹する
関連スキル
/dev-spec (フェーズ 8 深掘りインタビュー) — 議論ではなくインタビュー形式で要件を引き出したい場合