All skills
github avatar

/github-issues

@5c41b09 official
by githubgithub/awesome-copilot40k stars
5,040

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, manage repository labels, 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 start date", "create a label", "rename a label", "list repo labels", "link issues", "add dependency", "blocked by", "blocking", or any GitHub issue management task.

Use this Skill: https://skilld.dev/gh/github/awesome-copilot/github-issues

This session only. Nothing lands on disk.

referencessub-issues.md

≈930 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Sub-Issues and Parent Issues

Sub-issues let you break down work into hierarchical tasks. Each parent issue can have up to 100 sub-issues, nested up to 8 levels deep. Sub-issues can span repositories within the same owner.

Recommended Workflow

The simplest way to create a sub-issue is two steps: create the issue, then link it.

# Step 1: Create the issue and capture its numeric ID
ISSUE_ID=$(gh api repos/{owner}/{repo}/issues \
  -X POST \
  -f title="Sub-task title" \
  -f body="Description" \
  --jq '.id')

# Step 2: Link it as a sub-issue of the parent
# IMPORTANT: sub_issue_id must be an integer. Use --input (not -f) to send JSON.
echo "{\"sub_issue_id\": $ISSUE_ID}" | gh api repos/{owner}/{repo}/issues/{parent_number}/sub_issues -X POST --input -

Why --input instead of -f? The gh api -f flag sends all values as strings, but the API requires sub_issue_id as an integer. Using -f sub_issue_id=12345 will return a 422 error.

Alternatively, use GraphQL createIssue with parentIssueId to do it in one step (see GraphQL section below).

Using MCP tools

List sub-issues: Call mcp__github__issue_read with method: "get_sub_issues", owner, repo, and issue_number.

Create an issue as a sub-issue: There is no MCP tool for creating sub-issues directly. Use the workflow above or GraphQL.

Using REST API

List sub-issues:

gh api repos/{owner}/{repo}/issues/{issue_number}/sub_issues

Get parent issue:

gh api repos/{owner}/{repo}/issues/{issue_number}/parent

Add an existing issue as a sub-issue:

# sub_issue_id is the numeric issue ID (not the issue number)
# Get it from the .id field when creating or fetching an issue
echo '{"sub_issue_id": 12345}' | gh api repos/{owner}/{repo}/issues/{parent_number}/sub_issues -X POST --input -

To move a sub-issue that already has a parent, add "replace_parent": true to the JSON body.

Remove a sub-issue:

echo '{"sub_issue_id": 12345}' | gh api repos/{owner}/{repo}/issues/{parent_number}/sub_issue -X DELETE --input -

Reprioritize a sub-issue:

echo '{"sub_issue_id": 6, "after_id": 5}' | gh api repos/{owner}/{repo}/issues/{parent_number}/sub_issues/priority -X PATCH --input -

Use after_id or before_id to position the sub-issue relative to another.

Using GraphQL

Read parent and sub-issues:

{
  repository(owner: "OWNER", name: "REPO") {
    issue(number: 123) {
      parent { number title }
      subIssues(first: 50) {
        nodes { number title state }
      }
      subIssuesSummary { total completed percentCompleted }
    }
  }
}

Add a sub-issue:

mutation {
  addSubIssue(input: {
    issueId: "PARENT_NODE_ID"
    subIssueId: "CHILD_NODE_ID"
  }) {
    issue { id }
    subIssue { id number title }
  }
}

You can also use subIssueUrl instead of subIssueId (pass the issue's HTML URL). Add replaceParent: true to move a sub-issue from another parent.

Create an issue directly as a sub-issue:

mutation {
  createIssue(input: {
    repositoryId: "REPO_NODE_ID"
    title: "Implement login validation"
    parentIssueId: "PARENT_NODE_ID"
  }) {
    issue { id number }
  }
}

Remove a sub-issue:

mutation {
  removeSubIssue(input: {
    issueId: "PARENT_NODE_ID"
    subIssueId: "CHILD_NODE_ID"
  }) {
    issue { id }
  }
}

Reprioritize a sub-issue:

mutation {
  reprioritizeSubIssue(input: {
    issueId: "PARENT_NODE_ID"
    subIssueId: "CHILD_NODE_ID"
    afterId: "OTHER_CHILD_NODE_ID"
  }) {
    issue { id }
  }
}

Use afterId or beforeId to position relative to another sub-issue.

Source: SKILL.md on GitHub

2 warnings16d5 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    This skill enables management of GitHub issues, labels, projects, and milestones through the GitHub CLI and MCP server. It is safe for its intended use as a developer tool, despite the inherent surface for indirect prompt injection when processing GitHub content.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: MEDIUM · 1 issue

  • Runlayer6mo

    3/9 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 5c41b09. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 19 hours ago.

Activeupdated last month
  • MCP
  • github
  • issues
  • bug-tracking
  • task-management
  • rest-api
  • graphql
  • workflow-automation

README badge

README badge for github/awesome-copilot/github-issues

Manage GitHub issues using MCP tools and `gh api` commands: create, update, search, and organize issues with labels, assignees, milestones, and issue types. Handles bug reports, feature requests, tasks, sub-issues, dependencies, and project board operations across GitHub repositories.

Generated from the current SKILL.md.

Does this skill work with GitHub's REST API or only MCP tools?
It uses both. Read operations (listing, searching, reading issues) go through MCP tools. Write operations (creating, updating, closing issues) use the GitHub CLI (`gh api`) because the MCP server doesn't support writes yet.
Can I set issue types when creating an issue?
Yes, using `gh api` with the `-f type=` flag. The `gh issue create` CLI does not support the `--type` flag, so you must use the REST API directly.
Does this skill support custom issue fields like dates and priority?
Yes, custom fields are available through the REST API, but they are documented separately in the skill's extended capabilities. The basic workflow focuses on core fields like title, body, labels, and assignees.
Can I link issues or set up blocking/dependency relationships?
Yes, the skill supports linking issues and tracking blocked-by/blocking relationships, but these operations are documented in separate reference files within the skill.

Generated from the current SKILL.md. These answers refresh after source changes.