--- 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 --parent ``` To remove the parent from a child issue: ```bash gh issue edit --remove-parent ``` To manage children from the parent issue: ```bash gh issue edit --add-sub-issue gh issue edit --remove-sub-issue ``` `--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 ``` Raw non-TTY output includes stable relationship lines: ```bash gh issue view | grep -E '^(parent|sub-issues|sub-issues-completed|blocked-by|blocking):' ``` For scripts, request the JSON fields explicitly: ```bash gh issue view \ --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 ` or `gh issue view --json parent,subIssues,subIssuesSummary,blockedBy,blocking`. 4. If editing a PR or parent issue body afterward, replace vague checklist text with concrete issue numbers.