CI/CDパイプラインにAIエージェントを組み込むことで、コードレビューやPR作成、Issue対応といった開発プロセスの多くを自動化できる時代が到来しました。Claude Codeは、Anthropicが提供するコーディングエージェントであり、GitHub Actionsとの公式連携によって、リポジトリ上のあらゆるイベントに対してAIが自律的に対応する仕組みを構築できます。
Claude Codeとは?完全ガイドで基本的な機能を把握している方であれば、本記事の内容をスムーズに理解できるはずです。ここでは、GitHub Actionsワークフローへの統合手順から、自動コードレビューやPR作成の実装方法、そしてセキュリティ上の注意点まで、実践的なYAML設定例を交えながら詳しく解説していきます。
Claude Code × GitHub Actionsでできること
Claude CodeとGitHub Actionsを組み合わせることで、従来は人手で行っていた開発タスクの多くをAIエージェントに委任できます。具体的には、以下のような自動化が実現可能です。
自動コードレビュー
PRが作成されたタイミング、またはコードが更新されたタイミングで、Claude Codeが自動的にコードを分析し、レビューコメントを投稿します。コーディング規約への準拠チェック、潜在的なバグの指摘、パフォーマンス改善の提案など、人間のレビュアーが行う作業の多くをカバーできます。
PRコメントでの対話的なコード修正
PRやIssueのコメント欄で @claude とメンションすることで、Claude Codeに直接指示を出せます。「この関数をリファクタリングして」「テストを追加して」といった自然言語の指示に対して、Claude Codeが実際にコードを変更し、コミットをプッシュします。
Issue対応の自動化
新しいIssueが作成された際に、Claude Codeが内容を分析し、修正用のPRを自動作成する仕組みも構築できます。バグ報告に対して修正コードを提案したり、機能リクエストの初期実装を生成したりと、開発の初動を大幅に加速させます。
定期レポートの自動生成
schedule トリガーを使えば、毎日決まった時刻にリポジトリの状態を分析し、技術的負債のレポートやセキュリティチェックの結果をIssueとして投稿するといった運用も可能です。
これらはすべて、Anthropicが公式に提供する anthropics/claude-code-action@v1 を通じて実現できます。ベータ版の段階を経て正式リリース(GA)されたこのアクションは、本番環境での利用に十分な安定性を備えています。
対応するワークフロートリガー
Claude Code Actionが対応する主なワークフロートリガーを整理しておきましょう。
| トリガー | 用途 |
|---|---|
issue_comment | PR・Issueコメントでの @claude メンション対応 |
pull_request_review_comment | PRレビューコメントでの対話 |
pull_request (opened / synchronize) | PR作成・更新時の自動レビュー |
issues (opened) | 新規Issue作成時の自動対応 |
schedule | 定期実行(レポート生成、定期チェックなど) |
この柔軟なトリガー対応により、開発ワークフローのほぼすべてのフェーズにAIエージェントを組み込めるようになっています。
GitHub Actionsワークフローの設定
セットアップ方法
Claude Code × GitHub Actionsの導入には、主に2つの方法があります。
方法1:クイックセットアップ(推奨)
Claude Codeのターミナルで以下のコマンドを実行するだけで、GitHubアプリのインストールからワークフローファイルの配置まで自動的に完了します。
/install-github-appこれが最も簡単な導入方法です。対話形式で必要な設定が進み、ワークフローファイルがリポジトリに自動生成されます。
方法2:手動セットアップ
手動で設定する場合は、以下の3ステップで進めます。
- Claude GitHubアプリをリポジトリにインストールする
- リポジトリの Settings > Secrets and variables > Actions で
ANTHROPIC_API_KEYをシークレットとして登録する .github/workflows/ディレクトリにワークフローファイルを配置する
手動セットアップは、組織のセキュリティポリシーに沿って各ステップを確認しながら進めたい場合に適しています。
基本的なワークフローファイル
最もシンプルな構成は、PRやIssueのコメントで @claude とメンションしたときにClaude Codeが応答するワークフローです。
name: Claude Code Assistant
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
permissions:
contents: write
pull-requests: write
issues: write
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'))
runs-on: ubuntu-latest
steps:
- name: Run Claude Code
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}このワークフローでは3つの権限を設定しています。contents: write はコードの変更とコミットのプッシュに必要です。pull-requests: write はPRへのコメント投稿やレビュー操作に、issues: write はIssueへのコメント投稿にそれぞれ必要となります。
設定パラメータ一覧
anthropics/claude-code-action@v1 で利用可能な主要なパラメータを表にまとめます。
| パラメータ | 説明 | 例 |
|---|---|---|
anthropic_api_key | Anthropic APIキー(必須) | ${{ secrets.ANTHROPIC_API_KEY }} |
prompt | Claude Codeに渡す追加プロンプト | "コードレビューを日本語で行ってください" |
claude_args | Claude Code CLIへの追加引数 | "--max-turns 10 --model claude-sonnet-4-20250514" |
trigger_phrase | 反応するトリガーフレーズ | "@claude" (デフォルト) |
timeout_minutes | タイムアウト時間(分) | 30 |
claude_args パラメータでは、Claude Code CLIの各種オプションを指定できます。よく使用するオプションを以下に示します。
| CLIオプション | 説明 |
|---|---|
--max-turns | エージェントの最大ターン数を制限する |
--model | 使用するモデルを指定する |
--allowedTools | 使用を許可するツールを制限する |
--mcp-config | MCP(Model Context Protocol)サーバーの設定ファイルを指定する |
たとえば、モデルをSonnetに固定しつつターン数を制限したい場合は、次のように設定します。
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: "--max-turns 5 --model claude-sonnet-4-20250514"CLAUDE.mdとの連携
リポジトリルートに CLAUDE.md ファイルを配置しておくと、Claude Code Actionはその内容をコンテキストとして自動的に読み込みます。これにより、プロジェクト固有のコーディング規約やレビュー基準をAIに一貫して適用させることが可能です。
たとえば、以下のような CLAUDE.md を用意しておくと、コードレビュー時にこれらの基準が自動的に考慮されます。
# CLAUDE.md
## コーディング規約
- TypeScriptのstrictモードを有効にする
- 関数の行数は30行以内に収める
- 命名規則はcamelCaseを使用する
## レビュー基準
- パフォーマンスへの影響を必ず確認する
- エラーハンドリングが適切に行われているか確認する
- テストカバレッジが低下していないか確認するCLAUDE.md はGitHub Actions上でのClaude Codeの振る舞いだけでなく、ローカルでのClaude Code利用時にも同様に適用されるため、チーム全体で一貫した開発体験を維持できます。
自動コードレビューの実装
PR作成時の自動レビュー
PRが作成されたタイミングで自動的にコードレビューを実行するワークフローを構築します。pull_request トリガーの opened と synchronize イベントを使用します。
name: Automated Code Review
on:
pull_request:
types: [opened, synchronize]
permissions:
contents: read
pull-requests: write
jobs:
review:
runs-on: ubuntu-latest
steps:
- name: Automated Review by Claude
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
このPRの変更内容をレビューしてください。
以下の観点で確認をお願いします:
1. コードの正確性:ロジックに誤りがないか
2. セキュリティ:脆弱性の可能性がないか
3. パフォーマンス:非効率な処理がないか
4. 可読性:命名やコード構造が適切か
5. テスト:テストが十分に書かれているか
問題が見つかった場合は、具体的な修正案とともにコメントしてください。
軽微な指摘はまとめて記載し、重大な問題は個別にインラインコメントしてください。
claude_args: "--max-turns 3"synchronize イベントを含めることで、PRに新しいコミットがプッシュされるたびにレビューが再実行されます。筆者の経験では、初回のレビューで指摘された問題を修正した後、再度レビューが走ることで修正漏れを防げるケースが多くありました。
promptパラメータの設計
prompt パラメータに渡す指示の設計は、自動レビューの品質を大きく左右します。いくつかのポイントを押さえておきましょう。
レビュー観点を明確にする
漠然と「レビューしてください」と指示するのではなく、チェック項目を具体的にリストアップすることで、網羅的かつ一貫したレビューが得られます。
出力フォーマットを指定する
レビューコメントの形式を指定しておくと、人間のレビュアーがAIのレビュー結果を確認する際の効率が上がります。たとえば「重大度を [Critical] [Warning] [Info] で分類してください」のように指定する方法が有効です。
Skillsとの連携
prompt パラメータからClaude Code Skillsを呼び出すことも可能です。リポジトリに定義済みのSkillがある場合、GitHub Actions上でもそれを活用できるため、ローカルとCI/CDで同じレビュー基準を適用できます。
レビュー精度を高める工夫
自動コードレビューの精度を実運用レベルに引き上げるために、筆者が試行錯誤の中で見出したいくつかの工夫を共有します。
差分のコンテキストを十分に提供する
Claude Code Actionはデフォルトでリポジトリ全体にアクセスできるため、変更箇所だけでなく関連ファイルも考慮した包括的なレビューが可能です。ただし、--max-turns を小さく設定しすぎると、十分な調査を行う前にレビューが打ち切られることがあるため、プロジェクトの規模に応じた値を設定してください。
言語やフレームワーク固有の観点を追加する
たとえばReactプロジェクトであれば「不要な再レンダリングが発生していないか」「useEffectの依存配列が適切か」のように、技術スタック固有のチェック項目を追加することで、より実用的なレビューが得られます。
誤検知を減らすための除外ルール
自動生成されたファイル(ロックファイル、型定義ファイルなど)に対してレビューコメントが投稿されると、かえってノイズになります。CLAUDE.md に「package-lock.json や *.d.ts ファイルの変更はレビュー対象外とする」といったルールを記述しておくことで、この問題を回避できます。
PR作成・Issue対応の自動化
Issueからの自動PR作成
新しいIssueが作成された際に、Claude Codeが内容を分析して修正用のPRを自動作成するワークフローを構築します。
name: Auto Fix Issues
on:
issues:
types: [opened]
permissions:
contents: write
pull-requests: write
issues: write
jobs:
auto-fix:
if: contains(github.event.issue.labels.*.name, 'claude-fix')
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create Fix PR
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
以下のIssueの内容を分析し、修正を実施してください。
修正手順:
1. Issueの内容を理解する
2. 関連するコードを特定する
3. 修正を実装する
4. 修正内容を説明するPRを作成する
PRのタイトルは「fix: [Issueのタイトル要約]」の形式にしてください。
PRの説明には、何を修正したか、なぜその修正が適切かを記載してください。
claude_args: "--max-turns 15"このワークフローでは、claude-fix ラベルが付いたIssueに対してのみ動作するようにフィルタリングしています。すべてのIssueに対して自動修正が走ると、意図しない変更が生成されるリスクがあるためです。ラベルによるゲート制御は、自動化の範囲を適切に管理するための重要なパターンです。
コメントでの対話的な修正指示
PRのコメント欄で @claude とメンションすることで、対話的にコードを修正させる仕組みは、開発者にとって最も直感的な使い方です。
name: Claude PR Assistant
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
permissions:
contents: write
pull-requests: write
issues: write
jobs:
respond:
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'))
runs-on: ubuntu-latest
steps:
- name: Claude Response
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
trigger_phrase: "@claude"この構成では、trigger_phrase パラメータを使って反応するフレーズを明示的に指定しています。デフォルトでは @claude ですが、チーム内で他のボットとの競合を避けるために @ai-review のようにカスタマイズすることも可能です。
実際の対話例
PRのコメント欄での対話は、たとえば以下のような流れになります。
開発者がPRのコメント欄に投稿します。
@claude この関数にエラーハンドリングを追加してください。
APIからのレスポンスが404の場合にnullを返すようにしてください。Claude Codeはこの指示を受け取り、該当するコードを分析して修正を実施し、コミットをプッシュします。その後、何を変更したかをコメントで報告します。修正内容に問題があれば、さらにコメントで指示を追加できます。
このような対話的な修正フローは、特にコードレビューの指摘事項をそのまま修正に反映させたい場合に威力を発揮します。レビュアーが問題を指摘し、それをClaude Codeに修正させ、再度レビューするという流れは、チーム開発の効率を大きく向上させます。
カスタムトリガーフレーズの活用
trigger_phrase を工夫することで、用途別に異なるワークフローを起動するパターンも実現できます。
# レビュー専用ワークフロー
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
trigger_phrase: "@claude-review"
prompt: "コードレビューを実施してください。"
# リファクタリング専用ワークフロー
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
trigger_phrase: "@claude-refactor"
prompt: "指定された箇所をリファクタリングしてください。"トリガーフレーズを分けることで、Claude Codeに渡すプロンプトや claude_args をユースケースごとに最適化できます。たとえば、レビュー用のワークフローでは --max-turns を小さく抑え、リファクタリング用のワークフローでは大きめに設定するといった運用が可能です。
セキュリティ上の注意点
AIエージェントをCI/CDパイプラインに統合する際、セキュリティの考慮は最も重要な要素の一つです。特にClaude Code Actionにはリポジトリの読み書き権限を付与するため、適切な保護措置が欠かせません。
APIキーの管理
絶対にAPIキーをハードコードしないことが最も基本的かつ重要なルールです。ワークフローファイルに直接APIキーを記述してしまうと、リポジトリの閲覧権限を持つ全員にキーが露出します。必ずGitHub Secretsを使用してください。
# 正しい方法:GitHub Secretsを使用
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# 絶対にやってはいけない方法:直接記述
# with:
# anthropic_api_key: sk-ant-xxxxxxxxxxxxxGitHub Secretsに登録されたAPIキーは、ワークフローのログにも表示されません。また、フォークされたリポジトリからのPRでは、Secretsにアクセスできないようにデフォルトで保護されています。
代替プロバイダーの利用
Anthropicの直接APIキーに代えて、AWS BedrockやGoogle Vertex AIを経由してClaude Codeを利用することも可能です。これらのプラットフォームでは、OpenID Connect(OIDC)によるトークンベースの認証が利用でき、静的なAPIキーを管理する必要がなくなります。
エンタープライズ環境では、既存のクラウドインフラストラクチャと統合する観点から、BedrockまたはVertex AI経由での利用が推奨される場合があります。OIDCベースの認証は、短期間のトークンを使用するため、キーの漏洩リスクを大幅に低減できます。
権限の最小化
ワークフローに付与する権限は、必要最小限にとどめるべきです。たとえば、自動レビューのみを行うワークフローであれば、コードの書き込み権限は不要です。
# レビュー専用:読み取り権限のみ
permissions:
contents: read
pull-requests: write
# コード修正を含む:書き込み権限が必要
permissions:
contents: write
pull-requests: write
issues: writecontents: write はClaude Codeがコードを変更してコミットをプッシュする際に必要となりますが、レビューコメントの投稿のみであれば contents: read で十分です。
フォークからのPR対応
オープンソースプロジェクトでは、フォークからのPRに対してClaude Codeが動作する場合のセキュリティリスクを考慮する必要があります。悪意のあるフォークがワークフローの挙動を変更しようとする可能性があるため、pull_request_target トリガーの使用には特に注意してください。
--max-turns による実行制限
--max-turns オプションでエージェントのターン数を制限することは、コスト管理だけでなくセキュリティの観点からも重要です。無制限のターン数は、予期しない操作が長時間にわたって実行されるリスクを伴います。
--allowedTools によるツール制限
Claude Codeが使用できるツールを --allowedTools で制限することで、意図しないファイル操作やコマンド実行を防止できます。たとえば、レビュー用のワークフローでは読み取り系のツールのみを許可し、書き込み系のツールを無効化するといった設定が可能です。
セキュリティの詳細は今後公開予定の記事で解説します。
実際のワークフロー設定例
ここまでの内容を踏まえ、実際のプロジェクトで使える3つのワークフロー設定例を紹介します。
例1:基本の @claude 応答ワークフロー
PRとIssueの両方のコメントで @claude に反応する、最も汎用的なワークフローです。
name: Claude Assistant
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
permissions:
contents: write
pull-requests: write
issues: write
jobs:
claude-assistant:
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'))
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Run Claude Code
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: "--max-turns 10"
prompt: |
日本語で応答してください。
コードの変更を行う場合は、変更理由を明確に説明してください。timeout-minutes をジョブレベルで設定することで、何らかの理由でClaude Codeの処理が長引いた場合にもワークフローが無制限に実行され続けることを防いでいます。
例2:PR作成時の自動レビューワークフロー
PRが作成または更新されるたびに、自動的にコードレビューを実行するワークフローです。
name: Automated PR Review
on:
pull_request:
types: [opened, synchronize]
permissions:
contents: read
pull-requests: write
jobs:
auto-review:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Review PR
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: "--max-turns 5"
prompt: |
このPRの変更内容を包括的にレビューしてください。
## レビュー観点
- コードの正確性とロジックの妥当性
- セキュリティ上の懸念(SQL injection、XSS、認証漏れなど)
- パフォーマンスへの影響
- エラーハンドリングの適切さ
- テストの網羅性
## 出力フォーマット
以下の形式でレビュー結果を報告してください:
### サマリー
変更内容の概要と全体的な評価を1-2文で記載
### 指摘事項
重大度別に分類して記載:
- [Critical] 必ず修正が必要な問題
- [Warning] 修正を推奨する問題
- [Info] 改善提案や参考情報
### 良い点
コードの品質が高い点や、優れた設計判断があれば記載
日本語でレビューしてください。レビュー専用のため contents: read のみに権限を限定しています。読み取り権限があれば、Claude Codeはリポジトリのコードを分析してレビューコメントを投稿できます。
例3:日次レポート生成ワークフロー
毎朝定時にリポジトリの状態を分析し、レポートをIssueとして投稿するワークフローです。
name: Daily Repository Report
on:
schedule:
- cron: '0 0 * * 1-5' # 月〜金のUTC 0:00(JST 9:00)
permissions:
contents: read
issues: write
jobs:
daily-report:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate Report
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: "--max-turns 10"
prompt: |
リポジトリの現状を分析し、日次レポートを作成してください。
## 分析項目
1. 直近24時間のコミット概要
2. オープンなPRの状況(レビュー待ち、コンフリクトの有無)
3. 未対応のIssue数と優先度の高いもの
4. 技術的負債の指摘(TODOコメント、非推奨APIの使用など)
## 出力
分析結果をGitHub Issueとして作成してください。
タイトルは「Daily Report: [日付]」の形式にしてください。fetch-depth: 0 を指定してリポジトリの全履歴を取得することで、コミット履歴の分析を正確に行えるようにしています。schedule トリガーはUTCベースであるため、日本時間に合わせる場合はオフセットを考慮してcron式を設定してください。
コストに関する考慮事項
Claude Code × GitHub Actionsの運用では、2つのコスト要素が発生します。
GitHub Actionsの実行時間コスト
GitHub Actionsの無料枠(パブリックリポジトリは無制限、プライベートリポジトリは月2,000分)を超過すると、実行時間に応じた課金が発生します。Claude Codeのワークフローは一般的なCI/CDパイプラインよりも実行時間が長くなる傾向があるため、timeout-minutes と --max-turns の設定で適切に制限することが重要です。
Anthropic APIのトークンコスト
Claude Codeが処理する入出力トークン量に応じたAPI利用料が発生します。大規模なPRのレビューや、複雑なIssueの自動修正では、トークン消費量が多くなります。--max-turns による制限は、コスト抑制の観点からも有効です。
運用を開始する際は、まず少数のリポジトリで試験的に導入し、コストの実績値を確認してから対象を広げていくアプローチを推奨します。
まとめ
Claude Code × GitHub Actionsの組み合わせは、コードレビューの自動化、PRコメントでの対話的なコード修正、Issueからの自動PR作成、定期レポートの生成など、開発ワークフロー全体にAIエージェントを統合する手段を提供します。
公式アクション anthropics/claude-code-action@v1 はGA版としてリリースされており、/install-github-app コマンドによるクイックセットアップに対応しています。ワークフローファイルの設定、CLAUDE.md によるレビュー基準の統一、prompt パラメータによる指示の最適化を通じて、チームの開発効率を大きく向上させることが可能です。
一方で、APIキーの管理やワークフロー権限の最小化、実行コストの制御といったセキュリティ・運用面の考慮も不可欠です。まずは小規模なリポジトリで基本的な @claude 応答ワークフローから始め、段階的に自動レビューやIssue対応の自動化へと拡張していくことをおすすめします。
Claude Codeの基本的な使い方については、Claude Code使い方ガイドもあわせて参照してください。AIエージェントの導入支援やCI/CDパイプラインの最適化についてのご相談は、お問い合わせページよりお気軽にご連絡ください。