#!/usr/bin/env python3 """ Create a new Product Requirement Document (PRD). """ import argparse import re from datetime import datetime from pathlib import Path def slugify(text): """Convert text to lowercase slug format.""" text = text.lower() text = re.sub(r'[^\w\s-]', '', text) text = re.sub(r'[-\s]+', '-', text) return text.strip('-') def create_prd(title, prd_dir='docs/PRD', author=''): """Create a new PRD file.""" prd_dir = Path(prd_dir) prd_dir.mkdir(parents=True, exist_ok=True) slug = slugify(title) filename = f"{slug}.md" filepath = prd_dir / filename date = datetime.now().strftime('%Y-%m-%d') content = f"""# Product Requirement Document: {title} **Author:** {author or '[Your Name]'} **Date:** {date} **Status:** Draft **Last Updated:** {date} ## Executive Summary [Brief 2-3 sentence overview of what this feature is and why it matters] ## Problem Statement ### Current Situation [Describe the current state and what pain points exist] ### User Impact [Who is affected by this problem and how?] ### Business Impact [What is the business cost of not solving this problem?] ## Goals and Objectives ### Primary Goals 1. [Goal 1] 2. [Goal 2] 3. [Goal 3] ### Success Metrics - [Metric 1]: [Target] - [Metric 2]: [Target] - [Metric 3]: [Target] ### Non-Goals [What is explicitly out of scope for this feature?] - [Non-goal 1] - [Non-goal 2] ## User Stories ### Story 1: [User Type] **As a** [user type] **I want to** [action] **So that** [benefit] **Acceptance Criteria:** - [ ] [Criterion 1] - [ ] [Criterion 2] - [ ] [Criterion 3] ### Story 2: [User Type] **As a** [user type] **I want to** [action] **So that** [benefit] **Acceptance Criteria:** - [ ] [Criterion 1] - [ ] [Criterion 2] ## Requirements ### Functional Requirements #### Must Have (P0) 1. **[Requirement 1]** - Description: [Details] - User Impact: [High/Medium/Low] 2. **[Requirement 2]** - Description: [Details] - User Impact: [High/Medium/Low] #### Should Have (P1) 1. **[Requirement 3]** - Description: [Details] - User Impact: [High/Medium/Low] #### Nice to Have (P2) 1. **[Requirement 4]** - Description: [Details] - User Impact: [High/Medium/Low] ### Non-Functional Requirements #### Performance - [Performance requirement 1] - [Performance requirement 2] #### Security - [Security requirement 1] - [Security requirement 2] #### Accessibility - [Accessibility requirement 1] - [Accessibility requirement 2] #### Scalability - [Scalability requirement 1] - [Scalability requirement 2] ## Design Considerations ### User Experience [Describe the intended user experience] #### User Flow 1. [Step 1] 2. [Step 2] 3. [Step 3] #### UI Components - [Component 1]: [Description] - [Component 2]: [Description] ### Technical Architecture [High-level technical approach] #### Components - **[Component 1]**: [Purpose and responsibilities] - **[Component 2]**: [Purpose and responsibilities] #### Data Model [Overview of data structures and relationships] #### APIs - **[Endpoint 1]**: [Purpose] - **[Endpoint 2]**: [Purpose] ### Integration Points - [System/Service 1]: [How it integrates] - [System/Service 2]: [How it integrates] ## Dependencies ### Internal Dependencies - [Dependency 1]: [Why needed] - [Dependency 2]: [Why needed] ### External Dependencies - [Third-party service 1]: [Purpose] - [Third-party service 2]: [Purpose] ### Blocking Issues - [Issue 1]: [Resolution plan] - [Issue 2]: [Resolution plan] ## Risks and Mitigation | Risk | Impact | Likelihood | Mitigation Strategy | |------|--------|------------|---------------------| | [Risk 1] | High/Medium/Low | High/Medium/Low | [Strategy] | | [Risk 2] | High/Medium/Low | High/Medium/Low | [Strategy] | ## Timeline and Milestones ### Phase 1: [Name] ([Duration]) - [ ] [Milestone 1] - [ ] [Milestone 2] ### Phase 2: [Name] ([Duration]) - [ ] [Milestone 3] - [ ] [Milestone 4] ### Phase 3: [Name] ([Duration]) - [ ] [Milestone 5] - [ ] [Milestone 6] ### Target Launch Date [Date or timeframe] ## Testing Strategy ### Unit Testing [Approach to unit testing] ### Integration Testing [Approach to integration testing] ### User Acceptance Testing [UAT plan and criteria] ### Performance Testing [Performance testing approach] ## Launch Plan ### Pre-Launch Checklist - [ ] [Item 1] - [ ] [Item 2] - [ ] [Item 3] ### Rollout Strategy [Describe how the feature will be rolled out] - **Audience**: [Who gets access first] - **Timeline**: [Phased rollout schedule] - **Monitoring**: [What metrics to watch] ### Communication Plan - **Internal**: [How to communicate to team] - **External**: [How to communicate to users] ### Rollback Plan [How to rollback if issues arise] ## Post-Launch ### Monitoring - [Metric to monitor 1] - [Metric to monitor 2] ### Iteration Plan [How we'll iterate based on feedback] ### Success Evaluation [How and when we'll evaluate if we met our goals] ## Open Questions - [ ] [Question 1] - [ ] [Question 2] - [ ] [Question 3] ## Stakeholders | Name | Role | Responsibility | |------|------|----------------| | [Name] | [Role] | [What they're responsible for] | | [Name] | [Role] | [What they're responsible for] | ## References - [Link to related PRDs] - [Link to design mockups] - [Link to technical specs] - [Link to user research] ## Appendix ### Terminology - **[Term 1]**: [Definition] - **[Term 2]**: [Definition] ### Additional Resources - [Resource 1] - [Resource 2] """ with open(filepath, 'w') as f: f.write(content) print(f"Created PRD: {filepath}") return filepath def main(): parser = argparse.ArgumentParser(description='Create a new Product Requirement Document') parser.add_argument('title', help='Title of the PRD') parser.add_argument('--dir', default='docs/PRD', help='PRD directory path') parser.add_argument('--author', help='Document author name') args = parser.parse_args() filepath = create_prd(args.title, args.dir, args.author or '') print("\nNext steps:") print(f"1. Edit {filepath} to complete all sections") print("2. Share with stakeholders for review") print("3. Refine based on feedback") print("4. Get final approval before implementation") if __name__ == '__main__': main()