templates/spec-repo/skills/fanout-issues/SKILL.md
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).
npx skillsauth add roborew/opencode fanout-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.
docs/prd/<slug>.md has valid YAML frontmatter with tickets: (preferred) or legacy slices:, plus parent_issue and target_repos as defined in docs/prd/_template.md.
From this repo root, run exactly once per slug (unless resuming after a failed run):
bin/fanout <slug>
bin/fanout (tickets mode) runs fanout-audit, then sync-fanout-bodies, then feature-check --level fanout. If any step fails, stop — do not hand-create issues.
After editing docs/prd/<slug>.md later, run bin/feature-upgrade <slug> (same body sync + broader checks).
bin/fanout <slug> creates child issues — never hand-roll gh issue create for PRD tickets.Skipping existing #N, that is success — do not create another issue for the same ticket.Do not assume zero issues were created. Partial fanout is common.
bin/fanout-audit <slug> and read the report (OK / MISSING / DUPLICATE / ORPHAN per ticket).gh issue create for PRD tickets — not even “just the missing ones.”.fanout-lock-<slug>/ only when no fanout process is running, then bin/fanout-audit, then bin/fanout again.DUPLICATE): close the extra issues (human or delegated cleanup), re-run audit until PASS, then bin/fanout (creates only MISSING).MISSING: bin/fanout <slug> again — it skips existing matches via existing_issue_number.tickets: (preferred)repo (full owner/repo matching docs/agents/repos.md).depends_on task ids).feature:<slug>, state:ready-for-agent, mode:afk or mode:hitl, and category:feature.opencode-task-json metadata (task id, acceptance, test_commands, commit_message, etc.) plus human-readable sections.slices:owner/repo string matching docs/agents/repos.md.bin/fanout checks existing issues by exact title and embedded task id (opencode-task-json, yaml, or legacy **Task ID:** bodies).(repo, title) pairs in the PRD cause fanout to exit 7 before creating anything.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
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.
development
Install OpenCode templates into one implementation repo path; optional legacy .plan/docs archive moves. Invoked only from setup-project via architect.