Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create GitHub issues using repo templates (feature, bug, spike)
.claude/skills/nudgebee-create-issue/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 207% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 141% | 0% |
| case-09 | ✓→✗ | ▼ Worse | 176% | 0% |
| case-12 | ✓→✗ | ▼ Worse | 80% | 0% |
Create a GitHub issue using the repository's issue templates. Optional argument: $ARGUMENTS (issue type: feature, bug, or spike).
| Type | Template | Title Format | Labels | |------|----------|--------------|--------| | feature | FEATURE-REQUEST.yml | [REQUEST] - <title> | — | | bug | BUG-REPORT.yml | [BUG] - <title> | bug | | spike | SPIKE-REQUEST.yml | [REQUEST] - <title> | — |
Before creating a new issue, search for existing issues (open or closed) that may already cover this work or could be a parent for it:
bash# Search for related issues using keywords from the user's description gh issue list --search "<keywords>" --state all --limit 10 --json number,title,state,labels,url
Also check the current sprint for related work:
bash# List current sprint issues from the project board gh project item-list 1 --owner nudgebee --format json --limit 200 | jq '[.items[] | select(.status != "Done") | {number: .content.number, title: .content.title, type: .content.type, status: .status}]' 2>/dev/null | head -50
If related issues exist, present them to the user:
I found these potentially related issues:
- #1234 [open] - <title>
- #5678 [closed] - <title>
Options:
1. Link to an existing issue (add a comment or reference)
2. Create a new issue anyway
3. Skip issue creationOnly proceed to create a new issue if the user confirms none of the existing issues cover the work.
If $ARGUMENTS specifies a type (feature, bug, spike), use that. Otherwise, ask the user:
What type of issue would you like to create?
- feature: New feature or enhancement request
- bug: Report a bug or defect
- spike: Exploratory work to answer a questionAsk or infer from context. The web form is the source of truth for this schema — these mirror .github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml one for one.
#<n>Part of #123 · Blocked by #123 · Blocks #123 · Related to #123If you cannot answer 5, 6 or 7 from context, ask rather than inventing plausible text — a fabricated customer or metric survives into prioritisation as if it were evidence.
Ask or infer from context:
Ask or infer from context:
Based on the type, format the issue body in markdown:
The web form is the source of truth for this schema. GitHub renders .github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml as ### headings whose text matches each field's label. Match them exactly so form-filed and skill-filed issues parse the same.
markdown### Function {function} ### Who asked for this {source} ### Summary {summary} ### What this unblocks {unblocks} ### How we will know it worked {success} ### What we are not doing instead {tradeoff} ### Basic Example {basic_example or "None"} ### Drawbacks {drawbacks or "None"} ### Unresolved questions {unresolved_questions or "None"} ### Parent / epic {parent or "None"} ### Related work {related or "None"}
The web form is the source of truth for this schema. GitHub renders .github/ISSUE_TEMPLATE/BUG-REPORT.yml as ### headings whose text matches each field's label exactly. Emit the same headings, in the same order, with the same capitalisation, so an issue filed by this skill is indistinguishable from one filed through the form. Use ###, not ##, and do not rename the headings.
Omit any optional heading you have nothing for rather than writing "N/A" — an empty section is worse than an absent one.
markdown### Environment {Exactly one of: Production | QA / Test | Dev | Local only | Not sure} ### Description {description} ### Impact - **Who is affected**: {all tenants / specific feature users / dev-only / etc.} - **Severity**: {what the user can't do, or what they see incorrectly} - **Since when**: {date or version, "unknown" if not known} ### Link {URL to the affected page, dashboard or conversation. Omit the heading if none.} ### Reproduction steps {reproduction_steps} ### Logs {logs — omit the heading if none} ### Screenshots {screenshots — omit the heading if none} ### Client details {Browser / OS, e.g. "Chrome 128 / macOS". UI bugs only — omit for backend bugs.}
Environment, Description, Impact and Reproduction steps are required by the form: always emit all four, writing "unknown" where you must. Environment must be one of the five literal dropdown options above, spelled exactly — any other string will not match what the form produces.
If you change the form, change this block in the same PR. The two drifting apart is what made half the bug corpus unparseable in the first place.
markdown## Summary {summary} ## Objectives {objectives} ## Result Summary {result_summary} ## Next Steps {next_steps} ## Unresolved Questions {unresolved_questions or "None"} ## Reference Issues {reference_issues or "None"}
Show the user the formatted issue:
Title: {title_with_prefix}
Labels: {labels}
Body:
---
{body}
---
Create this issue? (yes/no)Use GitHub CLI to create the issue:
bashgh issue create --title "{title}" --body "$(cat <<'EOF' {body} EOF )" --label "{labels}" # Only if labels exist
After creating the issue, automatically add it to the project board and set iteration to "current":
bash# Get the issue number from the created issue URL ISSUE_NUMBER={extracted_issue_number} # Add issue to the project (project number 1 = "Nudgebee" main project) gh project item-add 1 --owner nudgebee --url "https://github.com/nudgebee/nudgebee/issues/${ISSUE_NUMBER}" # Get the item ID for the newly added issue ITEM_ID=$(gh project item-list 1 --owner nudgebee --format json --limit 1000 | jq -r ".items[] | select(.content.number == ${ISSUE_NUMBER}) | .id") # Set the iteration field to current iteration # Iteration field ID: PVTIF_lADOCG7t1c4ATt4GzgMmEFQ gh project item-edit --project-id PVT_kwDOCG7t1c4ATt4G --id "${ITEM_ID}" --field-id PVTIF_lADOCG7t1c4ATt4GzgMmEFQ --iteration-id "@current"
Note: If the project commands fail (e.g., project not found or permissions), the issue is still created successfully. The iteration assignment is a best-effort addition.
Issue created: {url}
Title: {title}
Type: {type}
Number: #{number}
Iteration: Current (if project assignment succeeded)If the user is working on code changes and asks to create an issue, try to infer:
Example: After implementing the new/recurring issues feature, suggest:
Would you like to create a feature request issue to track this work?
Title: [REQUEST] - Add new vs recurring issue tracking to Kubernetes events| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,705 | 5,903 | -23% | 1 | 1 | 0% | 678 | 2,819 | +316% | 0 | 0 | — |
case-02 | fail→fail | 11,766 | 7,246 | -38% | 1 | 1 | 0% | 1,903 | 2,914 | +53% | 0 | 0 | — |
case-03 | fail→fail | 6,156 | 9,056 | +47% | 1 | 1 | 0% | 65 | 2,825 | +4246% | 0 | 0 | — |
case-04 | fail→fail | 8,743 | 6,473 | -26% | 1 | 1 | 0% | 1,422 | 3,069 | +116% | 0 | 0 | — |
case-05 | fail→fail | 9,158 | 6,874 | -25% | 1 | 1 | 0% | 1,712 | 3,121 | +82% | 0 | 0 | — |
case-06 | fail→fail | 9,709 | 10,271 | +6% | 1 | 1 | 0% | 1,635 | 2,685 | +64% | 0 | 0 | — |
case-07 | fail→fail | 6,565 | 5,360 | -18% | 1 | 1 | 0% | 1,077 | 2,738 | +154% | 0 | 0 | — |
case-08 | fail→pass | 13,099 | 24,347 | +86% | 1 | 1 | 0% | 2,165 | 6,654 | +207% | 0 | 0 | — |
case-09 | pass→fail | 6,707 | 6,044 | -10% | 1 | 1 | 0% | 1,011 | 2,793 | +176% | 0 | 0 | — |
case-10 | fail→fail | 8,559 | 9,500 | +11% | 1 | 1 | 0% | 1,410 | 2,894 | +105% | 0 | 0 | — |
case-11 | pass→pass | 41,963 | 14,256 | -66% | 1 | 1 | 0% | 2,010 | 5,105 | +154% | 0 | 0 | — |
case-12 | pass→fail | 8,891 | 8,747 | -2% | 1 | 1 | 0% | 1,592 | 2,860 | +80% | 0 | 0 | — |
case-13 | fail→pass | 21,211 | 3,674 | -83% | 1 | 1 | 0% | 4,450 | 3,231 | -27% | 0 | 0 | — |
case-14 | fail→pass | 9,490 | 19,330 | +104% | 1 | 1 | 0% | 1,637 | 3,937 | +141% | 0 | 0 | — |
case-15 | fail→fail | 10,888 | 6,060 | -44% | 1 | 1 | 0% | 1,735 | 2,871 | +65% | 0 | 0 | — |
case-16 | pass→fail | 8,674 | 11,450 | +32% | 1 | 1 | 0% | 1,483 | 2,740 | +85% | 0 | 0 | — |
case-17 | fail→fail | 11,534 | 4,728 | -59% | 1 | 1 | 0% | 2,003 | 2,744 | +37% | 0 | 0 | — |
case-18 | pass→fail | 13,730 | 4,713 | -66% | 1 | 1 | 0% | 2,584 | 2,713 | +5% | 0 | 0 | — |
case-19 | pass→pass | 4,089 | 33,680 | +724% | 1 | 1 | 0% | 788 | 3,451 | +338% | 0 | 0 | — |
case-20 | fail→fail | 10,821 | 7,716 | -29% | 1 | 1 | 0% | 1,672 | 2,946 | +76% | 0 | 0 | — |
case-21 | pass→fail | 3,494 | 7,096 | +103% | 1 | 1 | 0% | 634 | 3,083 | +386% | 0 | 0 | — |
case-22 | fail→fail | 7,172 | 5,357 | -25% | 1 | 1 | 0% | 503 | 2,813 | +459% | 0 | 0 | — |
case-23 | fail→fail | 5,810 | 10,378 | +79% | 1 | 1 | 0% | 946 | 4,399 | +365% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 6 counted toward the lift figure. The other 17 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -9 percentage points is the difference between those two pass rates over the 6 comparable cases. 7 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/22/2026 | +32% |
Other measured skills in the registry, with their headline benchmark lift.