UNPKG

appiq-solution

Version:

APPIQ SOLUTION: Flutter Mobile Development Extension for BMAD Method

299 lines (233 loc) 8.41 kB
# Smart Auto-Detect PRDs Task ## Purpose Intelligently detect PRD files, analyze existing codebase, and determine optimal implementation paths while maximizing code reuse. ## Usage ```bash @po smart-auto-detect-prds ``` ## Enhanced Process ### Step 1: PRD Discovery & Analysis 1. **Scan for PRD Files** matching patterns: - `*_prd.md` - `*_requirements.md` - `*_feature.md` 2. **Parse PRD Content**: - Extract feature name - Parse implementation paths (if specified) - Identify UI reference assets - Extract integration points - Parse code reuse requirements ### Step 2: Codebase Analysis For each detected PRD: #### A. Existing Code Scan ```bash # 1. Find similar features find lib/features/ -type d -name "*{feature_keyword}*" # 2. Scan shared components find lib/shared/ -name "*.dart" | xargs grep -l "{relevant_keywords}" # 3. Check existing services find lib/shared/services/ lib/core/services/ -name "*.dart" # 4. Analyze existing patterns find lib/features/ -name "*_cubit.dart" -o -name "*_repository.dart" -o -name "*_usecase.dart" ``` #### B. Dependency Analysis ```bash # Check pubspec.yaml for existing packages grep -E "(http|dio|cached_network_image|shared_preferences)" pubspec.yaml # Analyze DI container grep -n "registerLazySingleton\|registerFactory" lib/core/di/injection_container.dart # Check existing API endpoints find lib/features/*/data/datasources/ -name "*_remote_datasource.dart" -exec grep -l "http" {} \; ``` #### C. UI Component Analysis ```bash # Find reusable widgets find lib/shared/widgets/ -name "*.dart" | sort # Check existing page structures find lib/features/*/presentation/pages/ -name "*.dart" # Analyze existing themes and styles find lib/shared/theme/ lib/core/theme/ -name "*.dart" ``` ### Step 3: Smart Path Resolution #### If Implementation Paths Specified in PRD: 1. **Validate Specified Paths**: - Check if directories exist - Verify no conflicts with existing files - Ensure paths follow project conventions 2. **Integration Point Validation**: - Verify specified existing files exist - Check if integration points are compatible - Validate shared component references #### If No Paths Specified - Architect Mode: 1. **Feature Complexity Analysis**: ```markdown Analyzing feature: {feature_name} Complexity Factors: - [ ] Number of screens: {count} - [ ] External dependencies: {list} - [ ] Database changes needed: {yes/no} - [ ] New API endpoints: {count} - [ ] Shared state requirements: {yes/no} Recommendation: {simple_integration|new_feature|shared_component} ``` 2. **Automatic Path Generation**: ```bash # For new features mkdir -p lib/features/{feature_name}/{data,domain,presentation} # For simple integrations # Add to existing feature folder # For shared components mkdir -p lib/shared/{widgets,services,utils}/{feature_name} ``` ### Step 4: Code Reuse Optimization #### Existing Component Mapping: ```markdown Found Reusable Components for {feature_name}: UI Components: ✅ lib/shared/widgets/custom_button.dart - Can be used for {action_buttons} ✅ lib/shared/widgets/loading_widget.dart - For loading states ❌ Need new: {specific_widget} - No existing equivalent found Services: ✅ lib/shared/services/api_service.dart - Can be extended for {api_calls} ✅ lib/shared/services/navigation_service.dart - For navigation ❌ Need new: {specific_service} - No existing equivalent found Utilities: ✅ lib/shared/utils/validators.dart - For input validation ✅ lib/shared/utils/formatters.dart - For data formatting ❌ Need new: {specific_utility} - No existing equivalent found ``` #### Integration Strategy: ```markdown Integration Plan for {feature_name}: 1. Extend Existing: - {existing_cubit} → Add {new_states} - {existing_repository} → Add {new_methods} - {existing_service} → Add {new_functionality} 2. Create New: - {new_entity} → lib/features/{feature}/domain/entities/ - {new_usecase} → lib/features/{feature}/domain/usecases/ - {new_widget} → lib/features/{feature}/presentation/widgets/ 3. Shared Enhancements: - Add {new_shared_widget} → lib/shared/widgets/ - Extend {existing_theme} → lib/shared/theme/ ``` ### Step 5: UI Reference Processing #### Asset Organization: ```bash # Create asset directories if specified mkdir -p assets/images/{feature_name} mkdir -p assets/icons/{feature_name} # Validate referenced assets exist for asset in {ui_reference_assets}; do if [[ -f "$asset" ]]; then echo "✅ Found: $asset" else echo "❌ Missing: $asset - Please add this asset" fi done ``` #### UI Pattern Analysis: ```markdown UI Pattern Analysis for {feature_name}: Similar Existing Patterns: ✅ {existing_feature}/presentation/pages/{page}.dart - Similar layout structure ✅ {existing_feature}/presentation/widgets/{widget}.dart - Similar component pattern Recommended UI Approach: - Base Layout: Extend {existing_scaffold_pattern} - Components: Reuse {existing_widget_pattern} - Styling: Follow {existing_theme_pattern} - Navigation: Use {existing_navigation_pattern} ``` ### Step 6: Enhanced Story Generation #### Context-Aware Stories: ```markdown Generated Stories for {feature_name}: Story 1: Setup Infrastructure - Extend {existing_repository} with {new_methods} - Add {new_entity} following {existing_pattern} - Register dependencies in {existing_di_container} Story 2: UI Implementation - Create {new_page} extending {existing_base_page} - Reuse {existing_shared_widgets} - Follow {existing_theme_patterns} Story 3: Integration - Connect to {existing_navigation} - Integrate with {existing_services} - Add to {existing_routing} ``` ### Step 7: Architect Consultation #### When Architect Input Needed: ```bash @architect analyze-implementation-strategy {feature_name} ``` **Triggers for Architect Consultation**: - Complex cross-feature dependencies detected - No clear existing patterns found - Conflicting implementation approaches possible - Major architectural changes suggested #### Architect Analysis Output: ```markdown Architect Analysis for {feature_name}: Current Architecture Assessment: - Existing patterns: {list} - Architectural constraints: {list} - Integration challenges: {list} Recommended Approach: 1. Implementation Strategy: {detailed_strategy} 2. File Structure: {recommended_structure} 3. Integration Points: {specific_integration_points} 4. Risk Mitigation: {potential_issues_and_solutions} Code Reuse Opportunities: - {existing_component} can be extended for {new_functionality} - {existing_pattern} should be followed for consistency - {existing_service} can be enhanced with {new_methods} ``` ## Example Enhanced Workflow ### Input: `livestream_prd.md` with Implementation Paths ```markdown ## Implementation Paths ### Suggested File Structure lib/features/livestream/... ### Integration Points - Existing Pages: lib/features/home/presentation/pages/home_page.dart - Shared Services: lib/shared/services/api_service.dart ### UI References assets/images/livestream/mockup_main_screen.png ``` ### Auto-Analysis Output: ```markdown 🔍 Analyzing livestream_prd.md... 📁 Path Analysis: ✅ lib/features/livestream/ - Path available ✅ Integration with home_page.dart - Compatible ✅ api_service.dart - Can be extended 🔍 Codebase Scan Results: Found Similar Features: - lib/features/video_player/ - 67% similarity - lib/features/chat/ - 45% similarity Reusable Components: ✅ lib/shared/widgets/video_controller.dart - Perfect for stream controls ✅ lib/shared/services/websocket_service.dart - Can handle chat ❌ Need new: Stream management service 📱 UI Analysis: ✅ Found: assets/images/livestream/mockup_main_screen.png ✅ Existing video player patterns can be extended ✅ Chat UI patterns exist in lib/features/chat/ 🚀 Generated Implementation Plan: 1. Extend existing video_player patterns 2. Reuse chat UI components 3. Create new stream management service 4. Integrate with existing navigation Ready for development! ``` ## Configuration Enable in `core-config.yaml`: ```yaml smartAnalysis: enabled: true codebaseAnalysis: true architectConsultation: true uiReferenceProcessing: true reuseOptimization: true ``` This creates an intelligent system that maximizes code reuse and ensures optimal implementation paths! 🧠✨