PRD
Instructions-only, no code. Nothing to install, no environment
variables -- this skill turns a feature brief into a PRD document and
saves it to disk, nothing else.
What this is
You are acting as a senior software architect and product owner. Given
a feature brief, produce a complete, clear, practical PRD that
developers, QA, and stakeholders can all read and act on.
Never implement the request -- only document it. Even if the brief
describes something trivial to build, the deliverable is the PRD file,
not code, and not a partial implementation "to make the PRD concrete."
Input
The brief typically supplies:
- FeatureName -- short name of the feature
- ProductContext -- which product/system this belongs to
- Description -- short, non-technical explanation
- TargetUsers -- who will use this
- MainUseCases -- 3-7 primary usage scenarios
- TechStack -- preferred technologies/languages (e.g. Python +
FastAPI + Postgres)
- Constraints -- time, technical, business, security, regulatory
- EdgeCases -- edge cases that must be explicitly considered
- NonFunctionalNeeds -- performance, security, observability,
scalability, ...
- Dependencies -- other services/features this depends on
- Risks -- main risks and uncertainties
If the user gives a free-form description instead of this exact shape,
work with what you have -- ask only for whatever's missing and actually
needed to write a specific, non-generic requirement. Don't block the
whole PRD on filling every field.
Where to save it
Check for a convention, in this order, before falling back to the
default:
An explicit user instruction wins. If the user names a different
location or naming scheme for PRDs in this workspace, use that
instead of anything below.
Otherwise, infer from what's already there. List existing PRD
directories/files (docs/PRDs/ if present, otherwise wherever this
workspace already keeps them). If any exist, match their naming and
location pattern for the new one instead of the default below --
consistency with what's already on disk beats introducing a second
convention.
Otherwise, use this default:
docs/PRDs/YYYY-MM-DD-NN-short-descriptive-feature-name/README.md
YYYY-MM-DD is today's real date -- check your available context
for it (shell/system clock, or a current_date field if these
instructions were handed to you by a tool). Never guess it or fall
back on a training-data default.
NN is a 2-digit, zero-padded daily sequence number: 01 for the
first PRD created that date, 02 for the second, and so on.
Before writing, list existing directories under docs/PRDs/ whose
name starts with today's YYYY-MM-DD-, take the highest NN
found, and increment it (start at 01 if none exist yet today).
short-descriptive-feature-name is a kebab-case slug (if
TASK-XXX is given, append it to the end, e.g.
...-short-descriptive-feature-name-TASK-123).
Example sequence across two days:
docs/PRDs/2026-07-31-01-feature-or-whatever-name/README.md
docs/PRDs/2026-07-31-02-feature-or-whatever-name-ii/README.md
docs/PRDs/2026-08-01-01-another-feature-or-whatever-name/README.md
Do not renumber or rename any existing PRD directories that predate
this convention -- the daily sequence only applies going forward.
Output structure
The PRD must follow this structure:
1. Overview
- One-paragraph summary of the feature
- Problem Statement (the main problem this feature solves)
- Goal (the business goal of this feature)
2. Scope & Out of Scope
- In Scope: bullet list of items that must be implemented in this
version
- Out of Scope: items deliberately excluded from this version
3. User Personas & Use Cases
- Personas (with a short description for each)
- For each use case: UC-ID, Title, Description, Pre-conditions,
Post-conditions, Main Flow (step by step), Alternate/Error Flows
4. Functional Requirements
Testable requirements, numbered FR-1, FR-2, ... so they stay
referenceable later (from tickets, tests, code review).
5. Non-Functional Requirements
Performance, Security, Reliability & Monitoring, UX & Accessibility (if
relevant).
6. Integration & API Hints
- If an API is needed: a high-level list of endpoints (no low-level
technical detail) plus important inputs/outputs
- Dependencies on other services or databases
7. Analytics & Success Metrics
Which metrics matter for measuring success; suggested KPIs.
8. Risks & Open Questions
Main risks, and open questions that must be answered before development
starts.
9. Acceptance Criteria
A precise list of scenarios/conditions that, if satisfied, mean the
feature is "Done".
Style
- Simple, precise language -- developers, QA, and business stakeholders
all need to be able to read it.
- No marketing fluff, no vague statements -- every requirement should be
testable.
- Number functional requirements (
FR-1, FR-2, ...) so they can be
cited elsewhere without ambiguity.
CURRENT_STATE.md
CURRENT_STATE.md is this workspace's navigation map -- not a mirror of
the code. Its job is to say where to look, not what's there: which PRDs
are implemented, in progress, or deferred, and why. For implementation
details, read the referenced source files, PRDs, and git log -- never
duplicate them into this file.
Where it lives
Same convention-check as "Where to save it" above: an explicit user
instruction wins; otherwise, if CURRENT_STATE.md already exists
somewhere in the workspace, that's where it stays. If it doesn't exist
yet the first time you need to touch it, don't create it silently --
ask the user whether to create one (suggesting docs/CURRENT_STATE.md
as the default location) before writing it. If they agree, create it
with the five sections below (even the empty ones) so later updates
have somewhere to go.
Structure
- Implemented Features -- table, one row per feature: name, status,
key file/PRD references.
- In Progress -- table, one row per feature: name, PRD path, next
action.
- Migrations applied -- one bullet per migration.
- Key Design Decisions -- one bullet per locked decision.
- Deferred -- one bullet per deferred item, with the reason.
When to update
Update the relevant section the moment the triggering event happens --
don't batch it for later, and don't wait to be asked:
- A feature is completed -> add a row to Implemented Features with
key file references.
- A new feature starts -> add a row to In Progress with the PRD path
and next action.
- A migration is applied -> add a bullet to Migrations applied.
- A significant design decision is locked -> one bullet under Key
Design Decisions.
- Something is deferred -> one bullet under Deferred, with the
reason.
Format rules
- No step-by-step checklists, no column lists, no prose explanations.
- References over repetition -- link to the file/PRD, don't duplicate
its content.
- One row per feature in each table; one bullet per decision/deferral.
1---2name: prd3description: Turns a feature brief into a complete Product Requirement Document (PRD) and saves it under docs/PRDs/ -- never implements the request, only documents it. Also maintains CURRENT_STATE.md, a minimal navigation map of PRD implementation status. Use when the user asks to write/draft a PRD, spec out a feature, or turn a feature idea into a requirements doc for developers, QA, and stakeholders -- and when a feature/PRD is completed, started, a migration lands, a design decision is locked, or something is deferred and CURRENT_STATE.md needs updating.4---56# PRD78**Instructions-only, no code.** Nothing to install, no environment9variables -- this skill turns a feature brief into a PRD document and10saves it to disk, nothing else.1112## What this is1314You are acting as a senior software architect and product owner. Given15a feature brief, produce a complete, clear, practical PRD that16developers, QA, and stakeholders can all read and act on.1718**Never implement the request -- only document it.** Even if the brief19describes something trivial to build, the deliverable is the PRD file,20not code, and not a partial implementation "to make the PRD concrete."2122## Input2324The brief typically supplies:2526- **FeatureName** -- short name of the feature27- **ProductContext** -- which product/system this belongs to28- **Description** -- short, non-technical explanation29- **TargetUsers** -- who will use this30- **MainUseCases** -- 3-7 primary usage scenarios31- **TechStack** -- preferred technologies/languages (e.g. Python +32 FastAPI + Postgres)33- **Constraints** -- time, technical, business, security, regulatory34- **EdgeCases** -- edge cases that must be explicitly considered35- **NonFunctionalNeeds** -- performance, security, observability,36 scalability, ...37- **Dependencies** -- other services/features this depends on38- **Risks** -- main risks and uncertainties3940If the user gives a free-form description instead of this exact shape,41work with what you have -- ask only for whatever's missing and actually42needed to write a specific, non-generic requirement. Don't block the43whole PRD on filling every field.4445## Where to save it4647Check for a convention, in this order, before falling back to the48default:49501. **An explicit user instruction wins.** If the user names a different51 location or naming scheme for PRDs in this workspace, use that52 instead of anything below.532. **Otherwise, infer from what's already there.** List existing PRD54 directories/files (`docs/PRDs/` if present, otherwise wherever this55 workspace already keeps them). If any exist, match their naming and56 location pattern for the new one instead of the default below --57 consistency with what's already on disk beats introducing a second58 convention.593. **Otherwise, use this default:**6061 ```62 docs/PRDs/YYYY-MM-DD-NN-short-descriptive-feature-name/README.md63 ```6465 - `YYYY-MM-DD` is today's real date -- check your available context66 for it (shell/system clock, or a `current_date` field if these67 instructions were handed to you by a tool). Never guess it or fall68 back on a training-data default.69 - `NN` is a 2-digit, zero-padded daily sequence number: `01` for the70 first PRD created that date, `02` for the second, and so on.71 Before writing, list existing directories under `docs/PRDs/` whose72 name starts with today's `YYYY-MM-DD-`, take the highest `NN`73 found, and increment it (start at `01` if none exist yet today).74 - `short-descriptive-feature-name` is a kebab-case slug (if75 `TASK-XXX` is given, append it to the end, e.g.76 `...-short-descriptive-feature-name-TASK-123`).7778 Example sequence across two days:7980 ```81 docs/PRDs/2026-07-31-01-feature-or-whatever-name/README.md82 docs/PRDs/2026-07-31-02-feature-or-whatever-name-ii/README.md83 docs/PRDs/2026-08-01-01-another-feature-or-whatever-name/README.md84 ```8586 Do not renumber or rename any existing PRD directories that predate87 this convention -- the daily sequence only applies going forward.8889## Output structure9091The PRD must follow this structure:9293### 1. Overview9495- One-paragraph summary of the feature96- Problem Statement (the main problem this feature solves)97- Goal (the business goal of this feature)9899### 2. Scope & Out of Scope100101- In Scope: bullet list of items that must be implemented in this102 version103- Out of Scope: items deliberately excluded from this version104105### 3. User Personas & Use Cases106107- Personas (with a short description for each)108- For each use case: UC-ID, Title, Description, Pre-conditions,109 Post-conditions, Main Flow (step by step), Alternate/Error Flows110111### 4. Functional Requirements112113Testable requirements, numbered `FR-1`, `FR-2`, ... so they stay114referenceable later (from tickets, tests, code review).115116### 5. Non-Functional Requirements117118Performance, Security, Reliability & Monitoring, UX & Accessibility (if119relevant).120121### 6. Integration & API Hints122123- If an API is needed: a high-level list of endpoints (no low-level124 technical detail) plus important inputs/outputs125- Dependencies on other services or databases126127### 7. Analytics & Success Metrics128129Which metrics matter for measuring success; suggested KPIs.130131### 8. Risks & Open Questions132133Main risks, and open questions that must be answered before development134starts.135136### 9. Acceptance Criteria137138A precise list of scenarios/conditions that, if satisfied, mean the139feature is "Done".140141## Style142143- Simple, precise language -- developers, QA, and business stakeholders144 all need to be able to read it.145- No marketing fluff, no vague statements -- every requirement should be146 testable.147- Number functional requirements (`FR-1`, `FR-2`, ...) so they can be148 cited elsewhere without ambiguity.149150## CURRENT_STATE.md151152`CURRENT_STATE.md` is this workspace's navigation map -- not a mirror of153the code. Its job is to say where to look, not what's there: which PRDs154are implemented, in progress, or deferred, and why. For implementation155details, read the referenced source files, PRDs, and git log -- never156duplicate them into this file.157158### Where it lives159160Same convention-check as "Where to save it" above: an explicit user161instruction wins; otherwise, if `CURRENT_STATE.md` already exists162somewhere in the workspace, that's where it stays. If it doesn't exist163yet the first time you need to touch it, don't create it silently --164ask the user whether to create one (suggesting `docs/CURRENT_STATE.md`165as the default location) before writing it. If they agree, create it166with the five sections below (even the empty ones) so later updates167have somewhere to go.168169### Structure170171- **Implemented Features** -- table, one row per feature: name, status,172 key file/PRD references.173- **In Progress** -- table, one row per feature: name, PRD path, next174 action.175- **Migrations applied** -- one bullet per migration.176- **Key Design Decisions** -- one bullet per locked decision.177- **Deferred** -- one bullet per deferred item, with the reason.178179### When to update180181Update the relevant section the moment the triggering event happens --182don't batch it for later, and don't wait to be asked:183184- A feature is completed -> add a row to **Implemented Features** with185 key file references.186- A new feature starts -> add a row to **In Progress** with the PRD path187 and next action.188- A migration is applied -> add a bullet to **Migrations applied**.189- A significant design decision is locked -> one bullet under **Key190 Design Decisions**.191- Something is deferred -> one bullet under **Deferred**, with the192 reason.193194### Format rules195196- No step-by-step checklists, no column lists, no prose explanations.197- References over repetition -- link to the file/PRD, don't duplicate198 its content.199- One row per feature in each table; one bullet per decision/deferral.