gh-issue-planner
GitHub Issue Planner
Overview
Fetch a GitHub Issue, analyze its content, investigate related code in the repository, and present a structured response plan to the user. After the user confirms, post the agreed plan as a comment on the issue. Implementation and PR creation are out of scope — use gh-issue-resolver for those steps.
Workflow
Step 1: Fetch the Issue
Run the following command (replace <id> with the issue number):
gh issue view <id> --json number,title,body,labels,assignees,state,url,comments
If no repository context is clear, also run:
gh repo view --json nameWithOwner
Extract from the response:
- Title and body: the core problem statement
- Labels: bug / feature / enhancement / etc. — determines response approach
- Comments: additional context, workarounds, or constraints from stakeholders
Step 2: Classify the Issue
Determine issue type to guide the investigation strategy:
| Label / Signal | Type | Investigation Focus |
|---|---|---|
| bug, error, crash | Bug fix | Error paths, edge cases, affected callers |
| feature, enhancement | New feature | Insertion points, interface contracts, related modules |
| refactor, tech-debt | Refactoring | Current usage sites, test coverage |
| docs, documentation | Docs update | Existing docs, code references |
Step 3: Investigate Related Code
Extract keywords from the title and body, then search the codebase:
- Use
code_searchwith natural-language queries derived from the issue - Use
grep_searchfor specific function/class/variable names mentioned - Use
read_fileto deeply understand the most relevant files - Trace call chains and dependencies to establish impact scope
Focus on:
- Files and functions directly mentioned or implied in the issue
- Callers / consumers of affected code
- Tests covering the affected area
Step 4: Present the Response Plan
Present the following structured plan to the user in their preferred language:
## Issue #<id>: <title>
### 対応方針 (Approach)
<What will be done and why — 2-4 sentences>
### 影響範囲 (Impact Scope)
- **変更対象ファイル**: list of files to modify
- **影響を受けるモジュール**: related modules that may be affected
- **テスト**: existing tests to update + new tests to add
### 実装方法 (Implementation Steps)
1. <Concrete step>
2. <Concrete step>
3. ...
### 懸念事項・確認事項 (Open Questions)
- <Any ambiguity or assumption that needs user confirmation>
Step 5: Confirm and Iterate
- If there are open questions, ask the user before proceeding
- Adjust the plan based on feedback
- Once the user explicitly confirms, proceed to Step 6
Step 6: Post the Agreed Plan to the Issue
After the user confirms the plan, post it as a comment on the GitHub Issue:
gh issue comment <id> --body "$(cat <<'EOF'
## 対応方針
<agreed approach>
## 影響範囲
- **変更対象ファイル**: <files>
- **影響を受けるモジュール**: <modules>
- **テスト**: <tests>
## 実装方法
1. <step>
2. <step>
---
<!-- gh-issue-planner:agreed-plan -->
*Generated by `gh-issue-planner` — this comment represents the agreed implementation plan. Use `gh-issue-resolver` to implement it.*
EOF
)"
This completes the planner workflow. If implementation is required, hand off to the gh-issue-resolver skill, which uses the posted comment as its agreed plan.
Key Principles
- Never post the comment without user confirmation when open questions exist
- Keep the plan concise — avoid over-engineering
- If the issue is vague, ask one focused clarifying question rather than multiple at once
- Prefer minimal, upstream fixes over downstream workarounds