BMAD-METHOD/bmad-system/intelligence/decision-engine.md

7.5 KiB

Decision Engine

Multi-Criteria Decision Making System

The Decision Engine provides sophisticated decision-making capabilities that enhance Claude Code's ability to make optimal choices in complex development scenarios.

Decision Framework

Decision Types

decision_categories:
  architectural_decisions:
    - technology_selection: "React vs Angular vs Vue"
    - pattern_choice: "Microservices vs Monolith"
    - integration_approach: "REST vs GraphQL vs gRPC"
    - scalability_strategy: "Horizontal vs Vertical scaling"
    
  implementation_decisions:
    - algorithm_selection: "Performance vs Memory trade-offs"
    - optimization_approach: "Premature vs Strategic optimization"
    - library_choice: "Build vs Buy vs Open Source"
    - coding_patterns: "Functional vs OOP approaches"
    
  process_decisions:
    - methodology_adaptation: "Agile practices customization"
    - tool_selection: "Development tool stack"
    - workflow_optimization: "CI/CD pipeline design"
    - team_organization: "Role assignments and responsibilities"
    
  strategic_decisions:
    - feature_prioritization: "Business value vs Technical debt"
    - resource_allocation: "Team capacity planning"
    - risk_mitigation: "Security vs Speed trade-offs"
    - timeline_adjustment: "Quality vs Delivery speed"

Decision Making Process

Multi-Criteria Analysis

criteria_evaluation:
  criteria_definition:
    technical_criteria:
      - performance_impact: "Response time, throughput"
      - scalability_potential: "Growth accommodation"
      - maintainability_score: "Code complexity, documentation"
      - security_implications: "Vulnerability surface, compliance"
      
    business_criteria:
      - cost_implications: "Development, operational, maintenance"
      - time_to_market: "Implementation speed"
      - user_value: "Feature impact on user experience"
      - strategic_alignment: "Company vision alignment"
      
    risk_criteria:
      - implementation_risk: "Technical complexity, unknowns"
      - operational_risk: "Production stability impact"
      - dependency_risk: "Third-party reliability"
      - change_risk: "Future modification difficulty"
      
  weight_assignment:
    - stakeholder_priorities: "PM, Architect, Business input"
    - project_phase_weights: "Different priorities per phase"
    - historical_success_factors: "What worked before"
    - context_adjustments: "Current project specifics"
    
  scoring_mechanism:
    - normalized_scores: "0-100 scale for all criteria"
    - weighted_aggregation: "Importance-weighted sum"
    - sensitivity_analysis: "Impact of weight changes"
    - confidence_levels: "Certainty in assessments"

Multi-Persona Consultation

consultation_process:
  1_identify_stakeholders:
    - relevant_personas: ["architect", "security", "qa", "pm"]
    - expertise_required: "Domain-specific knowledge needed"
    - decision_impact: "Who will be affected"
    
  2_gather_perspectives:
    consultation_request:
      - decision_context: "Current situation and constraints"
      - options_available: "Alternatives being considered"
      - evaluation_criteria: "How to assess options"
      - time_constraints: "Decision deadline"
      
  3_synthesize_input:
    - extract_recommendations: "Each persona's preference"
    - identify_agreements: "Consensus areas"
    - resolve_conflicts: "Conflicting recommendations"
    - weight_by_expertise: "Domain expert opinions prioritized"
    
  4_generate_recommendation:
    - combined_analysis: "Integrated assessment"
    - rationale_documentation: "Why this choice"
    - risk_assessment: "Potential downsides"
    - implementation_guide: "How to execute"

Claude Code Integration

Enhanced Decision Making for Development Tasks

async def make_technology_decision(requirements, constraints):
    """
    Use Decision Engine to choose optimal technology stack
    """
    # Gather technical requirements using Read tool
    project_analysis = await analyze_project_requirements(requirements)
    
    # Get multi-persona input
    architect_input = await consult_persona("architect", project_analysis)
    security_input = await consult_persona("security", project_analysis)
    performance_input = await consult_persona("qa", project_analysis)
    
    # Apply decision framework
    decision_matrix = create_decision_matrix([
        architect_input, security_input, performance_input
    ])
    
    # Calculate optimal choice
    optimal_choice = calculate_weighted_decision(decision_matrix, constraints)
    
    # Document decision using Write tool
    await document_decision(optimal_choice, decision_matrix)
    
    return optimal_choice

async def optimize_code_implementation(code_context):
    """
    Decide on optimal implementation approach
    """
    # Analyze current code using Read and Grep
    code_analysis = await analyze_code_complexity(code_context)
    
    # Consider multiple implementation strategies
    strategies = [
        "performance_optimized",
        "maintainability_focused", 
        "security_hardened",
        "development_speed"
    ]
    
    # Get expert recommendations
    recommendations = await get_expert_recommendations(strategies, code_analysis)
    
    # Apply decision criteria
    optimal_strategy = decide_implementation_approach(
        recommendations, 
        project_priorities(),
        resource_constraints()
    )
    
    return optimal_strategy

Decision Optimization

Trade-off Analysis

trade_off_analysis:
  pareto_optimization:
    - identify_objectives: "Performance, Cost, Security, Speed"
    - map_solution_space: "All feasible combinations"
    - find_optimal_frontier: "Best trade-off points"
    - select_balanced_solution: "Stakeholder preference"
    
  sensitivity_testing:
    - vary_weights: "How robust is the decision?"
    - test_assumptions: "What if requirements change?"
    - identify_robust_options: "Decisions that work in multiple scenarios"
    - document_boundaries: "When to reconsider"
    
  scenario_planning:
    - best_case_analysis: "Everything goes right"
    - worst_case_analysis: "Murphy's law scenarios"
    - likely_scenario: "Most probable outcome"
    - contingency_planning: "Backup options"

Decision Validation and Learning

Outcome Tracking

decision_tracking:
  implementation_monitoring:
    - measure_actual_outcomes: "Did we achieve objectives?"
    - compare_to_predictions: "Were estimates accurate?"
    - identify_deviations: "What went differently?"
    - extract_lessons: "What did we learn?"
    
  pattern_development:
    - successful_decisions: "What patterns led to success?"
    - failed_decisions: "What patterns to avoid?"
    - context_factors: "When do patterns apply?"
    - improvement_opportunities: "How to decide better?"

Commands for Claude Code

# Decision support commands
bmad decide --context "api-design" --options "rest,graphql,grpc"
bmad evaluate --criteria "performance,security,maintainability" --weights "0.4,0.3,0.3"
bmad tradeoff --analyze "speed-vs-quality" --constraints "timeline=tight"
bmad recommend --decision-type "architecture" --project-phase "design"

This Decision Engine transforms Claude Code into an intelligent decision-making partner that can navigate complex technical and business trade-offs with the wisdom of multiple domain experts.