

Atsushi Nakatsugawa
April 28, 2026
1 min read
April 28, 2026
1 min read

How we built the CodeRabbit plugin for Codexの意訳です。
CodeRabbitのCodexプラグインの開発に着手したとき、目標はできるだけ多くの機能を詰め込むことではありませんでした。むしろ、1つのワークフローを自然に感じられるようにすることが目的でした。開発者がレビューを依頼し、エージェントがセットアップと実行を処理し、フィードバックが同じ作業セッション内に返ってくる…そういう体験です。
この体験を、開発者がすでにコーディングしている場所に組み込みたいと考えました。レビューがコンテキストスイッチを伴う別のステップではなく、その場で自然に手が伸びるものになるようにするためです。
それを実現するには、短い説明文を書くだけでは不十分でした。何をプラグインに含めるか、ワークフローのどこまでをエージェントに任せるか、体験を安定させるためにモデルの振る舞いをどこまで明示的に指定する必要があるか、といった判断が求められました。
出発点はパッケージの構造ではなく、ユーザー体験でした。問いはシンプルで、プラグインをインストールしたら何が楽になるべきか、です。
私たちの答えは、コードレビューがコーディングフローの一部として感じられることでした。開発者がCodexに現在の変更のレビューを依頼するか、@coderabbitでプラグインを直接呼び出すだけで、セットアップの確認やツールの切り替え、レビューコマンドの組み立てを手動で行わなくても、有用な結果が得られるべきだと考えました。
このワークフローがプラグインの形を決めました。機能の長いリストを中心に設計するのではなく、達成すべき1つの仕事に絞って設計し、エージェントがその仕事をうまくこなすために何が必要かを問いました。このループを開発者がすでにコーディングしている場所に留めるほど、コンテキストスイッチが減り、レビューサイクルが短くなり、コード変更の反映コストが下がります。
そこから、コアとなるレビュー体験を中心に、焦点を絞ったスキルを構築しました。コードレビュースキルが主要な処理を担います。CodeRabbit CLIが利用可能か確認し、認証をチェックし、適切なレビュー対象を選択し、レビューを実行し、重要度別に結果をまとめます。
ワークフローを焦点を絞ったスキルに分割したのは、重要な設計判断でした。1つの巨大な指示ファイルの方が一見シンプルに見えますが、すぐにメンテナンスが難しくなり、モデルが一貫して使いこなすのも困難になります。焦点を絞ったスキルにすることで、振る舞いが明確になってイテレーションが容易になり、新しいワークフローを追加する際のパスもきれいに保てます。
プラグインシステムの最大の利点は、スキル、MCPサーバー、コネクタを1つのインストール可能なユニットにまとめられることです。 開発者ツールやサービスを提供しているチームにとって、Codexアプリ内で自分たちの成果物を使うユーザーの体験を大きく向上させられるのです。
ユーザーに個々のスキルを見つけてインストールし、名前を覚えてもらう代わりに、すべてを1つのプラグインとしてまとめて提供できます。モデルが、各スキルを最も価値のあるタイミングで会話に取り込む判断を行います。これにより開発者の認知負荷が下がり、体験全体がより意図的なものに感じられるようになるでしょう。
CodeRabbitのCodex向けスキルを追加していくと、ユーザーはスキルを1つずつインストールしに戻るのではなく、プラグインを通じて受け取れるようになります。優れたプラグインは大きい必要はありません。1つの重要なワークフローを楽にし、そこから拡張するためのきれいなパスを用意していればよいのです。
作業の中で最も重要だったのは、パッケージングそのものではありません。モデルを意図した振る舞いに導くスキル指示の書き方を学ぶことでした。プラグインを構築する人は誰でもこのプロセスを経験することになるので、私たちにとって最も効果が大きかった教訓を共有します。
ツールの選択を明示する。 モデルは器用で、その器用さがスキルに明確な境界がないと裏目に出ることがあります。開発の初期に、ワークフローが直接のCLIコマンドだけで済むにもかかわらず、CodexがPythonを使おうとするのに気づきました。CodeRabbitをスクリプトでラップしたり、シンプルなターミナル操作に余計なレイヤーを追加したり、不要なセットアップ手順を導入したりしていました。スキル指示を具体的にして、coderabbitを直接シェルコマンドとして実行し、Pythonラッパーを使わないようモデルに伝えたところ、振る舞いが安定しました。教訓は、プラグインが特定のツールに依存している場合、それを明確に示し、モデルが代替手段を選択しようとする余地をなくすことです。
認証を最重要事項として扱う。 CodeRabbit CLIが未認証の状態では、モデルは私たちが用意したガイド付きフローに従わず、自力で解決しようとしました。認証ステップをスキップしたり、認証情報を推測したり、もっともらしく見えるが実際にはサインインできない回避策を即興で作ったりしていました。当初はCodexチームがドキュメントで提供している認証フラグを使ってみましたが、実装しても振る舞いに目立った変化は見られませんでした。設定に誤りがあった可能性もありますが、実際に効果があったのはスキル内で自前で処理するアプローチでした。認証状態を早い段階でチェックし、未サインインの場合はステップバイステップのセットアップフローに誘導する方法です。この1つの変更で、初回実行時の予測不能な振る舞いのほとんどが解消されました。
長時間タスクに対する期待値を設定する。 CodeRabbitは大量のファイルを分析する際に時間がかかることがあり、ガイドがないとモデルはその遅延を何かが止まった兆候と解釈してしまいます。レビューが実際に完了する前に早期終了したり、再試行が早すぎたり、フォールバックパスに移行したりする現象が見られました。対策として、スキル内で忍耐について明示しました。レビューを最後まで実行させ、タイムアウトの全期間を待ち、通常のレイテンシを失敗として扱うのではなく、実際にタイムアウトした場合にのみスコープを絞るようにしました。ツールに数秒以上かかる操作がある場合、その期待値をスキルに組み込むことで大きな違いが生まれます。
コミュニケーションスタイルを指定する。 長時間のタスク中、モデルはすべてのステップを逐一報告し、まだ待機中であることを繰り返し、安心感よりもノイズの方が多いアップデートを送りがちです。ユーザーはプラグインが動いていることは知りたいですが、集中力を奪う大量のステータスメッセージは望んでいません。これに対処するため、レビュー中は静かにし、ユーザーの入力が必要なときやレビューが完了したとき、またはエラーが発生したときだけ発言するようモデルに指示しました。結果として、より落ち着いたプロフェッショナルな体験になり、ユーザーからも一貫して好評を得られました。
アプリとCLIの両方を考慮して設計する。 当初はCodexアプリ向けにプラグインを構築し、CLIでテストしたところ、異なるパターンが現れました。Codexアプリの大きな利点の1つはUIを直接レンダリングできることです。Markdown、テーブル、リッチなフォーマットを表示でき、レビュー結果を見やすく提示できます。しかしCLIではテーブルや複雑なUIコンポーネントの表示が同じようにはいかず、アプリではきれいに見えていたものがターミナルでは読みにくくなりました。両方の環境で適切に動作するよう、よりシンプルな表現に戻す必要がありました。CodexアプリとCLIの両方で動作するプラグインを構築する場合は、早い段階で両方をテストし、制約の多い方に合わせて出力を設計することをお勧めします。
自分でCodexプラグインを構築する場合は、ユーザーの体験から始めて、そこから逆算してください。プラグインをインストールしたら何が楽になるべきかを問い、その体験を適切にサポートする最小限のスキルセットを定義します。上記のツール選択、認証、忍耐、コミュニケーションスタイルに関する教訓はすべて、望む体験から逆算してスキル指示を書くという同じプロセスから生まれたものです。
Codexアプリにはプラグイン作成スキルが内蔵されており、構造のテンプレート(Scaffold)やセットアップに活用できます。ゼロからパーツを組み立てることなく開発を始められ、モデルが自分のワークフローにどう反応するかを学びながらイテレーションできる出発点として便利です。
技術的な統合は作業の一層にすぎません。より深い設計課題は、初回実行から体験が意図的に感じられるよう、モデルがデフォルトで何をすべきかを決めることです。
この最初のバージョンを土台として、Codex内でのCodeRabbit体験をさらに拡張していく予定です。レビューフィードバックがエージェントに戻る仕組みの改善、新しいスキルの段階的な追加、そして初回時の体験改良により、ユーザーがより早く価値を得られるようにしていきます。
チームが最も楽しみにしているアイデアの1つは、コード自体のコンテキストだけでなく、セッション中に開発者がやり取りしたメッセージを通じて、Codexが提供する会話のコンテキストも活用する方法の探求です。
このやり取りの履歴には、変更の意図に関する多くのシグナルが含まれています。これをレビューに取り込むことで、コードを単独でレビューするのではなく、開発者が実際に達成しようとしていることに沿ったフィードバックをCodeRabbitが提供できるようになるはずです。
プラグインを試してみたい方は、アナウンス記事でインストール手順をご確認ください。自分でプラグインを構築している方は、ぜひ作品を共有してください。CodeRabbit subredditやCodeRabbit Discordでお待ちしています。