From oxgh
Creates GitHub issues via gh CLI/API, sets types (Bug/Feature/Task), links subissues, copies parent milestones/project fields. For repo issue management.
npx claudepluginhub oxidian/cc-plugins --plugin oxghThis skill is limited to using the following tools:
- Current repo: !`gh repo view --json nameWithOwner --jq '.nameWithOwner'`
Creates GitLab issues via glab CLI with type labels, links child issues to parents, copies parent labels/milestones. For GitLab project workflows.
Triages GitHub issues by viewing content, determining and setting project fields (component, priority, size), issue type (Bug/Feature/Task), and milestone.
Manages GitHub issues: create/update/read via gh api and MCP tools; supports labels, assignees, types, projects, workflows, dependencies.
Share bugs, ideas, or general feedback.
gh repo view --json nameWithOwner --jq '.nameWithOwner'Issue types (Bug, Feature, Task) are NOT labels - they're a separate GitHub feature. The gh CLI doesn't support them directly yet, so use the REST API:
gh api -X PATCH repos/{owner}/{repo}/issues/{number} --field type=Bug
Valid types: Bug, Feature, Task
To make an issue a subissue of a parent, get the numeric ID (not the issue number) and POST it:
gh api repos/{owner}/{repo}/issues/{child_number} --jq '.id'
# Returns: 3860943964
echo '{"sub_issue_id": 3860943964}' | gh api -X POST repos/{owner}/{repo}/issues/{parent_number}/sub_issues --input -
The sub_issues endpoint requires the numeric ID as an integer in JSON, hence piping through --input -.
When creating a subissue, it should have the same milestone and project triage as its parent.
gh api repos/{owner}/{repo}/issues/{parent_number} --jq '.milestone.number // empty'
First get the parent's project item ID:
gh project item-list {project_number} --owner {owner} --limit 300 --format json | jq '.items[] | select(.content.number == PARENT_NUMBER) | {id, component: .component, priority: .priority, size: .size}'
gh api -X PATCH repos/{owner}/{repo}/issues/{number} --field milestone={milestone-number}
First get the new issue's project item ID (issue must be added to project first):
gh project item-list {project_number} --owner {owner} --limit 300 --format json | jq '.items[] | select(.content.number == NEW_ISSUE_NUMBER) | .id'
Then copy each field using the option IDs from context:
gh project item-edit --id {item-id} --project-id {project-id} --field-id {field-id} --single-select-option-id {option-id}
Based on the user's request:
gh issue create --title "..." --body "..."