メインコンテンツへスキップ
ブログ一覧

Claude Code GitHub Actionsで実現するAI駆動コードレビュー&自動修正パイプライン

Claude CodeGitHub Actionsコードレビュー自動化CI/CD

GitHub上でのチーム開発において、コードレビューは品質を担保する重要なプロセスだ。しかし、レビュー待ちによるボトルネックや、見落としによるバグの混入に悩んでいるチームも多いだろう。

Anthropic公式のclaude-code-actionを使えば、PRの自動レビュー、@claudeメンション応答、issueトリアージ、CI失敗の自動修正まで、GitHub Actionsだけで完結するAI駆動パイプラインを構築できる。

本記事では、実際のワークフローYAMLを交えながら、セットアップからカスタマイズまでを実践的に解説する。

claude-code-actionとは

claude-code-actionは、GitHub Actions上でClaude Codeを実行するためのComposite Actionだ。PRやissueに対して@claudeとメンションするだけで、コードの質問への回答、変更の実装、レビューコメントの投稿などを行える。

主な特徴は以下の通り。

  • 自動モード検出: prompt入力の有無で自動化モードとインタラクティブモードを自動判別
  • 4つの認証プロバイダ: Anthropic直接API、Amazon Bedrock、Google Vertex AI、Microsoft Foundryに対応
  • MCP・プラグイン対応: MCPサーバーやプラグインで機能拡張が可能
  • 構造化出力: JSON Schemaを指定すれば、後続ステップで使えるバリデーション済みJSONを返す

セットアップ(最短5分)

1. Claude GitHub Appのインストール

Claude Code CLIを使っているなら、ターミナルで/install-github-appを実行するのが最も簡単だ。手動の場合はClaude GitHub Appをリポジトリにインストールする。

2. APIキーの設定

リポジトリのSecrets(Settings > Secrets and variables > Actions)にANTHROPIC_API_KEYを追加する。Claude Code Pro/Maxサブスクリプションを持っている場合は、claude setup-tokenで生成したOAuthトークンをCLAUDE_CODE_OAUTH_TOKENとして設定することもできる。

3. ワークフローファイルの配置

.github/workflows/claude.ymlを作成する。

yaml
name: Claude Code
on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  pull_request_review:
    types: [submitted]
  issues:
    types: [opened, assigned]

jobs:
  claude:
    if: |
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
      (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      issues: write
      id-token: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

これだけで、PRやissueで@claudeとメンションすればClaudeが応答するようになる。

PRの自動レビューを設定する

PRが作成・更新されるたびに自動でレビューを実行するには、pull_requestトリガーとprompt入力を組み合わせる。

yaml
name: PR Auto Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      issues: write
      id-token: write
    steps:
      - uses: actions/checkout@v6
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            このPRの変更内容をレビューしてください。
            以下の観点でチェックし、問題があればインラインコメントで指摘してください:
            - ロジックのバグや境界値の見落とし
            - セキュリティ上の問題(インジェクション、認証漏れ等)
            - パフォーマンスへの影響
            - テストカバレッジの不足

promptを指定すると自動化モードとして動作し、メンション不要で即座に実行される。

パス別にレビュー観点を変える

GitHubのpathsフィルタを活用すれば、変更ファイルに応じたレビューが可能だ。

yaml
name: Security Review
on:
  pull_request:
    types: [opened, synchronize]
    paths:
      - "src/auth/**"
      - "src/middleware/**"
      - "config/security.*"

jobs:
  security-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      issues: write
      id-token: write
    steps:
      - uses: actions/checkout@v6
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            セキュリティ観点で重点的にレビューしてください。
            認証・認可のロジック、入力バリデーション、SQLインジェクション、
            XSS、CSRF対策を中心にチェックしてください。

正直、このpathsフィルタとの組み合わせだけでも導入する価値があると感じている。

CI失敗の自動修正

CI失敗時にClaudeが自動で修正を試みるワークフローも構築できる。workflow_runトリガーを使う。

yaml
name: Auto Fix CI
on:
  workflow_run:
    workflows: ["CI"]
    types: [completed]

jobs:
  fix:
    if: github.event.workflow_run.conclusion == 'failure'
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      issues: write
      id-token: write
      actions: read
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ github.event.workflow_run.head_branch }}
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            CIが失敗しました。失敗ログを確認し、原因を特定して修正してください。
            修正後、変更をコミットしてプッシュしてください。

actions: readパーミッションを付与することで、ClaudeがCI実行ログにアクセスできるようになる。これが地味に重要なポイントで、なければ失敗原因を推測するしかなくなる。

issueの自動トリアージ

新しいissueにラベルを自動付与するトリアージも設定できる。

yaml
name: Issue Triage
on:
  issues:
    types: [opened]

jobs:
  triage:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: write
      id-token: write
    steps:
      - uses: actions/checkout@v6
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            このissueの内容を分析し、適切なラベルを付与してください。
            利用可能なラベル: bug, feature, documentation, question, good-first-issue
          allowed_non_write_users: "*"

allowed_non_write_users: "*"を設定することで、write権限のないユーザーが作成したissueもトリアージ対象にできる。ただし、これはissueのラベリングのような読み取り中心の処理にのみ使うべきだ。コード変更を伴うワークフローでは設定しないこと。

外部コントリビューターへの対応

claude-code-actionは、デフォルトでリポジトリへのwrite権限を持つユーザーのみがトリガーできる。これはセキュリティ上の重要な設計判断だ。

外部コントリビューターのPRには、author_associationで条件分岐する方法がある。

yaml
if: |
  github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' ||
  github.event.pull_request.author_association == 'CONTRIBUTOR'

また、プロンプトインジェクション対策として、HTMLコメントや不可視文字、隠しHTML属性などが自動的にサニタイズされる。ただし、外部からのPRについてはClaudeのレビュー結果を鵜呑みにせず、人間の目でも確認することを推奨する。

GitHub Copilot上のClaude agentとの使い分け

2026年2月、GitHubのAgent HQにClaude・Codex・Copilotが統合され、github.com上で直接@ClaudeにissueやPRを割り当てられるようになった。

では、claude-code-actionとどう使い分けるか。

観点 claude-code-action GitHub Agent HQ
カスタマイズ性 ワークフローYAMLで自由に制御 GitHub UIから操作
トリガー条件 paths, authors, labels等を細かく指定 issueやPRへの手動アサイン
自動化 完全自動(人間の操作不要) 基本は手動トリガー
MCP/プラグイン 対応 GitHub側の機能に依存
ユースケース CI/CDパイプライン、定型レビュー アドホックな質問、単発の修正依頼

結論としては併用がベストだ。定型的な自動レビューやCIパイプラインにはclaude-code-action、その場限りの質問や探索的な作業にはAgent HQの@Claudeという使い分けが自然だろう。

よくあるハマりポイント

id-token: writeの付け忘れ: OIDC認証に必要なパーミッション。これがないとAPI呼び出しが認証エラーになる。エラーメッセージだけでは原因が分かりづらいので注意。

fetch-depth: 1の指定漏れ: デフォルトのフルクローンは不要な場合が多く、実行時間が長くなる。ただし、git履歴を参照する必要がある場合は0を指定する。

show_full_outputの安全性: デバッグ時にtrueにしたくなるが、シークレットがログに出力される可能性がある。本番ワークフローでは必ずfalse(デフォルト)のままにすること。

構造化出力の活用: 後続ステップでClaudeの判断結果を使いたい場合は--json-schemaが便利。fromJSON(steps.analyze.outputs.structured_output)で値を取り出せる。

まとめ

claude-code-actionを使えば、PRレビュー・issueトリアージ・CI修正といった開発ワークフローの多くをAIで自動化できる。GitHub Actionsのpathsフィルタやworkflow_runトリガーと組み合わせることで、チームのニーズに合った柔軟なパイプラインを構築できる点が大きな強みだ。

まずは基本のインタラクティブモード(@claudeメンション)を導入し、効果を確認してから自動レビューやCI修正に拡張していくのがおすすめのアプローチだ。

もっと読む他の技術記事も読む