issues について
issues は、gh コマンドラインを使って GitHub issue を操作するスキルです。issue の作成、絞り込み、表示を案内し、内容を整理して記述する手順も提供します。
主な機能
- 01タイトル、本文、任意のラベル付きで issue を作成
- 02状態、担当者、作成者、ラベルで一覧を絞り込み
- 03指定した issue の詳細とコメントを表示
- 04再現手順や期待・実際の動作を整理
活用シーン
- 01再現情報を含むバグ報告を作成
- 02自分に割り当てられた open issue を一覧表示
- 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 コマンドが失敗した場合:
- ユーザーが認証済みか確認します:
gh auth status - 認証されていない場合は、
gh auth loginを実行するようユーザーに伝えます - GitHub リモートを持つ Git リポジトリ内にいるか確認します
- 具体的なエラーメッセージをユーザーに報告します
重要な注意事項
- タイトルは簡潔にします(5~10語)。ユーザーが長いタイトルを入力した場合は、短くするのを手伝い、詳細は本文に移します
- 本文には詳細を記載します。十分な背景情報、手順、具体的な内容を記載するようユーザーに促します
- URL を表示して、イシューが正常に作成されたことを必ず確認します
- イシューの本文では、ユーザーの書式と改行を保持します
- ユーザーから提供された情報が最小限でも問題ありません。提供された内容でイシューを作成します
- 書式を保持するため、本文には HEREDOC を使用します。
gh issue create --title "Title" --body "$(cat <<'EOF' Body content here EOF )"