skills/to-issues/SKILL.md
Break a plan, spec, or PRD into independently-grabbable GitHub issues using tracer-bullet vertical slices. Use when the user wants to convert a plan into issues, create implementation tickets, or break work into GitHub issues.
npx skillsauth add roborew/opencode to-issuesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Break work into independently-grabbable GitHub issues using vertical slices (tracer bullets). Primary path for targeted changes, debug fixes, and refactor slices — replaces local .plan artifacts in GitHub-first workflows.
docs/agents/issue-tracker.md and docs/agents/triage-labels.md when present (from setup-skills or setup-project)..plan file.Work from the plan artifact and conversation. If the user passed an issue URL or number, fetch it with gh issue view when using GitHub.
If titles should reflect real modules, skim the codebase. Use vocabulary from CONTEXT.md / CONTEXT-MAP.md and respect ADRs under docs/adr/.
Break the plan into tracer bullet issues. Each issue is a thin vertical slice through all integration layers end-to-end, not a horizontal layer-only ticket.
Present the breakdown as a numbered list. For each slice show:
Ask: granularity OK? Dependencies correct? Any merge/split? HITL/AFK correct?
Iterate until the user approves.
Publish in dependency order (blockers first) so "Blocked by" can cite real issue numbers.
Duplicate guard (required before every gh issue create):
gh issue list --repo <owner/name> --state all --label "feature:<slug>" --limit 200 --json number,title,body (caps at 200 per gh issue list; for exhaustive duplicate checks on very large features, use gh api repos/<owner>/<name>/issues --paginate with the same label filter instead)task_id in an opencode-task-yaml / opencode-task-json fence.For each approved slice:
gh issue create --title "..." --body-file - <<'EOF'
## What to build
...
## Acceptance criteria
- [ ] ...
- [ ] ...
## Blocked by
- #NNN or None — can start immediately
EOF
Apply the triage label for AFK-ready work (default: state:ready-for-agent) and category:feature or category:chore as appropriate. Include opencode-task-yaml fence in the body when orchestrate will execute the issue (minimal meta: task_id, owner, acceptance, test_commands; add stages[] when multi-step TDD is required).
Do not write local .plan files — issues are the source of truth.
After publish, emit the architect agent execution handoff verbatim: use the feature backlog variant when issues share feature:<slug>; otherwise the targeted queue variant with issue numbers. Do not say only “switch to orchestrate.”
docs/agents/triage-labels.md absent)needs-triage, needs-info, ready-for-agent, ready-for-human, wontfix — map per repo convention when documented.tools
AI-powered code review using CodeRabbit CLI. Use only on explicit user request or when parent passes execution_mode orchestrate_coderabbit_gate. Do not run during orchestrated stage/issue work.
tools
Cross-repo companion to to-prd: after PRD frontmatter is filled, run bin/fanout <slug> from this spec repo to create child GitHub issues (one per ticket or legacy slice).
tools
Issue state machine — transition GitHub issue labels per docs/agents/triage-labels.md. Batch helpers via lib/triage.sh.
documentation
Synthesise a PRD from grill-me / research context, write docs/prd/<slug>.md, publish a GitHub issue with prd + state:ready-for-agent + feature:<slug>. Halt after publish — do not invoke fanout.