396 lines
8.0 KiB
Bash
Executable File
396 lines
8.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# PRD Generator Script
|
|
# Interactive workflow for generating Product Requirements Documents
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
|
|
echo -e "${BLUE}║ PRD Generator - Interactive Mode ║${NC}"
|
|
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
|
|
echo ""
|
|
|
|
# Get script directory
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SKILL_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
# Check if template exists
|
|
TEMPLATE_FILE="$SKILL_DIR/references/prd_template.md"
|
|
if [ ! -f "$TEMPLATE_FILE" ]; then
|
|
echo -e "${RED}✗ Error: PRD template not found at $TEMPLATE_FILE${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Function to prompt for input
|
|
prompt_input() {
|
|
local prompt="$1"
|
|
local var_name="$2"
|
|
local required="$3"
|
|
|
|
while true; do
|
|
echo -e "${YELLOW}${prompt}${NC}"
|
|
read -r input
|
|
|
|
if [ -n "$input" ]; then
|
|
eval "$var_name='$input'"
|
|
break
|
|
elif [ "$required" != "true" ]; then
|
|
eval "$var_name=''"
|
|
break
|
|
else
|
|
echo -e "${RED}This field is required. Please provide a value.${NC}"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Gather basic information
|
|
echo -e "${GREEN}Step 1: Basic Information${NC}"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
prompt_input "Feature/Product Name:" PRODUCT_NAME true
|
|
prompt_input "One-line Description:" DESCRIPTION true
|
|
prompt_input "Output Filename (default: ${PRODUCT_NAME// /_}_prd.md):" OUTPUT_FILE false
|
|
|
|
# Set default output file if not provided
|
|
if [ -z "$OUTPUT_FILE" ]; then
|
|
OUTPUT_FILE="${PRODUCT_NAME// /_}_prd.md"
|
|
OUTPUT_FILE=$(echo "$OUTPUT_FILE" | tr '[:upper:]' '[:lower:]')
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}Step 2: Problem & Context${NC}"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
prompt_input "What problem are you solving?" PROBLEM true
|
|
prompt_input "Who are the primary users?" PRIMARY_USERS true
|
|
prompt_input "What are the key business goals?" BUSINESS_GOALS true
|
|
|
|
echo ""
|
|
echo -e "${GREEN}Step 3: Success & Scope${NC}"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
prompt_input "How will you measure success?" SUCCESS_METRICS true
|
|
prompt_input "Target launch date (or 'TBD'):" TIMELINE false
|
|
prompt_input "What's explicitly OUT of scope?" OUT_OF_SCOPE false
|
|
|
|
echo ""
|
|
echo -e "${GREEN}Step 4: PRD Type${NC}"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
echo "Select PRD type:"
|
|
echo " 1) Standard (comprehensive)"
|
|
echo " 2) Lean (streamlined)"
|
|
echo " 3) One-Pager (executive summary)"
|
|
echo ""
|
|
|
|
while true; do
|
|
read -p "Enter choice (1-3): " prd_type
|
|
case $prd_type in
|
|
1) PRD_TYPE="standard"; break;;
|
|
2) PRD_TYPE="lean"; break;;
|
|
3) PRD_TYPE="one-pager"; break;;
|
|
*) echo -e "${RED}Invalid choice. Please enter 1, 2, or 3.${NC}";;
|
|
esac
|
|
done
|
|
|
|
# Generate PRD
|
|
echo ""
|
|
echo -e "${BLUE}Generating PRD...${NC}"
|
|
echo ""
|
|
|
|
# Create PRD from template
|
|
cat > "$OUTPUT_FILE" << EOF
|
|
# Product Requirements Document: $PRODUCT_NAME
|
|
|
|
**Status:** Draft
|
|
**Author:** $(whoami)
|
|
**Date:** $(date +%Y-%m-%d)
|
|
**Last Updated:** $(date +%Y-%m-%d)
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
$DESCRIPTION
|
|
|
|
This PRD outlines the requirements for $PRODUCT_NAME, addressing the need to $PROBLEM for $PRIMARY_USERS.
|
|
|
|
---
|
|
|
|
## Problem Statement
|
|
|
|
### The Problem
|
|
|
|
$PROBLEM
|
|
|
|
### Impact
|
|
|
|
Without this feature/product, users experience [describe pain points].
|
|
|
|
### Why Now?
|
|
|
|
$BUSINESS_GOALS
|
|
|
|
---
|
|
|
|
## Goals & Objectives
|
|
|
|
### Business Goals
|
|
|
|
$BUSINESS_GOALS
|
|
|
|
### User Goals
|
|
|
|
- [User goal 1]
|
|
- [User goal 2]
|
|
- [User goal 3]
|
|
|
|
### Success Criteria
|
|
|
|
$SUCCESS_METRICS
|
|
|
|
---
|
|
|
|
## User Personas
|
|
|
|
### Primary User: $PRIMARY_USERS
|
|
|
|
**Demographics:**
|
|
- [Add demographic info]
|
|
|
|
**Behaviors:**
|
|
- [Add behavioral patterns]
|
|
|
|
**Needs:**
|
|
- [Add key needs]
|
|
|
|
**Pain Points:**
|
|
- [Add pain points]
|
|
|
|
---
|
|
|
|
## User Stories & Requirements
|
|
|
|
### Core User Stories
|
|
|
|
#### Story 1: [Feature Name]
|
|
|
|
**User Story:**
|
|
\`\`\`
|
|
As a [$PRIMARY_USERS],
|
|
I want to [action],
|
|
So that [benefit].
|
|
\`\`\`
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] [Criterion 1]
|
|
- [ ] [Criterion 2]
|
|
- [ ] [Criterion 3]
|
|
|
|
**Priority:** Must Have
|
|
|
|
---
|
|
|
|
#### Story 2: [Feature Name]
|
|
|
|
**User Story:**
|
|
\`\`\`
|
|
As a [user type],
|
|
I want to [action],
|
|
So that [benefit].
|
|
\`\`\`
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] [Criterion 1]
|
|
- [ ] [Criterion 2]
|
|
- [ ] [Criterion 3]
|
|
|
|
**Priority:** Should Have
|
|
|
|
---
|
|
|
|
## Success Metrics
|
|
|
|
### Key Performance Indicators (KPIs)
|
|
|
|
$SUCCESS_METRICS
|
|
|
|
### Measurement Plan
|
|
|
|
| Metric | Baseline | Target | Measurement Method |
|
|
|--------|----------|--------|-------------------|
|
|
| [Metric 1] | [Current value] | [Target value] | [How to measure] |
|
|
| [Metric 2] | [Current value] | [Target value] | [How to measure] |
|
|
|
|
---
|
|
|
|
## Scope
|
|
|
|
### In Scope
|
|
|
|
- [Feature/capability 1]
|
|
- [Feature/capability 2]
|
|
- [Feature/capability 3]
|
|
|
|
### Out of Scope
|
|
|
|
$OUT_OF_SCOPE
|
|
|
|
- [Explicitly excluded item 1]
|
|
- [Explicitly excluded item 2]
|
|
|
|
### Future Considerations
|
|
|
|
- [Potential future enhancement 1]
|
|
- [Potential future enhancement 2]
|
|
|
|
---
|
|
|
|
## Technical Considerations
|
|
|
|
### Architecture
|
|
|
|
[High-level technical approach]
|
|
|
|
### Dependencies
|
|
|
|
- **External APIs:** [List APIs]
|
|
- **Services:** [List services]
|
|
- **Libraries:** [List libraries]
|
|
|
|
### Security Requirements
|
|
|
|
- [Security requirement 1]
|
|
- [Security requirement 2]
|
|
|
|
### Performance Requirements
|
|
|
|
- [Performance requirement 1]
|
|
- [Performance requirement 2]
|
|
|
|
### Data Considerations
|
|
|
|
- [Data storage needs]
|
|
- [Data migration needs]
|
|
- [Privacy considerations]
|
|
|
|
---
|
|
|
|
## Design & UX Requirements
|
|
|
|
### User Experience
|
|
|
|
[Describe key UX principles and patterns]
|
|
|
|
### Visual Design
|
|
|
|
[Reference design system, mockups, or wireframes]
|
|
|
|
### Accessibility
|
|
|
|
- WCAG 2.1 Level AA compliance required
|
|
- Keyboard navigation support
|
|
- Screen reader compatibility
|
|
|
|
### Responsive Design
|
|
|
|
- Mobile support: [Yes/No/Details]
|
|
- Tablet support: [Yes/No/Details]
|
|
- Desktop support: [Yes/No/Details]
|
|
|
|
---
|
|
|
|
## Timeline & Milestones
|
|
|
|
**Target Launch:** $TIMELINE
|
|
|
|
### Phases
|
|
|
|
| Phase | Deliverables | Target Date |
|
|
|-------|-------------|-------------|
|
|
| Discovery | Requirements finalized, designs approved | [Date] |
|
|
| Development | Core functionality complete | [Date] |
|
|
| Testing | QA complete, bugs resolved | [Date] |
|
|
| Launch | Feature live in production | $TIMELINE |
|
|
|
|
---
|
|
|
|
## Risks & Mitigation
|
|
|
|
| Risk | Impact | Probability | Mitigation Strategy |
|
|
|------|--------|------------|-------------------|
|
|
| [Risk 1] | High/Med/Low | High/Med/Low | [How to mitigate] |
|
|
| [Risk 2] | High/Med/Low | High/Med/Low | [How to mitigate] |
|
|
|
|
---
|
|
|
|
## Dependencies & Assumptions
|
|
|
|
### Dependencies
|
|
|
|
- [Dependency 1]
|
|
- [Dependency 2]
|
|
|
|
### Assumptions
|
|
|
|
- [Assumption 1]
|
|
- [Assumption 2]
|
|
|
|
---
|
|
|
|
## Open Questions
|
|
|
|
- [ ] [Question 1]
|
|
- [ ] [Question 2]
|
|
- [ ] [Question 3]
|
|
|
|
---
|
|
|
|
## Stakeholder Sign-Off
|
|
|
|
| Stakeholder | Role | Status | Date |
|
|
|------------|------|--------|------|
|
|
| [Name] | Product Lead | Pending | - |
|
|
| [Name] | Engineering Lead | Pending | - |
|
|
| [Name] | Design Lead | Pending | - |
|
|
|
|
---
|
|
|
|
## Appendix
|
|
|
|
### References
|
|
|
|
- [Reference 1]
|
|
- [Reference 2]
|
|
|
|
### Change Log
|
|
|
|
| Date | Author | Changes |
|
|
|------|--------|---------|
|
|
| $(date +%Y-%m-%d) | $(whoami) | Initial draft |
|
|
|
|
EOF
|
|
|
|
echo -e "${GREEN}✓ PRD generated successfully!${NC}"
|
|
echo ""
|
|
echo -e "Output file: ${BLUE}$OUTPUT_FILE${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Next steps:${NC}"
|
|
echo " 1. Review and fill in the placeholder sections"
|
|
echo " 2. Add specific user stories and acceptance criteria"
|
|
echo " 3. Attach mockups/wireframes if available"
|
|
echo " 4. Share with stakeholders for review"
|
|
echo " 5. Run validation: scripts/validate_prd.sh $OUTPUT_FILE"
|
|
echo ""
|
|
echo -e "${GREEN}✓ Done!${NC}"
|