Files
gh-sjungling-claude-plugins…/commands/clarify-issue.md
2025-11-30 08:57:49 +08:00

229 lines
7.3 KiB
Markdown

---
allowed-tools: Bash(gh issue view:*),
Bash(gh issue edit:*),
Bash(git status:*),
AskUserQuestion,
Read(**/*.md),
Write(**/*.md),
Edit(**/*.md),
mcp__use_browser,
mcp__plugin_ui-engineering_figma-mcp__*
argument-hint: [issue-url]
description: Clarify ambiguities in a GitHub issue through structured questioning
---
Clarify ambiguities in GitHub issue: $ARGUMENTS
## Argument Validation
- Ensure an issue URL or number was provided and prompt the user if not.
- Extract the issue number from the URL if a full URL was provided.
## Context Gathering
Fetch the issue details using `gh`:
```bash
gh issue view "$ISSUE_NUMBER" --json number,title,body,url,labels,state
```
Parse the issue title and body to understand the current specification.
## Ambiguity Detection
Analyze the issue against these nine categories to identify gaps:
1. **Functional Scope & Behavior**
- What specific capabilities must be delivered?
- What's explicitly out of scope?
- How should the feature behave in normal conditions?
2. **Domain & Data Model**
- What entities, attributes, and relationships are involved?
- What validation rules apply?
- Are there existing data structures to extend or new ones to create?
3. **Interaction & UX Flow**
- What's the user journey or workflow?
- What inputs are required and what outputs are produced?
- How should errors or feedback be communicated to users?
4. **Non-Functional Quality Attributes**
- What are the performance, security, or accessibility requirements?
- What scale or load must be supported?
- Are there compliance or regulatory constraints?
5. **Integration & External Dependencies**
- What APIs, services, or systems must integrate?
- What data formats or protocols are required?
- Are there authentication or authorization requirements?
6. **Edge Cases & Failure Handling**
- What happens with invalid, missing, or malformed input?
- How should timeouts, network failures, or unavailable services be handled?
- What error states need graceful degradation?
7. **Constraints & Tradeoffs**
- What technical or business constraints exist?
- What tradeoffs between speed, quality, scope are acceptable?
- What's the priority if resources are limited?
8. **Terminology & Consistency**
- Are terms used consistently throughout the spec?
- Do any terms need clear definitions?
- Are there naming conventions to follow?
9. **Completion Signals**
- What defines "done" for this feature?
- What testing is required?
- What documentation must be updated?
For each category, assign a status:
- **Clear**: Well-defined and actionable
- **Partial**: Some information present but gaps remain
- **Missing**: No information or critically incomplete
## Question Generation
Generate up to 5 targeted clarification questions that:
- Address the highest-impact ambiguities (Partial or Missing categories)
- Materially affect architecture, data modeling, testing, UX, operations, or compliance
- Exclude trivial stylistic preferences
- Can be answered with either:
- Multiple-choice (2-4 options with clear descriptions)
- Short-phrase responses
For each question:
- Clearly state what's ambiguous and why it matters
- If multiple-choice, identify and explain the recommended option
- Ensure answers will directly inform implementation decisions
## Interactive Clarification
Use the `AskUserQuestion` tool to present clarifications:
1. Present questions one at a time (or in small batches if related)
2. For multiple-choice questions:
- Set the recommended option based on best practices or issue context
- Provide clear descriptions for each option explaining tradeoffs
- Use `multiSelect: false` for mutually exclusive choices
3. For open-ended questions:
- Provide example options with an "Other" choice
- Keep option descriptions concise but informative
Example AskUserQuestion usage:
```
{
"questions": [
{
"question": "What should happen when a user tries to perform this action without authentication?",
"header": "Auth handling",
"multiSelect": false,
"options": [
{
"label": "Redirect to login",
"description": "Send user to login page with return URL. Standard web app pattern."
},
{
"label": "Show 401 error",
"description": "Return 401 status. Better for API endpoints."
},
{
"label": "Graceful degradation",
"description": "Show limited functionality without auth. Good for public features."
}
]
}
]
}
```
## Answer Integration
After receiving answers from the user:
1. **Create clarifications file** (if it doesn't exist):
- Write to `/tmp/claude/issue-$ISSUE_NUMBER-clarifications.md`
- Format with:
```markdown
# Clarifications for Issue #$ISSUE_NUMBER
## Date: YYYY-MM-DD
### [Category Name]
**Q:** [Question text]
**A:** [User's answer with reasoning if applicable]
---
```
2. **Update existing clarifications** (if file exists):
- Use Read tool to load existing content
- Use Edit tool to append new Q&A under today's date
- Ensure no duplicate questions
3. **Update the GitHub issue**:
- Write updated issue body to `/tmp/claude/issue-$ISSUE_NUMBER-body.md`
- Add or update a `## Clarifications` section at the end
- Include date-stamped Q&A entries
- Use Read tool to verify content
- Update issue: `gh issue edit $ISSUE_NUMBER --body-file /tmp/claude/issue-$ISSUE_NUMBER-body.md`
4. **Validate**:
- Check for contradictions with previous answers
- Ensure terminology consistency
- Verify formatting is preserved
## Session Management
- Maximum 10 questions per session (stop earlier if all critical gaps addressed)
- Allow user to signal completion with "done", "stop", or "skip"
- If quota exhausted, report any remaining high-impact items
## Completion Report
After clarification session ends, provide:
```markdown
## Clarification Summary
**Questions asked:** X
**Questions answered:** Y
**Issue updated:** #$ISSUE_NUMBER
**Coverage by Category:**
| Category | Status | Notes |
|----------|--------|-------|
| Functional Scope | Clear/Partial/Missing | ... |
| Domain Model | Clear/Partial/Missing | ... |
| ... | ... | ... |
**Next Steps:**
- [Suggested action based on coverage]
- [Any remaining ambiguities to address]
- [Ready to proceed with implementation? Yes/No]
```
## Important Rules
- NEVER ask trivial or stylistic questions that don't affect implementation
- NEVER speculate about tech stack unless blocking functional clarity
- ALWAYS respect "done"/"stop" signals
- ALWAYS update the issue incrementally after each answer to prevent data loss
- ALWAYS provide reasoning for recommended options in multiple-choice questions
- Keep questions focused and actionable
- Prioritize questions by implementation impact
## Workflow Summary
1. Fetch issue with `gh issue view` → extract title and body
2. Analyze against 9-category taxonomy → identify ambiguities
3. Generate up to 5 high-impact clarification questions
4. Use `AskUserQuestion` tool → collect structured responses
5. Write clarifications to temp file → update issue with `gh issue edit --body-file`
6. Validate for consistency and contradictions
7. Provide coverage summary and next steps
Proceed with clarifying the issue following these guidelines.