ai-to-prd/SKILL.md
Turn an idea or spec into a parent PRD plus vertical-sliced GitHub issues ready for the /ship loop, with marketing requirements captured alongside. Use when the user wants to plan a feature, break down work, or convert an idea into issues. Trigger phrases - "/plan", "plan this feature", "break this into issues".
npx skillsauth add paulund/skills ai-to-prdInstall 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.
Turn an idea into a parent PRD plus thin vertical-slice GitHub issues, with marketing requirements captured in the same pass.
Output shape per feature:
prd./ship in a single PR, labelled planned,afk,p{1,2,3}.planned,hitl,marketing.hitl only for genuine human judgement calls.Skip if the user has a clear spec. Only run if the input is vague or the user asks for ideation.
Show the one-pager, confirm, move to Phase 1.
If unexplored, do it now. Understand: current architecture, existing patterns (check AGENTS.md), the domain language, where the work will touch. Use the Explore agent for anything beyond a few files.
Sketch major modules. Actively look for opportunities to extract deep modules — ones that encapsulate functionality behind a simple, testable interface that rarely changes.
Fill in the PRD template (see references/prd-template.md). In particular:
Present the drafted modules + testing plan. Ask:
Iterate until approved.
Propose: blog posts (1–3), social threads, launch assets, SEO metadata, email/newsletter, and acquisition channels. Ground suggestions in the project's existing content calendar if one exists.
Present the marketing items. Ask:
Iterate until approved.
Break into tracer-bullet slices — thin end-to-end paths.
Good: User can create a task (schema + API + UI + test)
Bad: All the database schema
Per slice: AFK/HITL, blocked by, priority (p1/p2/p3).
Present as numbered list with type, priority, blocked by, and acceptance per slice. Iterate until approved.
Create the PRD issue first so subsequent slice issues can reference it.
gh issue create \
--title "feat(PRD): <feature name>" \
--label "prd,feature,<project-scope-label-if-any>" \
--body "<PRD template filled in>"
Capture the issue number returned.
Create in dependency order (blockers first) so Blocked by #N references are real numbers.
gh issue create \
--title "feat: <slice title>" \
--label "planned,afk,p1,feature,<project-scope-label-if-any>" \
--body "<slice template filled in, with Parent: #<PRD number>>"
Use hitl instead of afk when a slice genuinely needs human input.
Create one issue per substantive marketing deliverable. Blog posts, launch assets, and campaign coordination each get their own.
gh issue create \
--title "marketing: <what to produce>" \
--label "planned,hitl,marketing,<project-scope-label-if-any>" \
--body "<marketing template filled in, Parent: #<PRD number>>"
Minor items (X threads, OG image refreshes) can be bundled into a single "launch assets" issue rather than fragmented per-tweet.
Print:
Suggest next step: /loop /ship to start processing the backlog; schedule the first blog post draft yourself (HITL).
Every issue must survive refactors:
undoDelete() to TasksController"/ship works best with many small AFK issuesafk — writing is HITLdevelopment
Use when the user wants to run the project's lint + types + build sequence as a gate before pushing, opening a PR, or merging. Invoked by chained dev skills between phases. Trigger phrases - "/quality-gate", "run the quality gate", "check it builds".
tools
Use when the user wants to verify a PR's feature works at runtime by booting the dev server, exercising the affected UI via Chrome DevTools MCP, and posting a screenshot summary back to the PR. Idempotent — skips if `verified` or `verify-failed` is already on the PR. Trigger phrases - "/pr-verify", "verify this PR", "runtime check the pr".
testing
Use when the user wants a security-focused review pass on a PR with findings actioned as commits on the same branch. Trigger phrases - "/pr-security-review", "security review and fix".
testing
Use when the user wants to open a pull request for an already-pushed branch that implements a specific issue. Idempotent — returns the existing PR if one is already open for the branch. Trigger phrases - "/pr-open", "open the pr", "create pr for this branch".