一键导入
so-compare
so-compare.shでセカンドオピニオン(Codex/Claude/Cursor)を取得し、結果を比較する。ピアレビュー、修正方針の検証、設計判断の反証に使用する。**弱 SO**(1周可・partial=disclose・0はなし)。プロンプト設計原則、結果読み込み手順、合意判定基準を含む。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
so-compare.shでセカンドオピニオン(Codex/Claude/Cursor)を取得し、結果を比較する。ピアレビュー、修正方針の検証、設計判断の反証に使用する。**弱 SO**(1周可・partial=disclose・0はなし)。プロンプト設計原則、結果読み込み手順、合意判定基準を含む。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | so-compare |
| description | so-compare.shでセカンドオピニオン(Codex/Claude/Cursor)を取得し、結果を比較する。ピアレビュー、修正方針の検証、設計判断の反証に使用する。**弱 SO**(1周可・partial=disclose・0はなし)。プロンプト設計原則、結果読み込み手順、合意判定基準を含む。 |
| depends | [{"cli":"so-compare"}] |
SO モード: 弱 SO(強/弱の定義は
docs/specs/document-format.md§3.1)。1 周で終了可(iteration は推奨だが任意)。終了条件: partial(実返却が 1 レーン以上)=disclose して進む(advisory)/"0"(全レーン実返却なし)=SO 未実施扱いで再試行/escalate=最低 1 レーン実返却必須("0 はなし")。※success_empty〔exit0 だが空〕は機構上 partial(exit1)計上だが、全レーンがこれ=実返却ゼロなら "0" 扱い(consumer 判定・so-compare.shは success_empty を PARTIAL 集計)。機構:SO_TIMEOUT(既定 240)は初回試行の基準・timeout_empty時のみ×1.5に延長して1回リトライ(なお空なら "0" 扱い)。レーン数/モデルは mode と直交(都度指定・既定ポリシーはorchestration-toolkit)。全レーン合意まで詰める 強 SO が要る局面はpeer-ai-review。
so-compare (~/bin/ にシンボリックリンク。本体: scripts/so-compare.sh)
Shell ツールで実行する:
so-compare [OPTIONS] "プロンプト"
| オプション | 説明 | デフォルト |
|---|---|---|
-w PATH | ワークスペースパス(推奨)。Codex/Claude にパス参照で渡す | なし |
-f FILE | プロンプトをファイルから読み込み | - |
-c FILE... | コンテキストファイル添付(非推奨。-w を使うこと) | - |
-o DIR | 出力ディレクトリ指定 | tmp/so-YYYYMMDD-HHMMSS |
-s MODE | Codex sandbox モード | read-only |
--with LIST | 実行プロバイダを明示指定(codex,claude,cursor のカンマ区切り)。--codex-only / --claude-only / --cursor-only / --cursor と併用不可 | なし(未指定時は codex+claude) |
--codex-only | Codex のみ実行 | 両方実行 |
--claude-only | Claude のみ実行 | 両方実行 |
--cursor | Cursor CLI (agent) も実行(デフォルト: 無効) | 無効 |
--cursor-only | Cursor のみ実行 | 両方実行 |
--cursor-model MODEL | Cursor で使用するモデル | auto |
--claude-model MODEL | Claude で使用するモデル(エイリアス opus/sonnet/haiku 可) | CLI 既定 |
--codex-model MODEL | Codex で使用するモデル | CLI 既定 |
--claude-effort LEVEL | Claude のエフォート(low/medium/high/xhigh/max) | CLI 既定 |
--claude-web | Claude Code に WebFetch を許可(-p で外部URL参照を要するタスク用) | 無効 |
--prev DIR | 前回出力を追記(イテレーション用) | なし |
| 変数 | 説明 | デフォルト |
|---|---|---|
SO_TIMEOUT | 各ツールのタイムアウト秒数 | 240 |
PREV_MAX_BYTES | --prev で追記する回答の上限バイト数 | 4000 |
SO_CURSOR_MODEL | Cursor のデフォルトモデル(--cursor-model で上書き可) | auto |
SO_CLAUDE_MODEL | Claude のデフォルトモデル(--claude-model で上書き可) | CLI 既定 |
SO_CODEX_MODEL | Codex のデフォルトモデル(--codex-model で上書き可) | CLI 既定 |
SO_CLAUDE_EFFORT | Claude のデフォルトエフォート(--claude-effort で上書き可) | CLI 既定 |
# 推奨: -w でワークスペースを渡す
so-compare -w "$(pwd)" "この修正方針を検証してください"
# プロンプトファイルから
so-compare -f prompt.txt -w "$(pwd)"
# イテレーション(前回の回答を踏まえて再質問)
so-compare --prev tmp/so-20260304-001234 -w "$(pwd)" "前回の指摘を踏まえて再評価してください"
# Codex のみ(claude-safe 未導入環境)
so-compare -w "$(pwd)" "プロンプト" --codex-only
# 任意の2社(従来は codex+cursor / claude+cursor が指定不可だった)
so-compare --with codex,cursor -w "$(pwd)" "プロンプト"
so-compare --with claude,cursor -w "$(pwd)" "プロンプト"
# Cursor も含めた3者比較
so-compare --cursor -w "$(pwd)" "この設計方針を検証してください"
# Cursor でモデル指定
so-compare --cursor --cursor-model composer-1.5 -w "$(pwd)" "プロンプト"
# Cursor のみ
so-compare --cursor-only -w "$(pwd)" "プロンプト"
# Claude を上位モデル + 高エフォートで(設計判断など重い SO)
so-compare --claude-model opus --claude-effort high -w "$(pwd)" "この設計方針を検証してください"
# Codex のモデル指定
so-compare --codex-model gpt-5.5 -w "$(pwd)" "プロンプト"
セカンドオピニオンを投げるエージェント向けの選択指針。動的なモデル一覧コマンドが実在するのは Cursor のみ(agent models)。Claude / Codex は以下を目安にする。
opus / sonnet / haiku で指定する。エイリアスはそのティアの最新を指すため、バージョン ID(claude-opus-4-8 等)を追いかける必要はない(フル ID も透過で渡せる)。エフォートは --claude-effort に low/medium/high/xhigh/max~/.codex/config.toml の model。任意のモデル名はそのまま透過で渡るagent models で「アカウントで使えるモデル一覧」を取得できる。--cursor-model に渡す--claude-model opus --claude-effort high(必要なら max)に上げるerror / error_partial)として結果サマリに現れる未指定なら各 CLI の既定モデルで動作し、従来と挙動は変わらない。
tmp/so-YYYYMMDD-HHMMSS/
├── prompt.txt # 最終プロンプト全文
├── codex-stdout.txt # Codex の回答
├── codex-stderr.txt # Codex の stderr
├── codex-meta.txt # メタデータ(tool, model_requested, model_resolved, exit_code, timeout_status, elapsed_seconds, stdout_lines, stdout_bytes)
├── claude-stdout.txt # Claude の回答
├── claude-stderr.txt # Claude の stderr
├── claude-meta.txt # メタデータ(model_requested, effort_requested を含む)
├── cursor-stdout.txt # Cursor の回答(--cursor 時のみ)
├── cursor-stderr.txt # Cursor の stderr(--cursor 時のみ)
└── cursor-meta.txt # メタデータ(model_requested 含む。--cursor 時のみ)
codex-stdout.txt、claude-stdout.txt(--cursor 時は cursor-stdout.txt も)を Read ツールで読み込む| 観点 | 自分 | Codex | Claude | Cursor | 合意? |
|------|------|-------|--------|--------|-------|
| 問題認識 | ... | ... | ... | ✅/❌ |
| 修正方針 | ... | ... | ... | ✅/❌ |
| リスク対応 | ... | ... | ... | ✅/❌ |
-c でファイル全文を渡す → アンカリングが起き、渡したコードしか見ない。95KB超のプロンプトで278秒/414秒のタイムアウト実績あり-w でワークスペースパスを渡し、エージェントに自分で読ませる設計を確定する(複数案から1つを選ぶ・PoC を本採用するなど、後戻りコストのある決定を伴う)SO では、初期選択肢セットの外にある代替案を出させる構造を与える。wez notify で初期 A/B に無かった option C(TTY 直接書き込み)がゼロベース再レビューで最適解として発見された経緯に基づく(exhaustion-before-conclusion-rule の探索網羅性に対応)。ただし本テンプレは層1の最小手当てで、網羅を保証する機構ではない(探索の質はモデル依存)。確定の前でも後でも使う(option C は「A で確定しかけた後」のゼロベース再探索で出た)。
プロンプトにまず初期選択肢セットと暗黙の前提を列挙し、その上で以下を足す:
## 選択肢拡張(設計確定 SO では必須)
- 初期案とは異なる技術カテゴリ・責務分界・データフロー・実行経路・運用前提を持つ代替案を、ゼロベースで提案してください(既存案の小変形は不可)
- 各代替案に「差分軸」「成立条件」「反証可能な検証方法」「期待される観測結果」を付けてください
- その代替案が初期選択肢に含まれていなかった理由を「隠れていた前提」か「探索漏れ」に分解して述べてください
- 新規案なしと判断する場合は、探索した軸と除外理由を示してください
--prev イテレーションに載せる。SO 実行前に以下を確認する:
以下のすべてを満たした場合に「3者合意」とする:
--prev を使って再実行(最大3イテレーション)claude-safe 未導入等で2者しか参加できない場合、「2者合意 + ユーザーの明示承認」で代替可。
codex CLI と claude-safe が PATH 上に必要(片方のみの場合は --codex-only / --claude-only)--cursor でオプトイン。agent CLI が PATH 上に必要(未インストール時はエラー終了)SO_TIMEOUT のデフォルトは240秒。大きなプロンプトでタイムアウトする場合は値を増やすtmp/ 配下で gitignore 対象親子 Claude Code セッション間の委譲操作を行う。delegate(子を起動してキック)、send(既存ペインへ1行/キックオフ送信・誤送信防止つき)、list(宛先確認)、report(子→親の申し送り)を自然言語の意図から判断して実行する。tmux 環境前提。
oe-* オーケストレーションツール群(engine 本体 / 親子委譲 / SO ゲート / 選択・観測)と駆動層規律の統合概観。複数エージェント委譲・設計SO/実装SO・read-only 観測・engine 1 サイクルを使うとき、ツール群の全体像をリポジトリ走査でなく一貫した形で把握したいときに使用する。
エラー/バグ調査で、入力→出力のコードパスに未読区間がある限り外部要因(インフラ差異等)の仮説に進まない。外部要因に飛ぼうとするとき、原因が再現しないと判断しそうなときに使用する。仮説を tmp/hypothesis-NNN.md に外部化し、コードパスの read-state を可視化する。
プランをKickoff Document形式に変換する。セカンドオピニオン投入・リポジトリアーカイブ・ピアレビュー共有時に使用する。命名規約・frontmatter・セクション構造をKickoff形式に整える。
設計判断を確定する前に、ゼロベースで未探索の代替案を最低1回引き出し、その証跡を確定前に残してから確定する。複数の選択肢を A/B 等で確定しかけたとき、ADR / Decision / kickoff の設計判断(DJ-N)を確定・記録するときに使用する。so-compare 選択肢拡張・探索木の外部化を含む。
蒸留パイプライン文書(kickoff/episode/decision/discussion)の作成時にフォーマットを適用する。frontmatter付与、ULID生成、ファイル命名規則の案内を含む。ドキュメント新規作成、Episode→Decision昇格時に使用する。