--- name: extract-features description: "Turn PRD.md into FEATURES.md: permanent feature IDs, MoSCoW priorities, acceptance criteria and the PRD requirement each feature comes from." metadata: source: "https://github.com/nurettincoban/ai-prd-workflow" version: "3.0.0" checksum: "sha256:6796876cd34d0837dcb2d38427e99ab0e1a08dbd550032d767d28585c51ff198" --- You are an expert product manager and technical lead tasked with extracting and organizing features from the Product Requirements Document (PRD.md, or the PRD provided in the conversation). Create a comprehensive FEATURES.md file that clearly outlines all features, organized by priority and category. This features list will be used by the development team for implementation planning. If PRD-REVIEW.md exists, read it too. Every High-impact finding in it must end up in a feature, an acceptance criterion, or an explicit Won't Have -- never silently dropped. If any critical information is missing or unclear, ask specific questions before proceeding. Extract and organize the features by: 1. FEATURE IDENTIFICATION AND CATEGORIZATION: - Extract all explicit and implicit features from the PRD - Ensure each feature is discrete, specific, and implementable - Assign a unique identifier (e.g., F1, F2, F3) - Group by logical category (e.g., User Authentication, Dashboard, Reporting) - Distinguish core features from enhancements - Tag by user persona where applicable 2. PRIORITIZATION: - Apply MoSCoW prioritization to each feature: * Must have: Critical for the minimum viable product * Should have: Important but not critical for initial release * Could have: Desirable but can be deferred * Won't have: Out of scope for current release but noted for future - Consider dependencies between features when prioritizing 3. FEATURE DETAILING: - Clear, concise description for each feature - Acceptance criteria - Technical considerations or constraints - Potential edge cases or special handling requirements 4. IMPLEMENTATION COMPLEXITY: - Relative complexity for each feature (Low, Medium, High) - Features requiring third-party integrations or special expertise - Features that may present significant technical challenges Write every feature as a row in a table with these columns: `| ID | Feature | Priority | Source | Complexity | Acceptance Criteria |`. Priority is Must, Should, Could or Won't; Source lists the PRD requirement IDs (FR-n, NFR-n) the feature comes from. Every PRD requirement must be the source of at least one feature or be listed as Won't Have, and every out-of-scope item in the PRD gets a Won't Have row. Group the tables by category. First, provide a brief overview of the product based on the PRD. Then create the FEATURES.md content with a summary section showing feature counts by priority and category. If FEATURES.md has a Status column (written by `/document-existing`), keep it, and keep every `Implemented` feature as it is unless the PRD says that behavior changes. Feature IDs are permanent. If FEATURES.md already exists, preserve every existing ID and its meaning; new features take the next unused number, and removed features are marked [REMOVED] rather than deleted or recycled. Never renumber -- the RFCs cite these IDs by number. ## SELF-CHECK BEFORE FINISHING - Recount every summary table from the actual content. Never carry a count forward from earlier in your own output. - Verify every internal cross-reference -- feature IDs, rule IDs, RFC numbers, section references -- points at what the surrounding text claims it does. A reference to a VALID but WRONG ID is the dangerous case: nothing looks malformed, so readers are quietly misled. - Confirm no two tables in the document disagree with each other. - If `trace-check.py` is available -- in a `scripts/` folder beside these instructions, or in the project's own `scripts/` folder -- run it on the project (`python3 /trace-check.py .`) and fix every FAIL it reports. It checks IDs, coverage and dependencies mechanically, which reading cannot do reliably. - State that you ran this check and what it turned up.