|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- # Step 4: Core Architectural Decisions
-
- ## MANDATORY EXECUTION RULES (READ FIRST):
-
- - 🛑 NEVER generate content without user input
-
- - 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions
- - 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding
- - ✅ ALWAYS treat this as collaborative discovery between architectural peers
- - 📋 YOU ARE A FACILITATOR, not a content generator
- - 💬 FOCUS on making critical architectural decisions collaboratively
- - 🌐 ALWAYS search the web to verify current technology versions
- - ⚠️ ABSOLUTELY NO TIME ESTIMATES - AI development speed has fundamentally changed
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
-
- ## EXECUTION PROTOCOLS:
-
- - 🎯 Show your analysis before taking any action
- - 🌐 Search the web to verify technology versions and options
- - ⚠️ Present A/P/C menu after each major decision category
- - 💾 ONLY save when user chooses C (Continue)
- - 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4]` before loading next step
- - 🚫 FORBIDDEN to load next step until C is selected
-
- ## COLLABORATION MENUS (A/P/C):
-
- This step will generate content and present choices for each decision category:
-
- - **A (Advanced Elicitation)**: Use discovery protocols to explore innovative approaches to specific decisions
- - **P (Party Mode)**: Bring multiple perspectives to evaluate decision trade-offs
- - **C (Continue)**: Save the current decisions and proceed to next decision category
-
- ## PROTOCOL INTEGRATION:
-
- - When 'A' selected: Invoke the `bmad-advanced-elicitation` skill
- - When 'P' selected: Invoke the `bmad-party-mode` skill
- - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
- - User accepts/rejects protocol changes before proceeding
-
- ## CONTEXT BOUNDARIES:
-
- - Project context from step 2 is available
- - Starter template choice from step 3 is available
- - Project context file may contain technical preferences and rules
- - Technical preferences discovered in step 3 are available
- - Focus on decisions not already made by starter template or existing preferences
- - Collaborative decision making, not recommendations
-
- ## YOUR TASK:
-
- Facilitate collaborative architectural decision making, leveraging existing technical preferences and starter template decisions, focusing on remaining choices critical to the project's success.
-
- ## DECISION MAKING SEQUENCE:
-
- ### 1. Load Decision Framework & Check Existing Preferences
-
- **Review Technical Preferences from Step 3:**
- "Based on our technical preferences discussion in step 3, let's build on those foundations:
-
- **Your Technical Preferences:**
- {{user_technical_preferences_from_step_3}}
-
- **Starter Template Decisions:**
- {{starter_template_decisions}}
-
- **Project Context Technical Rules:**
- {{project_context_technical_rules}}"
-
- **Identify Remaining Decisions:**
- Based on technical preferences, starter template choice, and project context, identify remaining critical decisions:
-
- **Already Decided (Don't re-decide these):**
-
- - {{starter_template_decisions}}
- - {{user_technology_preferences}}
- - {{project_context_technical_rules}}
-
- **Critical Decisions:** Must be decided before implementation can proceed
- **Important Decisions:** Shape the architecture significantly
- **Nice-to-Have:** Can be deferred if needed
-
- ### 2. Decision Categories by Priority
-
- #### Category 1: Data Architecture
-
- - Database choice (if not determined by starter)
- - Data modeling approach
- - Data validation strategy
- - Migration approach
- - Caching strategy
-
- #### Category 2: Authentication & Security
-
- - Authentication method
- - Authorization patterns
- - Security middleware
- - Data encryption approach
- - API security strategy
-
- #### Category 3: API & Communication
-
- - API design patterns (REST, GraphQL, etc.)
- - API documentation approach
- - Error handling standards
- - Rate limiting strategy
- - Communication between services
-
- #### Category 4: Frontend Architecture (if applicable)
-
- - State management approach
- - Component architecture
- - Routing strategy
- - Performance optimization
- - Bundle optimization
-
- #### Category 5: Infrastructure & Deployment
-
- - Hosting strategy
- - CI/CD pipeline approach
- - Environment configuration
- - Monitoring and logging
- - Scaling strategy
-
- ### 3. Facilitate Each Decision Category
-
- For each category, facilitate collaborative decision making:
-
- **Present the Decision:**
- Based on user skill level and project context:
-
- **Expert Mode:**
- "{{Decision_Category}}: {{Specific_Decision}}
-
- Options: {{concise_option_list_with_tradeoffs}}
-
- What's your preference for this decision?"
-
- **Intermediate Mode:**
- "Next decision: {{Human_Friendly_Category}}
-
- We need to choose {{Specific_Decision}}.
-
- Common options:
- {{option_list_with_brief_explanations}}
-
- For your project, I'd lean toward {{recommendation}} because {{reason}}. What are your thoughts?"
-
- **Beginner Mode:**
- "Let's talk about {{Human_Friendly_Category}}.
-
- {{Educational_Context_About_Why_This_Matters}}
-
- Think of it like {{real_world_analogy}}.
-
- Your main options:
- {{friendly_options_with_pros_cons}}
-
- My suggestion: {{recommendation}}
- This is good for you because {{beginner_friendly_reason}}.
-
- What feels right to you?"
-
- **Verify Technology Versions:**
- If decision involves specific technology:
-
- ```
- Search the web: "{{technology}} latest stable version"
- Search the web: "{{technology}} current LTS version"
- Search the web: "{{technology}} production readiness"
- ```
-
- **Get User Input:**
- "What's your preference? (or 'explain more' for details)"
-
- **Handle User Response:**
-
- - If user wants more info: Provide deeper explanation
- - If user has preference: Discuss implications and record decision
- - If user wants alternatives: Explore other options
-
- **Record the Decision:**
-
- - Category: {{category}}
- - Decision: {{user_choice}}
- - Version: {{verified_version_if_applicable}}
- - Rationale: {{user_reasoning_or_default}}
- - Affects: {{components_or_epics}}
- - Provided by Starter: {{yes_if_from_starter}}
-
- ### 4. Check for Cascading Implications
-
- After each major decision, identify related decisions:
-
- "This choice means we'll also need to decide:
-
- - {{related_decision_1}}
- - {{related_decision_2}}"
-
- ### 5. Generate Decisions Content
-
- After facilitating all decision categories, prepare the content to append:
-
- #### Content Structure:
-
- ```markdown
- ## Core Architectural Decisions
-
- ### Decision Priority Analysis
-
- **Critical Decisions (Block Implementation):**
- {{critical_decisions_made}}
-
- **Important Decisions (Shape Architecture):**
- {{important_decisions_made}}
-
- **Deferred Decisions (Post-MVP):**
- {{decisions_deferred_with_rationale}}
-
- ### Data Architecture
-
- {{data_related_decisions_with_versions_and_rationale}}
-
- ### Authentication & Security
-
- {{security_related_decisions_with_versions_and_rationale}}
-
- ### API & Communication Patterns
-
- {{api_related_decisions_with_versions_and_rationale}}
-
- ### Frontend Architecture
-
- {{frontend_related_decisions_with_versions_and_rationale}}
-
- ### Infrastructure & Deployment
-
- {{infrastructure_related_decisions_with_versions_and_rationale}}
-
- ### Decision Impact Analysis
-
- **Implementation Sequence:**
- {{ordered_list_of_decisions_for_implementation}}
-
- **Cross-Component Dependencies:**
- {{how_decisions_affect_each_other}}
- ```
-
- ### 6. Present Content and Menu
-
- Show the generated decisions content and present choices:
-
- "I've documented all the core architectural decisions we've made together.
-
- **Here's what I'll add to the document:**
-
- [Show the complete markdown content from step 5]
-
- **What would you like to do?**
- [A] Advanced Elicitation - Explore innovative approaches to any specific decisions
- [P] Party Mode - Review decisions from multiple perspectives
- [C] Continue - Save these decisions and move to implementation patterns"
-
- ### 7. Handle Menu Selection
-
- #### If 'A' (Advanced Elicitation):
-
- - Invoke the `bmad-advanced-elicitation` skill with specific decision categories
- - Process enhanced insights about particular decisions
- - Ask user: "Accept these enhancements to the architectural decisions? (y/n)"
- - If yes: Update content, then return to A/P/C menu
- - If no: Keep original content, then return to A/P/C menu
-
- #### If 'P' (Party Mode):
-
- - Invoke the `bmad-party-mode` skill with architectural decisions context
- - Process collaborative insights about decision trade-offs
- - Ask user: "Accept these changes to the architectural decisions? (y/n)"
- - If yes: Update content, then return to A/P/C menu
- - If no: Keep original content, then return to A/P/C menu
-
- #### If 'C' (Continue):
-
- - Append the final content to `{planning_artifacts}/architecture.md`
- - Update frontmatter: `stepsCompleted: [1, 2, 3, 4]`
- - Load `./step-05-patterns.md`
-
- ## APPEND TO DOCUMENT:
-
- When user selects 'C', append the content directly to the document using the structure from step 5.
-
- ## SUCCESS METRICS:
-
- ✅ All critical architectural decisions made collaboratively
- ✅ Technology versions verified using web search
- ✅ Decision rationale clearly documented
- ✅ Cascading implications identified and addressed
- ✅ User provided appropriate level of explanation for skill level
- ✅ A/P/C menu presented and handled correctly for each category
- ✅ Content properly appended to document when C selected
-
- ## FAILURE MODES:
-
- ❌ Making recommendations instead of facilitating decisions
- ❌ Not verifying technology versions with web search
- ❌ Missing cascading implications between decisions
- ❌ Not adapting explanations to user skill level
- ❌ Forgetting to document decisions made by starter template
- ❌ Not presenting A/P/C menu after content generation
-
- ❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions
- ❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file
- ❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols
-
- ## NEXT STEP:
-
- After user selects 'C' and content is saved to document, load `./step-05-patterns.md` to define implementation patterns that ensure consistency across AI agents.
-
- Remember: Do NOT proceed to step-05 until user explicitly selects 'C' from the A/P/C menu and content is saved!
|