OpenClaw で GitHub PR レビューを自動化する方法
OpenClaw を使って AI 駆動の PR 自動レビューワークフローを構築する方法:GitHub 連携、PR Reviewer によるコード分析、Conventional Commits による規範化で、チームのコードレビュー効率を向上させます。
最終更新: 2026-03-31
必要なSkills
構築するもの
完全自動化された PR レビューパイプラインを構築します:
- PR の自動作成 — コミット履歴から AI が規範的な PR 説明を生成
- AI コードレビュー — バグ、セキュリティ脆弱性、スタイル問題を自動分析
- コミットの規範化 — Conventional Commits フォーマットを強制
- 実行可能なフィードバック — PR にインラインレビューコメントを直接投稿
構築が完了すれば、PR を作成するたびに AI レビューが自動起動し、手動作業は不要になります。
AI コードレビューが必要な理由
手動コードレビューは欠かせませんが、実際の運用には明確なボトルネックがあります:
- レビュー品質のばらつき — レビュアーによって着目点が異なり、命名規則を見る人もいればエラーハンドリングを見る人もいます。どの問題が発見されるかは「今日の担当者」次第です
- レビュー疲れ — 数百行のコードを読んだ後は注意力が明らかに低下します。研究によると、60分以上の継続レビューで効率が大幅に落ち、重大なバグは大きな diff の後半に潜みがちです
- 待ち時間の長さ — レビュアーにも自分の開発タスクがあり、PR が数時間から数日放置されることも。これはブロッキングを生み、大きな PR のまとめ提出やマージコンフリクトの原因になります
- スケーラビリティの問題 — チームが大きくなるほどレビューのボトルネックは深刻に。シニア開発者はレビューに時間を取られ、新メンバーはコードベースの理解が追いつきません
AI レビューは人間のレビューを置き換えるものではなく、システム的なチェック(セキュリティパターン、よくあるバグ、スタイル違反)を担当し、人間のレビュアーがアーキテクチャ設計やビジネスロジックに集中できるようにします。人間が見る前に、品質の最低ラインを通すフィルターだと考えてください。
前提条件
作業を始める前に、以下を準備してください:
- OpenClaw がインストール・設定済み(スタートガイド)
- GitHub CLI(
gh)がインストール・認証済み(gh auth login) - テスト用の GitHub リポジトリ(個人プロジェクトで OK)
- Node.js 18+
ステップ 1:必要な Skills をインストール
3つの Skill を順番にインストールします:
# 1. GitHub 連携(基盤となる機能) npx clawhub@latest install github # 2. PR Reviewer(コード分析) npx clawhub@latest install pr-reviewer # 3. Conventional Commits(コミットフォーマット) npx clawhub@latest install conventional-commits
インストール確認:
clawhub list
3つの Skill すべてが installed と表示されれば OK です。
ステップ 2:GitHub 認証を設定
GitHub Skill には以下のスコープを持つ Personal Access Token が必要です:
repo— リポジトリへの完全アクセスread:org— 組織メンバー情報の読み取り(Organization リポジトリの場合、任意)
gh auth login で認証済みの場合、Skill は既存の認証情報を自動的に使用します。未認証の場合:
# 現在の認証状態を確認 gh auth status # ログインが必要な場合 gh auth login
ステップ 3:PR Reviewer を設定
PR Reviewer Skill はデフォルト設定ですぐに使えますが、動作をカスタマイズできます:
# デフォルト設定を確認 clawhub inspect pr-reviewer
主な設定項目:
- レビュー深度:
quick(簡易スキャン)またはthorough(詳細分析) - フォーカスエリア:セキュリティ、パフォーマンス、スタイル、バグ、またはすべて
- 自動コメント:PR に直接コメントを投稿するかどうか
ステップ 4:最初の自動レビュー PR を作成
実際の PR でワークフロー全体をテストしましょう:
4.1 フィーチャーブランチを作成
git checkout -b feature/test-ai-review
4.2 コードを修正
プロジェクト内のファイルを編集します。テスト目的で、レビュアーが検出できる典型的な問題を意図的に入れてみましょう:
async 呼び出しの await 漏れ(非同期バグ):
// Bug:非同期呼び出しに await がない
function getUserData(userId) {
const response = fetch(`/api/users/${userId}`); // await が抜けている
return response.json(); // TypeError: response.json is not a function
}
SQL インジェクション脆弱性:
# セキュリティ問題:ユーザー入力が SQL クエリに直接埋め込まれている
def get_user(user_id):
query = f"SELECT * FROM users WHERE id = '{user_id}'" # SQL インジェクションのリスク
return db.execute(query)
ハードコードされたシークレット:
// セキュリティ問題:API キーがソースコードに直接記載されている
const stripe = require('stripe')('sk_live_abc123secretkey');
N+1 クエリ問題:
# パフォーマンス問題:N+1 クエリ — 注文ごとに DB クエリが発生
def get_orders_with_items(user_id):
orders = Order.objects.filter(user_id=user_id)
for order in orders:
order.items = OrderItem.objects.filter(order_id=order.id) # N+1!
return orders
4.3 Conventional Commits でコミット
コミットメッセージを手書きせず、OpenClaw に生成してもらいます:
git add . # OpenClaw が Conventional Commits 規約に準拠したコミットメッセージを自動生成 # 例:"feat(api): add getUserData function for user data retrieval"
4.4 PR を作成してレビュー
# OpenClaw が PR を自動作成し、AI による説明を生成 # PR Reviewer が自動的に diff を分析
数秒以内に以下が表示されます:
- フォーマットの整った PR 説明(変更内容を自動要約)
- 具体的なコード行に対するレビューコメント
- 全体的な評価と改善提案を含むサマリーコメント
レビューコメントの例:
🔒 セキュリティ問題 (14行目, auth.py):
ユーザー入力が SQL クエリ文字列に直接埋め込まれています。
SQL インジェクション攻撃のリスクがあります。
修正案:パラメータ化クエリを使用してください。
- query = f"SELECT * FROM users WHERE id = '{user_id}'"
+ query = "SELECT * FROM users WHERE id = %s"
+ return db.execute(query, (user_id,))
⚡ パフォーマンス問題 (8行目, orders.py):
N+1 クエリを検出 — OrderItem.objects.filter() がループ内で
order ごとに呼び出されています。select_related() または
prefetch_related() を使って1回のクエリにまとめてください。
- orders = Order.objects.filter(user_id=user_id)
+ orders = Order.objects.filter(user_id=user_id).prefetch_related('items')
🐛 バグ (3行目, api.js):
fetch() は Promise を返しますが await されていません。
response.json() は失敗します。response は pending の
Promise であり、Response オブジェクトではありません。
- const response = fetch(`/api/users/${userId}`);
+ const response = await fetch(`/api/users/${userId}`);
ステップ 5:レビューワークフローをカスタマイズ
セキュリティ重視レビュー
セキュリティに敏感なリポジトリでは、PR Reviewer にセキュリティチェックを重点的に行わせます:
- SQL インジェクションパターン
- ハードコードされた認証情報や API キー
- 安全でないデータ処理(未検証の入力、サニタイズの欠如)
- 依存関係の脆弱性
- フロントエンドコードの XSS 脆弱性
- 安全でないデシリアライゼーションパターン
パフォーマンス重視レビュー
パフォーマンスが重要なサービスでは、レビュアーにパフォーマンスパターンをフォーカスさせます。React プロジェクトの場合、不要な再レンダリングを検出できます:
// パフォーマンス問題:レンダリングのたびに新しいオブジェクト参照が生成され、子コンポーネントが再レンダリングされる
function ParentComponent({ items }) {
return (
<ChildComponent
style={{ margin: 10 }} // 毎回新しいオブジェクト
onClick={() => doSomething()} // 毎回新しい関数
/>
);
}
チーム全体での設定
レビュー設定をチームで共有する方法:
- Skill の設定をリポジトリ内の
.openclaw/ディレクトリにエクスポート - リポジトリにコミット
- チームメンバーが同じ設定でインストール — Skill がプロジェクトレベルの設定を自動的に読み込みます
応用編:レビューフォーカスの調整
自然言語の指示で PR Reviewer のレビュー方向を調整できます。
言語別のカスタマイズ
レビュー実行時に、Agent に重点を指示します:
- Python:素の
except:ブロック、型ヒントの欠如、Django ORM の N+1 クエリをチェック - JavaScript/TypeScript:残った
console.log、async 呼び出しのawait漏れ、ハードコードされたシークレットをフラグ - Rust:本番コードの
.unwrap()をフラグし、適切なResultハンドリングを提案
ディレクトリ別のカスタマイズ
ディレクトリごとに異なるレビューレベルを設定:
- コアビジネスロジック(
src/core/)— セキュリティ、バグ、パフォーマンスを網羅する完全なレビュー - テストファイル(
src/tests/)— 正しさのみの簡易チェック - ドキュメント(
docs/)— 軽量なスタイルレビュー - スクリプト(
scripts/)— セキュリティとバグにフォーカス
カスタムルール
プロジェクト固有のアンチパターンをフラグさせます。例:
- API ルートで Repository 層を経由せずに直接 DB アクセスしている
- ページコンポーネントに Error Boundary がない
- API エンドポイントにレートリミットがない
CI/CD との統合
すべての PR で自動レビューを実行するには、PR Reviewer を CI/CD パイプラインに統合します。
GitHub Actions
.github/workflows/ai-review.yml にワークフローファイルを作成:
name: AI PR Review
on:
pull_request:
types: [opened, synchronize]
jobs:
ai-review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install OpenClaw and skills
run: |
npm install -g clawhub@latest
clawhub install pr-reviewer
- name: Run AI Review
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENCLAW_API_KEY: ${{ secrets.OPENCLAW_API_KEY }}
run: |
clawhub run pr-reviewer \
--pr ${{ github.event.pull_request.number }} \
--repo ${{ github.repository }} \
--auto-comment
レビュートリガーの制御
AI レビューを特定の条件下でのみ実行し、コストを節約できます:
on:
pull_request:
types: [opened, synchronize]
paths-ignore:
- '*.md'
- 'docs/**'
- '.github/**'
ラベルが付与されたときのみレビューを実行する設定:
- name: Check for review label
if: contains(github.event.pull_request.labels.*.name, 'ai-review')
run: clawhub run pr-reviewer --pr ${{ github.event.pull_request.number }}
その他の CI プラットフォーム
Node.js をサポートする CI プラットフォームであれば同じ手順で対応できます。要点は:
clawhubとpr-reviewerSkill をインストールOPENCLAW_API_KEYを環境変数として設定- PR 番号とリポジトリ情報を渡す
- CI Bot に Pull Request への書き込み権限を付与
実際の効果
このワークフローを導入したチームでは、通常以下のような改善が見られます:
- PR 処理速度が 40% 向上 — AI が明らかな問題を先に処理し、人間のレビュー負荷を軽減
- レビュー品質の安定化 — すべての PR が同じ基準で分析される
- コミット履歴の規範化 — Conventional Commits によりチェンジログを自動生成
- 本番環境のバグ減少 — 人間が見落としがちな問題を AI がキャッチ
トラブルシューティング
"GitHub CLI not found"
gh がインストール済みで PATH に含まれていることを確認:
# macOS brew install gh # Linux sudo apt install gh # Windows winget install GitHub.cli
PR 作成時に "Permission denied"
Token のスコープを確認:
gh auth status
repo スコープが含まれていることを確認してください。必要に応じて再認証:
gh auth login --scopes repo
PR Reviewer がコメントしない
Skill のインストールと設定を確認:
clawhub inspect pr-reviewer
OpenClaw の AI プロバイダーが設定済みで、利用可能なクレジットがあることを確認してください。
よくある質問
はい。GitHub Skill は `gh` CLI をベースにしており、GitHub Enterprise Server と GitHub Enterprise Cloud に完全対応しています。`gh auth login --hostname github.yourcompany.com` でエンタープライズホストを設定するだけです。認証完了後、PR Reviewer を含むすべての GitHub 関連 Skill は github.com と同じように動作し、追加の設定は不要です。
GitHub Skill は GitHub 専用ですが、PR Reviewer と Conventional Commits は任意の Git プラットフォームで使えます。GitLab ユーザーは GitLab Skill をインストールし、PR 番号の代わりに Merge Request ID を渡します。Bitbucket も同様です。コアのレビューロジックはプラットフォーム非依存で、コメント投稿の統合レイヤーだけがプラットフォームごとに異なります。
AI レビューは人間のレビューの補完であり、代替ではありません。セキュリティ脆弱性、よくあるバグパターン、スタイル違反、パフォーマンスのアンチパターンなどの系統的チェックに優れ、疲れることなく、見落としもありません。ただし、高レベルのアーキテクチャ判断、ビジネスロジックの正しさ、全体的なアプローチの妥当性は評価できません。ベストプラクティスは、AI を最初のスキャンとして機械的なチェックを処理させ、人間のレビュアーが設計と意図に集中することです。
コストは使用する AI プロバイダーとレビューする diff のサイズによります。500行程度の典型的な PR レビューで、多くのプロバイダーで約 $0.01-0.05 です。1000行以上の大きな diff では $0.10-0.15 程度になることもあります。重要でないパスには `quick` レビュー深度を設定したり、パスフィルターで自動生成ファイル、vendor ディレクトリ、ドキュメントをスキップすることでコストを制御できます。
はい。PR Reviewer は柔軟なファイルパターン設定をサポートしています。glob パターンでファイルを除外(例:`**/*.generated.ts`、`vendor/**`)、特定のディレクトリに限定したレビュー、パスごとに異なるレビュー深度の設定が可能です。`.openclaw/pr-reviewer.yml` で設定します。多くのチームは自動生成ファイル、lock ファイル、vendor の依存関係を除外し、チームが実際に書いたコードにレビューを集中させています。
PR Reviewer は大きな diff を論理的なチャンクに分割して分析します。1000行を超える PR では、高リスクファイル(認証、データベースクエリ、API エンドポイント、セキュリティに関わるロジック)を優先的に最大深度でレビューします。テストや設定変更には軽量なレビューを適用します。行数の閾値を設定して、閾値を超えた場合に PR を小さく分割するよう提案する警告を出すこともできます。
はい。JavaScript、TypeScript、Python、Go、Rust、Java、C#、Ruby、PHP など、主要なプログラミング言語すべてに対応しています。言語固有のルールが自動的に適用されます。例えば、Rust の `unwrap()` の誤用チェックや、JavaScript の非同期コードでの `await` 漏れチェックなどです。設定ファイルで言語ごとのカスタムルールも定義できます。ファイル拡張子から言語を検出し、手動設定なしで適切な分析パイプラインを適用します。
AI レビューと Linter は補完的な役割を果たし、うまく連携できます。Linter は確定的なルール(フォーマット、import 順序、未使用変数)を適用し、AI レビューは意味論的な問題(ロジックバグ、セキュリティパターン、パフォーマンス問題)をキャッチします。CI では、まず Linter でフォーマット問題を処理し、次に AI レビューで深い分析を行います。PR Reviewer は一般的な Linter ルールを認識しており、同じ問題に対する重複フィードバックを避けます。
OpenClaw はリポジトリのレビュー指標を経時的に追跡します。`clawhub stats pr-reviewer` を実行すると、カテゴリ別の検出問題数、マージ前に解決された数、コードベースの頻出パターンが確認できます。繰り返し発生する問題の特定に役立ちます。例えば、SQL インジェクション警告が頻繁に出る場合、チームトレーニングや ORM 抽象化の改善が必要なサインです。指標を JSON でエクスポートし、ダッシュボードやチームレポートツールに統合することも可能です。
はい。PR ラベル、ブランチ命名規則、変更ファイルのパスに基づいて異なるルールを適用するレビューテンプレートを定義できます。例えば、`hotfix/*` ブランチにはセキュリティ重視の最大深度レビュー、`docs/*` ブランチには軽量なスタイルチェックのみ、といった設定が可能です。`.openclaw/pr-reviewer.yml` の `templates` キーでテンプレートを定義すると、PR Reviewer が条件に基づいて自動的にマッチングします。重要な変更には徹底したレビューを、低リスクな更新は遅延なく処理できます。