codex-review-loop について
codex-review-loop は、ChatGPT Codex のオンライン GitHub PR レビューを使って修正と確認を繰り返すスキルです。この連携が有効なリポジトリ向けで、指摘と修正の検証を求め、マージにはユーザーの承認が必要です。
主な機能
- 01Codex PR レビューの開始とポーリング
- 02レビューとコメントの両シグナルを確認
- 03インライン指摘の抽出
- 04指摘とローカル修正の検証
- 05連続2回の問題なしをマージ条件に設定
活用シーン
- 01Codex の PR 指摘に対する反復修正
- 02今回のレビュー結果が新規か確認
- 03リポジトリの方針と承認に沿った PR マージ
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ lixiaolin94/ skills --skill codex-review-loopインストール後、Claude Code で/codex-review-loopを入力して読み込まれたか確認します。
同梱ファイルcodex-review-loop.sh
詳細
Codex レビューループ
ChatGPT Codex によるオンラインの GitHub PR レビューに対して PR を収束させ、その後マージするためのループです。
隠れたインフラはありません。必要なのは gh、同梱のポーリングスクリプト、そして以下の手順だけです。
機械的な処理(トリガー、2 種類のシグナルのポーリング、指摘事項の抽出)は
codex-review-loop.sh にあります。判断を伴う処理(指摘事項への対応、検証、マージの決定)は、あなたが行います。
前提条件(最初に確認)
- リポジトリでChatGPT Codex の GitHub PR レビュー連携が有効になっている必要があります(組織/リポジトリの設定)。
PR のオープン時、ドラフトからレビュー可能な状態への変更時、または
@codex reviewコメントの投稿時にレビューが開始されます。Bot アカウント:chatgpt-codex-connector[bot]。リポジトリが連携されていない場合、このループは機能しません。その旨を伝えてください。 ghの認証が完了しており(gh auth status)、jqがインストールされている必要があります。リポジトリ内からスクリプトを実行してください (gh repo viewを使ってowner/nameを自動検出します)。
ループ
スクリプトはバックグラウンドで実行してください(ポーリングの合間にスリープするため)。完了時に再度呼び出されるようにし、フォアグラウンドでスリープさせないでください。
- トリガーを送信して、1 ラウンド分ポーリングします。
bash <skill>/codex-review-loop.sh run <PR>は、UTC の基準時刻を記録してから@codex reviewを投稿し、結果を待ちます。判定結果の行は必ず 1 行だけ出力されます。RESULT=FORMAL_REVIEW id=<rid> ... inline_comments=<n>→ Codex が問題を検出しました。スクリプトはインラインの指摘事項(FILE: path:lineと本文)も出力します。RESULT=CLEAN .../RESULT=CLEAN_REVIEW ...→ このラウンドでは重大な問題はありません。RESULT=TIMEOUT→ 再実行するか、PR を手動で確認してください。
- 指摘事項がある場合: それぞれに対応します。修正する前に、Codex の指摘を実際のコードと照らし合わせてください。誤っている場合もあります(例:コードに存在しない API の仕様を主張することがあります。ソースを確認してください)。実際の問題を修正し(1 つの箇所だけでなく、できれば同種の問題全体を修正します)、プッシュする前にローカルで検証してください(コンパイル、ユニットテスト、リンター、API ゲートなど、リポジトリで使われているもの)。コミットしてプッシュし、手順 1 に戻ります。プッシュすると新しいコミットになるため、クリーンの連続回数はリセットされます。
- 問題がない場合: これがクリーンの 1 回目です。同じコミットに対してもう一度だけトリガーを送信します(新しいコミットは作成せず、
run <PR>を再実行します)。Codex の結果は非決定的で、同じコミットを再レビューして新たな問題が見つかることがあります(実際に確認されています)。2 回連続でクリーンになってから、マージに進みます。 - マージ(このリポジトリのマージポリシーに関してユーザーの許可がある場合のみ):
gh pr merge <PR> --merge --delete-branchを実行します。その後、ローカルのmainを同期します。
スクリプトが 2 種類のシグナルをポーリングする理由
Codex は結果を 2 通りの方法で報告するため、片方だけをポーリングすると判定を半分見逃してしまいます。
- 指摘事項 → 正式なレビュー(
/pulls/<PR>/reviews、state=COMMENTED)とインラインコメント。これらはpull_request_review_idを使ってレビューと関連付けられます。 - 問題がない場合 → 本文に「Didn't find any major issues」と書かれたイシューコメント(
/issues/<PR>/comments)。
どちらも、Bot のログイン名と、トリガー時に記録した基準時刻より後のタイムスタンプで絞り込みます。そのため、以前の古いレビューを新しい判定と取り違えることはありません。「Codex is reviewing…」という Bot の応答は、問題なしを示す文言と一致しないため無視されます。
重要な手順(痛い経験から学んだこと)
- マージ前に 2 回連続でクリーンにします。 クリーン 1 回だけでは不十分です。Codex の結果は非決定的です。
- 修正する前に検証します。 指摘事項は事実ではなく、確認すべき主張として扱ってください。このコードベースに当てはまらない指摘を、むやみに「修正」しないでください(成功していたゲートを失敗させるおそれがあります)。根拠を示して返信または異議を唱えるか、根本的な懸念を解消する堅牢性の改善を行います。
- プッシュする前に検証します。 修正はそれぞれ、まずリポジトリのローカルゲートを通過させてください。コンパイルエラーでレビューラウンドを無駄にしないようにします。
- 1 ラウンドにつき懸念事項が 1 つでも問題ありません。 終盤のラウンドでは P2/P3 が 1 件だけ見つかることもよくあります。順に解消してください。
- マージを決めるのはユーザーです。 マージポリシーを一度確認し、許可されていないリポジトリを自動マージしないでください。
別のリポジトリへの適用
- 通常、変更は不要です。リポジトリは自動検出されます。ボットのログイン名やクリーンな表現が異なる場合は、
スクリプトの先頭にある
BOT/CLEAN_REを編集してください。 - レビューキューの処理が遅い場合は、
poll/runの引数 3、4 にあたるmaxIters/intervalを調整してください。 - マージ戦略:リポジトリの慣例に応じて、
--mergeを--squash/--rebaseに置き換えてください。
コメント
Markdown 対応