一键导入
gh-issues
Create, read, update, and link GitHub Issues as story artifacts throughout the story lifecycle. Use when managing issues for stories.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create, read, update, and link GitHub Issues as story artifacts throughout the story lifecycle. Use when managing issues for stories.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
MAPLE AI Development Squad — install the full skill set for multi-agent development workflows: pipeline-runner, tdd-workflow, playwright-cli, github-cli, mermaid-diagrams, and more. Designed for Claude Code, OpenCode, and GitHub Copilot.
Universal dispatcher: run a named taffy workflow (.claude/taffy/<name>.yaml), a skill (/skill-name), or a sub-agent (@agent-name). Falls back to skills.sh registry when a skill is not found locally. Tracks all runs in .claude/state/maple.json so the maple TUI shows live progress.
Universal dispatcher: run a named taffy workflow (.claude/taffy/<name>.yaml), a skill (/skill-name), or a sub-agent (@agent-name). Falls back to skills.sh registry when a skill is not found locally. Tracks all runs in .claude/state/maple.json so the maple TUI shows live progress.
Bootstrap and sync GitHub labels and milestones idempotently. Use when setting up a new repository or syncing label definitions.
Manage GitHub Projects v2 board: add issues, update field values, and query board state. Use when managing project boards.
Manage GitHub Projects v2 board: add issues, update field values, and query board state. Use when managing project boards.
| name | gh-issues |
| description | Create, read, update, and link GitHub Issues as story artifacts throughout the story lifecycle. Use when managing issues for stories. |
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.
| Field | Source | Example |
|---|---|---|
title | story frontmatter | "User can reset password" |
body_file | story file path | docs/stories/auth-reset-0001.md |
labels | story frontmatter + phase | "type:feature,priority:high,phase:discover" |
milestone | project.config.yaml | "v1.0" |
assignee | orchestrator context | "@me" |
issue_number | previously created issue | 42 |
| Field | Description |
|---|---|
issue_number | integer, use for all subsequent operations |
issue_url | full GitHub URL for logging |
issue_node_id | GraphQL node ID, needed for Projects v2 card add |
# 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'])")
type:* taxonomy from gh-labels-milestones — type:bug
for a fix/patch, type:feature for a feature/minor/major (also type:docs /
type:refactor / type:chore as fitting). Never bug/enhancement.vX.Y.0 chosen by the granularity gate
in gh-labels-milestones, not the static project.milestone. When
github.milestone_granularity is none, omit the --milestone flag
entirely (passing an empty milestone errors).gh issue view {issue_number} --json number,title,state,labels,body
# 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"
gh issue comment {issue_number} \
--body "{message}"
Comment conventions by role:
| Event | Template |
|---|---|
| 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 with final validation summary
gh issue close {issue_number} \
--comment "All acceptance criteria passing. Validation: {summary}"
# 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
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"
| Condition | Action |
|---|---|
gh not authenticated | Stop. Output: gh auth login required. Do not retry. |
| Issue already exists with same title | Check with gh issue list --search "{title}" --state all. Skip create if found; return existing number. |
| Label does not exist | Create label first via gh label create. See gh-labels-milestones skill. |
| Milestone not found | Create milestone first: gh api repos/{owner}/{repo}/milestones -f title="{name}". |
| Rate limit hit | Wait 60 seconds, retry once. If second attempt fails, stop and log. |
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}