issue-management

$npx mdskill add remotion-dev/remotion/issue-management

Manages GitHub Issues 2.0 relationships using gh CLI

  • Solves the task of linking issues with parent, sub-issue, and dependency relationships
  • Relies on GitHub CLI (gh) with Issues 2.0 support from PR cli/cli#13057
  • Uses command-line flags to define relationships via issue numbers or URLs
  • Executes gh commands to create, edit, or inspect issue relationships directly
SKILL.md
.github/skills/issue-managementView on GitHub ↗
---
name: issue-management
description: "Manage GitHub Issues 2.0 relationships with gh CLI: parent issues, sub-issues, blocked-by, and blocking links."
---

Use this skill when creating, editing, inspecting, or removing relationships between GitHub issues.

These commands use the Issues 2.0 `gh issue` support added in GitHub CLI PR [cli/cli#13057](https://github.com/cli/cli/pull/13057). Because this feature is new, first confirm the installed `gh` supports it:

```bash
gh issue create --help | grep -E -- '--parent|--blocked-by|--blocking'
gh issue edit --help | grep -E -- '--parent|--add-sub-issue|--add-blocked-by|--add-blocking'
```

If those flags are missing, update `gh` before trying to manage issue relationships. Do not invent older commands.

## Issue reference format

Relationship flags accept issue numbers or issue URLs.

Use a number for an issue in the current repository:

```bash
gh issue edit 123 --parent 100
```

Use a full issue URL for a cross-repository relationship:

```bash
gh issue edit 123 --blocked-by https://github.com/remotion-dev/remotion/issues/456
```

Multiple related issues can be passed as a comma-separated list:

```bash
gh issue edit 123 --add-blocked-by 200,201
```

## Parent and sub-issue relationships

A sub-issue has exactly one parent issue.

To create a new issue directly under a parent:

```bash
gh issue create \
  --title 'Docs: Add issue management skill' \
  --body-file /tmp/remotion-issue-body.md \
  --parent 100
```

To set or change the parent of an existing child issue:

```bash
gh issue edit <child-number> --parent <parent-number-or-url>
```

To remove the parent from a child issue:

```bash
gh issue edit <child-number> --remove-parent
```

To manage children from the parent issue:

```bash
gh issue edit <parent-number> --add-sub-issue <child-number-or-url>
gh issue edit <parent-number> --remove-sub-issue <child-number-or-url>
```

`--add-sub-issue` moves the child to the new parent if it already has another parent. Do not use `--add-sub-issue` while editing multiple parent issues in one command; one child cannot be added ambiguously to several parents.

## Blocked-by and blocking relationships

Use `blocked-by` when the issue being edited is waiting on another issue.

```bash
# Issue 123 is blocked by issue 200.
gh issue edit 123 --add-blocked-by 200

# Remove that relationship.
gh issue edit 123 --remove-blocked-by 200
```

Use `blocking` when the issue being edited blocks another issue.

```bash
# Issue 123 is blocking issues 300 and 301.
gh issue edit 123 --add-blocking 300,301

# Remove one blocking relationship.
gh issue edit 123 --remove-blocking 300
```

Equivalent mental model:

```bash
gh issue edit A --add-blocking B
```

means the same relationship as:

```bash
gh issue edit B --add-blocked-by A
```

Choose the command based on which issue you are already editing.

When creating an issue, set relationships immediately:

```bash
gh issue create \
  --title 'Studio: Add timeline validation' \
  --body-file /tmp/remotion-issue-body.md \
  --blocked-by 200,201 \
  --blocking 300
```

## Inspecting relationships

Human-readable view shows parent, sub-issues, blocked-by, and blocking metadata when present:

```bash
gh issue view <number>
```

Raw non-TTY output includes stable relationship lines:

```bash
gh issue view <number> | grep -E '^(parent|sub-issues|sub-issues-completed|blocked-by|blocking):'
```

For scripts, request the JSON fields explicitly:

```bash
gh issue view <number> \
  --json parent,subIssues,subIssuesSummary,blockedBy,blocking
```

`subIssues`, `blockedBy`, and `blocking` are connection objects with `nodes` and `totalCount`. `subIssuesSummary` contains completion counts.

## Safe workflow

1. Create any new issue bodies with `--body-file`, not inline multiline shell strings.
2. Link the relationship using the appropriate `gh issue create` or `gh issue edit` flag.
3. Verify with `gh issue view <number>` or `gh issue view <number> --json parent,subIssues,subIssuesSummary,blockedBy,blocking`.
4. If editing a PR or parent issue body afterward, replace vague checklist text with concrete issue numbers.
More from remotion-dev/remotion