From ai-pm-assistant
Writes a Product Requirements Document (PRD) or Business Requirements Document (BRD) from discovery findings, project briefs, or stakeholder input. Converts source material into atomic, testable functional requirements.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai-pm-assistant:prd <discovery findings, charter, or feature brief><discovery findings, charter, or feature brief>This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
$ARGUMENTS
$ARGUMENTS
If no input is provided, ask: "Please share your discovery findings, project charter, or feature brief."
Read skills/prd/intake.md and follow the interview protocol exactly.
For BRD: once Q1 confirms BRD, also read brd-guide.md for structural differences.
Before writing any FR, derive the feature areas from the source material and confirm them with the user in a single message:
"I'll group requirements under these areas: [list them]. Does that look right, or should any be split, merged, or renamed?"
Wait for confirmation or correction. Adjust the areas before proceeding. This prevents structural rework after FRs are written.
Do this before writing a single FR.
Source material (SOW, brief, acceptance criteria) describes deliverables — what will be built. Requirements describe behaviour — what the system must do.
Rule: Never copy-paste a deliverable or acceptance criterion as an FR. Re-express it.
| Source says | FR says |
|---|---|
| "Score gauge implemented and QA passed" | FR-01: The system must display a score gauge (0–100) with colour-coded risk bands. FR-02: The gauge must animate on load. |
| "Error handling implemented" | FR-XX: The system must display [exact message] when [specific error condition] occurs. |
| "Functional and visually approved" | Split: one FR for function, one NFR for visual sign-off gate. |
Each source item may produce 1–4 FRs. That is expected. It means requirements are atomic.
Apply these rules to every FR before including it in the output.
1. One FR = one observable, testable behaviour. If an FR contains "and", ask: can each half fail independently? If yes — split into two FRs.
2. No adjectives without numbers.
3. Error states are their own FRs. Never append "with error handling" to a happy-path FR. Write a separate FR per distinct error condition.
4. No TBD inside an FR. If a value is unknown, the requirement is not ready to be written. Move it to Open Questions (section 9) and return to it when resolved.
5. Enforce this format:
6. Smell check — before finalising the FR table, flag and fix any of these:
Before finalising FRs for each feature area, explicitly list the distinct error conditions that can occur. Each must become its own FR — never append error handling to a happy-path FR.
For each feature area, ask: what happens when —
Write a separate FR for each condition that applies, using the format:
"The system must display [exact message or behaviour] when [specific error condition]."
If the exact message or behaviour is not yet defined, move it to Open Questions — do not write a vague FR.
Before writing sections 4, 6, and 7, verify every item in the table below is accounted for somewhere in the PRD. Each item must appear as one of:
[NEEDS TARGET] if unknown)Never silently omit an item. If it does not fit any of the three homes, add it as an Open Question.
| Category | What to cover | Typical home |
|---|---|---|
| Performance | Page and API response time targets | NFR |
| Security | Authentication, authorisation, and encryption controls named specifically — not just "security implemented" | NFR |
| Accessibility | WCAG level stated (e.g. WCAG 2.1 AA) | NFR or Out of Scope |
| Availability | Uptime or SLA target | NFR |
| Data retention | How long each data type is stored; who manages deletion | NFR |
| Account deletion / right to erasure | Can a user delete their account and all associated data? Required under UK GDPR unless explicitly out of scope | NFR or Out of Scope |
| Audit logging | Which user and system actions are logged; how long logs are retained; especially critical for regulated or financial products | NFR |
| API rate limiting | Behaviour when quota is exhausted for each named external API | NFR or FR (error state) |
| Session management | Timeout period; concurrent session rules | NFR |
| Browser and device support | Named browsers and minimum versions — without this QA has no acceptance threshold | NFR or Constraint |
| Localisation / internationalisation | Target locale(s) stated explicitly; if single-locale only, state it as a constraint and note future scope — do not leave it assumed | Constraint or Out of Scope |
The output is clean markdown. Do not include guidance, rules, or instructional commentary in the generated document — those stay in this skill file.
Version: 1.0 | Date: [Today] | Status: Draft Approvers: [Roles who must sign off]
Only include this section if the intake interview surfaced items that contradict or extend the source material (SOW, brief, charter). List each change explicitly so reviewers know exactly what diverged and why. Remove this section if there are no changes.
| # | Change | Original (source says) | Updated (PRD reflects) | Reason |
|---|---|---|---|---|
| SC-01 | Confirmed by [name] on [date] |
[2–3 sentences. Why does this project exist? What problem does it solve? What triggered it?]
| Goal | Metric | Target |
|---|---|---|
| Role | Who they are | Primary need |
|---|---|---|
Assumptions — believed true, must be validated before build:
Constraints — fixed, cannot change:
Group by feature area or user journey. Use a parent heading when there are more than 7 areas. MoSCoW: Must (product fails without it) / Should (high value, workaround exists) / Could (cut first if time is tight).
| ID | Requirement | Priority | Notes |
|---|---|---|---|
| FR-01 | Must / Should / Could |
| ID | Category | Requirement | Target |
|---|---|---|---|
| NFR-01 |
| Dependency | Type | Owner | Status |
|---|---|---|---|
| Confirmed / Pending / Blocked |
| # | Question | Owner | By When |
|---|---|---|---|
| Q1 |
| Role | Name | Status | Date |
|---|---|---|---|
| Product Owner | Pending | ||
| Tech Lead | Pending |
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub erica-j-01/ai-pm