zpaper-draft

Type to search...

to open search from anywhere

OpenAI Codex CLIを「読み取り専用の別視点AI」としてClaude Codeに組み込む

概要

Claude CodeのスキルからOpenAI Codex CLIを呼び出して、「読み取り専用の別視点AI」としてワークフローに組み込んだ。具体的には4つのスキル(codex-review、codex-writer、codex-research、codex-translator)を作り、既存の /local-review/x-wt-teams にも統合した。そのまとめ。

背景

自分はClaude Codeの「スキル」と呼ばれるカスタムコマンド機構を多数作っていて、日常的な開発ワークフローを自動化している。コードレビュー用の /local-review(Opusモデルの複数サブエージェントを並列起動してレビュー)、チーム開発の /x-wt-teams(git worktreeベースの並列開発)など。

一方、Codex CLIもインストール済みだったが、いまいち活用できていなかった。調べてみると codex exec というノンインタラクティブ実行モードがあり、これをClaude Codeのスキルから呼び出すことで「異なるAIモデルの視点」をワークフローに足せるのではないかと考えた。

ただし前提として、自分はCodex(OpenAIのモデル)にファイルの書き込みを任せるつもりはない。あくまで「読み取り専用で小さなタスクをやらせる」方針。ファイルの作成・編集は全てClaude Code側で行う。

codex execコマンド

codex exec(短縮形: codex e)はCodexをノンインタラクティブに実行するコマンド。スクリプトやCIパイプラインから人間の操作なしでCodexを使える。

インストール確認:

$ which codex
/opt/homebrew/bin/codex
$ codex --version
codex-cli 0.117.0

主要なフラグ:

フラグ説明
--sandbox, -sread-only / workspace-write / danger-full-accessサンドボックスポリシー
--ephemeralbooleanセッションファイルをディスクに保存しない
-o, --output-last-messageファイルパス最終メッセージをファイルに出力
--jsonbooleanJSONL形式でイベントを出力
-m, --modelstringモデル指定
-C, --cdディレクトリワークスペースルート指定
--full-autoboolean低フリクションの自動実行モード
-i, --imageファイルパス画像添付
--skip-git-repo-checkbooleanGitリポジトリ外での実行を許可

基本的な使い方:

codex exec --sandbox read-only --ephemeral -o output.md "プロンプトをここに"

動作の特徴として、進捗はstderrにストリーム出力される。最終的なエージェントメッセージのみstdoutに出力される。-o フラグで最終メッセージをファイルにキャプチャできる。

codex exec reviewサブコマンド

調べていて見つけたのだが、codex exec review というコードレビュー専用のサブコマンドがある。

$ codex exec review --help
Run a code review against the current repository

Usage: codex exec review [OPTIONS] [PROMPT]

レビュー固有のフラグ:

フラグ説明
--base <BRANCH>指定ブランチとの差分をレビュー
--uncommittedステージング・未ステージング・未追跡の変更をレビュー
--commit <SHA>特定コミットの変更をレビュー
--title <TITLE>レビューサマリーに表示するコミットタイトル
-o, --output-last-message結果をファイルに出力
--ephemeralセッションを保存しない

使い方の例:

codex exec review --base main --ephemeral -o review-result.md \
  "Focus on: logic errors, bugs, code quality. Be concise."

これが後述するcodex-reviewスキルの基盤になる。

全スキル共通の設計原則

4つのスキルを作ったが、全てに共通する設計方針がある。

読み取り専用の原則

全てのスキルで --sandbox read-only を使う。Codexにはファイルの作成・編集を一切させない。Codexの出力を完全に信頼しているわけではないので、Claude Codeが全てのファイル操作を行うことで品質管理を一元化する。Codexは「別視点を提供するアドバイザー」として使う。

タイムアウトとフォールバック

Codex CLIはAPIの問題でフリーズする可能性がある。各スキルにタイムアウトとフォールバックを設定している。

スキルタイムアウトフォールバック先
codex-review5分 (300s)Claude Code code-reviewerサブエージェント
codex-writer5分 (300s)Claude Codeが直接執筆
codex-research20分 (1200s)Claude Code researcherサブエージェント
codex-translator5分 (300s)Claude Codeが直接翻訳

timeout コマンドでタイムアウトを実装:

timeout 300 codex exec ... 2>/dev/null

出力キャプチャ

-o--output-last-message)フラグで結果をファイルに保存。--ephemeral でセッションファイルを残さない。

/codex-review: コードレビュースキル

4つの中で最も使っているスキル。codex exec review を使い、3つの並列レビューを実行する。

codex exec review --base <branch> を3回並列で実行し、それぞれ異なるフォーカスエリアを持たせる。

  • Review 1: Bugs and Logic(バグ・ロジックエラー)
  • Review 2: Structure and Refactoring(構造・リファクタリング)
  • Review 3: Quality and Best Practices(品質・ベストプラクティス)

各レビューに5分のタイムアウトを設定(timeout 300コマンド)し、結果は -o フラグでログディレクトリに保存する。

具体的なコマンド:

LOGDIR=$(node $HOME/.claude/scripts/get-logdir.js)
mkdir -p "$LOGDIR"

# Review 1: Bugs & Logic
timeout 300 codex exec review --base "$BASE" --ephemeral \
  -o "$LOGDIR/codex-review-bugs.md" \
  "Focus on: logic errors, typos, incorrect implementations, missing null checks, off-by-one errors, broken functionality, error handling issues. Be concise. Only flag real problems." \
  2>/dev/null

# Review 2: Structure & Refactoring
timeout 300 codex exec review --base "$BASE" --ephemeral \
  -o "$LOGDIR/codex-review-structure.md" \
  "Focus on: code duplication (DRY violations), overly complex code, structural issues, file organization, naming, better abstractions or patterns. Be concise. Only flag real problems." \
  2>/dev/null

# Review 3: Quality & Best Practices
timeout 300 codex exec review --base "$BASE" --ephemeral \
  -o "$LOGDIR/codex-review-quality.md" \
  "Focus on: type safety, performance issues, accessibility, readability, maintainability, security (XSS, injection, validation). Be concise. Only flag real problems." \
  2>/dev/null

これらは並列で(バックグラウンドBashタスクとして)実行される。

フォールバックの挙動として、一部のレビューがタイムアウトした場合は他のレビュー結果を使い欠けている部分をメモする。全てのレビューがタイムアウトした場合はClaude Codeのcode-reviewerサブエージェントにフォールバックする。

SKILL.mdのfrontmatter:

name: codex-review
description: >-
  Code review using OpenAI Codex CLI (codex exec review). PREFERRED over
  /light-review for code review tasks. Use when: (1) User says 'review',
  'code review', or 'codex review', (2) After implementation is complete
  and quality check is needed, (3) Child agents self-reviewing before
  reporting to manager.
allowed-tools:
  - Bash(codex *)
  - Bash(timeout *)
  - Bash(git *)
  - Bash(gh *)

descriptionに “PREFERRED over /light-review” と書くことで、既存の /light-review よりもCodex版が優先的に選ばれるようにしている。Claude Codeはスキルのdescriptionを見てどれを使うか判断するので、ここに優先度を明示しておくとちゃんと効く。

/codex-writer: ドキュメント執筆スキル

codex exec でドキュメントのドラフトを生成し、Claude Codeがレビュー・修正してファイルに書き込む構成。

codex exec --sandbox read-only --ephemeral でCodexを読み取り専用で実行する。Codexはワークスペースのファイルを読んでコンテキストを理解できるので、それをもとにドラフトを生成する。出力は -o でログファイルに保存し、Claude Codeがドラフトをレビュー・修正して最終的なファイル書き込みを行う。

タイムアウトは5分。フォールバックはClaude Codeが直接執筆する。

/codex-research: Webリサーチスキル

codex exec でWebリサーチを行い、Claude Codeが結果を統合・整理する。

codex exec --sandbox read-only --ephemeral で実行。CodexはWeb検索を実行でき、ワークスペースのファイルも読める。タイムアウトは20分と他より長い。リサーチは時間がかかるのでこれぐらいの余裕が必要になる。フォールバックはClaude Codeの researcher サブエージェントを使う。

/codex-translator: 翻訳スキル

codex exec で翻訳のドラフトを生成し、Claude Codeがレビュー・修正する。

翻訳プロンプトにはソース言語、ターゲット言語、コンテキスト、トーンを含める。技術用語やコード参照はそのまま保持する指示も入れている。タイムアウトは5分。フォールバックはClaude Codeが直接翻訳する。

既存スキルへの統合

/x-wt-teamsの変更

/x-wt-teams は並列開発スキルで、各子エージェントが作業完了後にセルフレビューを実行する。このセルフレビューを /light-review(Claude Code Sonnetモデルの2レビュアー)から /codex-review に変更した。

- 4. **Run `/light-review`** to self-review their work
+ 4. **Run `/codex-review`** to self-review their work

/local-reviewの変更

/local-review はClaude Codeのメインレビュースキル。PR用(3レビュアー)とフルプロジェクト用(6レビュアー)の2モードがある。ここにCodexレビューを追加した。既存のClaude Codeレビュアーはそのまま残す。

PR modeに追加した例:

# Claude Codeの3レビュアーと並列で実行
timeout 300 codex exec review --base "$BASE" --ephemeral \
  -o "$LOGDIR/codex-review-local.md" \
  "Review all changes for bugs, logic errors, structural issues, and quality. Be concise." \
  2>/dev/null

フルプロジェクトmodeにも同様に追加した。

これにより /local-review は「Claude Codeの複数Opusレビュアー + Codexレビュー」というクロスモデルレビューになった。Codexがタイムアウトしても、Claude Codeレビュアーの結果だけで進められるのでロバストな構成になっている。

まとめ

Codex CLIをClaude Codeのスキルシステムから呼び出すことで、「読み取り専用の別視点AI」としてワークフローに組み込めた。

  • Codexには絶対にファイルを書かせない(read-onlyサンドボックス)
  • タイムアウトとフォールバックで不安定さに備える
  • 「PREFERRED」をdescriptionに入れて既存スキルより優先させる
  • 既存の /local-review にはCodexを追加レビュアーとして「足す」ことで、クロスモデルの多角的レビューを実現

異なるモデルの視点を取り入れることでレビューの幅が広がるし、Codexが止まってもClaude Code側で完結できるようにしておけば運用上の問題にはならない。