こんにちは、VPoTの岩本 (iwamot) です。
同僚の片田さんによる「Claude Code GitHub Actionsを用いてエラーの初期分析効率化を目指す」では、Sentryに通知されたエラーを生成AIで初期分析する取り組みが紹介されていました。
ENECHANGEではSmartBear Software社のBugSnagをエラー監視に使っているプロダクトも多いので、同様に初期分析の仕組みを作ってみました。
本記事では、BugSnagエラー初期分析フローの全体像と、横展開する際に工夫したポイントをご紹介します。
BugSnagエラー初期分析フローの全体像
まず、全体像からです。

- BugSnagがエラーを検知、GitHub Issueを自動作成(
bugsnagラベル付与) - Issueの作成をトリガーに、GitHub Actionsワークフローが起動
- GitHub ActionsワークフローがClaude Code Actionを起動
- Claude Code ActionがSmartBear MCPサーバー経由でエラー詳細を取得
- Claude Code Actionがリポジトリのソースコードを読み込み、原因箇所を調査
- エラー詳細とソースコードの分析結果を報告書にまとめ、元のIssueにコメント投稿
BugSnagとGitHubで完結している、すっきりしたフローになっています。
横展開する際に工夫したポイント
この仕組みを作るうえで工夫したポイントは以下のとおりです。
1. サービス間のインテグレーション活用
今回のフローではシンプルさを重視し、サービス間のインテグレーションを活用しました。具体的には「BugSnag ↔️ GitHub Issues ↔️ Slack」です。
BugSnagは多くのイシュー管理システムと統合可能で、GitHub Issuesもそのひとつです。
「BugSnag ↔️ GitHub Issues」間のインテグレーションを設定すると、BugSnagのエラー検知をトリガーとして、GitHub Issueを自動作成できます。
ENECHANGEではソースコード管理にGitHubを利用しているため、この方法が最もシンプルだと判断しました。

また、GitHub Issueの作成や分析コメントの追加をSlackに通知したいニーズについては、「GitHub Issues ↔️ Slack」間のインテグレーションに任せることにしました。/github subscribe で設定する、よくあるパターンです。
2. Amazon Bedrockの採用
今回のフローでは、Claude APIではなくAmazon Bedrock経由でClaudeを使うことにしました。
ENECHANGEでは現状、ClaudeのMaxプランを個人で契約し、経費精算しています。自動化の仕組みは継続的に動くものなので、個人契約への依存は避け、組織で管理しているAWSを選択しました。
Claude Code GitHub ActionはAmazon Bedrockが利用可能なので、とくに詰まるところなく実装できました。
3. ソースコードの参照
今回のフローでは、チェックアウトしたリポジトリのコードをClaude Codeに参照させることにしました。それにより、精度の高い分析が期待できると判断してのことです。
具体的には allowed_tools で Read,Glob,Grep を指定しています。
下図は実際の分析コメントの一部です。エラーの原因を分かりやすく示してくれています。

4. プロンプトの調整
実際に動かしてみると、意図したMCPツールを使ってくれないケースがあったため、プロンプトに下記の注意事項を追加しました。
## 注意事項 - SmartBear MCPツール(`mcp__smartbear__bugsnag_*`)は直接利用可能です。Bashでの確認は不要です。
これにより、無駄にMCPツールを探すターンが抑えられました。ちょっとしたことで挙動が安定するのが、LLMの面白いところです。
まとめ
以上、Claude Code GitHub Actionsによるエラー初期分析フローと、横展開した際の工夫点をご紹介しました。
同僚の取り組みをベースに、シンプルに実装できてよかったなと思っています。まだ導入したばかりなので、運用しながら改善を続けていく予定です。
おまけ
以下、現状のワークフローを載せておきます。
name: BugSnag Alert Initial Analyze on: issues: types: [opened] jobs: analyze: if: contains(github.event.issue.labels.*.name, 'bugsnag') runs-on: ubuntu-latest timeout-minutes: 10 permissions: contents: read issues: write id-token: write steps: - name: Checkout repository uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: fetch-depth: 1 persist-credentials: false - name: Generate GitHub App token id: app-token uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 with: app-id: ${{ secrets.CLAUDE_APP_ID }} private-key: ${{ secrets.CLAUDE_APP_PRIVATE_KEY }} permission-contents: read permission-issues: write - name: Configure AWS Credentials (OIDC) uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 with: role-to-assume: ${{ secrets.CLAUDE_APP_AWS_ROLE }} aws-region: us-west-2 - name: Extract BugSnag project API key id: bugsnag run: | PROJECT=$(echo "$ISSUE_BODY" | grep -oP 'app\.bugsnag\.com/[^/]+/\K[^/]+' | head -1) KEY=$(echo "$KEYS_JSON" | jq -r --arg p "$PROJECT" '.[$p] // empty') if [ -n "$KEY" ]; then echo "::add-mask::$KEY" fi echo "api_key=$KEY" >> "$GITHUB_OUTPUT" env: ISSUE_BODY: ${{ github.event.issue.body }} KEYS_JSON: ${{ secrets.BUGSNAG_PROJECT_API_KEYS }} - name: Run Claude Code with SmartBear MCP id: claude uses: anthropics/claude-code-action@ff34ce0ff04a470bd3fa56c1ef391c8f1c19f8e9 # v1.0.38 with: github_token: ${{ steps.app-token.outputs.token }} use_bedrock: "true" prompt: | # BugSnag エラー初動分析 以下のGitHub issueに記載されたBugSnagエラーを分析してください。 ## Issue情報 - タイトル: ${{ github.event.issue.title }} - 本文: ${{ github.event.issue.body }} ## 注意事項 - SmartBear MCPツール(`mcp__smartbear__bugsnag_*`)は直接利用可能です。Bashでの確認は不要です。 ## やること 1. issue本文に含まれるBugSnagのダッシュボードURLを元に、SmartBear MCPサーバーの `Get Event Details From Dashboard URL` でエラーの詳細を取得してください。 - 追加情報が必要な場合は `Get Error` や `Get Event Details` も使ってください。 2. スタックトレースに含まれるファイルパスと行番号を元に、リポジトリのソースコードを確認してください。 - エラーが発生した箇所の前後のコードを読み、原因の特定に役立ててください。 3. 取得したエラー情報とソースコードの分析結果を合わせて、以下のテンプレートに沿って報告書を作成してください。 4. 時間はJST(日本標準時)に変換して出力してください。 ## 報告書テンプレート ``` ## 初動分析レポート ### 事象 (何をすると)(どうなる) ### 原因 (何が)(何へ)影響しているから (調査中) ### 影響範囲 (発生時間帯) (対象件数) (調査中) #### どのバージョンから発生している不具合なのか #### 現行最新バージョンでも発生する不具合なのか ### 再現手順 ### 暫定対策(思いつけば) ### 恒久対策(思いつけば) ### エラー該当箇所 ### リポジトリの該当箇所 ``` 報告書が完成したら、以下のコマンドでissueにコメントとして投稿してください。 `gh issue comment ${{ github.event.issue.number }} --repo ${{ github.repository }} --body "<報告書の内容>"` claude_args: | --model global.anthropic.claude-sonnet-4-5-20250929-v1:0 --mcp-config '{"mcpServers": {"smartbear": {"command": "npx", "args": ["-y", "@smartbear/mcp@latest"], "env": {"BUGSNAG_AUTH_TOKEN": "${{ secrets.BUGSNAG_AUTH_TOKEN }}", "BUGSNAG_PROJECT_API_KEY": "${{ steps.bugsnag.outputs.api_key }}"}}}}' --allowedTools "Read,Glob,Grep,mcp__smartbear__bugsnag_get_event_details_from_dashboard_url,mcp__smartbear__bugsnag_get_error,mcp__smartbear__bugsnag_get_event_details,mcp__smartbear__bugsnag_list_projects,mcp__smartbear__bugsnag_list_project_errors,mcp__smartbear__bugsnag_list_releases,mcp__smartbear__bugsnag_get_release,Bash(gh issue:*)"