Read GitHub Issue
GitHub Issue $1 を読み取り、後続フェーズが機械的に扱える形へ構造化して返すスキル。
推測で穴埋めせず、Issueに書かれている事実と、書かれていない不確実性を分けて返すこと。
Instructions
1. Issueと付随情報の取得
本文・状態・ラベル・コメントをまとめて取得する。
gh issue view $1 --comments
gh issue view $1 --json number,title,state,labels,assignees,milestone,url,body
以下も併せて確認:
- コメント全文: 確認事項への回答や仕様の追補が含まれることが多い。本文より優先される最新コメントを見落とさない
- 画像/添付: 本文・コメントに画像URLがある場合、
gh-assetでダウンロードして内容を読む
参考: https://github.com/YuitoSato/gh-assetgh-asset download <asset_id> ~/Downloads/ - リンクされたIssue/PR:
#123形式や URL での参照は依存関係の手がかり。必要に応じてgh issue view <num>/gh pr view <num>で内容を確認 - コード参照: 本文/コメントに登場するファイルパス・関数名は対象範囲特定に使う
Issueが CLOSED の場合、その旨を明記してそのまま返す(タスク分解は行わない)。
2. タスクの分解
Issueから「やるべきこと」を抽出し、並列実行可能な単位に分解する。
1タスクの粒度
1タスク = 「1つのサブエージェントが自己完結して完了条件まで到達できる作業」。 大きすぎる場合は分割し、小さすぎる(変更1行など)場合はまとめる。
逐次にすべき条件(いずれか該当 → 同一グループで逐次)
- 同じファイル/同じ関数を編集する可能性がある
- 一方の出力(型・関数シグネチャ・スキーマ・APIレスポンス)に他方が依存する
- DBマイグレーションやスキーマ変更を含む(変更を確定させてから利用側を直す)
上記に該当しないタスクは 並列グループ にまとめる。
各タスクに必ず含める情報
- 目的: なぜこのタスクが必要か(Issueのどの記述に対応するか)
- 対象範囲: 編集可能なファイル/ディレクトリの具体パス
- 完了条件: Issueの受け入れ基準から導いた検証可能な条件。書かれていない場合はその旨を明記
- 触れてはいけないファイル: 並列実行する他タスクが触る予定のファイル
3. 返却フォーマット
以下の構造で返却する。呼び出し元はこの構造に依存するため、セクション見出しを変えないこと。
## Issue概要
- Number: #<番号>
- Title: <タイトル>
- State: <OPEN/CLOSED>
- URL: <URL>
- 目的/背景: <1-3行の要約>
- 受け入れ基準(Issue記載の原文 or 要約):
- <条件1>
- <条件2>
## 分解タスク一覧
### 並列グループA
- **task-a1**: <タスク名>
- 目的: ...
- 対象範囲: `path/to/file`, `path/to/dir/`
- 完了条件: ...
- 触れてはいけないファイル: ...
- **task-a2**: ...
### 逐次グループB(task-b1 → task-b2 の順)
- **task-b1**: ...(先行)
- **task-b2**: ...(task-b1 の出力に依存)
## タスク間の依存関係
- 並列グループA と 逐次グループB は独立 / Aの完了後にBを開始 など
- 図示が有用な場合は箇条書きで「X が Y に依存」と明記
## 参考情報
- Issue: <URL>
- 関連Issue/PR: #..., #...
- 画像/添付: ローカルパス
- コード参照: `path/to/file:line`
## 不確実性・確認事項
(Issueから判断できなかった点。空配列でもよい)
- <仕様が曖昧な点。どう解釈して進めるかの提案を添える>
- <受け入れ基準が不明な点>
不確実性セクションは、推測で埋めずに「決めきれない箇所」を明示するのが目的。 呼び出し元はここを見て、ユーザー確認の要否を判断する。