mcpField
I
issues

issues

github.com/shpigford開発77 回インストール
リポジトリ

issues について

issues は、gh コマンドラインを使って GitHub issue を操作するスキルです。issue の作成、絞り込み、表示を案内し、内容を整理して記述する手順も提供します。

主な機能

  1. 01タイトル、本文、任意のラベル付きで issue を作成
  2. 02状態、担当者、作成者、ラベルで一覧を絞り込み
  3. 03指定した issue の詳細とコメントを表示
  4. 04再現手順や期待・実際の動作を整理

活用シーン

  1. 01再現情報を含むバグ報告を作成
  2. 02自分に割り当てられた open issue を一覧表示
  3. 03特定 issue の本文、ラベル、コメントを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/shpigford/skills --skill issues

インストール後、Claude Code で/issuesを入力して読み込まれたか確認します。

詳細

GitHub の issue を操作します。issue の作成、一覧表示、詳細表示ができます。

手順

このコマンドでは、gh CLI を使って GitHub の issue を操作できます。

ステップ 1:操作の選択

AskUserQuestion を使って、ユーザーが何をしたいか尋ねます。

質問:

  • question: "GitHub の issue で何をしますか?"
  • header: "操作"
  • multiSelect: false
  • options:
    • label: "新しい issue を作成" description: "タイトル、本文、任意のラベルを指定して新しい issue を作成します"
    • label: "issue の一覧を表示" description: "現在のリポジトリで未解決の issue を表示します"
    • label: "issue を表示" description: "番号を指定して特定の issue の詳細を確認します"

「新しい issue を作成」が選択された場合:

ステップ 2a:issue のタイトルを取得

AskUserQuestion を使って、issue のタイトルを取得します。

質問:

  • question: "issue の内容がひと目でわかる短いタイトルを入力してください。簡潔に(最大 5~10 語)まとめ、詳細は本文に記載してください。(「その他」を選択してタイトルを入力してください)"
  • header: "タイトル"
  • multiSelect: false
  • options:
    • label: "タイトルを入力する" description: "「ログインボタンが反応しない」や「ダークモードのサポートを追加」のような簡潔なタイトルを入力します"

タイトルのガイドライン:

  • タイトルは短く、ひと目でわかるものにしてください(最大 5~10 語)。
  • 良い例:「パスワードリセットのフローが壊れている」
  • 悪い例:「パスワードをリセットしようとしてボタンをクリックすると何も起きず、エラーが表示される」
  • 詳細はタイトルではなく、説明/本文に記載してください。

ユーザーが長いタイトルを入力した場合は、短くまとめ、詳細を本文に移すよう案内してください。

ステップ 3a:issue の本文を取得

AskUserQuestion を使って、issue の本文の内容を集めます。

質問 1 — issue の種類:

  • question: "どのような種類の issue ですか?"
  • header: "種類"
  • multiSelect: false
  • options:
    • label: "バグ" description: "修正が必要な不具合"
    • label: "機能改善" description: "既存の機能の改善"
    • label: "新機能" description: "新しい機能"
    • label: "タスク" description: "一般的な作業項目または雑務"

質問 2 — 説明:

  • question: "詳細をすべて入力してください。タイトルに収まらなかった背景や状況、具体的な内容を説明します。(「その他」を選択して説明を入力してください)"
  • header: "説明"
  • multiSelect: false
  • options:
    • label: "詳しく説明する" description: "背景、手順、例、関連情報を入力します"

ここでは、ユーザーが「その他」を選択して詳細な説明を入力します。

説明のガイドライン:

  • 詳細はすべてここに記載してください。できるだけ詳しく説明します。
  • 背景を含めてください。何をしていたのか、どのような状況だったのかを記載します。
  • 具体的な情報を含めてください。エラーメッセージ、URL、バージョンなどを記載します。
  • ここに詳細を記載するほどよい結果が得られます。簡潔にすべきタイトルとは異なります。

質問 3 — バグの場合、再現手順を尋ねる: issue の種類が「バグ」の場合、AskUserQuestion を使います。

  • question: "このバグを再現する手順を入力できますか?(「その他」を選択して手順を入力してください)"
  • header: "再現手順"
  • multiSelect: false
  • options:
    • label: "手順を入力する" description: "issue の再現方法を説明します"
    • label: "再現できない" description: "バグが断続的に発生する、または再現が難しい"

質問 4 — 期待する動作と実際の動作(バグの場合): issue の種類が「バグ」の場合、AskUserQuestion を使います。

  • question: "期待した動作と実際に起きた動作を教えてください。(「その他」を選択して説明してください)"
  • header: "動作"
  • multiSelect: false
  • options:
    • label: "動作を説明する" description: "期待した動作と実際の動作を説明します"
ステップ 4a:ラベルを取得(任意)

AskUserQuestion を使って、ラベルを選択します。

  • question: "追加するラベルを選択してください(任意)。"
  • header: "ラベル"
  • multiSelect: true
  • options:
    • label: "bug" description: "正常に動作していないもの"
    • label: "enhancement" description: "新機能または機能改善のリクエスト"
    • label: "documentation" description: "ドキュメントの改善"
    • label: "good first issue" description: "初めてのコントリビューションに適した issue"
ステップ 5a:イシューを作成する

種類に基づいてイシューの本文を作成します。

バグ報告の場合:

## Description
[User's description]

## Steps to Reproduce
[User's reproduction steps or "Not easily reproducible"]

## Expected Behavior
[What should happen]

## Actual Behavior
[What actually happens]

機能リクエスト/改善の場合:

## Description
[User's description]

## Use Case
[Why this would be useful]

タスク/その他の場合:

## Description
[User's description]

gh コマンドを実行してイシューを作成します。

gh issue create --title "[title]" --body "[constructed body]" --label "[labels]"

イシューの URL をユーザーに報告します。


「イシューの一覧表示」が選択された場合:

ステップ 2b:フィルターオプション

AskUserQuestion を使用して、フィルター条件を確認します。

  • question: "イシューをどのようにフィルターしますか?"
  • header: "フィルター"
  • multiSelect: false
  • options:
    • label: "すべてのオープンイシュー" description: "すべてのオープンイシューを表示します"
    • label: "自分に割り当て済み" description: "現在のユーザーに割り当てられたイシュー"
    • label: "自分が作成" description: "自分が作成したイシュー"
    • label: "特定のラベルを指定" description: "ラベルでフィルターします"

「特定のラベルを指定」が選択された場合は、AskUserQuestion を使用します。

  • question: "どのラベルでフィルターしますか?(カスタムラベルには「Other」を使用してください)"
  • header: "ラベル"
  • multiSelect: false
  • options:
    • label: "bug" description: "バグ報告"
    • label: "enhancement" description: "機能リクエスト"
    • label: "documentation" description: "ドキュメントに関するイシュー"
ステップ 3b:イシューを一覧表示する

適切な gh コマンドを実行します。

  • すべてのオープンイシュー:gh issue list
  • 自分に割り当て済み:gh issue list --assignee @me
  • 自分が作成:gh issue list --author @me
  • ラベルを指定:gh issue list --label "[label]"

結果を見やすい形式で表示します。


「イシューを表示」が選択された場合:

ステップ 2c:イシュー番号を取得する

AskUserQuestion を使用します。

  • question: "どのイシュー番号を表示しますか?(番号を入力するには「Other」を使用してください)"
  • header: "イシュー #"
  • multiSelect: false
  • options:
    • label: "イシュー番号を入力" description: "イシュー番号を入力します"
ステップ 3c:イシューを表示する

実行します:gh issue view [number]

タイトル、本文、ラベル、担当者、コメントを含むイシューの詳細を表示します。


エラー処理

gh コマンドが失敗した場合:

  1. ユーザーが認証済みか確認します:gh auth status
  2. 認証されていない場合は、gh auth login を実行するようユーザーに伝えます
  3. GitHub リモートを持つ Git リポジトリ内にいるか確認します
  4. 具体的なエラーメッセージをユーザーに報告します

重要な注意事項

  • タイトルは簡潔にします(5~10語)。ユーザーが長いタイトルを入力した場合は、短くするのを手伝い、詳細は本文に移します
  • 本文には詳細を記載します。十分な背景情報、手順、具体的な内容を記載するようユーザーに促します
  • URL を表示して、イシューが正常に作成されたことを必ず確認します
  • イシューの本文では、ユーザーの書式と改行を保持します
  • ユーザーから提供された情報が最小限でも問題ありません。提供された内容でイシューを作成します
  • 書式を保持するため、本文には HEREDOC を使用します。
    gh issue create --title "Title" --body "$(cat <<'EOF'
    Body content here
    EOF
    )"
    

コメント