Claude Code GitHub Actionsを使いこなせ!
tl:dr
- Claude Code ActionはGitHubでPull RequestやIssue向けに、Claude Codeに質問への回答やコード変更の実装を行わせるアクション
- MAX Subscriptionは使えず、AnthropicダイレクトAPI(従量課金)に対応
- セットアップ手順が記載されているので参考にして使いこなそう(私含めて)
はじめに
日本時間2025年5月23日に開催されたAnthropic社のCode w/ Claude。その中で、Mastering Claude Code in 30 minutesというセッションがありました。
に上記セッションの内容を解説しています。
Claude Code SDKの活用例としてClaude Code GitHub Actionsがあげられています。
この記事では、Claude Code GitHub Actionsにフォーカスを当てて見ていこうと思います。
ご覧いただくことで、みなさんのGitHub RepositoryでClaude Code GitHub Actionsが使えるようになります。
なお、GitHubにclaude-code-action ( Claude Code Action ) としてソースコードが公開されています。
Claude Code Actionってなに?
GitHubのPull RequestやIssue向けの汎用Claude Codeアクションです。質問への回答やコード変更の実装が可能です。このアクションは、コメント内のトリガーフレーズを検知すると起動し、そのリクエストに応じてClaudeが動作します。AnthropicダイレクトAPI(従量課金)の認証方式に対応しています。Amazon Bedrock、Google Vertex AIにも対応しています。ただし、MAXプランのSubscriptionには対応していません。
図解すると下記になります。Claude Codeとの違いがわかるように図解しています。紫色で囲われている部分が、Claude Code Actionに関連するコンポーネントになります。
Claude Code Actionの全体像
特徴
-
@claude
メンションでPRやIssueから直接呼び出し - 自動PR作成 - Issueから実装を生成
- コードレビュー - PRの自動レビュー
- バグ修正 - 問題を検出して修正PRを作成
実際、下記のようにIssueに対して@claude
メンションを使ってClaudeに解決方法を考えてコメントしてもらうことができます。
セットアップ方法
GitHubのClaude Code Action によると、端末のターミナルで動くClaude Codeの/install-github-app
を実行することでセットアップできるとあります。しかしながら、私の端末ではうまくセットアップができませんでした。ここではGitHub上で手動セットアップする手順を記載します。
前提事項
- リポジトリ管理者(Admin)権限があること
- Anthropic の API キー(Claude 用)を取得済み
Claude GitHub App をインストール
- ブラウザでhttps://github.com/apps/claudeにアクセスする
- Install → Only select repositories を選び、対象リポジトリにチェック
- 完了後、リポジトリの Settings → Integrationsセクション → GitHub Apps → Claude が Installed になっていることを確認
下記のように表示されます。
リポジトリにシークレットを追加
- リポジトリの Settings → Securityセクション → Secrets and variables → Actions
- 「New repository secret」ボタンを押下する
- Nameに
ANTHROPIC_API_KEY
、SecretにAnthropicのAPIキーを貼り付ける - 「Add Secret」ボタンを押下する
下記のように追加します。
リポジトリ設定でワークフロー権限変更
- リポジトリのSettings → Code and automationセクション → Actions → General → Workflow permissions
-
Read and write permissions
を選択 -
Allow GitHub Actions to create and approve pull requests
をOnにするとPull Requestができるようになりますが、いったんOFFでもOK - 「Save」ボタンを押下
下記のような設定画面です。
ワークフロー ファイルを配置
- リポジトリをgit cloneした配下に
.github/workflows/claude.yml
を追加する - 下記記載して、リポジトリにMergeする
name: Claude Assistant
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude-response:
runs-on: ubuntu-latest
permissions:
contents: write
issues: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "1.2.11"
- name: Run Claude Code Action
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
github_token: ${{ secrets.GITHUB_TOKEN }}
trigger_phrase: "@claude"
claude.yml詳細解説
claude.ymlを探求する
ワークフロー基本設定
name: Claude Assistant
ワークフローの名前を定義しています。この名前はGitHubのActionsタブで表示され、ワークフローを識別するために使用されます。
トリガーイベント(on:
)
issue_comment:
Issueやプルリクエストにコメントが投稿されたときに発動します。
-
types: [created]
: 新しいコメントが作成されたときのみ反応(編集や削除では発動しない)
pull_request_review_comment:
プルリクエストの差分に対するレビューコメントが投稿されたときに発動します。
-
types: [created]
: 新しいレビューコメントが作成されたときのみ
issues:
Issueに対する操作で発動します。
-
types: [opened, assigned]
:-
opened
: 新しいIssueが作成されたとき -
assigned
: Issueが誰かにアサインされたとき
-
pull_request_review:
プルリクエストのレビューが送信されたときに発動します。
-
types: [submitted]
: レビューが完了し、送信されたとき
ジョブ定義(jobs:
)
claude-response:
ジョブの名前です。複数のジョブがある場合は、それぞれを識別するために使用されます。
runs-on: ubuntu-latest
このジョブを実行する環境(ランナー)を指定しています。ubuntu-latest
は最新版のUbuntu環境を使用します。
permissions:
このジョブに必要な権限を明示的に定義しています:
-
contents: write
: リポジトリのコンテンツ(ファイル)への書き込み権限 -
issues: write
: Issueへの書き込み権限(コメントの投稿など) -
pull-requests: write
: プルリクエストへの書き込み権限
ステップ定義(steps:
)
1. Checkout repository
- name: Checkout repository
uses: actions/checkout@v4
リポジトリのコードをランナーにクローンします。Claudeがコードを読み取り、変更を加えるために必要です。
2. Set up Bun
- name: Set up Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "1.2.11"
Bunランタイムをインストールします。Claude Code Actionの内部処理で使用される可能性があります。
3. Run Claude Code Action
- name: Run Claude Code Action
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
github_token: ${{ secrets.GITHUB_TOKEN }}
trigger_phrase: "@claude"
メインのClaude Code Actionを実行します:
-
anthropic_api_key
: Anthropic APIキー(リポジトリのシークレットに保存) -
github_token
: GitHubの認証トークン(自動的に提供される) -
trigger_phrase
: Claudeを呼び出すトリガーフレーズ(デフォルトは@claude
)
実際の動作フロー
- IssueやPRに「@claude」を含むコメントを投稿
- GitHub Actionsがこのワークフローを起動
- Ubuntuランナー上でリポジトリをチェックアウト
- Claude Code Actionが起動し、コメントの内容を解析
- Claudeが適切な応答(コード変更、質問への回答など)を実行
GitHub Actionsを探求する
1. actions/checkout@v4
概要
GitHubが公式に提供するアクションで、リポジトリのコードをランナー環境の$GITHUB_WORKSPACE
にクローンする機能を提供します。
主な特徴
- 時間節約: 複数のワークフローで同じステップを書き直す必要がなくなります
- マルチリポジトリ対応: 複数のリポジトリをクローン可能
- 組み込み認証: プライベートリポジトリへのアクセスも簡単
最新の機能(v4)
- 特定のブランチ、タグ、コミットの指定が可能(
ref
パラメータ) - スパースチェックアウト機能で特定のファイル/ディレクトリのみを取得可能
- プライベートリポジトリのクローンサポート
- Node.js 20をベースに動作(以前のバージョンより高速)
使用例
# 別のブランチをチェックアウト
- uses: actions/checkout@v4
with:
ref: feature-branch-name
# 複数リポジトリの使用
- uses: actions/checkout@v4
with:
repository: my-org/my-other-repo
path: secondary-repo
2. oven-sh/setup-bun@v2
概要
Bunランタイムを GitHub Actionsにインストール・セットアップするためのアクションです。
Bunとは
JavaScriptとTypeScriptアプリのためのオールインワンツールキットで、Node.jsのドロップイン代替として設計された高速JavaScriptランタイムです。
主な特徴
- バージョン指定が可能(
latest
、特定バージョン、canary
など) - バージョンファイル(
.bun-version
)からの読み込みサポート - プライベートレジストリのサポート(
registry-url
とscope
オプション) - キャッシュ機能でインストール時間を短縮
v2での改善点
-
bun-download-url
入力のサポート(ダウンロードURLのカスタマイズ) - より安定したバージョン管理
- 最新のBunバージョンとの互換性向上
使用例
# 最新版をインストール
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
# 特定バージョンをインストール
- uses: oven-sh/setup-bun@v2
with:
bun-version: "1.2.14"
3. anthropics/claude-code-action@beta
概要
GitHubのPRやIssueでClaudeを活用できるアクションで、質問への回答やコード変更の実装を行います。
主な機能
- インタラクティブなコードアシスタント: コードについての質問や改善提案
- コードレビュー: PR変更の分析と改善提案
- コード実装: 簡単な修正から新機能の実装まで対応
- 進捗追跡: チェックボックスによる視覚的な進捗表示
- ブランチ管理: 人間のPRには新しいPRを作成、ClaudeのPRには直接プッシュ
最新の特徴(beta版)
- Claude Opus 4とClaude Sonnet 4をサポート
- Amazon BedrockとGoogle Vertex AIによる認証をサポート
- カスタムツールの許可/禁止設定
- 自動化ワークフローのための
direct_prompt
オプション
セキュリティ
- リポジトリへの書き込み権限を持つユーザーのみが使用可能
- GitHubアプリは短期間のトークンのみを受け取る
- APIキーは必ずGitHub Secretsに保存
使用例
# カスタムツールを許可
- uses: anthropics/claude-code-action@beta
with:
allowed_tools: "Bash(npm install),Bash(npm test)"
disallowed_tools: "TaskOutput,KillTask"
重要な注意点
別の見方をすると、これらのアクションの組み合わせにより:
- 環境の準備(checkout)
- 必要なツールのインストール(setup-bun)
- AIによる自動化(claude-code-action)
という完全な開発支援ワークフローが構築できるようになっています。なお、Action「anthropics/claude-code-action@beta」をYAMLに定義は制約なくできますが、GitHub Apps「Anthropic Claude」のインストールをしないとClaude Codeがリポジトリへのプルリクエスト、Issues、コンテンツへの読み書き権限が付与されず利用できません。
GitHub ActionsとGitHub Appsの違い
- GitHub Apps = 「権限を与えるための門番」
- GitHub Actions = 「実際に作業を行うツール」
GitHub Actionsは、公開されているものであれば誰でもuses:
で指定して使えるのが大きな特徴です。ただし、Claude Code Actionのように、動作するために別途GitHub Appのインストールが必要なケースもある。
使ってみる
下記のようにIssueに@claude
とコメントして投稿します。
すると数分後に下記のようにClaude Codeから返信ありました!これで成功です!
おわりに
いかがでしたか。Claude Code Actionを使っていきたい方の参考に少しでもなれると幸いです!
公式ドキュメントは下記となります。この記事でキャッチアップできている状態で読むと理解度が違うと思いますので、ぜひ目を通してみてください!
公式Claude Code Actionドキュメント(英語)
公式Claude Code Actionドキュメント(日本語)
Discussion
わかりやすい記事をありがとうございます。
一点typoを見つけたのでコメントさせていただきます。
セットアップ方法 > リポジトリ設定でワークフロー権限変更 の
が「Save」ボタンを押下かな、と思います。
kita_submarineさん、コメントありがとうございます!typo直しました!