Files
Claude-Code-Workflow/.claude/skills/spec-generator/templates/requirements-prd.md
catlog22 7aa1038951 refactor: spec-generator outputs from monolithic files to directory structure
Requirements, architecture, and epics now output as directories with
individual files per design point (_index.md + REQ-*.md/ADR-*.md/EPIC-*.md),
linked via relative paths for better referencing and downstream consumption.
Phase 6 handoff bridge simplified to read directly from individual EPIC files.
2026-02-11 17:24:18 +08:00

5.8 KiB

Requirements PRD Template (Directory Structure)

Template for generating Product Requirements Document as a directory of individual requirement files in Phase 3.

Usage Context

Phase Usage
Phase 3 (Requirements) Generate requirements/ directory from product brief expansion
Output Location {workDir}/requirements/

Output Structure

{workDir}/requirements/
├── _index.md                      # Summary + MoSCoW table + traceability matrix + links
├── REQ-001-{slug}.md              # Individual functional requirement
├── REQ-002-{slug}.md
├── NFR-P-001-{slug}.md            # Non-functional: Performance
├── NFR-S-001-{slug}.md            # Non-functional: Security
├── NFR-SC-001-{slug}.md           # Non-functional: Scalability
├── NFR-U-001-{slug}.md            # Non-functional: Usability
└── ...

Template: _index.md

---
session_id: {session_id}
phase: 3
document_type: requirements-index
status: draft
generated_at: {timestamp}
version: 1
dependencies:
  - ../spec-config.json
  - ../product-brief.md
---

# Requirements: {product_name}

{executive_summary - brief overview of what this PRD covers and key decisions}

## Requirement Summary

| Priority | Count | Coverage |
|----------|-------|----------|
| Must Have | {n} | {description of must-have scope} |
| Should Have | {n} | {description of should-have scope} |
| Could Have | {n} | {description of could-have scope} |
| Won't Have | {n} | {description of explicitly excluded} |

## Functional Requirements

| ID | Title | Priority | Traces To |
|----|-------|----------|-----------|
| [REQ-001](REQ-001-{slug}.md) | {title} | Must | [G-001](../product-brief.md#goals--success-metrics) |
| [REQ-002](REQ-002-{slug}.md) | {title} | Must | [G-001](../product-brief.md#goals--success-metrics) |
| [REQ-003](REQ-003-{slug}.md) | {title} | Should | [G-002](../product-brief.md#goals--success-metrics) |

## Non-Functional Requirements

### Performance

| ID | Title | Target |
|----|-------|--------|
| [NFR-P-001](NFR-P-001-{slug}.md) | {title} | {target value} |

### Security

| ID | Title | Standard |
|----|-------|----------|
| [NFR-S-001](NFR-S-001-{slug}.md) | {title} | {standard/framework} |

### Scalability

| ID | Title | Target |
|----|-------|--------|
| [NFR-SC-001](NFR-SC-001-{slug}.md) | {title} | {target value} |

### Usability

| ID | Title | Target |
|----|-------|--------|
| [NFR-U-001](NFR-U-001-{slug}.md) | {title} | {target value} |

## Data Requirements

### Data Entities

| Entity | Description | Key Attributes |
|--------|-------------|----------------|
| {entity_name} | {description} | {attr1, attr2, attr3} |

### Data Flows

{description of key data flows, optionally with Mermaid diagram}

## Integration Requirements

| System | Direction | Protocol | Data Format | Notes |
|--------|-----------|----------|-------------|-------|
| {system_name} | Inbound/Outbound/Both | {REST/gRPC/etc} | {JSON/XML/etc} | {notes} |

## Constraints & Assumptions

### Constraints
- {technical or business constraint 1}
- {technical or business constraint 2}

### Assumptions
- {assumption 1 - must be validated}
- {assumption 2 - must be validated}

## Priority Rationale

{explanation of MoSCoW prioritization decisions, especially for Should/Could boundaries}

## Traceability Matrix

| Goal | Requirements |
|------|-------------|
| G-001 | [REQ-001](REQ-001-{slug}.md), [REQ-002](REQ-002-{slug}.md), [NFR-P-001](NFR-P-001-{slug}.md) |
| G-002 | [REQ-003](REQ-003-{slug}.md), [NFR-S-001](NFR-S-001-{slug}.md) |

## Open Questions

- [ ] {unresolved question 1}
- [ ] {unresolved question 2}

## References

- Derived from: [Product Brief](../product-brief.md)
- Next: [Architecture](../architecture/_index.md)

Template: REQ-NNN-{slug}.md (Individual Functional Requirement)

---
id: REQ-{NNN}
type: functional
priority: {Must|Should|Could|Won't}
traces_to: [G-{NNN}]
status: draft
---

# REQ-{NNN}: {requirement_title}

**Priority**: {Must|Should|Could|Won't}

## Description

{detailed requirement description}

## User Story

As a {persona}, I want to {action} so that {benefit}.

## Acceptance Criteria

- [ ] {specific, testable criterion 1}
- [ ] {specific, testable criterion 2}
- [ ] {specific, testable criterion 3}

## Traces

- **Goal**: [G-{NNN}](../product-brief.md#goals--success-metrics)
- **Architecture**: [ADR-{NNN}](../architecture/ADR-{NNN}-{slug}.md) (if applicable)
- **Implemented by**: [EPIC-{NNN}](../epics/EPIC-{NNN}-{slug}.md) (added in Phase 5)

Template: NFR-{type}-NNN-{slug}.md (Individual Non-Functional Requirement)

---
id: NFR-{type}-{NNN}
type: non-functional
category: {Performance|Security|Scalability|Usability}
priority: {Must|Should|Could}
status: draft
---

# NFR-{type}-{NNN}: {requirement_title}

**Category**: {Performance|Security|Scalability|Usability}
**Priority**: {Must|Should|Could}

## Requirement

{detailed requirement description}

## Metric & Target

| Metric | Target | Measurement Method |
|--------|--------|--------------------|
| {metric} | {target value} | {how measured} |

## Traces

- **Goal**: [G-{NNN}](../product-brief.md#goals--success-metrics)
- **Architecture**: [ADR-{NNN}](../architecture/ADR-{NNN}-{slug}.md) (if applicable)

Variable Descriptions

Variable Source Description
{session_id} spec-config.json Session identifier
{timestamp} Runtime ISO8601 generation timestamp
{product_name} product-brief.md Product/feature name
{NNN} Auto-increment Requirement number (zero-padded 3 digits)
{slug} Auto-generated Kebab-case from requirement title
{type} Category P (Performance), S (Security), SC (Scalability), U (Usability)
{Must|Should|Could|Won't} User input / auto MoSCoW priority tag