🔍

Claude Code Actionの初期設定を見直す

に公開

はじめに

私たちの組織では以前から試験的に社内の一部リポジトリでClaude Code Actionを使えるようにしていました。
先日これがv1.0に到達したため社内の主要なリポジトリへ展開していったのですが、設定周りで自分がはまったポイントがいくつかあったので、本記事で共有したいと思います!

https://github.com/anthropics/claude-code-action/releases/tag/v1

前提

Claude Code ActionはClaude Code経由でスラッシュコマンド/install-github-appを使って各リポジトリへ展開しました。このとき「@Claude Code」と「Claude Code Review」を有効化しています。
実行時

/install-github-app経由で初期設定された~/.github/workflows/claude-code-review.ymlが以下になり、赤線を引いた辺りが今回のポイントになります。

初期設定

自動レビューの起動トリガー変更

初期設定のままだとPRをオープンにした際、pushしてコードを更新した際に毎回レビューが走ることになります。
私たちの組織ではClaudeによる自動レビューは人にレビューを依頼する前の段階、つまりセルフレビューを支援するような形で使いたかったので、PRに「AI_Review」ラベルを付けた時だけ自動レビューを実行させる形式に変更しました。

claude-code-review.yml
on:
  pull_request:
    types: [labeled]

jobs:
  claude-review:
    if: github.event.label.name == 'AI_Review'

    runs-on: ubuntu-latest

プロンプトにレビュー対象のPR番号を明示

初期設定ではPRオープン時からの自動レビューを想定しているため、promptにPR番号が明示されておらず、場合によってはレビューしてほしいPRとは別の最新PRをレビューしてしまうケースがありました。

そこでpromptにPR番号を明示的に渡すようにしました。

claude-code-review.yml
- name: Run Claude Code Review
        id: claude-review
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            対象リポジトリ: ${{ github.repository }}
            対象PR番号: ${{ github.event.pull_request.number }}

            以下の観点に沿って、このプルリクエストをレビューしフィードバックを提供してください:
            - コードの品質とベストプラクティス
            - 潜在的なバグや問題
            - パフォーマンスの考慮事項
            - セキュリティの懸念
            - テストカバレッジ

            リポジトリのCLAUDE.mdをスタイルと規約の指針としてご利用ください。フィードバックは建設的で有益なものにしてください。
            特定のコードの問題を強調するには、`mcp__github_inline_comment__create_inline_comment` を使用してください。
            レビュー状況に応じて、Bashツール`gh pr comment`を使用してプルリクエストへのコメントとしてレビューを残してください。
            該当するPR番号が取得できない、もしくはPRの内容が取得できない場合は、レビューを中止して"Cannot get PR details."とだけ返答してください。
            `WebFetch`や`WebSearch`を使用した際に、信頼に足りうる情報源が見つからない場合は、"No relevant information found."と返答に注記してください。

インラインコメントの有効化

claude-code_actionリポジトリで紹介されているyamlを見ると、mcp__github_inline_comment__create_inline_commentを有効化することでレビュー時にインラインコメントを付けられることがわかりました。

claude-code-review.yml
          claude_args: |
            --allowedTools 'mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),WebFetch,WebSearch'

WebSearchとWebFetchの有効化

先ほどの設定では--allowedToolsの中でWebFetchWebSearchも実は有効化させています。

claude-code-review.yml
          claude_args: |
            --allowedTools 'mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),WebFetch,WebSearch'

renovateやdependabotによるライブラリーアップデートのPRに対して自動レビューを使った場合、リリースノートの検索などでWebFetchWebSearchを有効化しないと上手く情報を取得できないケースがあったためです。


実はリリースノートの取得に失敗しているケース


設定の追加によって、バージョン変更に伴う破壊的変更点を検索できている

まとめ

Claude Codeの/install-github-appで導入されるyamlのままだと、想定するユースケースを満たせない場合があります。
結局のところ、claude-code_actionリポジトリにある解説ドキュメントとyaml例が最新のものとして参考になる印象を持ちました。

https://github.com/anthropics/claude-code-action/blob/main/docs/solutions.md

https://github.com/anthropics/claude-code-action/blob/main/examples/pr-review-comprehensive.yml

現在の設定

長いので折りたたんでいます
claude-code-review.yml
name: Claude Code Review

on:
  pull_request:
    types: [labeled]
    # Optional: Only run on specific file changes
    # paths:
    #   - "src/**/*.ts"
    #   - "src/**/*.tsx"
    #   - "src/**/*.js"
    #   - "src/**/*.jsx"

jobs:
  claude-review:
    if: github.event.label.name == 'AI_Review'

    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v5
        with:
          fetch-depth: 1

      - name: Run Claude Code Review
        id: claude-review
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            対象リポジトリ: ${{ github.repository }}
            対象PR番号: ${{ github.event.pull_request.number }}

            以下の観点に沿って、このプルリクエストをレビューしフィードバックを提供してください:
            - コードの品質とベストプラクティス
            - 潜在的なバグや問題
            - パフォーマンスの考慮事項
            - セキュリティの懸念
            - テストカバレッジ

            リポジトリのCLAUDE.mdをスタイルと規約の指針としてご利用ください。フィードバックは建設的で有益なものにしてください。
            特定のコードの問題を強調するには、`mcp__github_inline_comment__create_inline_comment` を使用してください。
            レビュー状況に応じて、Bashツール`gh pr comment`を使用してプルリクエストへのコメントとしてレビューを残してください。
            該当するPR番号が取得できない、もしくはPRの内容が取得できない場合は、レビューを中止して"Cannot get PR details."とだけ返答してください。
            `WebFetch`や`WebSearch`を使用した際に、信頼に足りうる情報源が見つからない場合は、"No relevant information found."と返答に注記してください。

          # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
          # or https://docs.anthropic.com/en/docs/claude-code/sdk#command-line for available options
          claude_args: |
            --allowedTools 'mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),WebFetch,WebSearch'

株式会社Grooves

Discussion