Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when creating, searching, updating, or managing GitHub issues via CLI. Triggers: "issue", "create issue", "gh issue", "task tracking", "context", "handoff", "resume task", "session context", "save progress", "active tasks", "in-progress", "my tasks", "open issues". Covers: gh commands, bulk operations, JSON/jq, search filters, issue-to-PR workflow, AI session context storage, task workflow with labels.
.claude/skills/serejaris-gh-issues/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 363% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 101% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 110% | 0% |
Efficient GitHub Issues management via gh CLI with AI session context storage.
| Task | Command | |------|---------| | Create issue | gh issue create -t "Title" -b "Body" -l bug -a @me | | Active tasks | gh issue list -l in-progress -s open | | List open bugs | gh issue list -l bug -s open | | View as JSON | gh issue view 123 --json number,title,body,labels,state | | Close with comment | gh issue close 123 -c "Fixed in #456" | | Edit labels | gh issue edit 123 --add-label priority:high | | Start work | gh issue edit 45 --add-label in-progress | | Create branch | gh issue develop 123 --checkout | | Load context | gh issue view 45 --json comments --jq '.comments[] \| select(.body \| contains("AI-CONTEXT"))' |
Always use --json for parsing. Fields: number, title, body, state, labels, assignees, milestone, author, createdAt, updatedAt, comments, url.
bashgh issue view 123 --json number,title,labels,state gh issue list --json number,title,labels --jq '.[] | select(.labels[].name == "bug")' gh issue list -l bug --json number --jq '.[].number'
bashgh issue list --search "is:open author:username" gh issue list --search "created:>=2026-01-01 created:<=2026-01-07" gh issue list --search "label:bug label:priority:high" gh issue list --search "is:open -label:wontfix" gh issue list --search "milestone:v2.0"
bashgh issue edit 10 15 20 --add-label "priority:high" gh issue close 10 15 20 -c "Duplicate of #5" gh issue list -l needs-triage --json number --jq '.[].number' | \ xargs -I{} gh issue edit {} --add-label reviewed
bashgh issue develop 123 --checkout # Create branch from issue git add . && git commit -m "fix: #123" # Commit with reference gh pr create --fill # Create PR (auto-links) gh issue close 123 -c "Fixed in PR #456" # Close when merged
bashgh api repos/:owner/:repo/milestones --jq '.[].title' gh issue edit 123 -m "v2.0"
Store session context in GitHub issues for seamless task handoff.
bash# Get AI context from issue comments gh issue view 45 --json comments --jq ' .comments[] | select(.body | contains("AI-CONTEXT:START")) | .body ' # Get comment ID for updates gh issue view 45 --json comments --jq ' .comments[] | select(.body | contains("AI-CONTEXT:START")) | .id '
bash# Create new context comment gh issue comment 45 --body-file .ai-context.md # Update existing (replace COMMENT_ID) gh api repos/:owner/:repo/issues/comments/COMMENT_ID \ --method PATCH -f body="$(cat .ai-context.md)"
See references/context-template.md for full template. Minimal version:
markdown<!-- AI-CONTEXT:START --> ## Context | IN_PROGRESS **Files:** `file.py:45`, `other.py:120` **Done:** task1, task2 **Next:** next task **Resume:** One-line summary for cold start <!-- AI-CONTEXT:END -->
Manage issue lifecycle with labels.
| Label | Meaning | |-------|---------| | backlog | In queue | | in-progress | Active work | | blocked | Blocked | | review | Needs review |
bash# My active issues gh issue list -l in-progress -s open # All my assigned issues gh issue list --assignee @me -s open # Issues with context gh issue list -s open --json number,title,labels --jq ' .[] | select(.labels[].name == "in-progress") | "#\(.number): \(.title)" '
bash# Mark as in-progress gh issue edit 45 --add-label in-progress --remove-label backlog # View issue + load context gh issue view 45 --json number,title,body,comments --jq '{ number, title, body, context: (.comments[] | select(.body | contains("AI-CONTEXT")) | .body) // "No context" }'
bash# Mark as blocked gh issue edit 45 --add-label blocked --remove-label in-progress # Add blocking comment gh issue comment 45 --body "Blocked: waiting for API access"
bash# Close with comment gh issue close 45 -c "Done in commit abc123" # Or close via PR (auto-closes if PR body contains "Fixes #45")
bashgh issue create -t "Simplify bot flow" -b "## Problem Bot stopped converting. Current flow is complex. ## Reference Simple flow example from competitor. ## Tasks - [ ] Analyze current flow - [ ] Create new diagram - [ ] Implement"
bash# 1. View issue with context gh issue view 45 --json number,title,body,comments --jq '{ number, title, body, context: (.comments[] | select(.body | contains("AI-CONTEXT")) | .body) // "No context" }' # 2. Create branch gh issue develop 45 --checkout # 3. Work...
bash# Create context file cat > .ai-context.md << 'EOF' <!-- AI-CONTEXT:START --> ## AI Session Context _Last updated: 2026-01-07 16:00_ ### Status **IN_PROGRESS** ### Progress - [x] Analyzed current flow - [ ] Create new diagram ### Key Files - `handlers/start.py:45-78` — start handler - `data/courses.yaml` — config ### Next Steps 1. Draw simplified flow 2. Implement changes ### Resume Context Simplifying bot flow. Analyzed current state. Next: create diagram. <!-- AI-CONTEXT:END --> EOF # Save to issue gh issue comment 45 --body-file .ai-context.md
bash# Load context CONTEXT=$(gh issue view 45 --json comments --jq ' .comments[] | select(.body | contains("AI-CONTEXT")) | .body ' 2>/dev/null) echo "$CONTEXT" # Continue from where you left off...
| Mistake | Fix | |---------|-----| | Missing --json | Always --json field1,field2 | | Loop instead of multi-arg | gh issue edit 1 2 3 | | Using grep on output | Use --jq | | Forgot -s all for closed | Default is open only | | {owner}/{repo} in API | Use :owner/:repo | | Duplicate context comments | Update existing, don't create new |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | pass→pass | 9,427 | 3,920 | -58% | 1 | 1 | 0% | 753 | 2,702 | +259% | 0 | 0 | — |
case-01 | fail→fail | 13,040 | 10,465 | -20% | 1 | 1 | 0% | 356 | 2,724 | +665% | 0 | 0 | — |
case-02 | fail→pass | 10,861 | 10,212 | -6% | 1 | 1 | 0% | 792 | 3,663 | +363% | 0 | 0 | — |
case-03 | fail→fail | 11,627 | 11,223 | -3% | 1 | 1 | 0% | 1,037 | 2,956 | +185% | 0 | 0 | — |
case-04 | fail→pass | 9,701 | 8,184 | -16% | 1 | 1 | 0% | 1,796 | 2,527 | +41% | 0 | 0 | — |
case-05 | fail→pass | 7,694 | 8,348 | +9% | 1 | 1 | 0% | 1,194 | 2,402 | +101% | 0 | 0 | — |
case-06 | pass→pass | 14,976 | 13,497 | -10% | 1 | 1 | 0% | 1,612 | 3,602 | +123% | 0 | 0 | — |
case-07 | pass→pass | 14,405 | 3,761 | -74% | 1 | 1 | 0% | 1,476 | 2,703 | +83% | 0 | 0 | — |
case-08 | pass→pass | 12,528 | 9,035 | -28% | 1 | 1 | 0% | 1,317 | 2,828 | +115% | 0 | 0 | — |
case-10 | pass→pass | 15,407 | 8,986 | -42% | 1 | 1 | 0% | 1,722 | 2,688 | +56% | 0 | 0 | — |
case-11 | pass→pass | 9,216 | 7,084 | -23% | 1 | 1 | 0% | 644 | 2,378 | +269% | 0 | 0 | — |
case-12 | fail→pass | 17,603 | 5,222 | -70% | 1 | 1 | 0% | 2,557 | 3,156 | +23% | 0 | 0 | — |
case-13 | pass→pass | 12,397 | 4,730 | -62% | 1 | 1 | 0% | 1,356 | 2,813 | +107% | 0 | 0 | — |
case-14 | pass→pass | 14,038 | 8,487 | -40% | 1 | 1 | 0% | 1,382 | 2,589 | +87% | 0 | 0 | — |
case-15 | pass→pass | 14,130 | 8,941 | -37% | 1 | 1 | 0% | 1,612 | 2,683 | +66% | 0 | 0 | — |
case-16 | fail→pass | 13,811 | 8,080 | -41% | 1 | 1 | 0% | 1,197 | 2,517 | +110% | 0 | 0 | — |
case-17 | pass→pass | 13,774 | 10,024 | -27% | 1 | 1 | 0% | 1,622 | 2,768 | +71% | 0 | 0 | — |
case-18 | pass→pass | 15,635 | 5,036 | -68% | 1 | 1 | 0% | 1,826 | 2,876 | +58% | 0 | 0 | — |
case-19 | fail→pass | 5,972 | 4,992 | -16% | 1 | 1 | 0% | 1,046 | 2,447 | +134% | 0 | 0 | — |
case-20 | pass→pass | 4,557 | 8,493 | +86% | 1 | 1 | 0% | 919 | 2,651 | +188% | 0 | 0 | — |
case-21 | pass→pass | 5,683 | 7,677 | +35% | 1 | 1 | 0% | 1,056 | 2,486 | +135% | 0 | 0 | — |
case-22 | pass→pass | 5,174 | 3,031 | -41% | 1 | 1 | 0% | 759 | 2,567 | +238% | 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 21 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 +27 percentage points is the difference between those two pass rates over the 21 comparable cases.
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.