Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create, triage, label, assign GitHub issues via gh or REST.
.claude/skills/hezaohezao-github-issues/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-02 | ✓→✗ | ▼ Worse | 126% | 0% |
| case-18 | ✓→✗ | ▼ Worse | 24% | 0% |
| case-03 | ✓→✓ | = Same ✓ | -37% | 0% |
Create, search, triage, and manage GitHub issues. Each section shows gh first, then curl fallback.
github-auth skill)bashif command -v gh &>/dev/null && gh auth status &>/dev/null; then AUTH="gh" else AUTH="curl" fi REMOTE_URL=$(git remote get-url origin) OWNER_REPO=$(echo "$REMOTE_URL" | sed -E 's|.*github\.com[:/]||; s|\.git$||') OWNER=$(echo "$OWNER_REPO" | cut -d/ -f1) REPO=$(echo "$OWNER_REPO" | cut -d/ -f2)
bash# With gh gh issue list --state open --limit 20 gh issue view 42 # With curl curl -s "https://api.github.com/repos/$OWNER/$REPO/issues?state=open&per_page=20" | python3 -c " import sys, json for i in json.load(sys.stdin): print(f'#{i[\"number\"]:4d} [{i[\"state\"]:6s}] {i[\"title\"][:60]}') "
bash# With gh (interactive editor) gh issue create # With gh (inline) gh issue create --title "Bug: login fails on Safari" --body "Description..." # With curl curl -s -X POST \ -H "Authorization: token $GITHUB_TOKEN" \ https://api.github.com/repos/$OWNER/$REPO/issues \ -d '{"title":"Bug: login fails","body":"Description","labels":["bug"]}'
bash# Search within repo gh issue list --search "login error" --state all # Search across GitHub gh search issues "is:issue is:open repo:$OWNER/$REPO label:bug" # With curl (GitHub Search API) curl -s "https://api.github.com/search/issues?q=repo:$OWNER/$REPO+label:bug+state:open" | python3 -c " import sys, json r = json.load(sys.stdin) print(f'Total: {r[\"total_count\"]}') for i in r['items']: print(f'#{i[\"number\"]:4d} {i[\"title\"][:60]}') "
bash# List labels gh label list # Create label gh label create "priority-high" --color "D73A4A" --description "High priority" # Add label to issue gh issue edit 42 --add-label "priority-high" # With curl curl -s -X POST \ -H "Authorization: token $GITHUB_TOKEN" \ https://api.github.com/repos/$OWNER/$REPO/issues/42/labels \ -d '{"labels":["priority-high"]}'
bash# With gh gh issue edit 42 --add-assignee username # With curl curl -s -X POST \ -H "Authorization: token $GITHUB_TOKEN" \ https://api.github.com/repos/$OWNER/$REPO/issues/42/assignees \ -d '{"assignees":["username"]}'
bash# With gh gh issue comment 42 --body "Can you reproduce with the latest version?" # With curl curl -s -X POST \ -H "Authorization: token $GITHUB_TOKEN" \ https://api.github.com/repos/$OWNER/$REPO/issues/42/comments \ -d '{"body":"Can you reproduce with the latest version?"}'
bash# With gh gh issue close 42 gh issue reopen 42 # With curl curl -s -X PATCH \ -H "Authorization: token $GITHUB_TOKEN" \ https://api.github.com/repos/$OWNER/$REPO/issues/42 \ -d '{"state":"closed"}'
bash# List untriaged issues (no labels) gh issue list --state open --search "no:label" # Bulk add labels for num in 10 11 12 13; do gh issue edit $num --add-label "triaged" done # List issues assigned to you gh issue list --assignee @me --state open
with pull_request field: if 'pull_request' not in i.
use token.
# (e.g. D73A4A).| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,900 | 5,670 | -64% | 1 | 1 | 0% | 1,732 | 2,264 | +31% | 0 | 0 | — |
case-02 | pass→fail | 4,597 | 5,691 | +24% | 1 | 1 | 0% | 643 | 1,453 | +126% | 0 | 0 | — |
case-03 | pass→pass | 18,206 | 7,284 | -60% | 1 | 1 | 0% | 3,798 | 2,382 | -37% | 0 | 0 | — |
case-04 | fail→fail | 3,958 | 7,191 | +82% | 1 | 1 | 0% | 758 | 1,968 | +160% | 0 | 0 | — |
case-05 | fail→pass | 10,531 | 4,984 | -53% | 1 | 1 | 0% | 1,793 | 1,942 | +8% | 0 | 0 | — |
case-06 | pass→pass | 8,569 | 10,714 | +25% | 1 | 1 | 0% | 1,416 | 2,041 | +44% | 0 | 0 | — |
case-07 | pass→pass | 10,232 | 6,373 | -38% | 1 | 1 | 0% | 1,579 | 2,239 | +42% | 0 | 0 | — |
case-08 | pass→pass | 8,780 | 7,249 | -17% | 1 | 1 | 0% | 1,748 | 2,599 | +49% | 0 | 0 | — |
case-09 | pass→pass | 10,696 | 15,915 | +49% | 1 | 1 | 0% | 1,103 | 1,800 | +63% | 0 | 0 | — |
case-10 | pass→pass | 25,907 | 2,810 | -89% | 1 | 1 | 0% | 1,206 | 1,582 | +31% | 0 | 0 | — |
case-11 | pass→pass | 7,721 | 3,852 | -50% | 1 | 1 | 0% | 1,178 | 1,682 | +43% | 0 | 0 | — |
case-12 | pass→pass | 6,731 | 3,179 | -53% | 1 | 1 | 0% | 1,006 | 1,661 | +65% | 0 | 0 | — |
case-13 | pass→pass | 2,659 | 2,968 | +12% | 1 | 1 | 0% | 304 | 1,509 | +396% | 0 | 0 | — |
case-14 | pass→pass | 7,827 | 6,791 | -13% | 1 | 1 | 0% | 1,109 | 2,104 | +90% | 0 | 0 | — |
case-15 | fail→fail | 10,008 | 5,486 | -45% | 1 | 1 | 0% | 1,730 | 2,158 | +25% | 0 | 0 | — |
case-16 | fail→pass | 11,278 | 5,923 | -47% | 1 | 1 | 0% | 1,947 | 2,081 | +7% | 0 | 0 | — |
case-17 | pass→pass | 13,689 | 6,034 | -56% | 1 | 1 | 0% | 2,229 | 2,256 | +1% | 0 | 0 | — |
case-18 | pass→fail | 10,980 | 7,160 | -35% | 1 | 1 | 0% | 1,934 | 2,389 | +24% | 0 | 0 | — |
case-19 | pass→pass | 6,643 | 3,022 | -55% | 1 | 1 | 0% | 988 | 1,613 | +63% | 0 | 0 | — |
case-20 | pass→pass | 6,688 | 3,359 | -50% | 1 | 1 | 0% | 1,195 | 1,715 | +44% | 0 | 0 | — |
case-21 | pass→pass | 6,658 | 3,819 | -43% | 1 | 1 | 0% | 1,114 | 1,726 | +55% | 0 | 0 | — |
case-22 | pass→pass | 3,442 | 2,528 | -27% | 1 | 1 | 0% | 424 | 1,502 | +254% | 0 | 0 | — |
case-23 | pass→pass | 9,669 | 6,629 | -31% | 1 | 1 | 0% | 1,442 | 1,480 | +3% | 0 | 0 | — |
case-24 | fail→fail | 13,379 | 11,398 | -15% | 1 | 1 | 0% | 2,169 | 3,246 | +50% | 0 | 0 | — |
case-25 | pass→pass | 9,886 | 17,119 | +73% | 1 | 1 | 0% | 1,544 | 2,913 | +89% | 0 | 0 | — |
case-26 | pass→pass | 8,863 | 7,612 | -14% | 1 | 1 | 0% | 1,486 | 2,235 | +50% | 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. 26 cases were attempted, and 25 counted toward the lift figure. The other 1 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 0 percentage points is the difference between those two pass rates over the 25 comparable cases. 2 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.