その他

【Claude】GitHubのissueを読みとって自動で実行!

その他
この記事は約5分で読めます。

はじめに

みなさんこんにちは。株式会社インプルの岩崎です。

本日はGitHubのissueに連動して自動で実行するClaudeの仕組みについて紹介です!

Claudeとは

Claudeとは、アメリカのAnthropic(アンソロピック)社が提供しているLLMの一つです。
今回は、そのclaudeを使用してコーディングができるclaude codeをclaude API経由で呼び出し、GitHubのissueを実行させてみる、という内容です。

claude codeやclaude APIについては過去にも紹介していますので、ぜひご覧ください。

準備

実行していく前に、まずは準備を進めていきましょう。

GitHubのリポジトリーを準備

今回はテスト用に簡単な実行環境を作成してみました。

この中には、自動で実行するように .github/workflows に格納した claude.yml と、src/ 配下にTypeScriptで作られた簡単なファイル、CLAUDE.mdREADME.md が含まれています。

claude.yml では、claudeが自動で実行できるよう、下記のような設定を組み込んでいます。
オープンしているissueのラベルが claude の時に、Claude APIを使ってClaude codeを呼び出し、issueのタスクを実行してPR手前まで実行しよう、という内容になっています。今回のコードでは、PRの自動化までは実施していませんが、その辺りも調整すれば対応可能かと思います。

name: Claude Code Agent

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

jobs:
  claude:
    if: |
      (github.event_name == 'issues' && contains(github.event.issue.labels.*.name, 'claude')) ||
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude'))
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      issues: write
      id-token: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Run Claude Code
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Claude APIを設定

続いて、Claude codeを呼び出せるように、ClaudeAPIをセットします。
リポジトリーの Settings > Secrets and variables > Actions から設定してしまいましょう!

Repository secrets 右側の緑のボタン New repository secret をクリックすると、下記の入力項目が出てきますので、それぞれ下記の通り入力し、Add secret で登録してください。

Name : ANTHROPIC_API_KEY
Secret:sk- から始まる Claude APIキー

claudeとGitHubの連携許可

ClaudeをGitHubで連携させる際には、あらかじめ許可を出しておく必要があります。
下記リンクから対処のリポジトリーにインストールし、問題なく連携できるようにしておいてください。

Build software better, together
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.

Labelの作成

続いて、Claude codeが動き出すトリガーとなる Claude というラベル作成します。
issueから右上の Labels をクリックすると、下記のような画面が表示されますので、右上の New label で新規ラベルを作成しましょう。

すると、下記のような画面が表示されますので、各項目に下記の情報をそれぞれ入力してください。

Name:claude (←cは小文字にしてください!)
Description:ここは記入してもしなくても大丈夫です。私はわかりやすいように このラベルを付与するとClaudeが自動で動作します。 と記載しました。
Color:お任せです!

実行してみよう

それでは準備が完了したら、早速実行してみましょう。

タイトルとissueの説明、Labelsに claude ラベルを貼り付けます。
これでCreateをクリックすると、ActionsでClaudeが動き出したことが確認できます。

さて、issueに戻ってみると、Claudeのアイコンとともに、Claude codeが仕事を始めているのが確認できると思います。これであとは放っておくだけです。今回のタスクは簡単な内容ですので、3分ほどすると、完成したよと通知が来ました。

右上にCreate PRがあるので、それをクリックしてみましょう。すると、PR作成の画面に映ります。ここで実行結果を確認しPR作成、そこからはいつも通りの流れで、実行結果を確認することでmergeできます。

おわりに

いかがだったでしょうか?

今回は簡単なプログラムでしたので、スムーズに実行することができました。これから規模を大きくした時にどうなっていくか、実際の開発には活用できるのか、、、それは気になるところですね。

ご覧いただき、ありがとうございました。