with one click
issues-create
// Use when breaking a plan, spec, or PRD into independently-grabbable GitHub issues as vertical-slice tracer bullets. Each issue is a thin end-to-end slice verified on its own.
// Use when breaking a plan, spec, or PRD into independently-grabbable GitHub issues as vertical-slice tracer bullets. Each issue is a thin end-to-end slice verified on its own.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | issues-create |
| description | Use when breaking a plan, spec, or PRD into independently-grabbable GitHub issues as vertical-slice tracer bullets. Each issue is a thin end-to-end slice verified on its own. |
| disable-model-invocation | true |
| metadata | {"upstream":"mattpocock/skills/engineering/to-issues","adapted-date":"2026-04-28"} |
Break a plan into independently-grabbable GitHub issues using vertical slices (tracer bullets).
Work from whatever is already in the conversation context. If the user passes a GitHub issue number or URL as an argument, fetch it with gh issue view <number> (with comments).
CONTEXT.md runs automatically when the skill loads — output replaces the line below:
cat CONTEXT.md 2>/dev/null || trueIf content is present above, use its vocabulary in issue titles and descriptions. If you have not already explored the codebase, do so to understand the current state of the code.
Break the plan into tracer bullet issues. Each issue is a thin vertical slice that cuts through ALL integration layers end-to-end, NOT a horizontal slice of one layer.
Slices may be HITL or AFK:
Prefer AFK over HITL where possible.
Vertical slice rules:
Present the proposed breakdown as a numbered list. For each slice, show:
Ask the user:
Iterate until the user approves the breakdown.
Pick a queue label of the form ralph(<short-name>) (e.g. ralph(auth-system)). This label is what ralph-loop uses to find issues belonging to this work — without it, the loop can't see the queue. Create the label once if it doesn't exist:
gh label create "ralph(<short-name>)" --color FBCA04 --description "Ralph loop task queue" 2>/dev/null || true
For each approved slice, create a GitHub issue using gh issue create --label "ralph(<short-name>)". Use the issue body template below.
Create issues in dependency order (blockers first) so you can reference real issue numbers in the "Blocked by" field.
## Parent
#<parent-issue-number> (if the source was a GitHub issue, otherwise omit)
## What to build
A concise description of this vertical slice. Describe the end-to-end behavior, not layer-by-layer implementation.
## Acceptance criteria
- [ ] Criterion 1
- [ ] Criterion 2
- [ ] Criterion 3
## Blocked by
- Blocked by #<issue-number> (if any)
Or "None - can start immediately" if no blockers.
Do NOT close or modify any parent issue.