github-issues skill
✓ VerifiedCreate, update, query, and comment on issues using GitHub CLI, GitLab CLI, or MCP servers with support for templates and custom fields.
- GitHub stars
- 8
- Files
- 4
- Last commit
- Nov 11, 2026
- License
- MIT
- Allowed tools
- 3
What does the github-issues skill do?
github-issues is an agent skill. Create, update, query, and comment on issues using GitHub CLI, GitLab CLI, or MCP servers with support for templates and custom fields.
Summary generated from the skill's SKILL.md.
About the github-issues skill
Managing bug reports, feature requests, and task details across GitHub and GitLab is what this skill enables. Developers can use it to create, update, query, and comment on issues while maintaining strict adherence to project templates and organizational standards. The skill primarily relies on the GitHub CLI (gh) or GitLab CLI (glab) to perform standard operations, ensuring that the agent uses the native interface for most tasks.
When working with structured metadata like priority, effort, or custom dates, the skill uses a specific precedence logic. It first attempts to use connected GitHub MCP server tools, such as list_issue_fields or issue_write, to handle typed fields. If those are unavailable, it falls back to direct REST API calls via gh api. This allows for sophisticated management of organization-level fields and sub-issue hierarchies that standard CLI commands might not support directly. It is designed to handle complex workflows like linking sub-issues via node IDs or proposing priority values based on issue content.
What an agent can do with it
- 1File a structured bug reportCreate a new GitHub issue using an existing repository template and automatically assign it to the current user.
- 2Manage complex issue hierarchiesOrganize a large task by creating multiple related issues and linking them as sub-issues to a parent issue.
- 3Update structured metadata fieldsSet the priority and effort levels for an existing issue using organization-defined custom fields.
- 4Search and filter issuesFind specific issues across a repository by searching for keywords or filtering by custom field values.
Written from the skill's SKILL.md. Every use case is checked against a quote from it.
How to install the github-issues skill
Each command copies the skill folder into the client's skills directory. Restart the client or start a new session to load it.Install the github-issues skill in Plugin
/plugin marketplace add tartinerlabs/skills /plugin install workflow@tartinerlabs
Install the github-issues skill in Claude Code
~/.claude/skills/github-issues/SKILL.md
$ npx degit tartinerlabs/skills/plugins/workflow/skills/github-issues ~/.claude/skills/github-issuesInstall the github-issues skill in Claude Code (project)
.claude/skills/github-issues/SKILL.md
$ npx degit tartinerlabs/skills/plugins/workflow/skills/github-issues .claude/skills/github-issuesInstall the github-issues skill in Codex
~/.agents/skills/github-issues/SKILL.md
$ npx degit tartinerlabs/skills/plugins/workflow/skills/github-issues ~/.agents/skills/github-issuesInstall the github-issues skill in Gemini CLI
~/.gemini/skills/github-issues/SKILL.md
$ npx degit tartinerlabs/skills/plugins/workflow/skills/github-issues ~/.gemini/skills/github-issuesInstall the github-issues skill in Claude.ai
npx degit tartinerlabs/skills/plugins/workflow/skills/github-issues github-issues && zip -r github-issues.zip github-issues # claude.ai → Customize → Skills → + → Create skill → Upload a skill → github-issues.zip
Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the scripts before you let an agent run them. How checks work
- Source repository linked and reachabletartinerlabs/skills/plugins/workflow/skills/github-issues is public and reachablegithub.com/tartinerlabs/skills/tree/HEAD/plugins/workflow/sk ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit 2026-11-11github.com/tartinerlabs/skills/commits ↗Pass
- No download-and-run or credential theft in scriptsNo scripts in the skill folderPass
- No hidden instructions in SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/tartinerlabs/skills/blob/HEAD/plugins/workflow/sk ↗Pass
- Pre-approved tools are scopedPre-approved: Read, Bash(gh:*), Bash(glab:*)github.com/tartinerlabs/skills/blob/HEAD/plugins/workflow/sk ↗Pass
- SKILL.md follows the Agent Skills formatValid name and description; says when to use it; 76 linesgithub.com/tartinerlabs/skills/blob/HEAD/plugins/workflow/sk ↗Pass
SKILL.md
View on GitHubYou 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
Files in this skill
4github-issues skill questions
How do I install the github-issues skill in Claude Code?
Run npx degit tartinerlabs/skills/plugins/workflow/skills/github-issues ~/.claude/skills/github-issues. Claude Code loads skills from ~/.claude/skills (all projects) or .claude/skills (one project) and uses a skill when its description matches the task.
Which clients can use the github-issues skill?
Any client that reads the Agent Skills format: Claude Code, Codex, Gemini CLI and claude.ai (upload as a ZIP). Scripts in the skill run only where the client allows code execution.
How does the skill handle structured issue fields like priority or effort?
Since there is no native CLI subcommand for structured fields, the skill uses GitHub MCP server tools or the GitHub REST API via gh api to manage them.
Can this skill manage sub-issues?
Yes, it can list, add, remove, and reorder sub-issues using their node IDs.
Does it support GitLab?
Yes, it supports GitLab via the glab CLI, though some GitHub-specific features like organization issue types and sub-issues are skipped on GitLab.