From prd-drafter
Conventions for PRD file naming, folder placement, status lifecycle, and project association. Reads .prdrc.json at the repo root for per-repo overrides, otherwise applies sensible defaults. Loaded by every agent in the prd-drafter plugin so drafts land in the right place with consistent naming.
How this skill is triggered — by the user, by Claude, or both
Slash command
/prd-drafter:prd-conventionsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A PRD without a consistent home becomes orphaned. This skill defines where PRDs live, how they're named, and how their lifecycle status moves them between folders. Defaults are deliberately simple — most repos can use them unchanged. Larger repos or teams with established conventions configure overrides via `.prdrc.json`.
A PRD without a consistent home becomes orphaned. This skill defines where PRDs live, how they're named, and how their lifecycle status moves them between folders. Defaults are deliberately simple — most repos can use them unchanged. Larger repos or teams with established conventions configure overrides via .prdrc.json.
Before writing or moving any file, check for a .prdrc.json at the repo root (use Read with the absolute path; treat a not found error as "no config"). If present, parse it. If absent, apply the defaults below.
The full schema is documented in docs/prdrc-schema.md at the plugin root.
.prdrc.json present)| Setting | Default |
|---|---|
| Output path | ./prds/ |
| File naming | kebab-case |
| File pattern | [feature-name].md (e.g. alarm-centre.md) |
| Status folders | none — all PRDs live flat in ./prds/, status tracked in frontmatter only |
| Status lifecycle | Draft → In Review → Approved → Shipped |
| Projects | none — single-repo, no project association required |
| Header link fields | Figma, Linear epic (offered, both optional) |
So in a fresh repo with no config, a draft PRD for an "Alarm Centre" feature saves to ./prds/alarm-centre.md with Status: Draft in its frontmatter.
.prdrc.jsonA .prdrc.json at the repo root can override any of these. Example for a multi-project repo with status folders:
{
"outputPath": "./docs/prds",
"fileNaming": "title-case",
"statusFolders": {
"Draft": "in-progress",
"In Review": "in-progress",
"Approved": "in-progress",
"Shipped": "shipped"
},
"statusLifecycle": ["Draft", "In Review", "Approved", "Shipped"],
"projects": ["billing", "auth", "notifications"],
"headerLinkFields": ["Figma", "Linear epic", "Jira ticket"]
}
With this config, a Draft PRD for billing would save to ./docs/prds/billing/in-progress/Alarm Centre.md.
fileNaming values| Value | Example for "Alarm Centre" |
|---|---|
kebab-case (default) | alarm-centre.md |
snake_case | alarm_centre.md |
title-case | Alarm Centre.md |
pascal-case | AlarmCentre.md |
If statusFolders is set, the file is placed inside the folder matching its status. Folders are auto-created on first save.
statusFolders shapesnull or omitted (default) — flat layout, no status subfolders{"Draft": "in-progress", ...}) — map each status to a subfolder name. Multiple statuses can map to the same folder.projectsnull or empty array (default) — single-project repo; no project association asked/[project]/ between outputPath and any status folderheaderLinkFieldsThe list of optional link fields offered in the PRD header. Defaults to ["Figma", "Linear epic"]. Common additions: Jira ticket, Notion doc, Loom walkthrough, Slack thread. The agent will offer each as an AskUserQuestion option during discovery; users can answer N/A for any that don't apply.
Default ladder: Draft → In Review → Approved → Shipped. Override with the statusLifecycle array if your team uses different states (e.g. ["Drafting", "Stakeholder Review", "Locked", "Live"]).
The plugin never advances Status automatically. It is always a deliberate human action via /prd-drafter:update.
| Transition | Trigger | Side effects |
|---|---|---|
| Draft → In Review | Author marks ready for stakeholder feedback | Update Status field; bump minor version (0.1 → 0.2) |
| In Review → Draft | Stakeholders request rework | Update Status; bump minor version |
| In Review → Approved | All stakeholders sign off | Update Status; bump to 1.0 |
| Approved → Shipped | Feature released | Move file to shipped folder (if statusFolders set); update Status |
Default pattern is [feature-name].md (with case applied per fileNaming). For PRDs that already have multiple versions, append -v2, -v3, etc. — never overwrite a previous version unless the user explicitly asks.
Examples (default kebab-case):
alarm-centre.mdmulti-tenant-billing.mdbulk-device-import.mdalarm-centre-v2.mdWhen the drafter or updater is ready to save:
.prdrc.json (if present) to get overrides.projects is non-empty, confirm the project with the user using AskUserQuestion. Never assume.outputPath + (project folder, if any) + (status folder, if statusFolders set) + feature filename-v2), or pick a new name?A PRD may link to external docs. The default header link fields are Figma and Linear epic, but .prdrc.json can extend this. Common additions:
Use N/A (not blank) when a link does not apply, so the field clearly reflects a deliberate decision.
.prdrc.json — a config file may exist that the user expects to be honoured.projects is non-empty — never assume.-v2) instead. Shipped is a historical artefact.npx claudepluginhub bradyhazell/brady-plugins --plugin prd-drafterFetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Applies a firm's KYC/AML rules grid to parsed onboarding records: assigns risk rating, checks required documents, outputs rule outcomes with citations, and routes for escalation.
Generates daily or weekly digests of activity from connected sources (chat, email, docs, tasks, CRM), highlighting action items, decisions, mentions, and project updates.