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
本記事で構築したパイプラインの実例は以下のリポジトリで確認できます:
- 自動作成されたPR: PR #2 - Fix: Sum() が末尾要素を合計に含めない問題を修正
- トリガーとなったIssue: Issue #1 - sum() が末尾要素を合計に含めない
Agent Skills の仕組み
今回作成した自動化パイプラインの中心部となるのが「Agent Skills」です。
公式ドキュメント によれば、Skillとは次のような構造を持つディレクトリです:
.claude/skills/
├── issue-fix/
│ └── SKILL.md # スキルの説明と手順(必須)
├── code-review/
│ └── SKILL.md
└── refactor/
└── SKILL.md
各スキルは SKILL.md ファイルで定義され、Claude が自律的に選択・実行します。
モデル自動起動(model-invoked)について
- AIが自ら判断する新しいパラダイム
Skillsの最も重要な特徴は、ユーザーが明示的に呼び出すスラッシュコマンドとは異なり、「自動起動(model-invoked)」である点です。Claudeは、タスクの内容と各SKILL.mdのdescription(説明文)を照らし合わせ、どのSkillを使うべきかを自律的に判断します。
これらの 「エージェント性」 こそが、高度な自動化を実現する鍵なのです。
何を試したか?
Agent SkillsとClaude Code を組み合わせて、次のような自動化フローの実現を考えました。
バグ自動修正の流れ
例えば、GitHubのIssueに特定のラベル(例:bug)が付与をトリガーに Claude に Issue の解決を命じるワークローを実行します。Claude が Issue の解決に必要なスキルを自律的に判断し実行します。
今回の選択されるはずのスキルが担う工程は以下です。
- Issue内容の分析:再現手順と影響範囲を特定
- コード修正:必要最小限の変更を実施
- テスト実行:修正が正しく動作することを確認
- PR作成:チームの規約に準拠した形式で
さらに、PRコメントでの対話も試してみました:
@claude をメンションすることで、Claude に分析や改善を命令できるワークフローも作成しました。結果、Agent Skills と組み合わさることで、Claude が必要な Skill をコメントから判断するため、より対話的な改善が可能になりました。
実践
SKILL.md
SKILL.md には、Claudeがスキルを自動で発見するための具体的な説明を含めます。必須は name と description のみで、allowed-tools は任意(チーム内でスキーマを合わせると運用が安定します)。
---
name: ${スキル名}
description: >-
${そのスキルが何をするのかとClaudeがいつそのスキルを使うべきなのかの両方を含める}
allowed-tools: ${使用を許可するツール群}
---
今回のバグ自動修正パイプラインでは、簡単なデモとして issue-fix スキルのみを説明します。
issue-fix スキル: Issue分析→テスト追加→最小修正→PR作成まで自動化するスキル
例: .claude/skills/issue-fix/SKILL.md
---
name: issue-fix
description: >-
ユーザーが「Issue #N を解決」「Issueを解決して」「Issue を fix」等と要求した時に使用。
GitHub Issueの完全な解決ワークフローを自動実行。
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
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を実行したAction: Action 18738341529
Claude Code エージェントは自律的に issue-fix スキルを使用して以下をすべて完了しました:
- ✅ Issue #1の分析 - バグ内容を正しく理解
- ✅ バグの再現 -
go testで失敗を確認 - ✅ 修正の実装 - ループ条件を
i < len(nums)に変更(最小限の修正) - ✅ テストの検証 - すべてのテストがPASSすることを確認
- ✅ CHANGELOG更新 -
CHANGELOG.mdにエントリー追加 - ✅ ブランチ作成 -
fix/sum-last-element-issue-1ブランチを作成 - ✅ コミット&プッシュ - 適切なコミットメッセージで変更をpush
- ✅ PR本文の作成
ハマったポイントと解決策
実際に動かしてみて、いくつか調整が必要でした!
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を同時に生成させるといったことが可能になると考えられます。
- 例えば、【Web版での一斉投入】 Issue単位/ディレクトリ単位に分割 -> 複数タスクを並列実行 ->【GitHub Actionsでの継続運用】で自動化など。
テレポート
- セッションのシームレスな引き継ぎ
さらに特徴的なのは「Open in CLI」ボタンの存在です。
この機能は、Anthropicが管理するセキュアなクラウド環境で実行中のWebセッションを、その全コンテキスト(作業履歴、ファイル変更、環境変数など)ごと、ワンクリックでローカルのターミナル環境に引き継ぐことを可能にします。
コミュニティでは俗に「テレポート」とも呼ばれるこのシームレスな連携機能は、AIの自動処理が難しい局面に直面した際に即座に手動介入へ切り替えられる柔軟性を提供し、実用性を大きく高めています。
ユースケース例
- オフィスを出る前に、ブラウザから複雑なリファクタリングジョブを開始
- 帰りの電車で、iOSアプリから進捗を監視
- 問題に気づいたら「Open in CLI」でローカル環境にテレポート
- 即座にハンズオンでデバッグを開始
コミュニティの声:実践から見えてきたこと
X(旧Twitter)やコミュニティの反応を調査したところ、実用性への期待と同時に、現実的な課題も明らかになってきました。
実用性への期待
@BilginIbryam氏は、Agent Skillsの設計思想について次のように解説しています:
「Skillsはフォルダベースで具体的な手順とツールを渡せる新しいパターン。手順や社内の流儀を"再利用可能なスキル"として渡せるのが実用的」
@_DanielSinclair氏は、Web版の「Teleport」機能に注目:
「ブラウザで開始したタスクをCLIにシームレスに引き継げるのがお気に入り」
PDF処理、SEO最適化、社内テンプレート適用など、多様な実践事例も共有され始めています。
現実的な課題と運用指針
一方で、@ihower氏は冷静な見方を示しています:
「実際の価値は運用で決まる」
複数の開発者から、単一ファイル修正は得意だが、リポジトリ全体にまたがる多ファイル操作はまだ弱いという指摘もあります。
これらの声から、次のような運用指針が見えてきました:
- 変更範囲を絞る:1つのSkillで扱うのは影響範囲が限定されたタスクに
- Skillのdescriptionを具体的に:曖昧な記述は発火精度が落ちる
- 段階的な導入:小規模なバグ修正から開始し、成功パターンを蓄積
実践的な運用の示唆
X(Twitter)での分析や、The Verge の記事 でのAnthropicプロダクトリード Brad Abrams 氏のインタビューから、すぐに活かせる運用テンプレートが見えてきました。
Abrams氏は次のように語っています:
「重要なのは、任意のベンチマークを達成することではありません。自社で必要とされるタスクを実際に実行できることなのです」
確かにこの戦略的シフトは、Agent Skillsの設計思想そのものです。汎用的なベンチマークスコアを競うのではなく、チーム固有のワークフローに特化したスキルを構築することに価値があります。
まとめ
Agent Skills と Claude Code について調査し、実際にバグ自動修正パイプラインを構築・検証してみました。
実現できたこと
- ✅ GitHubのIssueから自動でコード修正とPR作成
- ✅ チームの規約に準拠した一貫性のある実装
- ✅ 詳細なPR本文(要約/影響/検証/ロールバック手順)の自動生成
- ✅ テスト実行による修正の検証
実際に検証してみて、予想以上に実用的でした。特に印象的だったのは、チーム固有のワークフローをSkillsとして定義できるという点です。これにより、単なる汎用的なAIアシスタントではなく、自社のルールや規約を理解した「チーム専用のエージェント」を作れます。
一方で、現時点での限界も
- リポジトリ全体にまたがる複雑なリファクタリングはまだ難しい
- 単一ファイルの修正は得意だが、大規模な構造変更には工夫が必要
- コミュニティからも「段階的な導入が重要」という声
それでも、退屈な反復作業をAIに委ねられる未来が見えてきたことは確かです。
小規模なバグ修正から始めて、成功パターンを蓄積していくことをお勧めします。
皆さんもぜひ、Agent SkillsとClaude Codeを試してみてください!
Discussion