---
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 <path>/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.
