Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Full issue workflow — fetch details, research, plan solution, implement, and verify.
.claude/skills/joshukraine-resolve-issue/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-13 | ✓→✗ | ▼ Worse | 0% | 0% |
| case-19 | ✓→✗ | ▼ Worse | -20% | 0% |
| case-20 | ✓→✗ | ▼ Worse | 212% | 0% |
Take a GitHub issue through to a verified, committed implementation on a feature branch — stopping short of the PR.
bashgh issue view $ARGUMENTS # title, labels, body, and a `comments: N` count gh issue view $ARGUMENTS --comments # the thread — this one omits the body, so it is not a swap for the first
Read the comments, not just the body. The body is the oldest artifact on an issue; comments carry scope added later, sequencing against other issues, and decisions that supersede an acceptance criterion still written in the body. An issue filed months ago and worked today is the normal case, not the exception. Run the second call unconditionally — the comments: N count sits in a metadata header that is easy to skim past, and a zero-comment issue costs one wasted call.
Right-size the ceremony to the issue:
When unsure which applies, treat it as complex and ask.
Check git branch --show-current first:
<prefix>/gh-$ARGUMENTS-…) — reuse it, do not create a second branch. This includes re-entering this step inside an autopilot fan-out worktree.git switch -c <prefix>/gh-$ARGUMENTS-<short-description>The prefix comes from the issue's type label. If the project defines its own branch convention, that wins.
| Type label | Prefix | | --- | --- | | feat | feat/ | | fix | fix/ | | chore | chore/ | | docs | docs/ | | test | test/ |
No type label? Bug fixes are fix/, new functionality feat/, everything else chore/.
Commit each working component rather than everything at the end — typically 3–8 commits for an issue, each one working code.
Never reference the issue number in a commit message. Issues close when the PR merges, so the closing keyword belongs in the PR description, not the commits.
Run the project's full test suite and confirm no regressions. Do not proceed until it passes.
Then check off the acceptance criteria the work satisfied. Round-trip through a file rather than a shell variable — issue bodies routinely contain backticks and $(...), and a file keeps them out of shell parsing entirely:
bashgh issue view $ARGUMENTS --json body --jq '.body' > <scratchpad>/issue-body.md # edit that file: flip `- [ ]` to `- [x]` for the criteria now satisfied gh issue edit $ARGUMENTS --body-file <scratchpad>/issue-body.md
Check off only what the work actually satisfied. If a criterion was superseded by a comment, say so in the summary rather than silently ticking or skipping it.
Summarize what changed: files touched, commits made, test status, and which acceptance criteria are now met. Then stop and ask.
Recommend /simplify first for anything non-trivial, then /create-pr — it infers the issue number from the branch name.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→fail | 4,563 | 5,607 | +23% | 1 | 1 | 0% | 149 | 1,096 | +636% | 0 | 0 | — |
case-01 | fail→fail | 4,977 | 5,479 | +10% | 1 | 1 | 0% | 143 | 929 | +550% | 0 | 0 | — |
case-02 | fail→fail | 4,190 | 57,915 | +1282% | 1 | 1 | 0% | 180 | 1,093 | +507% | 0 | 0 | — |
case-04 | fail→fail | 5,544 | 2,286 | -59% | 1 | 1 | 0% | 800 | 1,160 | +45% | 0 | 0 | — |
case-05 | fail→fail | 5,944 | 7,033 | +18% | 1 | 1 | 0% | 1,031 | 1,226 | +19% | 0 | 0 | — |
case-06 | pass→pass | 4,692 | 2,412 | -49% | 1 | 1 | 0% | 693 | 1,091 | +57% | 0 | 0 | — |
case-07 | pass→pass | 3,117 | 1,929 | -38% | 1 | 1 | 0% | 439 | 1,035 | +136% | 0 | 0 | — |
case-08 | pass→pass | 3,633 | 2,187 | -40% | 1 | 1 | 0% | 563 | 1,067 | +90% | 0 | 0 | — |
case-09 | pass→pass | 9,475 | 2,838 | -70% | 1 | 1 | 0% | 1,384 | 1,056 | -24% | 0 | 0 | — |
case-10 | pass→pass | 7,472 | 1,925 | -74% | 1 | 1 | 0% | 1,173 | 1,117 | -5% | 0 | 0 | — |
case-11 | fail→pass | 7,238 | 2,543 | -65% | 1 | 1 | 0% | 1,254 | 1,121 | -11% | 0 | 0 | — |
case-12 | pass→pass | 11,359 | 2,195 | -81% | 1 | 1 | 0% | 1,627 | 1,114 | -32% | 0 | 0 | — |
case-13 | pass→fail | 8,708 | 9,553 | +10% | 1 | 1 | 0% | 1,314 | 1,318 | +0% | 0 | 0 | — |
case-14 | pass→pass | 8,072 | 3,662 | -55% | 1 | 1 | 0% | 1,371 | 1,394 | +2% | 0 | 0 | — |
case-15 | pass→pass | 7,748 | 7,449 | -4% | 1 | 1 | 0% | 1,317 | 1,123 | -15% | 0 | 0 | — |
case-16 | fail→pass | 12,145 | 3,785 | -69% | 1 | 1 | 0% | 1,880 | 1,396 | -26% | 0 | 0 | — |
case-17 | pass→pass | 7,447 | 4,143 | -44% | 1 | 1 | 0% | 1,219 | 1,447 | +19% | 0 | 0 | — |
case-18 | pass→pass | 11,419 | 3,235 | -72% | 1 | 1 | 0% | 1,693 | 1,286 | -24% | 0 | 0 | — |
case-19 | pass→fail | 10,783 | 10,554 | -2% | 1 | 1 | 0% | 1,637 | 1,316 | -20% | 0 | 0 | — |
case-20 | pass→fail | 3,014 | 7,900 | +162% | 1 | 1 | 0% | 442 | 1,379 | +212% | 0 | 0 | — |
case-21 | pass→fail | 2,802 | 4,983 | +78% | 1 | 1 | 0% | 384 | 997 | +160% | 0 | 0 | — |
case-22 | pass→fail | 6,900 | 5,013 | -27% | 1 | 1 | 0% | 1,193 | 992 | -17% | 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. 22 cases were attempted, and 13 counted toward the lift figure. The other 9 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 -14 percentage points is the difference between those two pass rates over the 13 comparable cases. 5 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.
Other measured skills in the registry, with their headline benchmark lift.