Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create, update, and manage GitHub issues using MCP tools. Use this skill when users want to create bug reports, feature requests, or task issues, update existing issues, add labels/assignees/milestones, set issue fields (dates, priority, custom fields), set issue types, manage issue workflows, link issues, add dependencies, or track blocked-by/blocking relationships. Triggers on requests like "create an issue", "file a bug", "request a feature", "update issue X", "set the priority", "set the sta
.claude/skills/github-issues/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 254% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 221% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 119% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 44% | 0% |
Manage GitHub issues using the @modelcontextprotocol/server-github MCP server.
| Tool | Purpose | |------|---------| | mcp__github__issue_read | Read issue details, sub-issues, comments, labels (methods: get, get_comments, get_sub_issues, get_labels) | | mcp__github__list_issues | List and filter repository issues by state, labels, date | | mcp__github__search_issues | Search issues across repos using GitHub search syntax | | mcp__github__projects_list | List projects, project fields, project items, status updates | | mcp__github__projects_get | Get details of a project, field, item, or status update | | mcp__github__projects_write | Add/update/delete project items, create status updates |
| Tool | Purpose | |------|---------| | mcp__github__issue_write | Create or update an issue (methods: create, update). Supports title, body, type, labels, assignees, milestone, and issue fields | | mcp__github__add_issue_comment | Add a comment or a reaction to an issue | | mcp__github__sub_issue_write | Add, remove, or reprioritize a sub-issue |
gh api performs the same writes and is the form used in the examples below. Reach for it when the MCP server is not connected, or when you need a REST field the MCP tools do not expose.
| Operation | Command | |-----------|---------| | Create issue | gh api repos/{owner}/{repo}/issues -X POST -f title=... -f body=... | | Update issue | gh api repos/{owner}/{repo}/issues/{number} -X PATCH -f title=... -f state=... | | Add comment | gh api repos/{owner}/{repo}/issues/{number}/comments -X POST -f body=... | | Close issue | gh api repos/{owner}/{repo}/issues/{number} -X PATCH -f state=closed | | Set issue type | Include -f type=Bug in the create call (REST API only, not supported by gh issue create CLI) |
Note: gh issue create works for basic issue creation but does not support the --type flag. Use gh api when you need to set issue types.
gh api for writesUse gh api to create issues. This supports all parameters including issue types.
bashgh api repos/{owner}/{repo}/issues \ -X POST \ -f title="Issue title" \ -f body="Issue body in markdown" \ -f type="Bug" \ --jq '{number, html_url}'
Add any of these flags to the gh api call:
-f type="Bug" # Issue type (Bug, Feature, Task, Epic, etc.)
-f 'labels[]=bug' # Labels (repeat for multiple)
-f 'assignees[]=username' # Assignees (repeat for multiple)
-f milestone=1 # Milestone numberQuote the whole name[]=value pair. [] is a glob pattern in zsh, the default shell on macOS, so an unquoted -f labels[]=bug never reaches gh:
zsh: no matches found: labels[]=bugIssue types are organization-level metadata. To discover available types, use:
bashgh api graphql -f query='{ organization(login: "ORG") { issueTypes(first: 10) { nodes { name } } } }' --jq '.data.organization.issueTypes.nodes[].name'
Prefer issue types over labels for categorization. When issue types are available (e.g., Bug, Feature, Task), use the type parameter instead of applying equivalent labels like bug or enhancement. Issue types are the canonical way to categorize issues on GitHub. Only fall back to labels when the org has no issue types configured.
[Bug]Login fails with SSO enabled (with type=Bug)Add dark mode support (with type=Feature)Add unit tests for auth module (with type=Task)Always use the templates in references/templates.md. Choose based on issue type:
| User Request | Template | |--------------|----------| | Bug, error, broken, not working | Bug Report | | Feature, enhancement, add, new | Feature Request | | Task, chore, refactor, update | Task |
Use gh api with PATCH:
bashgh api repos/{owner}/{repo}/issues/{number} \ -X PATCH \ -f state=closed \ -f title="Updated title" \ --jq '{number, html_url}'
Only include fields you want to change. Available fields: title, body, state (open/closed), labels, assignees, milestone.
User: "Create a bug issue - the login page crashes when using SSO"
Action:
bashgh api repos/github/awesome-copilot/issues \ -X POST \ -f title="Login page crashes when using SSO" \ -f type="Bug" \ -f body="## Description The login page crashes when users attempt to authenticate using SSO. ## Steps to Reproduce 1. Navigate to login page 2. Click 'Sign in with SSO' 3. Page crashes ## Expected Behavior SSO authentication should complete and redirect to dashboard. ## Actual Behavior Page becomes unresponsive and displays error." \ --jq '{number, html_url}'
User: "Create a feature request for dark mode with high priority"
Action:
bashgh api repos/github/awesome-copilot/issues \ -X POST \ -f title="Add dark mode support" \ -f type="Feature" \ -f 'labels[]=high-priority' \ -f body="## Summary Add dark mode theme option for improved user experience and accessibility. ## Motivation - Reduces eye strain in low-light environments - Increasingly expected by users ## Proposed Solution Implement theme toggle with system preference detection. ## Acceptance Criteria - [ ] Toggle switch in settings - [ ] Persists user preference - [ ] Respects system preference by default" \ --jq '{number, html_url}'
Use these standard labels when applicable:
| Label | Use For | |-------|---------| | bug | Something isn't working | | enhancement | New feature or improvement | | documentation | Documentation updates | | good first issue | Good for newcomers | | help wanted | Extra attention needed | | question | Further information requested | | wontfix | Will not be addressed | | duplicate | Already exists | | high-priority | Urgent issues |
Related to #123The following features require REST or GraphQL APIs beyond the basic MCP tools. Each is documented in its own reference file so the agent only loads the knowledge it needs.
| Capability | When to use | Reference | |------------|-------------|-----------| | Advanced search | Complex queries with boolean logic, date ranges, cross-repo search, issue field filters (field.name:value) | references/search.md | | Sub-issues & parent issues | Breaking work into hierarchical tasks | references/sub-issues.md | | Milestones | Create, read, update, close, reopen, delete milestones and manage milestone issues | references/milestones.md | | Labels | Discover, create, rename, recolor, and delete repository labels; add or replace labels on an issue | references/labels.md | | Issue dependencies | Tracking blocked-by / blocking relationships | references/dependencies.md | | Issue types (advanced) | GraphQL operations beyond MCP list_issue_types / type param | references/issue-types.md | | Projects V2 | Project boards, progress reports, field management | references/projects.md | | Issue fields | Custom metadata: dates, priority, text, numbers (private preview) | references/issue-fields.md | | Images in issues | Embedding images in issue bodies and comments via CLI | references/images.md |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | fail→fail | 15,312 | 15,662 | +2% | 1 | 1 | 0% | 1,551 | 4,320 | +179% | 0 | 0 | — |
case-01 | fail→fail | 9,548 | 40,187 | +321% | 1 | 1 | 0% | 748 | 6,447 | +762% | 0 | 0 | — |
case-02 | fail→fail | 24,021 | 26,980 | +12% | 1 | 1 | 0% | 662 | 3,533 | +434% | 0 | 0 | — |
case-03 | fail→fail | 17,544 | 44,910 | +156% | 1 | 1 | 0% | 1,992 | 9,017 | +353% | 0 | 0 | — |
case-04 | fail→pass | 9,781 | 12,106 | +24% | 1 | 1 | 0% | 995 | 3,525 | +254% | 0 | 0 | — |
case-05 | fail→pass | 14,609 | 21,242 | +45% | 1 | 1 | 0% | 1,617 | 5,184 | +221% | 0 | 0 | — |
case-06 | fail→pass | 12,401 | 9,529 | -23% | 1 | 1 | 0% | 1,431 | 3,137 | +119% | 0 | 0 | — |
case-07 | pass→pass | 14,278 | 14,254 | -0% | 1 | 1 | 0% | 1,460 | 3,940 | +170% | 0 | 0 | — |
case-09 | pass→pass | 12,589 | 9,983 | -21% | 1 | 1 | 0% | 1,354 | 3,312 | +145% | 0 | 0 | — |
case-10 | fail→pass | 15,614 | 8,391 | -46% | 1 | 1 | 0% | 1,922 | 2,746 | +43% | 0 | 0 | — |
case-11 | fail→pass | 9,944 | 6,386 | -36% | 1 | 1 | 0% | 1,708 | 2,461 | +44% | 0 | 0 | — |
case-12 | fail→pass | 15,236 | 13,701 | -10% | 1 | 1 | 0% | 1,903 | 3,862 | +103% | 0 | 0 | — |
case-13 | fail→pass | 16,664 | 7,675 | -54% | 1 | 1 | 0% | 1,933 | 2,677 | +38% | 0 | 0 | — |
case-14 | fail→pass | 14,231 | 6,393 | -55% | 1 | 1 | 0% | 1,580 | 2,468 | +56% | 0 | 0 | — |
case-15 | fail→pass | 13,678 | 7,099 | -48% | 1 | 1 | 0% | 1,559 | 2,535 | +63% | 0 | 0 | — |
case-16 | fail→pass | 15,169 | 7,185 | -53% | 1 | 1 | 0% | 1,621 | 2,569 | +58% | 0 | 0 | — |
case-17 | fail→fail | 11,673 | 8,918 | -24% | 1 | 1 | 0% | 1,164 | 3,894 | +235% | 0 | 0 | — |
case-18 | pass→pass | 7,921 | 8,302 | +5% | 1 | 1 | 0% | 518 | 2,839 | +448% | 0 | 0 | — |
case-19 | pass→pass | 12,350 | 10,104 | -18% | 1 | 1 | 0% | 1,151 | 3,152 | +174% | 0 | 0 | — |
case-20 | pass→pass | 10,502 | 11,509 | +10% | 1 | 1 | 0% | 1,040 | 3,398 | +227% | 0 | 0 | — |
case-21 | pass→pass | 8,660 | 9,035 | +4% | 1 | 1 | 0% | 677 | 2,848 | +321% | 0 | 0 | — |
case-22 | fail→pass | 9,935 | 10,145 | +2% | 1 | 1 | 0% | 791 | 3,153 | +299% | 0 | 0 | — |
case-23 | pass→fail | 11,751 | 8,195 | -30% | 1 | 1 | 0% | 1,961 | 2,714 | +38% | 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 20 counted toward the lift figure. The other 3 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 +43 percentage points is the difference between those two pass rates over the 20 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.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/15/2026 | +36% |
| gemini-3.6-flash | verified | 7/24/2026 | +43% |
Other measured skills in the registry, with their headline benchmark lift.