git-issue-manage

v2026.09.24

Transfer, pin, lock, or open a dev branch from a GitHub issue. Use when moving an issue between repos, pinning or locking it, or bulk-editing custom fields.

GitHub
Install command
npx skhub add laurigates/git-issue-manage
Markdown
SKILL.md

When to Use This Skill

Use this skill when...Use the alternative when...
Transferring, pinning, locking, or bulk-editing GitHub issuesUse github-issue-writing to compose a single issue body well
Creating a development branch from an issue (gh issue develop)Use git-branch-pr-workflow for general branch + PR design
Updating custom issue fields (priority, severity, custom selects) in bulkUse github-labels for label-only operations on issues and PRs
Performing bulk operations across many issue numbers in one commandUse git-triage to evaluate issues and PRs by completion evidence and CI state

Context

  • Git remotes: !git remote -v

Open issues are fetched during execution (requires a configured git remote).

Parameters

Parse $ARGUMENTS[0] as the operation, remaining args as issue numbers and options.

Issue references accept bare numbers, #N, or full GitHub issue URLs (https://github.com/<owner>/<repo>/issues/<N>): strip a leading #, and for a URL extract the trailing /issues/<N> number (require trailing digits — a /pull/<N> is not an issue). When a URL's <owner>/<repo> differs from the current remote, pass -R <owner>/<repo> to the gh calls for that issue.

OperationSyntaxDescription
transfertransfer <N> <target-repo>Transfer issue to another repository
pinpin <N...>Pin issues to repository (max 3)
unpinunpin <N...>Unpin issues
locklock <N...> [--reason <reason>]Lock issue discussions
unlockunlock <N...>Unlock issue discussions
developdevelop <N> [--branch <name>] [--checkout]Create branch from issue
bulkbulk <sub-op> <N...> [options]Bulk operations on multiple issues
fieldsfields <N> [--set <field>=<value>] [--list]Manage custom issue fields

Lock reasons: off-topic, too heated, resolved, spam

Bulk sub-operations: label, assign, close, reopen

When to Use

Use this skill when...Use X instead when...
Transferring issues between reposCreating new issues (github-issue-writing)
Pinning/unpinning important issuesImplementing issue fixes (git:issue)
Locking resolved discussionsManaging sub-issues/deps (git:issue-hierarchy)
Creating dev branches from issuesSearching for issues (github-issue-search)
Bulk labeling/assigning/closingAuto-detecting related issues (github-issue-autodetect)
Setting custom field values

Execution

Execute the requested issue management operation.

Step 1: Parse Operation and Validate

Parse the operation from $ARGUMENTS[0]. Validate that specified issue numbers exist:

gh issue view $N --json number,title,state 2>/dev/null

If any issue is not found, report it and skip that issue.

Step 2: Execute Operation

Transfer

Transfer an issue to another repository within the same organization or owner.

gh issue transfer $N $TARGET_REPO

Prerequisites:

  • Target repo must exist and you must have write access
  • Both repos must be owned by the same user/org (or target accepts transfers)

Report the new issue URL after transfer.

Pin / Unpin

Pin important issues to the top of the issues list (maximum 3 pinned per repo).

# Pin
gh issue pin $N

# Unpin
gh issue unpin $N

If pinning would exceed the 3-pin limit, report which issues are currently pinned and ask which to unpin.

Lock / Unlock

Lock issue threads to prevent further comments.

# Lock with reason
gh issue lock $N --reason resolved

# Lock without reason
gh issue lock $N

# Unlock
gh issue unlock $N
ReasonWhen to use
resolvedIssue is fixed, no further discussion needed
off-topicDiscussion has drifted from the issue
too heatedDiscussion has become unproductive
spamIssue thread contains spam

Develop

Create a development branch linked to the issue.

# Create branch and switch to it locally
gh issue develop $N --checkout

# Create branch with custom name
gh issue develop $N --name $BRANCH_NAME --checkout

# Create branch without checkout
gh issue develop $N

The branch name defaults to {issue-number}-{issue-title-slug}. The branch is automatically linked to the issue on GitHub.

Bulk Operations

Apply the same operation to multiple issues at once.

Bulk label:

# Pre-check: create any missing labels before applying
for LABEL in $(echo "$LABELS" | tr ',' '\n'); do
  if ! gh label list --search "$LABEL" --json name | jq -e ".[] | select(.name==\"$LABEL\")" >/dev/null 2>&1; then
    echo "Label '$LABEL' not found — skipping (create it first with: gh label create \"$LABEL\")"
    LABELS=$(echo "$LABELS" | sed "s/,$LABEL//;s/$LABEL,//;s/^$LABEL$//")
  fi
done
for N in $ISSUE_NUMBERS; do
  [ -n "$LABELS" ] && gh issue edit $N --add-label "$LABELS"
done

Bulk assign:

for N in $ISSUE_NUMBERS; do
  gh issue edit $N --add-assignee "$USERS"
done

Bulk close:

for N in $ISSUE_NUMBERS; do
  gh issue close $N
done

Bulk reopen:

for N in $ISSUE_NUMBERS; do
  gh issue reopen $N
done

Report success/failure count after bulk operations.

Custom Fields

Manage custom issue fields (requires org-level issue field configuration).

List available fields:

# Get org name from repo
ORG=$(gh repo view --json owner --jq '.owner.login')

# List fields
gh api orgs/$ORG/issue-fields --jq '.[] | "\(.id): \(.name) (\(.type))"'

Get field values for an issue:

gh api repos/$OWNER/$REPO/issues/$N/issue-field-values \
  --jq '.[] | "\(.field.name): \(.value)"'

Set a field value:

FIELD_ID=$(gh api orgs/$ORG/issue-fields --jq '.[] | select(.name == "$FIELD_NAME") | .id')

gh api repos/$OWNER/$REPO/issues/$N/issue-field-values \
  -X POST -f field_id=$FIELD_ID -f value="$VALUE"

If the repo is not in an organization, report: "Custom issue fields require an organization-level repository."

Step 3: Report Results

OperationReport
transferNew issue URL in target repo
pin/unpinConfirmation, current pinned issues list
lock/unlockConfirmation with lock reason
developBranch name and URL, checkout status
bulkSuccess/failure count per issue
fieldsField values table or confirmation of update

Error Handling

ErrorCauseAction
unknown command "develop"Older gh CLI versionReport: "gh issue develop requires gh CLI 2.30+. Update with: gh upgrade"
403 on transferNo write access to targetReport permission requirement
422 on pinAlready 3 pinned issuesList current pins, ask which to replace
404 on issue-fieldsOrg doesn't have custom fieldsReport: "Custom fields not configured for this organization"

Agentic Optimizations

ContextCommand
Transfer issuegh issue transfer N target-repo
Pin issuegh issue pin N
Lock issuegh issue lock N --reason resolved
Create dev branchgh issue develop N --checkout
Bulk closeLoop: gh issue close N for each N
List custom fieldsgh api orgs/{org}/issue-fields --jq '.[].name'
Get field valuesgh api repos/{o}/{r}/issues/N/issue-field-values

See Also

  • git:issue-hierarchy skill for sub-issues and dependencies
  • github-issue-writing skill for creating new issues
  • git:issue skill for implementing/processing issues
  • gh-cli-agentic skill for raw API command patterns
  • REFERENCE.md for custom fields API details
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

git-plugin/skills/git-issue-manage

Default branch

main

Latest commit

1668324

Tree SHA

b2d4cc3