【検証】 Claude Code GitHub Actionsは、どのブランチの CLAUDE.mdを参照するのか?
こんちは。リテールアプリ共創部 エンハンスチームの塚本です。
Claude Code GitHub Actions を使い始めました。
元々ローカルで Claude Code を使っておりましたが、この精度であれば GitHub 上で動かしても実用可能なクオリティだと感じ、導入に至りました。
悩ましいのが、Claudeのルール 『CLAUDE.md
をどのように更新していくか』 という点です。
Claudeがメインブランチのルールしか参照しないとなると、毎回メインブランチのルールを変更してからClaudeの動作を確認する必要が出てきます。これにより、試行錯誤が難しくなります。
PRコメントで指示を出したら、そのPRブランチの CLAUDE.md
を見てくれると助かりそうです。
これであれば、ルール変更して動作を検証する試行錯誤が捗りそうですよね。
そこで今回は、Claude Code Action がどのブランチのルールを確認しているのか、動作を検証します。
Claude Code GitHub Actions とは
Claude Codeを GitHub Actions 経由で動かせるものです。
IssueやPRのコメントで @claude
とメンションして指示を出すことで、コードレビューや実装を依頼できます。
検証
検証手順
- mainブランチに
CLAUDE.md
を作成 - PRを作成し、PRのブランチで
CLAUDE.md
を修正 - PRのコメントで どちらのルールに従うかを確認する
事前準備
ローカルで Claude Code を開き、 /install-github-app
を実行します。以下の手順をガイドしてくれるので、従いながら設定をします。
- 対象リポジトリに ClaudeのGitHubアプリをインストール
- API Keyを取得
- API Keyをシークレットに保存
- GitHub Actions workflow のPR作成
mainブランチの CLAUDE.md を検証
以下の内容のみ記載した CLAUDE.md
を作成します。
このルールを読んだら、「メインブランチのCLAUDE.mdを読んだよ!!」という文章を、必ず返信コメントに含めてください。
Issueコメントで、 @claude
をつけたコメントをします。
実際にルールを読んでくれているのが分かりました。
PRを作成し、PRコメントの返信を確認
続いて、 CLAUDE.md
を変更するPRを作成します。以下のように修正します。
このルールを読んだら、「claude-comment-2のCLAUDE.mdを読んだよ!!」という文章を、必ず返信コメントに含めてください。
このPRコメントで、 @claude
をつけたコメントをします。
Claudeのログを見てみると、以下の記載がありました。対象ブランチのルールを正しく読み込んでいることが確認できます。
Looking at the CLAUDE.md file content,
it says: "このルールを読んだら、「claude-comment-2のCLAUDE.mdを読んだよ!!」という文章を、必ず返信コメントに含めてください。"
検証結果
⭐ PRコメントでは、そのブランチの CLAUDE.md
を読んでくれる!
なぜこの挙動なのか?
検証結果は出ましたが、なぜこのような挙動になるのでしょうか?
GitHub Actions の挙動に関係しているので、詳しく見ていきましょう。
actions/checkout について
Claudeが自動生成する GitHub Actions のワークフローファイルは以下のようになっています。
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
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: read
pull-requests: read
issues: read
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
この中で、 actions/checkout@v4
は対象リポジトリをチェックアウトするアクションですが、このチェックアウト対象のブランチはトリガーごとに変わってきます。
Only a single commit is fetched by default, for the ref/SHA that triggered the workflow. Set
fetch-depth: 0
to fetch all history for all branches and tags. Refer here to learn which commit$GITHUB_SHA
points to for different events.
デフォルトでは、ワークフローをトリガーしたref/SHAのコミットが1つだけ取得されます。
ref/SHAのコミットをチェックアウトしているので、対象ブランチの CLAUDE.md
が読み込まれます。
ref/SHAについて
トリガーごとに、この値は変わってきます。
例えば、 pull_request_review_comment
のトリガーでは、 refs/pull/PULL_REQUEST_NUMBER/merge
が対象になります。
このように、GitHub Actions上で特定のコミットをチェックアウトするため、対象の CLAUDE.md
が読み込まれるということです。
まとめ
- Claude Code GitHub ActionsのPRコメントでは、そのPRブランチの
CLAUDE.md
が参照される - GitHub Actionsの
actions/checkout
がトリガーされたref/SHAのコミットを取得するため、ブランチ固有のルールファイルが読み込まれる - これにより、メインブランチを変更することなく、PRブランチで
CLAUDE.md
の試行錯誤が可能になる
ありがとうございました!