GitHub Issue をローカルに落として AI に渡す Agent Skills 実装ガイド

ども!最近バグ調査のたびに GitHub の Issue を行ったり来たりしている龍ちゃんです。

今回紹介するスキルは GitHub Copilot でも Claude Code でも動きます。どちらを使っていても同じ方法で導入できるので、自分の環境に合わせて読んでください。

対象読者

  • VS Code + GitHub Copilot(Free 以外のプラン)または Claude Code を使っている方
  • gh CLI の認証が済んでいる方(gh auth status で確認)
  • Agent Skills の基本は知っている方(知らない方は「【2026年版】Agent Skills 入門」を先にどうぞ)

併せて読みたい
GitHub Copilot デバッグの精度を上げるにはドキュメント1枚を先に書く — 今回の記事の前提になるデバッグワークフローの話


GitHub Issue の議論を AI に渡せない問題

チーム開発で Issue を使っている方は多いと思います。バグ報告、機能要望、設計の相談——Issue のコメントスレッドには、チームメンバーが議論した記録がそのまま残っているんですよね。

「ここが怪しいんじゃないか」「いや、こっちを先に調べたほうがいい」「試したけどこれは関係なかった」——こういうやりとりって、バグ調査の文脈では情報の宝庫なんです。

じゃあこの情報を AI に渡して調査させたいとなったとき、どうするか。

バグ調査のワークフローって大体こうなりますよね。

  1. Issue で問題が報告される
  2. コメントで方針をすり合わせる(人間同士のディスカッション)
  3. 調査・改修する
  4. 結果を Issue に書き戻す

ステップ3で AI(Copilot や Claude Code)を使いたいんですが、ステップ2までのディスカッション内容は GitHub 上にしかないんですよね。AI にとってはコンテキストがゼロの状態で調査を始めることになる。

以前の記事「デバッグの精度を上げるにはドキュメント1枚を先に書く」で、Issue.md を書いてから AI に渡すと初手の精度が上がるという話をしました。問題・仮説・関連パスを整理したファイルをローカルに置いて、AI のコンテキストに載せることで効果が絶大になります。

でも、その Issue.md を毎回手で書くのは面倒なんですよね。しかも Issue のコメントスレッドにはすでにチームの議論が蓄積されている。これをそのままローカルに落とせれば、手書きの手間もなくなるし、チームの知見も一緒に AI に渡すことができます。

問題は、VS Code の拡張機能(GitHub Pull Requests and Issues)は参照・操作には優秀なんですが、エクスポート機能がないこと。Issue の内容をファイルに落とし込む手段がないんです。

今回は、gh CLI を使って Issue の検索からローカルへの書き出しまでをワンセットでスキル化して、この穴を埋めます。

今回の内容です。

  • GitHub Issue の情報を AI が使える形でローカルに落とすデモ
  • SKILL.md の設計と実装
  • 拡張機能との使い分け

デモ:gh CLI で Issue をローカルに自動出力する

作り方の前に、まず完成形を見てください。

バグ Issue → Issue.md を自動生成する

「Issue #3 の内容を確認して Issue.md を作成して」と入力すると、Agent が以下を実行します。

gh issue view 3 --json title,body,state,labels,assignees,author,createdAt,url

そして、Issue.md テンプレートに変換して出力してくれます。

# Issue #3: blog_scraper が robots.txt を無視して403エラーになる

- URL: https://github.com/.../issues/3
- 起票者: @Ryunosuke-Tanaka-sti
- 担当: @Ryunosuke-Tanaka-sti
- 状態: OPEN
- ラベル: bug

## 問題
blog_scraper でブログ記事をスクレイピングする際、robots.txt の Crawl-delay を
無視してリクエストを送信し、403 Forbidden エラーが発生する。

## 仮説
1. robots.txt のパース処理が未実装、またはパーサーが Crawl-delay ディレクティブを無視している
2. リクエスト間隔の制御(rate limiting)が実装されていない、または設定値が短すぎる
3. User-Agent ヘッダーがサーバー側でブロック対象になっている

## 関連ファイル
- application/tools/src/blog_scraper/

## 再現手順
1. `uv run python -m blog_scraper https://example.com/archives/12345` を実行
2. 403 Forbidden エラーが発生

以前の記事「デバッグの精度を上げるにはドキュメント1枚を先に書く」では、この Issue.md を手で書く前提で解説していました。今回はそれが GitHub Issue から1プロンプトで自動生成できるようになります。

コメント付き Issue → 進捗まとめ

「Issue #6 の本文とコメントをすべて確認して進捗をまとめて」と入力すると:

gh issue view 6 --json title,body,state,labels,assignees,author,comments,createdAt,updatedAt,url

投稿者付きの進捗まとめを出してくれます。

# Issue #6: README.md にツールの使い方セクションを追加する

- 起票者: @Ryunosuke-Tanaka-sti
- 状態: OPEN
- ラベル: documentation

## タスク概要
README.md に各ツールの使い方セクションを追加する

## 進捗状況
- **@Ryunosuke-Tanaka-sti** (2026-03-10): blog_scraper セクションから着手
- **@Ryunosuke-Tanaka-sti** (2026-03-10): blog_scraper のドラフト完成、レビュー依頼
- **@Ryunosuke-Tanaka-sti** (2026-03-10): svg_to_png, html_to_png 追記完了
- **@Ryunosuke-Tanaka-sti** (2026-03-10): cleanup_articles, thumbnail_generator の方針メモ
- **@Ryunosuke-Tanaka-sti** (2026-03-10): 全ツール分ドラフト完了

## 残タスク
- 最終レビュー待ち

ここがミソなんですけど、投稿者情報(@author + 日付)が入っているので、誰の発言かが一目でわかるんですよね。これを AI に渡せば、経緯を踏まえた回答が返ってきます。Issue のコメントスレッドを自分で全部読まなくていい。

検索も自然言語でできる

エクスポートの前段として、Issue の検索自体も自然言語で指示できます。

プロンプト変換されるコマンド
「Issue 一覧を見せて」gh issue list
「bugラベルのIssueを検索して」gh issue list --label bug --state open
「自分にアサインされたIssueは?」gh issue list --assignee @me
「robots.txt に関連するIssue」gh issue list --search "robots.txt"
「クローズ済みのIssue」gh issue list --state closed

「自分にアサインされた bug ラベルのオープン Issue」みたいな複合条件も一言でいけます。gh issue list --assignee @me --label bug --state open に変換してくれますね。


SKILL.md の導入方法(GitHub Copilot・Claude Code 両対応)

SKILL.md は GitHub Copilot 版と Claude Code 版の両方を用意しました。Gist から取得して、所定のディレクトリに配置するだけで動きます。

  • Copilot 版: .github/skills/gh-issue-search/ に配置 → Gist
  • Claude Code 版: .claude/skills/gh-issue-search/ に配置 → Gist

中身をざっくり見せます。Copilot 版と Claude Code 版で frontmatter の書き方が違うので、両方載せておきます。

Copilot 版.github/skills/gh-issue-search/SKILL.md

---
name: gh-issue-search
description: GitHub IssueをghCLIで検索・取得するスキル。
  Issue一覧のフィルタリング、個別Issueの詳細・コメント取得、
  検索結果のIssue.md変換に対応。
  Use when: Issueを検索したい、Issue一覧を見たい、
  Issueの詳細を確認したい、Issue.mdを作りたい。
allowed-tools: Bash(gh:*) Bash(git:*) Bash(jq:*) Read
---

Claude Code 版.claude/skills/gh-issue-search/SKILL.md

---
name: gh-issue-search
description: |
  This skill should be used when the user asks to "Issue一覧を見せて",
  "Issueを検索して", "Issue確認して", "Issueの詳細を見せて",
  "バグ一覧", "アサインされたIssue", "Issue.mdを作って",
  "Issueをまとめて", "/gh-issue-search",
  or needs to search, view, or summarize GitHub Issues via gh CLI.
allowed-tools: Bash, Read
---

Copilot 版は allowed-toolsBash(gh:*) のようにコマンド単位で制限できます。Claude Code 版はツール名だけの指定です。description の書き方もそれぞれのルーティングエンジンに合わせています。

ポイントは3つです。

  • description にトリガーワードを列挙する — 「Issue一覧」「Issue検索」「Issue.md」など、ユーザーが入力しそうな言い回しを書いておく。Agent がスキルを自動選択する精度に直結します
  • allowed-tools で実行可能なコマンドを絞る — Copilot 版では Bash(gh:*) のように前方一致で制限でき、スキルが意図しないコマンドを実行するリスクを減らせます
  • モード自動判定で1つのスキルに集約する — 検索・詳細取得・Issue.md 変換の3モードをユーザーの指示から自動判定する設計にしています。スキルを3つに分けるより、1つにまとめたほうがルーティングが安定しました

本文の後半では、モード判定テーブルとテンプレート定義が続きます。全文は Gist を参照してください。

SKILL.md の設計パターン(description の書き方、references 分離、ルーティング設定など)の詳細は CI 編で解説しているので、カスタマイズしたい方はそちらを参照してください。

MCP でもできる

ちなみに、GitHub Issue の操作は GitHub MCP Server を使う方法もあります。MCP Server は Docker コンテナで動作し、gh CLI とは独立しています。GitHub API トークン(Personal Access Token)を設定すれば Issue の取得や検索ができるので、gh CLI をインストールしたくない環境ではこちらが選択肢になります。

個人的には gh CLI 構成のほうが好みですね。理由はシンプルで、MCP サーバーの起動管理が要らないのと、ターミナルでそのまま動作確認できるから。スキルが期待通りに動かないとき、gh issue list --label bug をターミナルで叩けばコマンド自体の問題かスキルの問題かすぐ切り分けられるんですよね。

前提条件

gh CLI の認証が必要です。 このスキルは内部で gh issue list / gh issue view を実行するので、gh CLI がインストールされていて、対象リポジトリに認証済みである必要があります。本記事の動作確認環境は gh v2.87.3 です。

# 認証状態の確認
gh auth status

# 未認証の場合
gh auth login

プライベートリポジトリの Issue を取得する場合は、そのリポジトリへのアクセス権限も必要です。GitHub API のトークンスコープに repo が含まれていることを確認してください。


VS Code 拡張機能と Agent Skills の使い分け

「拡張機能でよくない?」と思う方もいると思うので、整理しておきます。

やりたいこと拡張機能Agent Skill
Issue をさっと一覧確認サイドバーで十分どちらでも OK
複合条件で絞り込みUI 操作が手間自然言語で一発
Issue の内容をファイルに落とすエクスポート機能なし1プロンプトで自動生成
コメントスレッドの要約自分で読むAI が投稿者付きで要約

「見るだけ」なら拡張機能で十分なんですよね。でも「ローカルに落としたい」「コメントの経緯を AI に渡したい」という場面では Agent Skill の出番です。


まとめ

今回の内容を振り返ります。

  • GitHub Issue のディスカッション記録を AI が読める形でローカルに落とせるようになった
  • Issue.md の自動変換・コメント付き進捗まとめ・複合条件検索が、拡張機能にはない価値
  • SKILL.md は Gist で公開済み。gh CLI の認証さえ済んでいればすぐ使える

次回は gh issue create / gh issue comment / gh issue close をスキル化して、Issue の書き込み操作も自然言語でできるようにする予定です。

ではまた!


関連記事

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。
エンジニア募集中!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です