507 lines
17 KiB
Markdown
507 lines
17 KiB
Markdown
---
|
|
name: pre-dev-feature-map
|
|
description: |
|
|
Gate 2: Feature relationship map - visualizes feature landscape, groupings,
|
|
and interactions at business level before technical architecture.
|
|
|
|
trigger: |
|
|
- PRD passed Gate 1 validation
|
|
- Multiple features with complex interactions
|
|
- Need to understand feature scope and relationships
|
|
- Large Track workflow (2+ day features)
|
|
|
|
skip_when: |
|
|
- Small Track workflow (<2 days) → skip to TRD
|
|
- Single simple feature → TRD directly
|
|
- PRD not validated → complete Gate 1 first
|
|
|
|
sequence:
|
|
after: [pre-dev-prd-creation]
|
|
before: [pre-dev-trd-creation]
|
|
---
|
|
|
|
# Feature Map Creation - Understanding the Feature Landscape
|
|
|
|
## Foundational Principle
|
|
|
|
**Feature relationships and boundaries must be mapped before architectural decisions.**
|
|
|
|
Jumping from PRD to TRD without mapping creates:
|
|
- Architectures that don't match feature interaction patterns
|
|
- Missing integration points discovered late
|
|
- Poor module boundaries that cross feature concerns
|
|
- Difficulty prioritizing work without understanding dependencies
|
|
|
|
**The Feature Map answers**: How do features relate, group, and interact at a business level?
|
|
**The Feature Map never answers**: How we'll technically implement those features (that's TRD).
|
|
|
|
## When to Use This Skill
|
|
|
|
Use this skill when:
|
|
- PRD has passed Gate 1 validation
|
|
- About to start technical architecture (TRD)
|
|
- Need to understand feature scope and relationships
|
|
- Multiple features have complex interactions
|
|
- Unclear how to group or prioritize features
|
|
|
|
## Mandatory Workflow
|
|
|
|
### Phase 1: Feature Analysis (Inputs Required)
|
|
1. **Approved PRD** (Gate 1 passed) - business requirements locked
|
|
2. **Extract all features** from PRD
|
|
3. **Identify user journeys** across features
|
|
4. **Map feature interactions** and dependencies
|
|
|
|
### Phase 2: Feature Mapping
|
|
1. **Categorize features** (Core/Supporting/Enhancement/Integration)
|
|
2. **Group into domains** (logical business groupings)
|
|
3. **Map user journeys** (how users flow through features)
|
|
4. **Identify integration points** (where features interact)
|
|
5. **Define boundaries** (what each feature owns)
|
|
6. **Visualize relationships** (diagrams or structured text)
|
|
7. **Prioritize by value** (core vs. nice-to-have)
|
|
|
|
### Phase 3: Gate 2 Validation
|
|
**MANDATORY CHECKPOINT** - Must pass before proceeding to TRD:
|
|
- [ ] All PRD features are mapped
|
|
- [ ] Feature categories are clearly defined
|
|
- [ ] Domain groupings are logical and cohesive
|
|
- [ ] User journeys are complete (start to finish)
|
|
- [ ] Integration points are identified
|
|
- [ ] Feature boundaries are clear (no overlap)
|
|
- [ ] Priority levels support phased delivery
|
|
- [ ] No technical implementation details included
|
|
|
|
## Explicit Rules
|
|
|
|
### ✅ DO Include in Feature Map
|
|
- Feature list (extracted from PRD)
|
|
- Feature categories (Core/Supporting/Enhancement/Integration)
|
|
- Domain groupings (logical business areas)
|
|
- User journey maps (how users move through features)
|
|
- Feature interactions (which features depend on/trigger others)
|
|
- Integration points (where features exchange data/events)
|
|
- Feature boundaries (what each feature owns)
|
|
- Priority levels (MVP vs. future phases)
|
|
- Scope visualization (what's in/out of each phase)
|
|
|
|
### ❌ NEVER Include in Feature Map
|
|
- Technical architecture or component design
|
|
- Technology choices or framework decisions
|
|
- Database schemas or API specifications
|
|
- Implementation approaches or algorithms
|
|
- Infrastructure or deployment concerns
|
|
- Code structure or file organization
|
|
- Protocol choices or data formats
|
|
|
|
### Feature Categorization Rules
|
|
1. **Core**: Must have for MVP, blocks other features
|
|
2. **Supporting**: Enables core features, medium priority
|
|
3. **Enhancement**: Improves existing features, nice-to-have
|
|
4. **Integration**: Connects to external systems, varies by need
|
|
|
|
### Domain Grouping Rules
|
|
1. Group features by business capability (not technical layer)
|
|
2. Each domain should have cohesive, related features
|
|
3. Minimize cross-domain dependencies
|
|
4. Name domains by business function (User Management, Payment Processing)
|
|
|
|
## Rationalization Table
|
|
|
|
| Excuse | Reality |
|
|
|--------|---------|
|
|
| "Feature relationships are obvious" | Obvious to you ≠ documented for team. Map them. |
|
|
| "We can figure out groupings during TRD" | TRD architecture follows feature structure. Define it first. |
|
|
| "This feels like extra work" | Skipping this causes rework when architecture mismatches features. |
|
|
| "The PRD already has this info" | PRD lists features; map shows relationships. Different views. |
|
|
| "I'll just mention the components" | Components are technical (TRD). This is business groupings only. |
|
|
| "User journeys are in the PRD" | PRD has stories; map shows cross-feature flows. Different levels. |
|
|
| "Integration points are technical" | Points WHERE features interact = business. HOW = technical (TRD). |
|
|
| "Priorities can be set later" | Priority affects architecture decisions. Set them before TRD. |
|
|
| "Boundaries will be clear in code" | Code structure follows feature boundaries. Define them first. |
|
|
| "This is just a simple feature" | Even simple features have interactions. Map them. |
|
|
|
|
## Red Flags - STOP
|
|
|
|
If you catch yourself writing any of these in a Feature Map, **STOP**:
|
|
|
|
- Technology names (APIs, databases, frameworks)
|
|
- Component names (AuthService, PaymentProcessor)
|
|
- Technical terms (microservices, endpoints, schemas)
|
|
- Implementation details (how data flows technically)
|
|
- Architecture diagrams (system components)
|
|
- Code organization (packages, modules, files)
|
|
- Protocol specifications (REST, GraphQL, gRPC)
|
|
|
|
**When you catch yourself**: Remove the technical detail. Focus on WHAT features do and HOW they relate at a business level.
|
|
|
|
## Gate 2 Validation Checklist
|
|
|
|
Before proceeding to TRD, verify:
|
|
|
|
**Feature Completeness**:
|
|
- [ ] All PRD features are included in map
|
|
- [ ] Each feature has clear description and purpose
|
|
- [ ] Feature categories are assigned (Core/Supporting/Enhancement/Integration)
|
|
- [ ] No features are missing or overlooked
|
|
|
|
**Grouping Clarity**:
|
|
- [ ] Domains are logically cohesive (related business capabilities)
|
|
- [ ] Domain boundaries are clear (no overlapping responsibilities)
|
|
- [ ] Cross-domain dependencies are minimized
|
|
- [ ] Domain names reflect business function (not technical layer)
|
|
|
|
**Journey Mapping**:
|
|
- [ ] Primary user journeys are documented (start to finish)
|
|
- [ ] Journeys show which features users touch
|
|
- [ ] Happy path and error scenarios covered
|
|
- [ ] Handoff points between features identified
|
|
|
|
**Integration Points**:
|
|
- [ ] All feature interactions are identified
|
|
- [ ] Data/event exchange points are marked
|
|
- [ ] Directional dependencies are clear (A depends on B)
|
|
- [ ] Circular dependencies are flagged and resolved
|
|
|
|
**Priority & Phasing**:
|
|
- [ ] MVP features clearly identified
|
|
- [ ] Priority rationale is documented
|
|
- [ ] Phasing supports incremental value delivery
|
|
- [ ] Dependencies don't block MVP delivery
|
|
|
|
**Gate Result**:
|
|
- ✅ **PASS**: All checkboxes checked → Proceed to TRD
|
|
- ⚠️ **CONDITIONAL**: Clarify ambiguous boundaries → Re-validate
|
|
- ❌ **FAIL**: Features poorly grouped or missing → Rework
|
|
|
|
## Feature Map Template
|
|
|
|
Use this structure:
|
|
|
|
```markdown
|
|
# Feature Map: [Project/Feature Name]
|
|
|
|
## Overview
|
|
- **PRD Reference**: [Link to approved PRD]
|
|
- **Last Updated**: [Date]
|
|
- **Status**: Draft / Under Review / Approved
|
|
|
|
## Feature Inventory
|
|
|
|
### Core Features (MVP)
|
|
| Feature ID | Feature Name | Description | User Value | Dependencies |
|
|
|------------|--------------|-------------|------------|--------------|
|
|
| F-001 | [Name] | [Brief description] | [What users gain] | [Other features] |
|
|
| F-002 | [Name] | [Brief description] | [What users gain] | [Other features] |
|
|
|
|
### Supporting Features
|
|
| Feature ID | Feature Name | Description | User Value | Dependencies |
|
|
|------------|--------------|-------------|------------|--------------|
|
|
| F-101 | [Name] | [Brief description] | [What users gain] | [Other features] |
|
|
|
|
### Enhancement Features (Post-MVP)
|
|
| Feature ID | Feature Name | Description | User Value | Dependencies |
|
|
|------------|--------------|-------------|------------|--------------|
|
|
| F-201 | [Name] | [Brief description] | [What users gain] | [Other features] |
|
|
|
|
### Integration Features
|
|
| Feature ID | Feature Name | Description | User Value | Dependencies |
|
|
|------------|--------------|-------------|------------|--------------|
|
|
| F-301 | [Name] | [Brief description] | [What users gain] | [Other features] |
|
|
|
|
## Domain Groupings
|
|
|
|
### Domain 1: [Business Domain Name]
|
|
**Purpose**: [What business capability this domain provides]
|
|
|
|
**Features**:
|
|
- F-001: [Feature name]
|
|
- F-002: [Feature name]
|
|
- F-101: [Feature name]
|
|
|
|
**Boundaries**:
|
|
- **Owns**: [What data/processes this domain is responsible for]
|
|
- **Consumes**: [What it needs from other domains]
|
|
- **Provides**: [What it offers to other domains]
|
|
|
|
**Integration Points**:
|
|
- → Domain 2: [What/why they interact]
|
|
- ← Domain 3: [What/why they interact]
|
|
|
|
### Domain 2: [Business Domain Name]
|
|
[Same structure as Domain 1]
|
|
|
|
## User Journeys
|
|
|
|
### Journey 1: [Journey Name]
|
|
**User Type**: [Primary persona from PRD]
|
|
**Goal**: [What user wants to accomplish]
|
|
|
|
**Path**:
|
|
1. **[Feature F-001]**: [User action and feature response]
|
|
- Integration: [If interacts with another feature]
|
|
2. **[Feature F-002]**: [User action and feature response]
|
|
3. **[Feature F-003]**: [User action and feature response]
|
|
- Success: [What happens on success]
|
|
- Failure: [What happens on failure, which feature handles]
|
|
|
|
**Cross-Domain Interactions**:
|
|
- Domain 1 → Domain 2: [What data/event passes between]
|
|
- Domain 2 → Domain 3: [What data/event passes between]
|
|
|
|
### Journey 2: [Journey Name]
|
|
[Same structure]
|
|
|
|
## Feature Interaction Map
|
|
|
|
### High-Level Relationships
|
|
```
|
|
[Visual or structured text showing feature relationships]
|
|
|
|
Example:
|
|
┌─────────────────┐
|
|
│ User Auth │ (Core)
|
|
│ F-001 │
|
|
└────────┬────────┘
|
|
│ provides identity to
|
|
↓
|
|
┌─────────────────┐ ┌──────────────────┐
|
|
│ User Profile │────→│ File Upload │
|
|
│ F-002 │ │ F-003 │
|
|
└─────────────────┘ └──────────────────┘
|
|
(Core) (Supporting)
|
|
│
|
|
│ triggers
|
|
↓
|
|
┌─────────────────┐
|
|
│ Notifications │
|
|
│ F-101 │
|
|
└─────────────────┘
|
|
(Supporting)
|
|
```
|
|
|
|
### Dependency Matrix
|
|
| Feature | Depends On | Blocks | Optional |
|
|
|---------|-----------|--------|----------|
|
|
| F-001 | None | F-002, F-003 | - |
|
|
| F-002 | F-001 | F-101 | F-003 |
|
|
| F-003 | F-001 | None | F-002 |
|
|
| F-101 | F-002 | None | - |
|
|
|
|
## Phasing Strategy
|
|
|
|
### Phase 1 - MVP (Core Features)
|
|
**Goal**: [Minimum viable product goal]
|
|
**Timeline**: [Estimated timeframe]
|
|
|
|
**Features**:
|
|
- F-001: User Auth
|
|
- F-002: User Profile
|
|
- F-003: File Upload
|
|
|
|
**User Value**: [What users can do after Phase 1]
|
|
**Success Criteria**: [How we measure Phase 1 success]
|
|
|
|
### Phase 2 - Enhancement
|
|
**Goal**: [Enhancement goal]
|
|
**Triggers**: [What conditions trigger Phase 2]
|
|
|
|
**Features**:
|
|
- F-101: Notifications
|
|
- F-102: Advanced Search
|
|
- F-201: Social Sharing
|
|
|
|
**User Value**: [What users gain in Phase 2]
|
|
|
|
### Phase 3 - Integration
|
|
**Goal**: [Integration goal]
|
|
|
|
**Features**:
|
|
- F-301: External Payment Gateway
|
|
- F-302: Third-party Analytics
|
|
|
|
**User Value**: [What users gain in Phase 3]
|
|
|
|
## Scope Boundaries
|
|
|
|
### In Scope (This Feature Map)
|
|
- [Feature area 1]
|
|
- [Feature area 2]
|
|
- [Feature area 3]
|
|
|
|
### Out of Scope (Future / Other Projects)
|
|
- [Feature area X] - Rationale: [Why out of scope]
|
|
- [Feature area Y] - Rationale: [Why out of scope]
|
|
|
|
### Assumptions
|
|
- [Assumption 1 about features or interactions]
|
|
- [Assumption 2]
|
|
|
|
### Constraints
|
|
- [Business constraint 1 that affects feature scope]
|
|
- [Business constraint 2]
|
|
|
|
## Risk Assessment
|
|
|
|
### Feature Complexity Risks
|
|
| Feature | Complexity | Risk | Mitigation |
|
|
|---------|-----------|------|------------|
|
|
| F-001 | High | User adoption | [How to mitigate] |
|
|
| F-003 | Medium | Scope creep | [How to mitigate] |
|
|
|
|
### Integration Risks
|
|
| Integration Point | Risk | Impact | Mitigation |
|
|
|-------------------|------|--------|------------|
|
|
| F-001 → F-002 | [Risk description] | High | [Mitigation] |
|
|
| F-002 → F-101 | [Risk description] | Medium | [Mitigation] |
|
|
|
|
## Gate 2 Validation
|
|
|
|
**Validation Date**: [Date]
|
|
**Validated By**: [Person/team]
|
|
|
|
- [ ] All PRD features mapped
|
|
- [ ] Domain groupings are logical
|
|
- [ ] User journeys are complete
|
|
- [ ] Integration points identified
|
|
- [ ] Priorities support phased delivery
|
|
- [ ] No technical details included
|
|
- [ ] Ready for TRD architecture design
|
|
|
|
**Approval**: ☐ Approved | ☐ Needs Revision | ☐ Rejected
|
|
**Next Step**: Proceed to TRD Creation (pre-dev-trd-creation)
|
|
```
|
|
|
|
## Common Violations and Fixes
|
|
|
|
### Violation 1: Technical Details in Feature Descriptions
|
|
❌ **Wrong**:
|
|
```markdown
|
|
### F-001: User Authentication
|
|
- Description: JWT-based auth with PostgreSQL session storage
|
|
- Dependencies: Database, Redis cache, OAuth2 service
|
|
```
|
|
|
|
✅ **Correct**:
|
|
```markdown
|
|
### F-001: User Authentication
|
|
- Description: Users can create accounts and securely log in
|
|
- User Value: Access to personalized features
|
|
- Dependencies: None (foundational)
|
|
- Blocks: F-002 (Profile), F-003 (Upload)
|
|
```
|
|
|
|
### Violation 2: Technical Components in Domain Groupings
|
|
❌ **Wrong**:
|
|
```markdown
|
|
### Domain: Auth Services
|
|
- AuthService component
|
|
- TokenValidator component
|
|
- SessionManager component
|
|
```
|
|
|
|
✅ **Correct**:
|
|
```markdown
|
|
### Domain: User Identity
|
|
**Purpose**: Managing user accounts, authentication, and session lifecycle
|
|
|
|
**Features**:
|
|
- F-001: User Registration
|
|
- F-002: User Login
|
|
- F-003: Session Management
|
|
- F-004: Password Recovery
|
|
|
|
**Boundaries**:
|
|
- **Owns**: User credentials, session state, login history
|
|
- **Provides**: Identity verification to all other domains
|
|
- **Consumes**: Email service for notifications
|
|
```
|
|
|
|
### Violation 3: Implementation in Integration Points
|
|
❌ **Wrong**:
|
|
```markdown
|
|
### Integration Points
|
|
- User Auth → Profile: REST API call to /api/profile with JWT
|
|
- Profile → Storage: S3 upload via pre-signed URL
|
|
```
|
|
|
|
✅ **Correct**:
|
|
```markdown
|
|
### Integration Points
|
|
- User Auth → Profile: Provides verified user identity
|
|
- Profile → File Storage: Requests secure file storage for user uploads
|
|
- File Storage → Notifications: Triggers notification when upload completes
|
|
```
|
|
|
|
## Confidence Scoring
|
|
|
|
```yaml
|
|
Confidence Factors:
|
|
Feature Coverage: [0-25]
|
|
- All PRD features mapped: 25
|
|
- Most features mapped: 15
|
|
- Some features missing: 5
|
|
|
|
Relationship Clarity: [0-25]
|
|
- All interactions documented: 25
|
|
- Most interactions clear: 15
|
|
- Relationships unclear: 5
|
|
|
|
Domain Cohesion: [0-25]
|
|
- Domains are logically cohesive: 25
|
|
- Domains mostly cohesive: 15
|
|
- Poor domain boundaries: 5
|
|
|
|
Journey Completeness: [0-25]
|
|
- All user paths mapped: 25
|
|
- Primary paths mapped: 15
|
|
- Journeys incomplete: 5
|
|
|
|
Total: [0-100]
|
|
|
|
Action:
|
|
80+: Feature map complete, proceed to TRD
|
|
50-79: Address gaps, re-validate
|
|
<50: Rework groupings and relationships
|
|
```
|
|
|
|
## Output Location
|
|
|
|
**Always output to**: `docs/pre-development/feature-map/feature-map-[feature-name].md`
|
|
|
|
## After Feature Map Approval
|
|
|
|
1. ✅ Lock the Feature Map - feature scope and relationships are now reference
|
|
2. 🎯 Use Feature Map as input for TRD (next phase)
|
|
3. 🚫 Never add technical architecture to Feature Map retroactively
|
|
4. 📋 Keep business features separate from technical components
|
|
|
|
## Quality Self-Check
|
|
|
|
Before declaring Feature Map complete, verify:
|
|
- [ ] All PRD features are included and categorized
|
|
- [ ] Domain groupings are cohesive and logical
|
|
- [ ] User journeys show cross-feature flows
|
|
- [ ] Integration points are identified (WHAT interacts, not HOW)
|
|
- [ ] Feature boundaries are clear (no overlap)
|
|
- [ ] Priority levels support phased delivery
|
|
- [ ] Dependencies don't create circular blocks
|
|
- [ ] Zero technical implementation details present
|
|
- [ ] Gate 2 validation checklist 100% complete
|
|
|
|
## The Bottom Line
|
|
|
|
**If you wrote a Feature Map with technical architecture details, remove them.**
|
|
|
|
The Feature Map is business-level feature relationships only. Period. No components. No APIs. No databases.
|
|
|
|
Technical architecture goes in TRD. That's the next phase. Wait for it.
|
|
|
|
Violating this separation means:
|
|
- You're constraining architecture before understanding feature interactions
|
|
- Feature groupings become coupled to technical layers
|
|
- You can't objectively design architecture that matches business needs
|
|
- Boundaries become technical instead of business-driven
|
|
|
|
**Map the features. Understand relationships. Then architect in TRD.**
|