Skip to content
Development
Skill

/prd-to-issues

Splits a PRD into vertical-slice GitHub issues with HITL/AFK tagging and dependencies. Triggers: PRD to issues, create tickets, break down PRD, work items.

From plugin
ai-toolkit
161111 skills44 agents
Install
$ npx -y skills add softspark/ai-toolkit --skill prd-to-issues --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/prd-to-issues

Context preview

The summary Claude sees to decide when to auto-load this skill.

Splits a PRD into vertical-slice GitHub issues with HITL/AFK tagging and dependencies. Triggers: PRD to issues, create tickets, break down PRD, work items.

SKILL.md

prd-to-issues.SKILL.md
name: prd-to-issues
description: "Splits a PRD into vertical-slice GitHub issues with HITL/AFK tagging and dependencies. Triggers: PRD to issues, create tickets, break down PRD, work items."
effort: medium
disable-model-invocation: true
argument-hint: "[PRD issue number]"
allowed-tools: Read, Grep, Glob, Bash

PRD to Issues

$ARGUMENTS

Break a PRD into independently-grabbable GitHub issues using vertical slices (tracer bullets).

Usage

/prd-to-issues [PRD issue number]

What This Command Does

1. **Fetches** PRD from GitHub issue 2. **Explores** codebase for context 3. **Drafts** vertical slices with HITL/AFK classification 4. **Quizzes** user on breakdown 5. **Creates** GitHub issues in dependency order via `gh issue create`

Process

1. Locate the PRD

Fetch with `gh issue view <number>` (with comments). If no number provided, ask.

2. Draft Vertical Slices

Each issue is a thin vertical slice cutting through ALL layers end-to-end.

| Classification | Description | |---------------|-------------| | **AFK** | Can be implemented and merged without human interaction (prefer) | | **HITL** | Requires human decision — architectural choice, design review, etc. |

3. Quiz the User

Present as numbered list. For each slice show:

  • **Title**: short descriptive name
  • **Type**: HITL / AFK
  • **Blocked by**: which other slices must complete first
  • **User stories covered**: which stories from the PRD

Ask:

  • Granularity right? (too coarse / too fine)
  • Dependency relationships correct?
  • HITL vs AFK classification correct?
  • Any slices to merge or split?

Iterate until approved.

4. Create GitHub Issues

Create in dependency order (blockers first) so real issue numbers can be referenced.

Use `gh issue create` with the template below for each slice.

Issue Template

<issue-template>

Parent PRD

#{prd-issue-number}

What to build

Concise description of this vertical slice. End-to-end behavior, not layer-by-layer. Reference parent PRD sections, don't duplicate.

Acceptance criteria

  • [ ] Criterion 1
  • [ ] Criterion 2
  • [ ] Criterion 3

Blocked by

  • Blocked by #{issue-number} (if any)

Or "None — can start immediately" if no blockers.

User stories addressed

Reference by number from the parent PRD:

  • User story 3
  • User story 7

</issue-template>

Rules

  • **MUST** slice vertically — every issue cuts through schema, API, UI, tests end-to-end. Horizontal slices (all-schema, then all-API) defer integration risk.
  • **MUST** create issues in dependency order so blockers have real issue numbers to reference
  • **NEVER** close or modify the parent PRD issue — it is the reference anchor for every child issue
  • **NEVER** include file paths, line numbers, or function names in issue bodies — they go stale before the issue is picked up
  • **CRITICAL**: maximize parallelism. Independent issues have zero `Blocked by` entries; if every issue has blockers, the slicing is wrong.
  • **MANDATORY**: every issue lists the user stories it addresses by number from the parent PRD — traceability matters more than brevity

Gotchas

  • `gh issue create` opens `$EDITOR` without `--body` or `--body-file`. In automation, this hangs silently. Always pass the body explicitly.
  • Dependency chains longer than 3 hops (A blocks B blocks C blocks D) almost always mean the slicing is too thin. Collapse the chain into fewer, wider slices.
  • GitHub issue numbers increment globally in the repo. Creating 5 issues with forward references (#124 blocks #125) requires the blocker to land before the blocked — order matters, and a mid-batch failure leaves dangling references.
  • AFK issues (no human interaction) appear attractive but the label is aspirational. Real AFK requires green CI, clear acceptance criteria, and no design ambiguity — misclassifying HITL as AFK creates reopens.
  • User stories referenced by "number from the PRD" drift if the PRD gets edited. Quote the story text inline if it is short, or pin to a PRD anchor (`#issue-42 > User Story 7`) to resist drift.

When NOT to Use

  • For breaking a PRD into a **plan** (phases, no issues yet) — use `/prd-to-plan`
  • For writing the PRD itself — use `/write-a-prd`
  • For filing a single bug — use `/qa-session` or `/triage-issue`
  • For a plan that exists but has no PRD — use `/plan` then revisit this skill
  • For triaging existing issues (not creating new ones) — this skill is create-only
Read more
Ships withai-toolkit

Professional-grade AI coding toolkit with multi-platform support. Machine-enforced safety, 109 skills, 44 agents, expanded lifecycle hooks, persona presets, experimental opt-in plugin packs, and benchmark tooling — works with Claude Code, Claude Chat/Cowork,

Get the whole plugin