About github-issues
A skill for managing GitHub and GitLab issues through their CLIs, with guidance for templates, issue fields, and parent-child issue structure. It is intended for users automating issue creation, updates, searches, and comments.
Key features
- 01Create, update, query, and comment on issues
- 02Use gh or glab based on the remote host
- 03Follow repository issue templates
- 04Handle issue fields and sub-issues
- 05Validate titles, labels, and assignees
Use cases
- 01Create an issue that follows repository conventions
- 02Update issue metadata and parent-child links
- 03Search issues across repositories
- 04Comment after fetching issue context
MCP support
Uses connected GitHub MCP server tools as a fallback for issue fields when no native CLI command exists; otherwise it documents gh api as a fallback.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ tartinerlabs/ skills --skill github-issuesAfter installing, type/github-issuesin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
rules/issue-title.mdno-checklists.mdtemplate-adherence.mdDetails
From the project READMEYou create, update, query, and comment on GitHub (or GitLab) issues.
Rules Overview
| Rule | Impact | File |
|---|---|---|
| Issue title | HIGH | rules/issue-title.md |
| Template adherence | MEDIUM | rules/template-adherence.md |
| No checklists | MEDIUM | rules/no-checklists.md |
CLI vs MCP Precedence
Use the CLI (gh/glab) for every operation it natively supports — it is the default interface throughout this skill. For operations with no native CLI subcommand (currently: issue fields — structured priority/effort/date/custom metadata on issues), fall back in this order:
- GitHub MCP server tools, if such a server is connected. In Claude Code its tools are typically named
mcp__github__*(list_issue_fields,issue_read,issue_write), but the name depends on how the server was registered — detect by capability, not exact ID. Never assume the server is available. This skill does not pre-approve any MCP tools — the host prompts for permission, so the user decides whether to allow them. gh apiagainst the REST API, sending-H "X-GitHub-Api-Version: 2026-03-10":- List fields:
gh api orgs/{org}/issue-fields(needsread:org) — returns each field's numericid,name,data_type(text,number,date,single_select,multi_select), andoptions[].name - Read an issue's values:
gh api repos/{owner}/{repo}/issues/{number}/issue-field-values - Add or update values without touching others:
POSTto the same path with--input -and a body of{"issue_field_values":[{"field_id":1,"value":"High"}]}. Single-select takes the option name, multi-select an array of names, number a number, dateYYYY-MM-DD PUTto the same path replaces all field values on the issue — avoid it unless that is the intent- Clear one field:
DELETE repos/{owner}/{repo}/issues/{number}/issue-field-values/{field_id}(404 if the field has no value)
- List fields:
- Graceful skip: complete the rest of the operation, report which fields could not be set, and note that connecting the GitHub MCP server unlocks typed issue-field support.
Workflow
- Determine action: create, update, query, or comment
- Detect the remote host from
git remote get-url origin(github.com → gh, gitlab.com → glab; default GitHub) and use that CLI throughout. Get owner/repo (or group/project) info. GitHub-only features — organisation issue types, issue fields, sub-issues, and.github/ISSUE_TEMPLATE/— do not exist on GitLab: on GitLab skip the issue-type, issue-field, and sub-issue steps and use.gitlab/issue_templates/plus description checklists instead - Check for issue templates in the host's conventional location: on GitHub
.github/ISSUE_TEMPLATE/or.github/; on GitLab.gitlab/issue_templates/ - List available organisation issue types (fails for user-owned repos — expected, proceed without)
- List available issue fields (organisation-level, inherited by repositories) via the CLI vs MCP precedence above — no native CLI subcommand exists, so use the MCP server or
gh api(fails for user-owned repos — expected, proceed without). Organisations get four defaults: Priority (single-select: Urgent, High, Medium, Low), Effort (single-select: High, Medium, Low), Start date, and Target date. Treat them as likely-present but still discover them at runtime — an organisation may have renamed, removed, or added options - For creation or update:
- For updates: fetch the current issue first
- When issue types are available, select the most appropriate type (e.g. Bug for defects, Feature for new functionality, Task for general work)
- When the user specifies field values (priority, effort, dates, custom), set them via the CLI vs MCP precedence above — values must match the field's declared type (single-select option name, text, number,
YYYY-MM-DDdate) - When Priority and Effort exist but the user did not specify them, propose a value for each from the issue's content — severity and blast radius for Priority, expected scope of the change for Effort — and say what you picked. Leave a field unset rather than guessing when the issue is too vague to judge; do not set dates unless the user asks
- Generate title following
rules/issue-title.md - Generate body following template if found (see
rules/template-adherence.md), otherwise use clear structured format - For creation: get the current authenticated user and include in assignees
- If the user specifies a parent issue, link the created/updated issue as a sub-issue (use the issue's node ID, not its number)
- For parent/sub-issue management:
- To list sub-issues: get the parent issue's sub-issues
- To add a sub-issue: pass the parent issue number and the child's node ID
- To remove a sub-issue: unlink the child from the parent
- To reorder sub-issues: reprioritise with
after_idorbefore_id - When creating multiple related issues, prefer structuring them as a parent with sub-issues rather than flat independent issues
- For queries:
- Fetch a specific issue by number
- Inspect sub-issue hierarchy on a parent issue
- Search issues for filters, keywords, and cross-repo lookups
- Filter by issue-field values (MCP
field_filtersor the API; no native CLI equivalent — degrade gracefully per the precedence above) - List repository issues
- For comments:
- Fetch issue context first when needed
- Add the comment to the issue
- Display a summary with issue links and what changed
Validation
- For titles: follow
rules/issue-title.md - For body with template: follow
rules/template-adherence.md - For labels: only use labels that already exist in the repository
- For fields: only set fields that already exist in the organisation or repository; never invent field names or single-select options
- For assignees: only assign valid repository collaborators