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---5
6# PRD to SPEC Generator
7
8User-facing entry point for the PRD → SPEC pipeline. The user runs
9`/prd-to-spec` and this skill dispatches to the companion babysitter
10process via `/babysitter:call` (interactive, with breakpoints) or
11`/babysitter:yolo` (non-interactive, auto-approve).
12
13## Usage
14
15```
16/prd-to-spec <PRD-path-or-inline-text>
17```
18
19Examples:
20- `/prd-to-spec docs/active/feature-X-PRD.md`
21- `/prd-to-spec "Build a notification dashboard with real-time alerts"`
22
23## Companion process
24
25- Library path: `library/specializations/product-management/prd-to-spec.js`
26- Locally installed: `~/.a5c/processes/prd-to-spec.js`
27
28The process file is the source of truth for the pipeline. This skill
29intentionally stays thin so users only need to remember `/prd-to-spec`.
30
31## What this skill does when invoked
32
331. **Parse input** — resolve the PRD path or capture the inline text.
342. **Infer `featureBranch`** — read the current git branch via
35 `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:**
43
44 > Run mode for the babysitter `prd-to-spec` process:
45 >
46 > 1. **Interactive (`/babysitter:call`)** — recommended. Pauses at
47 > every breakpoint (discovery review, SPEC approval, etc.) for
48 > explicit user confirmation.
49 > 2. **Auto / yolo (`/babysitter:yolo`)** — non-interactive. Skips
50 > all breakpoints; auto-approves every gate. Use only when the
51 > pipeline is well-tested and the inputs are trusted.
52
53 Default to option 1 if the user does not respond.
54
555. **Dispatch** by invoking the chosen babysitter command via the Skill tool:
56
57 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 ```
61
62 For auto / yolo:
63 ```
64 Skill('babysitter:yolo', '<same instruction as above>')
65 ```
66
676. **Return** the SPEC path and the execution prompt produced by the
68 process to the user.
69
70## Fallback (no babysitter runtime)
71
72If neither `/babysitter:call` nor `/babysitter:yolo` is available:
73
741. 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 approval
77 (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.
80
81## Optional Integration Hooks
82
83All flow through the process inputs (none required):
84
85- **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.
95
96The process works end-to-end without any of them.
97
98## Failure Log Mechanism
99
100The process reads a project-local `failure-log.md` in Phase 1 to
101internalize lessons from prior failed runs. Setup:
102
103- Cross-project lessons: `~/.claude/skills/<your-namespace>/failure-log.md`
104- Project-specific lessons: `<repo-root>/.claude/failure-log.md`
105
106Each entry follows:
107
108```markdown
109### [YYYY-MM-DD] <short-pattern-name>
110
111**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```
115
116If the file doesn't exist, the process notes "no prior failures recorded"
117and continues.
118
119## Pre-Push Personal Docs Check
120
121The process executes this gate as part of Phase 7 (Deliver) of the
122generated SPEC. Procedure:
123
1241. 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.
133
134## Rules
135
136- The skill itself does not produce the SPEC. It only sets up inputs
137 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 — they
140 are first-class in the process.
141- The SPEC must be proportional to the task (the process honors this).