本文へ移動
cccskills
無料GitHub で公開

magi

MAGI System v2 — AoT 分解 + MELCHIOR/BALTHASAR/CASPAR 合議 + gabriel adversarial probe による 構造化意思決定フレームワーク。判断ポイント 2+ / 影響レイヤー 3+ / 選択肢 3+ で使用。

Use when facing complex decisions with multiple trade-offs or architectural choices.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md17.7 KB
  • references/anchor-format.md3.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

/magi — 構造化意思決定(MAGI System v2)

名前の由来: エヴァンゲリオンの MAGI システム(3 つの独立した思考体による合議意思決定)+ gabriel adversarial verifier(4 番目の独立検証者)。

MAGI System v2

SSOT: docs/internal/06_DECISION_MAKING.md を精読すること。 Wave C 統合仕様: docs/specs/magi-v2-gabriel/{requirements,design}.md v0.4.0。

MAGIペルソナフォーカス
MELCHIOR科学者(推進者)[旧: Affirmative]Value, Speed, Innovation
BALTHASAR母(批判者)[旧: Critical]Risk, Security, Debt
CASPAR女(調停者)[旧: Mediator]Synthesis, Balance, Decision(純調停者化: Step 3 で完結)
gabriel独立検証者(4 番目)Adversarial probe / 外部視点からの Convergence 検証 / AoT 適用時のみ起動

適用条件

以下のいずれかに該当する場合に発動する:

  • 判断ポイントが 2 つ以上
  • 影響するレイヤー/モジュールが 3 つ以上
  • 有効な選択肢が 3 つ以上

ユーザーが明示的に /magi を呼び出した場合は、条件に合致しなくても必ず実行する。

条件に合致しないかつ明示呼出しでない場合は「従来手法で十分です」と案内する。

モード判定: AoT 適用 vs 軽量モード

MAGI は 2 つのモードを持つ:

  • AoT 適用モード: 判断ポイント 2+ / 影響 3+ / 選択肢 3+ の いずれか を満たす → Step 0-5 実施(gabriel probe 含む)
  • 軽量モード(非 AoT): 上記条件を満たさない → Step 1-3 のみ / gabriel probe は起動しない(FR-W-C-3 MUST NOT)

MAGI ログ冒頭で必ずモード(AoT または 軽量)を宣言する。

実行フロー

Step 0: AoT Decomposition(分解 / AoT 適用モードのみ)

議題を Atom(判断単位)に分解し、各 Atom が読む状態と書く状態を宣言する(依存 DAG はそこから導出する)。

分解の前に docs/adr/ の既存 ADR 一覧を走査し、同じ判断が既に決定済みでないか(または前提が失効していないか)を確認する。

Atom の 3 条件:

  • 自己完結性: 他の Atom に依存せず独立処理可能
  • インターフェース契約: 入力と出力が明確
  • エラー隔離: 失敗しても他 Atom に影響しない
### AoT Decomposition

| Atom | 判断内容 | 読む状態 | 書く状態 |
|:-----|:---------|:---------|:---------|
| A1 | [判断1] | [参照する事実・ファイル・前段の結論] | [この Atom が変える対象] |
| A2 | [判断2] | [同上。A1 の結論を読むならそう書く] | [同上] |

「依存」「並列可否」「独立」を列に持たないこと。それらは結論であって事実ではなく、 宣言すると証明されないまま真として扱われる(要素 n 個で n(n−1)/2 本の暗黙の主張が立つ)。 読む状態・書く状態を書けば、依存は「A の書く状態を B が読む」として、 並列可否は「書込集合が交わらない」として導出できる。根拠: HGA #32(2026-09-05)。

Step 1: Divergence(発散)

MELCHIOR と BALTHASAR がそれぞれの立場から意見を出し尽くす。

  • MELCHIOR: メリット、開発効率、革新性を列挙
  • BALTHASAR: リスク、セキュリティ懸念、保守コストを列挙

Step 2: Debate(議論)

対立するポイントについて、具体的な解決策や緩和策を検討する。

Step 3: Convergence(収束)

CASPAR が議論を整理し、結論を下す。CASPAR は Step 3 で完結し、gabriel の結果を受けて再処理を行わない(純調停者化 / gabriel 統合後の設計原則)。

### Atom A1: [判断内容]

**[MELCHIOR]**: ...
**[BALTHASAR]**: ...
**[CASPAR]**: 結論: ...

Step 4: gabriel adversarial probe(AoT 適用モードのみ / 新設)

旧 Step 4 Reflection は廃止(gabriel probe に統合)。 B-4 監査(2026-06-19)実機計測: Reflection の初回変更率 0%(全 7 件「致命的な見落とし: なし → 結論確定」)で「無効な安全網」であったため、Wave C(骨子 ②)で構造的解決として gabriel に置換した(ADR-0007 Accepted)。

CASPAR の Convergence 結論に対し、独立コンテキストで動作する gabriel subagent が adversarial verification を実施する。

起動条件:

  • AoT Decomposition(Step 0)が実施されていること
  • gabriel opt-out 記録がないこと(下記 §Step 4.2 参照)

gabriel の役割: CASPAR の統合結論を そのまま正としてではなく、結論に至った前提・根拠・棄却された代替案を独立に再検証する(design.md §4 / FR-W-C-1)。

プローブ観点(rubric 5 観点):

  1. 論理的一貫性: 各 Atom の結論に矛盾がないか
  2. 仕様整合: CASPAR の結論が既存仕様(docs/specs/ / docs/internal/)と矛盾しないか
  3. リスク見落とし: MELCHIOR / BALTHASAR が検討していない重大なリスクの有無
  4. 前提検証: 分解表に「読む状態 / 書く状態」列があるか。無いまま依存・並列・独立・同一を 主張していれば、それ自体を severity=critical とする。列がある場合は、宣言された状態を 基質(実ファイル・コード・設定)と照合し、宣言が実際より小さくないかを検査する (書かれていない書込 —— とくに hook 副作用 —— を探す)
  5. 境界条件: 結論が適用できないエッジケース(スコープ外・例外)が未記録ではないか

呼び出し方法: Task ツール経由で subagent_type=gabriel を起動する。gabriel は独立コンテキストで動作し、Read/Glob/Grep のみ利用可(Write/Edit/Bash・Agent ツール禁止 / NFR-W-C-3 暴走リスク抑制)。memory: project は Write/Edit を自動付与するため、disallowedTools: Write, Edit で打ち消している(2026-08-26 canary で実測 / docs/artifacts/2026-08-22-enumeration-drift-sweep.md §1)。

タイムアウト: 360 秒(NFR-W-C-1 / SHOULD / 2026-07-26 改訂)。呼び出し元で経過時間を計測し、超過時は verdict=inconclusive + timeout 注記 として扱う。

gabriel 出力: 6 フィールド JSON(design.md §3 参照):

  • verdict: confirmed / refuted / inconclusive
  • severity: critical / warning / info
  • affected_atoms: Atom 識別子リスト(verdict=refuted 時は非空必須)
  • reasoning: 判定理由(200-1000 字)
  • recommended_action: proceed / re-magi / abort
  • confidence: 0.0-1.0(0.3 未満は verdict=inconclusive 強制)

Step 4.1: verdict 別分岐処理

分岐する前に、probe 1 回につき 1 行を .claude/gabriel-metrics.log に追記すること(MUST)。 追記してから分岐する —— 分岐の後に回すと、エスカレーションや再 MAGI に注意が移って必ず落ちる。

実測(2026-09-05): この工程が本 SKILL.md のどこにも書かれていなかったため、ログは 4 行 / 最終更新 2026-07-18 で止まり、以後 5 回走った probe が 1 行も記録されなかった。 それでも verify_reference_resolution.py の検査は緑を返し続けた(古い 4 行が enum 準拠のため)。 空集合は常にスキーマに適合する。 同じ位置づけの hga-summon-log.md が #33 まで生きているのは、 hga-summoning.md が「全召喚を追記すること(MUST)」を明記し、召喚手順から参照しているためである。 本注記はその書き方を写したものである。

書式は 12 フィールドの JSONL(docs/artifacts/gabriel-metrics-environment-2026-07-05.md が正本)。 anchor には MAGI 記録ファイルのパスを入れる —— これが記録とログを突き合わせる鍵になる (検査: verify_reference_resolution.py の gabriel-metrics-anchor-coverage)。 gabriel_output の 6 フィールドは magi_dispatch.validate_gabriel_output() の契約に従う。

gabriel の返り値に応じて以下のいずれかの経路を辿る。優先順位は recommended_action=abort > severity=critical > warning > info > confirmed > inconclusive。

gabriel 出力挙動参照
recommended_action=abort(verdict / severity 問わず)即時人間エスカレーション(再 MAGI なし / MAGI 結論を「保留」記録)AC-W-C-5 補完
verdict=refuted & severity=critical(初回)再 MAGI 1 ラウンド(gabriel.reasoning を Divergence 入力に追加)→ Step 1 に戻るAC-W-C-5
verdict=refuted & severity=critical(2 回目)人間エスカレーション(再 MAGI 上限到達 / MAGI 結論を「保留」記録)AC-W-C-7
verdict=refuted & severity=warningMAGI 結論に gabriel 指摘を併記 + 警告ラベルAC-W-C-6
verdict=refuted & severity=info記録のみ / MAGI 結論不変—
verdict=confirmedMAGI 結論を確定(gabriel 補強として記録)—
verdict=inconclusiveMAGI 結論を確定(inconclusive 注記を添付)—
timeout(> 360 秒 / NFR-W-C-1)verdict=inconclusive として扱う / 再 MAGI なしNFR-W-C-1
format_error(JSON 欠損 / 型不一致 / NFR-W-C-2)verdict=inconclusive として扱う / 再 MAGI なしNFR-W-C-2

再 MAGI カウンター: 1 ラウンド上限(AC-W-C-7)。2 回目の critical refute で自動的に人間エスカレーション。カウンターは MAGI ログセッション単位で管理する。

実装参照: verdict 別分岐の Python 実装 SSOT は .claude/scripts/magi_dispatch.py (resolve_action() + render_log_entry()) を参照。テストは .claude/tests/wave_c/test_wave_c_magi_integration.py で全 9 パターンを網羅(resolve_action() の action 値は 9 種 / handle_format_error のみ 2 経路 = format_error と defensive fallback)。

Step 4.2: opt-out 経路

以下 2 条件を すべて 満たす場合のみ gabriel probe をスキップできる:

  1. opt-out 理由を MAGI ログに 1 文以上記録すること
  2. ユーザー(L1 統括) がスキップを明示すること

AUTONOMOUS フェーズでの自律ループ実行者の opt-out 宣言は却下される(ADR-0005 FR-9.1 統治への自己書込禁止の趣旨に従う / design.md §6.1)。試行された場合は MAGI ログに「opt-out 試行 / 却下」を記録し、通常通り gabriel probe を実施する。

opt-out 記録形式:

### gabriel opt-out

- 理由: [opt-out の理由を 1 文以上記述]
- opt-out 宣言者: [ユーザー / L1 統括]
- 記録日時: YYYY-MM-DD

正当理由の例:

  • 時間的緊急性(締め切り前の軽微な仕様確認等)
  • gabriel 判定に必要な情報が揮発的で正確な判定が期待できない場合
  • ユーザーがリスクを承知の上で速度優先を選択する場合

Step 5: AoT Synthesis(統合 / AoT 適用モードのみ)

各 Atom の結論 + gabriel probe 結果を統合し、最終決定と Action Items を導出する。

### AoT Synthesis

**統合結論**: [CASPAR の Convergence 結論を記述]

**gabriel probe 結果**:
- verdict: [confirmed / refuted / inconclusive]
- severity: [critical / warning / info]
- confidence: [0.0-1.0]
- affected_atoms: [Atom 識別子リスト]
- reasoning: [gabriel の判定理由]
- recommended_action: [proceed / re-magi / abort]

**最終結論**:
[gabriel 結果を反映した後の最終結論。warning/info の場合は CASPAR 結論に指摘を併記]

**Action Items**:
1. ...
2. ...

§4.1 軽量モード(非 AoT)でのステップ体系

AoT 適用条件を満たさない軽量 MAGI では以下のステップ体系となる:

  • Step 0(AoT Decomposition): 存在しない
  • Step 1(Divergence): 実施
  • Step 2(Debate): 実施
  • Step 3(Convergence): CASPAR 結論で完結(直接結論確定)
  • Step 4(gabriel probe): 起動しない(FR-W-C-3 MUST NOT)
  • Step 5(AoT Synthesis): 存在しない

MAGI ログ記録時は「MAGI 軽量モード」と明示し、Step 番号体系の混乱を避ける。

verdict 別ログテンプレート

共通注記: JSON 出力時は §Step 4 の required フィールド 6 件(verdict / severity / affected_atoms / reasoning / recommended_action / confidence)を必ず出力する。以下のログ表示形式は代表フィールドのみを示している。

confirmed:

### gabriel probe

- verdict: confirmed
- confidence: X.XX
- reasoning: [gabriel の判定理由]
- 処理: MAGI 結論を確定(gabriel 補強として記録)

refuted + severity=critical:

### gabriel probe

- verdict: refuted
- severity: critical
- affected_atoms: [A1, A2]
- reasoning: [gabriel の判定理由]
- 処理: MAGI 結論を破棄し、再 MAGI 1 ラウンドを指示する(初回のみ / 上限 1 回)

> [CRITICAL by gabriel]: [reasoning の要約]
> MAGI 結論を破棄します。gabriel.reasoning を新入力として再 MAGI を実施してください。

refuted + severity=warning:

### gabriel probe

- verdict: refuted
- severity: warning
- affected_atoms: [A1, A2]
- reasoning: [gabriel の判定理由]
- 処理: 以下の指摘を MAGI 結論に併記して進む

> [WARNING by gabriel]: [reasoning の要約]
> 最終判断はユーザー(L1 統括)に委ねます。

refuted + severity=info:

### gabriel probe

- verdict: refuted
- severity: info
- affected_atoms: [A1]
- reasoning: [gabriel の判定理由]
- 処理: 以下の指摘を記録するのみ。MAGI 結論は変更しない

> [INFO by gabriel]: [reasoning の要約]
> 指摘を記録するのみ、結論は変更されない。

inconclusive:

### gabriel probe

- verdict: inconclusive
- confidence: X.XX
- reasoning: [gabriel の判定理由]
- 処理: MAGI 結論を確定(inconclusive 注記を添付)

> [NOTE]: gabriel は確信をもって判定できませんでした(confidence=X.XX)。
> 結論は CASPAR の判断を維持します。

abort(verdict / severity 問わず):

### gabriel probe

- verdict: [任意]
- severity: [任意]
- recommended_action: abort
- reasoning: [abort 判定理由 / なぜ直ちに人間判断が必須か]
- 処理: MAGI 結論を保留し、人間エスカレーションを直ちに行う(再 MAGI なし)

> [ABORT by gabriel]: 即時人間判断必須。
> MAGI 結論を「保留」として記録し、人間(L1 統括)の対応を待ちます。

timeout(> 360 秒 / NFR-W-C-1):

### gabriel probe

- verdict: inconclusive
- (timeout 注記)
- 処理: タイムアウトにより inconclusive として扱う。MAGI 結論を確定。

> [NOTE]: gabriel がタイムアウト(> 360 秒)しました。inconclusive として処理します。
> 結論は CASPAR の判断を維持します。再 MAGI は実施しません。

format_error(JSON 必須フィールド欠損 / 型不一致 / NFR-W-C-2):

### gabriel probe

- verdict: inconclusive
- (format_error 注記)
- 処理: フォーマット不備により inconclusive として扱う。MAGI 結論を確定。

> [NOTE]: gabriel の出力にフォーマット不備(必須フィールド欠損 / 型不一致)が検出されました。
> inconclusive として処理します。結論は CASPAR の判断を維持します。再 MAGI は実施しません。

アンカーファイル

思考過程を必ず docs/artifacts/YYYY-MM-DD-magi-{用途}.md に書き出す。 フォーマットは references/anchor-format.md を参照。

  • 書き込み権限: CASPAR のみ(Single-Writer)
  • 読み取り権限: 全 MAGI + gabriel(Multi-Reader)
  • 削除: ユーザーのみ可能

参照

  • SSOT: docs/internal/06_DECISION_MAKING.md(§6「gabriel Adversarial Probe(AoT 適用時のみ / 旧 Reflection)」に置換済 / 2026-08-20 確認)
  • Wave C 統合仕様: docs/specs/magi-v2-gabriel/{requirements,design}.md v0.4.0
  • ADR-0007: docs/adr/0007-magi-v2-gabriel-integration.md(gabriel 統合根拠 / Accepted 2026-07-02)
  • ADR-0005: docs/adr/0005-thin-harness-autonomous-governance.md(Reflection 追補 / FR-9.1 opt-out 権限境界の根拠)
  • gabriel subagent: .claude/agents/gabriel.md(Wave C Stage 2 実装済 / 2026-07-04 commit 6880421)
  • verdict 別分岐 Python SSOT: .claude/scripts/magi_dispatch.py (Wave C Stage 3 T6 / 2026-07-05 実装)
  • 統合テスト: .claude/tests/wave_c/test_wave_c_magi_integration.py (T6 / 全 9 verdict パターン)
  • アンカーフォーマット: .claude/skills/magi/references/anchor-format.md
  • decision-making ルール: .claude/rules/decision-making.md(Step 4 は「gabriel Adversarial Probe(AoT 適用時のみ)」に置換済 / 2026-08-20 確認)

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

adr-template

無料日本語概要

ADR(Architecture Decision Record)作成を支援するテンプレートスキル。 docs/adr/ へのADR作成時に自動適用され、 06_DECISION_MAKING.md の3 Agents Modelに準拠した構造を提案する。 アーキテクチャ決定、技術選定、設計方針の記録時に活用される。

sougetuOte/LivingArchitectModel42026年9月8日 更新

autonomous

無料日本語概要

AUTONOMOUSフェーズを開始 - 対象 spec を Green State(G1) まで自律実装(MVP/Wave 1)

sougetuOte/LivingArchitectModel42026年9月8日 更新

build-dashboard

無料日本語概要

LAM ダッシュボード HTML を生成し、出力パスを表示する

sougetuOte/LivingArchitectModel42026年9月8日 更新

building

無料日本語概要

BUILDINGフェーズを開始 - TDD実装サイクル

sougetuOte/LivingArchitectModel42026年9月8日 更新

clause-gate

無料日本語概要

新規条項の誕生ゲート(5 宛先の routing 判定 → 常駐集合の予算処理 → 台帳記録)。規範文書に条項を追加・移動・削除するときに実行する

sougetuOte/LivingArchitectModel42026年9月8日 更新

full-review

無料日本語概要

並列監査 + 全修正 + 検証の一気通貫レビュー。--rubric-path=<rubric.md> でゴール条件を注入可能。--auto-approve でサブエージェント向け対話スキップ + 構造化 JSON 出力モード

sougetuOte/LivingArchitectModel42026年9月8日 更新

sougetuOte のスキルをすべて見る

このスキルの問題を報告する