SKILL: gh-issues

SkillDev tools

Create, read, update, and link GitHub Issues as story artifacts throughout the story lifecycle. Use when managing issues for stories.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the SKILL: gh-issues skill

What this skill tells your AI

The instructions your AI receives, as published by kinncj/heimdall in .claude/skills/gh-issues/SKILL.md and read by ahel’s review.

Purpose

Create, read, update, and link GitHub Issues as first-class story artifacts. Agents use this skill to manage issue lifecycle — from PO story creation through QA closure — without human intervention.

Inputs

FieldSourceExample
titlestory frontmatter"User can reset password"
body_filestory file pathdocs/stories/auth-reset-0001.md
labelsstory frontmatter + phase"type:feature,priority:high,phase:discover"
milestoneproject.config.yaml"v1.0"
assigneeorchestrator context"@me"
issue_numberpreviously created issue42

Outputs

FieldDescription
issue_numberinteger, use for all subsequent operations
issue_urlfull GitHub URL for logging
issue_node_idGraphQL node ID, needed for Projects v2 card add

Create an Issue

# Capture issue number and URL
RESULT=$(gh issue create \
  --title "{title}" \
  --body-file "{body_file}" \
  --label "{labels}" \
  --milestone "{milestone}" \
  --json number,url,id)

ISSUE_NUMBER=$(echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['number'])")
ISSUE_URL=$(echo "$RESULT"    | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['url'])")
ISSUE_NODE=$(echo "$RESULT"   | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['id'])")

View an Issue

gh issue view {issue_number} --json number,title,state,labels,body

Edit Labels and Assignee

# Add label, remove old phase label
gh issue edit {issue_number} \
  --add-label "phase:architect" \
  --remove-label "phase:discover"

# Assign to current actor
gh issue edit {issue_number} --add-assignee "@me"

Add a Comment

gh issue comment {issue_number} \
  --body "{message}"

Comment conventions by role:

EventTemplate
Phase start"Phase {N} {PHASE_NAME}: starting. Artifact target: {path}"
Phase complete"Phase {N} {PHASE_NAME}: complete. Artifacts: {path}"
TDD red"RED: Failing test at {test_path} — {failure_message}"
TDD green"GREEN: {test_count} tests passing."
Blocked"BLOCKED: {agent} failed 3x on {task}. Human intervention required."

Close an Issue

# Close with final validation summary
gh issue close {issue_number} \
  --comment "All acceptance criteria passing. Validation: {summary}"

List Issues

# All open issues for current phase
gh issue list --label "phase:implement" --state open --json number,title,labels

# Blocked issues
gh issue list --label "blocked" --state open

Link Issues (parent / blocks)

GitHub Issues has no native parent field — use body references and labels:

# In the child issue body, add:
# "Closes #{parent_number}" → auto-closes parent when child closes
# "Part of #{epic_issue_number}"

# For blocking relationships, comment on the blocked issue:
gh issue comment {blocked_number} \
  --body "Blocked by #{blocker_number} — {reason}"
gh issue edit {blocked_number} --add-label "blocked"

Failure Modes

ConditionAction
gh not authenticatedStop. Output: gh auth login required. Do not retry.
Issue already exists with same titleCheck with gh issue list --search "{title}" --state all. Skip create if found; return existing number.
Label does not existCreate label first via gh label create. See gh-labels-milestones skill.
Milestone not foundCreate milestone first: gh api repos/{owner}/{repo}/milestones -f title="{name}".
Rate limit hitWait 60 seconds, retry once. If second attempt fails, stop and log.

Logging

Always log after every gh issue mutation:

[gh-issues] CREATE  #42  "User can reset password"  labels=[type:feature,priority:high]
[gh-issues] COMMENT #42  phase:implement start
[gh-issues] CLOSE   #42  all criteria passing

Format: [gh-issues] {ACTION} #{number} {description}

Signals

GitHub stars
66
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
gh-issues-kinncj
Source
github.com/kinncj/heimdall