TL;DR
- 1つのAIエージェントに「計画も実装も」全部やらせると、スコープが膨らみ、レビュー不能な巨大 diff が出て、テストを通さないまま先に進む、という事故が起きやすい。
- これに対する処方箋が 「オーケストレーター(計画・レビュー・ゲート)」と「コーダー(実装のみ)」を役割分担し、その間に承認ゲートを置くという開発手法だ。
- 具体例として、Cathryn Lavery 氏が公開した OSS スキル
cathrynlavery/codex-build(MIT ライセンス)を題材にする。この分業と 3 種のゲート(スコープ・テスト・フルスイート)の設計を読み解く。 - ポイントは「AI を賢くすること」ではなく 「AI が暴走できない構造を外側に作ること」。ここはツールに依らず、自分の CLAUDE.md やパイプラインにも移植できる。
きっかけ
X で流れてきた次の投稿がこの記事の出発点だ(元ツイート、引用元は作者 @cathrynlavery 本人)。
Fable と Codex を併用して開発している人向けの
/codex-buildというスキルがオープンソースになった。
- Fable がオーケストレーション担当:計画、判断(taste)、コンテキスト管理
- Codex が実際のコーディング担当
- 両者の間に承認ゲートがあり、レビューとテストを通らないと何も出荷されない
要は 「頭脳」と「手」を別のエージェントに分け、境界に関所を置くという話だ。ここで言う「Fable」は Anthropic の Claude Fable 5(長時間タスク・計画立案に強いモデル)を指す。ただし後述するように、スキル自体は特定モデルを必須にしていない。本質はモデル名ではなく、この「分業+ゲート」という構造の側にある。
なぜ 1 体のエージェントに全部やらせると事故るのか
AI コーディングを一度でも本気で回すと、だいたい同じ壁に当たる。
- スコープが勝手に広がる — 「ついでにここも直しました」で、頼んでいないファイルまで書き換わる。
- diff が巨大になりレビューできない — 20 ファイルの変更が 1 つの PR に混ざり、人がレビューを諦める。
- テストを通さず先へ進む — 途中のコミットが壊れていても、エージェントは「完了しました」と宣言してしまう。
これらは「エージェントが賢くないから」ではなく、計画・実装・検証・出荷を 1 つのループの中で同じ主体がやっているから起きる。実装している当人が「これで十分」と自己判断すると、確認バイアスがそのまま出荷まで通ってしまう。
そこで有効なのが、役割を物理的に分けてしまう手法だ。
codex-build の分業モデル
codex-build は、この分業を Claude Code のスキル(SKILL.md にエージェントへの手順を書いておき、必要時に自動で読み込ませる仕組み)として実装している。全体像は次のとおり。
登場する役割は 2 つだけだ。
- オーケストレーター役 — 計画を読み、タスクに分解し、Codex の出力をレビューし、ゲートを判定する「指揮者」。Claude Code など Skills を扱えるハーネスが担う。
- コーダー役 — 実装だけを担当する「手」。ここに OpenAI Codex CLI(
codexコマンド、ターミナルで動く軽量コーディングエージェント)を使う。
重要なのは、コーダーには「今回いじってよいファイル」と「1 タスク分の指示(ブリーフ)」しか渡さない点だ。全体像や意思決定はオーケストレーターが握り、コーダーは目の前の 1 タスクだけを閉じた範囲で書く。
README の説明文が端的だ ——「Orchestrator drives, Codex codes(オーケストレーターが運転し、Codex がコードを書く)。承認済みプランを 1 タスクずつ実行し、コミットごとにテストゲートを通し、最後に PR を 1 本だけ出す」。
3 種類の承認ゲートと失敗時の停止
この手法の肝は、フローの各所に置かれた「関所(ゲート)」だ。codex-build には性質の違う 3 つのゲートと、それらを補う失敗ハンドリングがある。
① スコープゲート(allowlist 強制)
タスクごとに「変更してよいファイル」を allowlist として列挙しておき、Codex が書いた後に付属スクリプト check_scope.py が実際の変更(追跡済み / ステージ済み / 削除 / リネーム / 未追跡)を照合する。allowlist の外に手が出ていたら hard stop(そこで止める)。
「ついでに直しました」を構造的に禁止する仕掛けだ。エージェントの善意に頼らず、範囲逸脱を機械的に弾く。
② テストゲート(コミット前)
各タスクの実装後、コミットする前にオーケストレーターがテストを実行する。グリーンでなければコミットしない。つまり 「壊れたコミット」がそもそも履歴に入らない。1 タスク = 1 コミットの粒度と組み合わさることで、あとから git bisect しても各コミットが常にグリーンという状態が保たれる。
③ フルスイートゲート(PR 前)
全タスクが終わったら、最後に全テストを回す。ここを通って初めて push し、PR を 1 本だけ作る。タスクごとの小さな緑と、全体としての緑を分けて確認するわけだ。
④ 失敗時のエスカレーション
3 つのゲートに加えて、失敗ハンドリングも設計されている。Codex が 1 タスクを 3 回試して通らなければ run を停止し、人にエスカレーションする。サイレントにオーケストレーターが乗っ取って無理やり進める、ということをしない。
Codex の呼び出し方
コーダー役の実体は codex exec サブコマンドの呼び出しだ。SKILL.md では概ね次の形で起動する。
codex exec "<ブリーフ本文>" \
-C "$(git rev-parse --show-toplevel)" \
-s workspace-write \
-m "$MODEL" \
-c model_reasoning_effort="$EFFORT" \
< /dev/null
細部にノウハウが詰まっている。
-s workspace-write— ワークスペース内の書き込みに権限を絞る。< /dev/null— stdin を明示的に閉じる。これがないと Codex が入力待ちでハングすることがある。--dangerously-bypass-approvals-and-sandbox(承認・サンドボックスを丸ごと無効化するフラグ)は 禁止と明記。ゲートを外す方向のショートカットを最初から塞いでいる。
導入とコマンド
Claude Code のプラグイン経由でインストールできる。
/plugin marketplace add cathrynlavery/codex-build
/plugin install codex-build@codex-build
実行は、事前に用意した承認済みプランを渡す形をとる。
/codex-build:build plan.md
/codex-build:build plan.md xhigh
/codex-build:build plan.md --model gpt-5.6-codex
注意: 元ツイートではコマンドが
/codex-buildと短縮表記されているが、正確なスラッシュコマンドは/codex-build:buildだ(commands/build.mdで定義)。また、同じ作者の別リポジトリcathrynlavery/codex-skillは「Claude のプランを Codex にセカンドオピニオンとしてレビューさせる」別物なので混同しないこと。
plan.md は人があらかじめレビューして承認したプランである点がミソだ。「何を作るか」の合意は人とオーケストレーターの間で先に固め、その後の実装ループは自動化する。承認ゲートは実装フェーズだけでなく、その手前の計画フェーズにもあるわけだ。
この手法から持ち帰れること
codex-build は「Claude Fable 5 で計画し、OpenAI Codex で書く」という特定の組み合わせで紹介されているが、そこは本質ではない。実際、スキルのオーケストレーター側は “your agent (Claude Code, or any Skills-capable harness)” と汎用的に書かれており、Fable は作者個人の運用であってスキルの要件ではない。持ち帰るべきは次の設計原則だ。
- 計画と実装の主体を分ける — 実装した当人に「これで十分か」を判定させない。別役割(別コンテキスト)にレビューさせるだけで確認バイアスが大きく減る。これは以前書いた「AI エージェントにリファクタさせるときの「完了の定義」の引き方」の敵対的レビューと同じ発想だ。
- スコープを allowlist で機械的に縛る — 「触ってよい範囲」を宣言し、逸脱をスクリプトで弾く。善意ではなく構造で守る。
- コミット前にテストゲートを置く — 「テストが緑になったら完了」ではなく「緑でなければコミットさせない」。壊れた状態を履歴に残さない。
- 出荷は 1 PR に集約し、人が最終承認する — マージ(=出荷の最終決定)はエージェントに委ねない安全境界にする。
この 4 つは、codex-build を使わなくても、自分の CLAUDE.md・スキル・CI パイプラインに移植できる。むしろ**「どのモデルが賢いか」より「AI が暴走できない関所をどこに置くか」の方が、実運用の品質を決める**。これがこのスキルの一番のメッセージだと思う。
まとめ
- AI コーディングの事故の多くは、1 体のエージェントが計画・実装・検証・出荷を全部抱えることに起因する。
codex-buildは「オーケストレーター(計画・レビュー・ゲート)」と「コーダー(実装のみ)」を分け、スコープ・テスト・フルスイートの 3 ゲートで挟むことでこれを防ぐ。- 承認済みプランから 1 タスクずつ、コミット前テストを必ず通し、最後に 1 PR。マージだけは人に残す。
- ツールや使用モデルは入れ替え可能。「分業+ゲート」という構造そのものが、AI 駆動開発の再現性を支える。
