PRD to SPEC Generator
User-facing entry point for the PRD → SPEC pipeline. The user runs
/prd-to-spec and this skill dispatches to the companion babysitter
process via /babysitter:call (interactive, with breakpoints) or
/babysitter:yolo (non-interactive, auto-approve).
Usage
/prd-to-spec <PRD-path-or-inline-text>
Examples:
/prd-to-spec docs/active/feature-X-PRD.md
/prd-to-spec "Build a notification dashboard with real-time alerts"
Companion process
- Library path:
library/specializations/product-management/prd-to-spec.js
- Locally installed:
~/.a5c/processes/prd-to-spec.js
The process file is the source of truth for the pipeline. This skill
intentionally stays thin so users only need to remember /prd-to-spec.
What this skill does when invoked
Parse input — resolve the PRD path or capture the inline text.
Infer featureBranch — read the current git branch via
git branch --show-current. If it is main / develop / dev,
ask the user for a feature-branch name.
Detect optional inputs from the project context:
contextDoc — project conventions doc (default CLAUDE.md)
archiveDir — past SPEC archive directory (default empty)
failureLogPath — project-local failure-log.md (default empty)
secondaryReviewer — hint like codex, gemini, peer (default empty)
Ask the user to pick the run mode:
Run mode for the babysitter prd-to-spec process:
- Interactive (
/babysitter:call) — recommended. Pauses at
every breakpoint (discovery review, SPEC approval, etc.) for
explicit user confirmation.
- Auto / yolo (
/babysitter:yolo) — non-interactive. Skips
all breakpoints; auto-approves every gate. Use only when the
pipeline is well-tested and the inputs are trusted.
Default to option 1 if the user does not respond.
Dispatch by invoking the chosen babysitter command via the Skill tool:
For interactive:
Skill('babysitter:call', 'Run the product-management/prd-to-spec process with inputs: prdPath=<resolved>, featureBranch=<resolved>, contextDoc=<resolved>, archiveDir=<resolved>, failureLogPath=<resolved>, secondaryReviewer=<resolved>')
For auto / yolo:
Skill('babysitter:yolo', '<same instruction as above>')
Return the SPEC path and the execution prompt produced by the
process to the user.
Fallback (no babysitter runtime)
If neither /babysitter:call nor /babysitter:yolo is available:
- Read the process source at the location above.
- Execute each task's agent prompt manually, in phase order.
- Pause at every
ctx.breakpoint(...) for explicit user approval
(interactive equivalent) or skip every breakpoint (yolo equivalent),
matching the mode the user picked in step 4.
- Return the same outputs the process would have returned.
Optional Integration Hooks
All flow through the process inputs (none required):
- Tracker integration —
trackerHint input. Examples: jira
(/jira or acli jira workitem update), linear (CLI / MCP),
gh-issues (gh issue edit).
- Secondary reviewer —
secondaryReviewer input. Examples: codex
(/codex:review), gemini (/gemini-review), deep-verify-plan
(/deep-verify-plan), peer (notify a teammate).
- Pipeline framework for Phase 3 verification — examples: Dagster,
Airflow, dbt, Prefect, K8s preview.
- UI framework for Phase 3 verification — examples: Vite, Next,
Storybook.
The process works end-to-end without any of them.
Failure Log Mechanism
The process reads a project-local failure-log.md in Phase 1 to
internalize lessons from prior failed runs. Setup:
- Cross-project lessons:
~/.claude/skills/<your-namespace>/failure-log.md
- Project-specific lessons:
<repo-root>/.claude/failure-log.md
Each entry follows:
### [YYYY-MM-DD] <short-pattern-name>
**Context:** <what we tried to do>
**What went wrong:** <the failure mode in 1-2 sentences>
**Constraint going forward:** <the binding rule for future runs>
If the file doesn't exist, the process notes "no prior failures recorded"
and continues.
Pre-Push Personal Docs Check
The process executes this gate as part of Phase 7 (Deliver) of the
generated SPEC. Procedure:
- List candidates:
git diff --name-only origin/<base-branch>...HEAD
- Classify each file:
legitimate / personal-doc / ambiguous
- Block by default for:
SPEC*.md, PRD*.md, HANDOFF*.md,
SUMMARY*.md, *-NOTES.md, anything under docs/plans/, ai_docs/,
.claude/scratch/, tmp/, investigation-*, analysis-*,
playbook-*, AI-generated plans/specs not explicitly approved.
- Block-and-ask gate: per-file decision of
unstage / keep /
gitignore. Do NOT skip even if rushed.
- Proceed with push only after all blocked files are resolved.
Rules
- The skill itself does not produce the SPEC. It only sets up inputs
and dispatches to the process via
/babysitter:call or /babysitter:yolo.
- Default to
/babysitter:call (interactive) when in doubt.
- Never bypass user-approval breakpoints in interactive mode — they
are first-class in the process.
- The SPEC must be proportional to the task (the process honors this).
1---2name: prd-to-spec3description: Convert an approved PRD into a phase-gated implementation SPEC. User-facing entry point that dispatches to the prd-to-spec babysitter process via /babysitter:call (interactive) or /babysitter:yolo (auto). Stack-agnostic.4---56# PRD to SPEC Generator78User-facing entry point for the PRD → SPEC pipeline. The user runs9`/prd-to-spec` and this skill dispatches to the companion babysitter10process via `/babysitter:call` (interactive, with breakpoints) or11`/babysitter:yolo` (non-interactive, auto-approve).1213## Usage1415```16/prd-to-spec <PRD-path-or-inline-text>17```1819Examples:20- `/prd-to-spec docs/active/feature-X-PRD.md`21- `/prd-to-spec "Build a notification dashboard with real-time alerts"`2223## Companion process2425- Library path: `library/specializations/product-management/prd-to-spec.js`26- Locally installed: `~/.a5c/processes/prd-to-spec.js`2728The process file is the source of truth for the pipeline. This skill29intentionally stays thin so users only need to remember `/prd-to-spec`.3031## What this skill does when invoked32331. **Parse input** — resolve the PRD path or capture the inline text.342. **Infer `featureBranch`** — read the current git branch via35 `git branch --show-current`. If it is `main` / `develop` / `dev`,36 ask the user for a feature-branch name.373. **Detect optional inputs** from the project context:38 - `contextDoc` — project conventions doc (default `CLAUDE.md`)39 - `archiveDir` — past SPEC archive directory (default empty)40 - `failureLogPath` — project-local `failure-log.md` (default empty)41 - `secondaryReviewer` — hint like `codex`, `gemini`, `peer` (default empty)424. **Ask the user to pick the run mode:**4344 > Run mode for the babysitter `prd-to-spec` process:45 >46 > 1. **Interactive (`/babysitter:call`)** — recommended. Pauses at47 > every breakpoint (discovery review, SPEC approval, etc.) for48 > explicit user confirmation.49 > 2. **Auto / yolo (`/babysitter:yolo`)** — non-interactive. Skips50 > all breakpoints; auto-approves every gate. Use only when the51 > pipeline is well-tested and the inputs are trusted.5253 Default to option 1 if the user does not respond.54555. **Dispatch** by invoking the chosen babysitter command via the Skill tool:5657 For interactive:58 ```59 Skill('babysitter:call', 'Run the product-management/prd-to-spec process with inputs: prdPath=<resolved>, featureBranch=<resolved>, contextDoc=<resolved>, archiveDir=<resolved>, failureLogPath=<resolved>, secondaryReviewer=<resolved>')60 ```6162 For auto / yolo:63 ```64 Skill('babysitter:yolo', '<same instruction as above>')65 ```66676. **Return** the SPEC path and the execution prompt produced by the68 process to the user.6970## Fallback (no babysitter runtime)7172If neither `/babysitter:call` nor `/babysitter:yolo` is available:73741. Read the process source at the location above.752. Execute each task's agent prompt manually, in phase order.763. Pause at every `ctx.breakpoint(...)` for explicit user approval77 (interactive equivalent) or skip every breakpoint (yolo equivalent),78 matching the mode the user picked in step 4.794. Return the same outputs the process would have returned.8081## Optional Integration Hooks8283All flow through the process inputs (none required):8485- **Tracker integration** — `trackerHint` input. Examples: `jira`86 (`/jira` or `acli jira workitem update`), `linear` (CLI / MCP),87 `gh-issues` (`gh issue edit`).88- **Secondary reviewer** — `secondaryReviewer` input. Examples: `codex`89 (`/codex:review`), `gemini` (`/gemini-review`), `deep-verify-plan`90 (`/deep-verify-plan`), `peer` (notify a teammate).91- **Pipeline framework** for Phase 3 verification — examples: Dagster,92 Airflow, dbt, Prefect, K8s preview.93- **UI framework** for Phase 3 verification — examples: Vite, Next,94 Storybook.9596The process works end-to-end without any of them.9798## Failure Log Mechanism99100The process reads a project-local `failure-log.md` in Phase 1 to101internalize lessons from prior failed runs. Setup:102103- Cross-project lessons: `~/.claude/skills/<your-namespace>/failure-log.md`104- Project-specific lessons: `<repo-root>/.claude/failure-log.md`105106Each entry follows:107108```markdown109### [YYYY-MM-DD] <short-pattern-name>110111**Context:** <what we tried to do>112**What went wrong:** <the failure mode in 1-2 sentences>113**Constraint going forward:** <the binding rule for future runs>114```115116If the file doesn't exist, the process notes "no prior failures recorded"117and continues.118119## Pre-Push Personal Docs Check120121The process executes this gate as part of Phase 7 (Deliver) of the122generated SPEC. Procedure:1231241. List candidates: `git diff --name-only origin/<base-branch>...HEAD`1252. Classify each file: `legitimate` / `personal-doc` / `ambiguous`1263. Block by default for: `SPEC*.md`, `PRD*.md`, `HANDOFF*.md`,127 `SUMMARY*.md`, `*-NOTES.md`, anything under `docs/plans/`, `ai_docs/`,128 `.claude/scratch/`, `tmp/`, `investigation-*`, `analysis-*`,129 `playbook-*`, AI-generated plans/specs not explicitly approved.1304. Block-and-ask gate: per-file decision of `unstage` / `keep` /131 `gitignore`. Do NOT skip even if rushed.1325. Proceed with push only after all blocked files are resolved.133134## Rules135136- The skill itself does not produce the SPEC. It only sets up inputs137 and dispatches to the process via `/babysitter:call` or `/babysitter:yolo`.138- Default to `/babysitter:call` (interactive) when in doubt.139- Never bypass user-approval breakpoints in interactive mode — they140 are first-class in the process.141- The SPEC must be proportional to the task (the process honors this).