awesome-hacks
Docs

PR作成時にClaudeで自動コードレビューする(GitHub Actions)

pull_request で Actions による自動レビュー(A)と、スキル+Cursor/Claude Codeへの手動指示(B)の違いを整理したうえで、claude-code-action の手順を示す

最終更新:2026/05/12

まず知っておきたいこと(よくある勘違い)

次の2つは 別物である。

やりたいこと仕組み
A. PR が作られたら GitHub 上で無人レビューGitHub Actions など、GitHub がイベントで起動する処理が必要(この記事の本編)。
B. レビュー観点をスキルにまとめ、IDE で都度レビューGitHub Actions は不要.claude/skills/.../SKILL.md にルールを書き、Cursor や Claude Code に対して人がプロンプトで指示する方式である。

「スキルを置いている」だけでは PR 作成時に自動では動かない。自動にしたい場合は本編の A を別途組む。

この記事でやること(自動レビュー=上表の A)

GitHub 上で Pull Request が作られたり更新されたりしたタイミングで、人が操作しなくても Claude にコードレビューさせる。

実現の主役は GitHub Actions(GitHubに組み込まれたCI/CD=継続的インテグレーション・継続的デリバリーのプラットフォーム。リポジトリのイベントをトリガーにワークフローを自動実行できる)である。PR のイベントは GitHub が検知するので、手元の PC を起動していなくても動かせる。
レビュー観点はリポジトリ内の 1ファイル(例: .claude/skills/pr-review/SKILL.md)に書き、ワークフローがその内容と PR の差分を Claude に渡す。

なぜ「手元の Claude Code だけ」では PR 作成時の自動にならないか

Claude Code は あなたのターミナル上で動くツールである。GitHub は「PRが作られた」と判断した瞬間に、勝手にあなたの PC 上の claude を起動することはできない

そのため、

  • PR 作成時に無人でレビューしたい
    GitHub 上で動く処理(この記事では GitHub Actions)が必要になる。

**B(スキル+手動)**では、レビューするタイミングは 自分が Cursor / Claude Code に指示を出したときになる(後述の「手動レビュー用のスキル方式」)。

前提(自動レビュー用)

  • リポジトリが GitHub にあり、PR が作れる。
  • Settings → Actions → General で、このリポジトリで Actions が使える。
  • claude-code-actionAnthropic API を直接使う場合、リポジトリの Settings → Secrets and variables → ActionsANTHROPIC_API_KEY を登録する(Anthropic Console 等で発行したキー)。
    Bedrock(Amazon Bedrock、AWSが提供するマネージド型の生成AI基盤サービス)/ Vertex(Vertex AI、GCPが提供する機械学習プラットフォーム)等に切り替える場合は公式の別手順になる。
  • (任意)Claude(GitHub App) を入れておくと、@claude 連携やトークン周りが楽になることがあるが、API キーと混同しないこと。

1. レビュー基準ファイルをコミットする

ワークフローの prompt から参照するファイルをリポジトリに置く。

  • 例: .claude/skills/pr-review/SKILL.md(Claude Code のスキル定義と兼用できる)
  • 別案: docs/review-rules.md11 の記事と揃える場合)

中身は「どの観点で」「どの形式で」レビューするかを書く。

2. ワークフロー(PR イベントで自動実行)

.github/workflows/claude-pr-review.yml を追加する。

  • on: pull_request … PR の作成・更新で起動する(=自動レビューの心臓部)。
  • anthropics/claude-code-action@v1ランナー(GitHub Actionsのジョブを実行する仮想マシン環境)上で Claude を実行する。v1 ではプロンプト入力は prompt(旧 direct_prompt は廃止)。
  • permissions: pull-requests: write … レビュー結果を PR にコメントする等で必要になることが多い。
name: claude-pr-review

on:
  pull_request:
    types: [opened, synchronize, reopened]

permissions:
  contents: read
  pull-requests: write

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Fetch base branch for diff
        run: git fetch origin ${{ github.base_ref }} --depth=1

      - name: Run Claude PR Review
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            `.claude/skills/pr-review/SKILL.md` の内容を読んでレビュー基準を確認し、
            `git diff origin/${{ github.base_ref }}...HEAD` でこのPRの差分を取得して、
            レビュー結果を Markdown 形式で出力してください。

on.pull_request.types の意味

種類いつ動くか
openedPR を新規作成したとき
synchronizePR のブランチに push が入り、PR が更新されたとき
reopened一度閉じた PR を再度開いたとき

SKILL.md のパスを変えたら、prompt 内のパスも同じに直す。

3. 動作確認(自動が本当に動いているか)

git add .github/workflows/claude-pr-review.yml .claude/skills/pr-review/SKILL.md
git commit -m "ci: add Claude PR review on pull_request"
git push -u origin HEAD

GitHub で 新しい PR を作成する(または既存 PR に push する)。Actions タブで claude-pr-reviewPR イベントに応じて起動し、PR 上にレビューが付くか確認する。

手動レビュー用のスキル方式

GitHub Actions は使わない。そのため .github/workflows/claude-review.yml(や claude-pr-review.yml)は不要である。B だけなら削除してよい(A と併用する場合だけ残す)。

やることは次の2点だけである。

  1. レビュー観点・出力形式を .claude/skills/pr-review/SKILL.md(など)に書いてリポジトリにコミットする。
  2. Cursor(AIアシスト機能を内蔵したVSCodeベースのコードエディタ)や Claude Code を開き、チャットに 人が 指示を出す。例:
    • .claude/skills/pr-review/SKILL.md のスキルに従って、現在のブランチの変更をコードレビューして」
    • 「この PR の差分をレビューして。観点はリポジトリの SKILL.md に従って」

スラッシュコマンド(例: /pr-review)をスキル側で定義している場合は、それを使ってもよい。いずれも「人が起動・人が指示」がトリガーであり、PR を GitHub に push しただけではレビューは走らない

A(本編の自動)B(この節の手動)
トリガーpull_request イベント人のプロンプトやスラッシュコマンド
課金のイメージActions 用の API キー等が別途かかりやすいIDE(Integrated Development Environment、統合開発環境)/ Claude Code の 契約プラン側の利用になりやすい(公式の範囲を確認)

「PR 作成のたびに GitHub だけで完結した自動レビュー」が欲しいときは A。ルールをスキル化しつつ、まずは手元だけで回したいときは B で足りる。

ありがちな失敗

  • ANTHROPIC_API_KEY が未設定 … 認証エラーでジョブ失敗。
  • uses がなく echo のみ … Actions は成功しても Claude は動いていない。
  • direct_prompt のまま … v1 では prompt に変更する(Migration Guide)。
  • ジョブは走るが PR に何も出ないpermissions やアクション側の「PR への投稿」要件を公式ドキュメントで確認する。
  • diff が空fetch-depthgit fetch origin ${{ github.base_ref }} を見直す。

参考リンク