| name | prd |
| description | Author and manage Product Requirements Documents (PRDs) under "2. Areas/Product Manager/PRDs/". Scaffolds new PRDs against the braynee schema, audits existing ones, and seeds beads issues from the Acceptance Criteria section. Use when user says "new PRD", "draft PRD", "create PRD", "write a PRD", "PRD for <X>", "audit PRDs", "seed beads from PRD", "convert PRD to issues".
|
| argument-hint | ["new <Name> | audit | seed <Name>"] |
| allowed-tools | Bash(node:*), Bash(bd:*), Bash(obsidian:*), Read, Write, Edit, AskUserQuestion |
PRD Skill
Manages Product Requirements Documents — the contract between vault planning
and code execution. PRDs live at 2. Areas/Product Manager/PRDs/<Name>.md
and follow a schema that lets braynee seed beads issues from the
Acceptance Criteria section.
Commands
node {baseDir}/scripts/prd-new.mjs "<Name>"
node {pluginRoot}/scripts/prd-audit.mjs
node {pluginRoot}/scripts/prd-seed.mjs "<Name>" [--dry-run]
PRD Schema
Frontmatter (required fields)
---
type: prd
name: <Name> PRD
project: "[[1. Projects/<Name>]]"
folder: <slug>
version: "1.0"
created: YYYY-MM-DD
updated: YYYY-MM-DD
status: draft | active | shipped | archived
build_status: not-started | planning | drafting | in-progress | blocked | shipped
client: <optional>
seeded: false
seeded_at: ""
seeded_count: 0
tags: [prd, ...]
---
Body section order (canonical)
- Hero / Tagline
- MVP Definition ← Auth, Freemium, 3–5 Core Features (forcing function)
- Triple-Purpose Asset
- North Star Metric (with Activation Moment + OKRs table)
- Lean Canvas
- Personas / JTBD
- User Journeys
- Scope (In / Out / Future)
- Architecture
- Milestones
- Acceptance Criteria ← seed source
- Risks & Open Questions
- Appendix / Links
MVP Definition — the gate
A PRD without this section is not ready to seed. Forces three decisions:
## MVP Definition
### Auth
<approach: Clerk / Supabase / custom; SSO needs; org/team support>
### Freemium
<free tier limits, paid tier pricing, usage gates, signup-to-paywall path>
### Core Features (3–5)
1. <feature>
2. <feature>
3. <feature>
Acceptance Criteria should map back to the Core Features. If a criterion isn't
in service of one of the 3–5 listed features, ask whether the feature list is
incomplete or the criterion is out of scope.
Acceptance Criteria format (seed contract)
## Acceptance Criteria
### Milestone: MVP
- [ ] **[P0] Core scoring engine** — deterministic 7-factor model returns score in <500ms
- [ ] **[P0] WordPress shortcode** — embeds the form via `[dealreveal]`
- [ ] **[P1] Stripe checkout for paid PDF** — webhook on success
- [ ] **[P2] HubSpot CRM sync** — create contact + deal on submit
### Milestone: v1.1
- [ ] **[P1] Admin dashboard** — list submissions with score + status
Parse rules (deterministic — followed verbatim by prd-seed):
- [ ] **[Pn] <title>** — <body> → one bd create
[Pn] → priority (P0=critical, P1=high, P2=medium, P3=low)
- Title before em-dash → bd title
- Body after em-dash → bd description
### Milestone: <name> → bd label milestone:<name>
- Lines without the
- [ ] **[Pn]** shape are ignored
The new interview — clarify BEFORE scaffolding
/braynee:prd new <Name> must run a short structured interview before any file is
written, so the PRD is scoped by the user's answers instead of left full of
template placeholders. Use Claude Code's native AskUserQuestion for the discrete
decisions; ask conversationally for the open-ended ones.
First, read the brief. Whatever the user already stated (in the prompt, the
linked 1. Projects/<Name>.md, or recent session) is already answered — do NOT
re-ask it. Interview only the gaps. The flow is re-runnable: on a later pass, skip
anything already filled in the PRD.
Lock the MVP gate (AskUserQuestion — discrete choices):
- Auth — Clerk · Supabase Auth · custom/JWT · none (+ note SSO / org-team needs)
- Monetization — free-only · freemium · paid-only · usage-based (+ free-tier limits & paywall trigger)
- Stack / deploy target — informs Architecture and the eventual
deploy_target
Then capture conversationally (no clean fixed options):
- Core Features (3–5) — the forcing function; push back if it's >5 or vague.
- North Star metric + the activation moment.
- Primary persona + the job they're hiring the product for.
- Out-of-scope for V1 — at least two explicit non-goals.
After the interview:
node {baseDir}/scripts/prd-new.mjs "<Name>" scaffolds the schema.
- Fill the scaffold from the answers with Edit — replace every placeholder in
MVP Definition (Auth / Freemium / Core Features) and derive Acceptance
Criteria (one
- [ ] **[Pn] title** — body per core feature, milestone-grouped).
No <…>, ..., or … placeholder may remain in those two sections.
- Genuinely-undecided items go under Risks & Open Questions as
- **Open question:** <the unresolved decision> — never invent an answer just to
clear a placeholder. (The prd-seed-gate hook warns if open questions or unfilled
MVP placeholders remain at seed time.)
Workflow
- Brainstorm in vault → free-form notes in
1. Projects/<Name>.md
- Interview + draft → run the
new interview above, then node prd-new.mjs <Name> scaffolds and you fill MVP Definition + Acceptance Criteria from the answers (no placeholders left)
- Audit →
node prd-audit.mjs confirms schema is clean
- Seed →
node prd-seed.mjs <Name> creates bd issues, flips seeded: true
- Build → in the project repo (
<projects-root>/<slug>/), bd ready shows the seeded backlog
The folder: join key
folder: is the name of the project repo directory, not a path. It joins
the PRD to its code repo. The repo is looked up inside the configured
projects root, resolved in this order:
BRAYNEE_PROJECTS_DIR — set this if your repos are not under ~/code
BEADS_CODE_DIR — legacy override, still honored
~/code — default only when neither is set (back-compat)
So a PRD with folder: my-app joins to $BRAYNEE_PROJECTS_DIR/my-app (or
~/code/my-app by default). Braynee never assumes ~/code exists — set
BRAYNEE_PROJECTS_DIR once and prd-audit, prd-seed, and the beads
dashboard all resolve repos from there.