Claude Skills × GitHub Actions でバグ修正の自動化を試す!

に公開

はじめに

2025年10月、Anthropicから立て続けに2つの発表がありました。

  • 10月16日: Agent Skills - AIが自律的に使える「スキル」の仕組み
  • 10月20日: Claude Code on the web - ブラウザでコーディングエージェントを動かせる WebUI

正直なところ、最初は「また新しい機能か」程度の印象でした。しかし、公式ドキュメントやコミュニティの反応を調べていくうちに、これが単なる機能追加ではないことに気づきました。

特に興味を引かれたのは、 「Claude Skills がユーザーからの要求とスキルの説明に基づいて自律的に使用を決定するモデル起動型の機能」 である点です 。
例えば、日々の退屈な業務を 「手順や専門知識をパッケージ化した再利用可能な能力(Skills)」 へと変換し、開発者がプロンプトを繰り返し書く手間を省きながら、自律的なバグ修正やコードの自動リファクタリング を可能にするゲームチェンジャーであると感じました。

本記事では、Agent SkillsとClaude Codeについて調査し、実際にバグ自動修正パイプラインを試してみた過程をまとめます。

実際のリポジトリとPR

本記事で構築したパイプラインの実例は以下のリポジトリで確認できます:

https://github.com/kis9a/claude-skills-example

調査結果:何ができるのか?

公式ドキュメントなどを調査した結果、Agent SkillsとClaude Code を組み合わせると、例えば、次のような自動化フローが実現できることが分かりました。

バグ自動修正の流れ

例えば、GitHubのIssueに特定のラベル(例:bug)が付与されると、それをトリガーとしてAIが自律的に次の処理を実行します:

  1. Issue内容の分析:再現手順と影響範囲を特定
  2. コード修正:必要最小限の変更を実施
  3. テスト実行:修正が正しく動作することを確認
  4. PR作成:チームの規約に準拠した形式で

「本当にそんなことができるのか?」と半信半疑でしたが、実際に構築してみることにしました。

Agent Skills の仕組み

この自動化パイプラインの中心部となるのが「Agent Skills」です。
公式ドキュメント によれば、Skillとは次のような構造を持つディレクトリです:

.claude/skills/issue-fix/
└── SKILL.md          # スキルの説明と手順(必須)

モデル自動起動(model-invoked)について

  • AIが自ら判断する新しいパラダイム

Skillsの最も重要な特徴は、ユーザーが明示的に呼び出すスラッシュコマンドとは異なり、「自動起動(model-invoked)」である点です。Claudeは、タスクの内容と各Skillのdescription(説明文)を照らし合わせ、どのSkillを使うべきかを自律的に判断します。

What are Agent Skills ?

これらの 「エージェント性」 こそが、高度な自動化を実現する鍵なのです。

実践

SKILL.md

SKILL.md には、Claudeがスキルを自動で発見するための具体的な説明を含めます。必須は namedescription のみで、allowed-tools は任意(チーム内でスキーマを合わせると運用が安定します)。

SKILL.md
---
name: ${スキル名}
description: >-
  ${そのスキルが何をするのかとClaudeがいつそのスキルを使うべきなのかの両方を含める}
allowed-tools: ${使用を許可するツール群}
---

今回のバグ自動修正パイプラインでは、簡単なデモ用として、issue-fix スキルのみを作成します。

issue-fix スキル: Issue分析→テスト追加→最小修正→PR作成まで自動化するスキル

例: .claude/skills/issue-fix/SKILL.md
.claude/skills/issue-fix/SKILL.md
---
name: issue-fix
description: >-
  ユーザーがIssueを解決を要求した時に発動
  GitHub Issueを分析し、テストでバグを再現し、最小限の修正を実装し、PRを作成する。
  Issue分析→テスト追加→修正実装→PR作成までの完全なワークフローを自動実行する。
allowed-tools: Read, Write, Grep, Glob, Bash, Git
---

### 手順
1. Issue分析: 内容/再現手順を抽出し、影響ファイルを特定(Grep/Glob)
2. テストファースト: 再現テストを先に追加/更新し、`go test` で失敗を確認
3. 修正実装: 必要最小限の修正でテストをグリーンに
4. ドキュメント更新: `CHANGELOG.md` を更新
5. PR作成: ブランチ→コミット→PRを作成(本文はテンプレ準拠で他のスキルが生成可能)

GitHub Actionsでパイプラインを構築

調査を元に、実際にバグ自動修正パイプラインを構築してみました。このシステムは、明確な役割分担によって成り立っています。

  • 司令塔 (Claude Code)

    • AIエージェントとして、定義されたSkillsを活用して実際にコードを修正
  • 実行部隊 (GitHub Actions)

    • GitHub上のイベントをトリガーに、CI/CD環境でClaude Codeを自動実行

調査していくと、これらの連携はAnthropicが公式に提供するanthropics/claude-code-actionというアクションを使うことで、非常にシンプルに実現できることが分かりました。

実際に以下のYAMLファイルを記述するだけで動作させることができます。

.github/workflows/claude-issue-auto-fix.yml
.github/workflows/claude-issue-auto-fix.yml
name: Claude Issue Auto-Fix

on:
  issues:
    types: [labeled]

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

jobs:
  autofix:
    if: ${{ github.event.label.name == 'bug' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Claude Code (auto-fix)
        uses: anthropics/claude-code-action@fc4013af386ecc44b387ef2931c8d5f7c268b44e
        with:
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
          prompt: |
            Issueを解決してください。Issue: #${{ github.event.issue.number }}

          claude_args: |
            --max-turns 30
            --permission-mode bypassPermissions
            --model claude-sonnet-4-5-20250929

設定のポイント

  • on.issues.types: [labeled]: Issueへのラベル付与をトリガーに設定
  • if: ${{ github.event.label.name == 'bug' }}: bugラベル付与時のみ実行
  • permissions: GitHub Actionsに必要な権限を明示的に付与
    • contents: write: コード変更のpush権限
    • pull-requests: write: PR作成権限
    • issues: write: Issue操作権限
    • id-token: write: OIDC認証用(Claude Code GitHub App連携に必要)
  • uses: anthropics/claude-code-action@fc4013af386ecc44b387ef2931c8d5f7c268b44e: Skills対応版の特定コミットを使用(2.0.15はSkills未対応のため)
  • prompt: 特定のIssue番号を動的に指定(#${{ github.event.issue.number }}
  • --max-turns 30: AIの最大対話ターン数。Issue分析→テスト→修正→PR作成まで完了するには30程度必要
  • --permission-mode bypassPermissions: すべてのツール使用を許可。acceptEditsではghコマンドやgo testが拒否される
  • claude_code_oauth_token: Anthropic APIキーではなく、Claude Code専用のOAuthトークンを使用(より安全な認証方式)

セットアップ手順

1. Claude Code GitHub Appのインストール

claude /install-github-app

または https://github.com/apps/claude からリポジトリにインストール。
これにより、CLAUDE_CODE_OAUTH_TOKENシークレットが自動的に作成されます。

実際の検証結果

実際にこのパイプラインを構築して動かしてみたところ、想像以上にうまく動作しました。

検証条件

  • リポジトリ: Goの簡単なバグ(sum関数のオフバイワン)を含むテストプロジェクト
  • Issue: 「sum() が末尾要素を合計に含めない」というバグ報告
  • 期待動作: bugラベル付与 → 自動でコード修正 → PR作成

実行結果

Claude Code エージェントは以下をすべて自動で完了しました(実行時間: 2分48秒):

  1. Issue #1の分析 - バグ内容を正しく理解
  2. バグの再現 - go testで失敗を確認
  3. 修正の実装 - ループ条件をi < len(nums)に変更(最小限の修正)
  4. テストの検証 - すべてのテストがPASSすることを確認
  5. CHANGELOG更新 - CHANGELOG.mdにエントリー追加
  6. ブランチ作成 - fix/sum-last-element-issue-1ブランチを作成
  7. コミット&プッシュ - 適切なコミットメッセージで変更をpush
  8. PR本文の作成 - Summary/Changes/Test Results/Verification/Impact Analysis/Rollback Planを含む詳細な内容

ハマったポイントと解決策

実際に動かしてみて、いくつか調整が必要でした!

1. Skills対応バージョンの指定

  • 最初は@v1(2.0.15)を使用したが、Skillsが認識されなかった
  • 解決: Skills対応版の特定コミット@fc4013af386ecc44b387ef2931c8d5f7c268b44eを指定

2. 権限モードの選択

  • 最初は--permission-mode acceptEditsを使用
  • しかし、ghコマンドやgo testなどのBashコマンドが拒否された
  • 解決: --permission-mode bypassPermissionsに変更

3. ターン数不足

  • --max-turns 18では途中で打ち切られた
  • Issue分析→テスト→修正→PR作成まで完了するには不足
  • 解決: --max-turns 30に増加

補足情報

Claude Code on the web について

  • 並列実行とセッション引き継ぎ

2025年10月20日に発表された「Claude Code on the web」は、この自動化の可能性をさらに広げます。

複数タスクの並列実行

このWeb UIの最大の利点は、複数タスクの並列実行にありそうです。

これにより、例えばプロジェクトに溜まったバグ修正のIssueリストをまとめてUIに投入し、Claudeに複数の修正PRを同時に生成させるといったことが可能になります。

テレポート

  • セッションのシームレスな引き継ぎ

さらに特徴的なのは「Open in CLI」ボタンの存在です。

この機能は、Anthropicが管理するセキュアなクラウド環境で実行中のWebセッションを、その全コンテキスト(作業履歴、ファイル変更、環境変数など)ごと、ワンクリックでローカルのターミナル環境に引き継ぐことを可能にします。

コミュニティでは俗に「テレポート」とも呼ばれるこのシームレスな連携機能は、AIの自動処理が難しい局面に直面した際に即座に手動介入へ切り替えられる柔軟性を提供し、実用性を大きく高めています。

ユースケース例

  1. オフィスを出る前に、ブラウザから複雑なリファクタリングジョブを開始
  2. 帰りの電車で、iOSアプリから進捗を監視
  3. 問題に気づいたら「Open in CLI」でローカル環境にテレポート
  4. 即座にハンズオンでデバッグを開始

コミュニティの声:実践から見えてきたこと

X(旧Twitter)やコミュニティの反応を調査したところ、実用性への期待と同時に、現実的な課題も明らかになってきました。

実用性への期待

@BilginIbryam氏は、Agent Skillsの設計思想について次のように解説しています:

「Skillsはフォルダベースで具体的な手順とツールを渡せる新しいパターン。手順や社内の流儀を"再利用可能なスキル"として渡せるのが実用的」

@_DanielSinclair氏は、Web版の「Teleport」機能に注目:

「ブラウザで開始したタスクをCLIにシームレスに引き継げるのがお気に入り」

PDF処理、SEO最適化、社内テンプレート適用など、多様な実践事例も共有され始めています。

現実的な課題と運用指針

一方で、@ihower氏は冷静な見方を示しています:

「実際の価値は運用で決まる」

複数の開発者から、単一ファイル修正は得意だが、リポジトリ全体にまたがる多ファイル操作はまだ弱いという指摘もあります。

これらの声から、次のような運用指針が見えてきました:

  1. 変更範囲を絞る:1つのSkillで扱うのは影響範囲が限定されたタスクに
  2. Skillのdescriptionを具体的に:曖昧な記述は発火精度が落ちる
  3. 段階的な導入:小規模なバグ修正から開始し、成功パターンを蓄積

実践的な運用の示唆

X(Twitter)での分析や、The Verge の記事 でのAnthropicプロダクトリード Brad Abrams 氏のインタビューから、すぐに活かせる運用テンプレートが見えてきました。

Abrams氏は次のように語っています:

「重要なのは、任意のベンチマークを達成することではありません。自社で必要とされるタスクを実際に実行できることなのです」

確かにこの戦略的シフトは、Agent Skillsの設計思想そのものです。汎用的なベンチマークスコアを競うのではなく、チーム固有のワークフローに特化したスキルを構築することに価値があります。

並列ジョブ設計

公式・有識者とも並列実行を前面に推しているため、次のような二段構えが効果的です:

【Web版での一斉投入】
Issue単位/ディレクトリ単位に分割
  ↓
複数タスクを並列実行
  ↓
【GitHub Actionsでの継続運用】
ラベル付与トリガーで自動化

Skill作成のベストプラクティス

成功事例から、次のような共通パターンが考えられます:

  1. 具体的な手順を明記
    • 「Issueを読む → テストを書く → 修正する → PRを作る」のような明確なステップ
  2. 入出力規約を定義
    • Issueのどのフィールドを読むか
    • PR本文のどの項目を埋めるか
  3. ロールバック手順を含める
    • 失敗時の復旧方法を事前に定義

まとめ

Agent SkillsClaude Code について調査し、実際にバグ自動修正パイプラインを構築・検証してみました。

実現できたこと

  • ✅ GitHubのIssueから自動でコード修正とPR作成
  • ✅ チームの規約に準拠した一貫性のある実装
  • ✅ 詳細なPR本文(要約/影響/検証/ロールバック手順)の自動生成
  • ✅ テスト実行による修正の検証

実際に検証してみて、予想以上に実用的でした。特に印象的だったのは、チーム固有のワークフローをSkillsとして定義できるという点です。これにより、単なる汎用的なAIアシスタントではなく、自社のルールや規約を理解した「チーム専用のエージェント」を作れます。

一方で、現時点での限界も

  • リポジトリ全体にまたがる複雑なリファクタリングはまだ難しい
  • 単一ファイルの修正は得意だが、大規模な構造変更には工夫が必要
  • コミュニティからも「段階的な導入が重要」という声

それでも、退屈な反復作業をAIに委ねられる未来が見えてきたことは確かです。
小規模なバグ修正から始めて、成功パターンを蓄積していくことをお勧めします。

皆さんもぜひ、Agent SkillsとClaude Codeを試してみてください!

参考リンク

Discussion