Draft clear, actionable GitHub issues from a brief description, error message, or idea. Covers bug reports, feature requests, enhancements, and tasks.
Ask (or infer from context):
git remote get-url origin if in a git dir, otherwise ask)If the user gives you enough context, proceed without asking — draft and show for confirmation.
Use the appropriate template below. Fill every field; omit sections only if genuinely not applicable.
markdown
## Description
<!-- Clear, one-paragraph summary of the problem. -->
## Steps to Reproduce
1.
2.
3.
## Expected Behavior
<!-- What should have happened? -->
## Actual Behavior
<!-- What actually happened? Include error messages verbatim. -->
## Environment
- OS:
- Browser / Runtime / Version:
- Relevant config or dependencies:
## Logs / Screenshots
<!-- Paste relevant logs, stack traces, or attach screenshots. -->
## Additional Context
<!-- Anything else that might help: related issues, recent changes, workarounds tried. -->
markdown
## Problem / Motivation
<!-- What problem does this solve? Why does it matter? -->
## Proposed Solution
<!-- Describe the feature clearly. What would it look like? How would it work? -->
## Alternatives Considered
<!-- Other approaches you thought about and why you ruled them out. -->
## Acceptance Criteria
- [ ]
- [ ]
## Additional Context
<!-- Mockups, related issues, prior art, links. -->
markdown
## Current Behavior
<!-- What does it do now? -->
## Desired Behavior
<!-- What should it do instead? -->
## Why This Matters
<!-- Impact: who benefits, how much, how often? -->
## Suggested Implementation
<!-- Optional: any technical ideas or constraints. -->
markdown
## What needs to be done
<!-- Clear, specific description of the work. -->
## Why / Context
<!-- Why is this needed now? What does it unblock? -->
## Definition of Done
- [ ]
- [ ]
Title format by type:
TypePatternExampleBugBug: <what fails> on <where>``Bug: 500 on POST /login when payload missing fieldFeatureFeature: <capability> for <who/where>``Feature: CSV export for admin reportsEnhancementEnhance: <what> — <improvement>``Enhance: error messages — add field-level detailTaskTask: <verb> <thing>``Task: upgrade Stripe SDK to v16
Rules:
Recommend labels based on type and content:
SignalSuggested LabelsBugbug, needs-reproFeatureenhancement, feature-requestHigh impact / blockingpriority:highNeeds more infoneeds-infoGood for contributorsgood first issueSecuritysecurityPerformanceperformanceDocsdocumentation
Also suggest:
Show the complete draft:
text
**Title:** <title>
**Type:** Bug / Feature / Enhancement / Task
**Suggested labels:** bug, priority:high
**Suggested assignee:** (if known)
---
<full issue body>
---
Ask: "Does this look right? I can adjust the title, add details, or submit it directly."
Prerequisites for submission:
ghCLI (authenticated viagh auth login) — preferred pathGH_TOKENenv var — required for the curl API fallbackgit— used to detect the repo fromgit remote get-url originDrafting (Steps 1–5) works without any of these.
If the user says "submit", "create it", "go ahead", or similar:
bash
gh issue create \
--repo owner/repo \
--title "<title>" \
--body "<body>" \
--label "bug,priority:high" \
--assignee "@me"
gh isn't available)#bash
curl -s -X POST \
-H "Authorization: Bearer $GH_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/{owner}/{repo}/issues \
-d '{
"title": "<title>",
"body": "<body>",
"labels": ["bug"],
"assignees": []
}'
On success, output the issue URL. On error, show the response and offer to retry.
Before presenting the draft, verify:
Do:
#<number>Don't:
.github/ISSUE_TEMPLATE/ in your repo