🛠️

Claude Code GitHub ActionsにIssue及びレビュー修正を自動でやってもらう

に公開

準備

claude.yml
name: Claude Code

permissions:
  contents: write
  pull-requests: write
  issues: write
  id-token: write
  actions: read

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, labeled]

jobs:
  claude-pr:
    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 == 'issues' && (
        contains(github.event.issue.body, '@claude') ||
        contains(join(github.event.issue.labels.*.name, ','), 'claude')
      ))
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      # 利用環境に応じてトークン等適当に設定する
      # https://github.com/anthropics/claude-code-action
      # https://docs.anthropic.com/ja/docs/claude-code/github-actions

      - name: Run Claude PR Action
        uses: anthropics/claude-code-action@beta
        with:
          trigger_phrase: "@claude"
          assignee_trigger: "claude"
          label_trigger: "claude"
          timeout_minutes: "60"
          github_token: ...
          model: "claude-sonnet-4@20250514"
          allowed_tools: "Bash(git:*),mcp__github__create_pending_pull_request_review,mcp__github__add_pull_request_review_comment_to_pending_review,mcp__github__submit_pending_pull_request_review,mcp__github__get_pull_request_diff"
          additional_permissions: |
            actions: read

できること

1. claude とラベルを付けたら自動でIssueに取り組んで、PRを作ってもらう


画像中の Create PR リンクを押すと、自動生成されたPRタイトル・説明付きでPRを作ることができます。急にPRを作ったりすることがなく、PR一覧を汚さないので比較的謙虚な挙動です。

さらにSlackからIssueを作る仕組みを用意すれば、SlackからClaude Codeに依頼するワークフローも作れそうです。

2. 任意のPRで、 @claude とメンションしたら自動で修正をpushさせる


任意のPRから発火できるのがポイントで、例えば自分のPRに指摘があったとき、簡単な修正は @claude で解決するようになりました。
PRを作ったあとは大抵別の作業をしているので、指摘によって作業を切り替える手間が無くなって助かっています。

似たようなツールが沢山ある中でClaude Code GitHub Actionsを使う理由は?

GitHub Copilot Coding AgentやDevin等でもだいたい似たようなことはできます。
その中でClaude Code GitHub Actionsを使う理由は以下の2点だと思っています。

  • 挙動を柔軟にカスタマイズできる
  • Claude Codeの性能が出る

例えば、GitHub Copilot Coding Agentは複雑なセットアップも必要なく、IssueのAsigneeにCopilitを設定することでIssueに取り組んでもらうことができます。一方、この手軽さゆえにカスタマイズには向かず、「特定のラベル・ワードが付いたら発火したい」「出力結果やタスクの取り組み方を調整したい」といった場合にはClaude Codeに軍配が上がります。やっていることはClaude CodeをCLIで実行するGitHub Actionsでしか無いので、こちらはGitHub Actionsの範疇であればなんとでもなる感じがあります。

(Copilotでも一応カスタム命令は書けます)
https://docs.github.com/ja/copilot/how-tos/custom-instructions/adding-repository-custom-instructions-for-github-copilot#copilot-に対するリポジトリのカスタム指示について

また、性能面でもGitHub Copilot Coding Agentは恐らくOpenAIのモデルを使っていて、エージェントとしての挙動はブラックボックスです。Claude Code GitHub Actionsの場合、モデルが(コーディングエージェントとしての性能が高いとされる)Claude Sonnet 4/Claude Opus 4から選択でき、さらにエージェント自身の挙動も普段使うClaude Codeとほぼ同等です。

Issueを任せる際には「このIssueはAIに実行できるタスクか?」と正しく判断することが重要になるので、「Claude Codeならまあ、いけるだろう」と、普段手元で使うClaude Codeの性能から推測できるのは非常に心強いです。

NOT A HOTEL

Discussion