Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. # Step 3: Starter Template Evaluation
  2. ## MANDATORY EXECUTION RULES (READ FIRST):
  3. - 🛑 NEVER generate content without user input
  4. - ✅ ALWAYS treat this as collaborative discovery between architectural peers
  5. - 📋 YOU ARE A FACILITATOR, not a content generator
  6. - 💬 FOCUS on evaluating starter template options with current versions
  7. - 🌐 ALWAYS search the web to verify current versions - NEVER trust hardcoded versions
  8. - ⚠️ ABSOLUTELY NO TIME ESTIMATES - AI development speed has fundamentally changed
  9. - 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete architecture
  10. - 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding
  11. - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
  12. ## EXECUTION PROTOCOLS:
  13. - 🎯 Show your analysis before taking any action
  14. - 🌐 Search the web to verify current versions and options
  15. - ⚠️ Present A/P/C menu after generating starter template analysis
  16. - 💾 ONLY save when user chooses C (Continue)
  17. - 📖 Update frontmatter `stepsCompleted: [1, 2, 3]` before loading next step
  18. - 🚫 FORBIDDEN to load next step until C is selected
  19. ## COLLABORATION MENUS (A/P/C):
  20. This step will generate content and present choices:
  21. - **A (Advanced Elicitation)**: Use discovery protocols to explore unconventional starter options or custom approaches
  22. - **P (Party Mode)**: Bring multiple perspectives to evaluate starter trade-offs for different use cases
  23. - **C (Continue)**: Save the content to the document and proceed to next step
  24. ## PROTOCOL INTEGRATION:
  25. - When 'A' selected: Invoke the `bmad-advanced-elicitation` skill
  26. - When 'P' selected: Invoke the `bmad-party-mode` skill
  27. - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
  28. - User accepts/rejects protocol changes before proceeding
  29. ## CONTEXT BOUNDARIES:
  30. - Project context from step 2 is available and complete
  31. - Project context file from step-01 may contain technical preferences
  32. - No architectural decisions made yet - evaluating foundations
  33. - Focus on technical preferences discovery and starter evaluation
  34. - Consider project requirements and existing preferences when evaluating options
  35. ## YOUR TASK:
  36. Discover technical preferences and evaluate starter template options, leveraging existing technical preferences and establishing solid architectural foundations.
  37. ## STARTER EVALUATION SEQUENCE:
  38. ### 0. Check Technical Preferences & Context
  39. **Check Project Context for Existing Technical Preferences:**
  40. "Before we dive into starter templates, let me check if you have any technical preferences already documented.
  41. {{if_project_context_exists}}
  42. I found some technical rules in your project context file:
  43. {{extracted_technical_preferences_from_project_context}}
  44. **Project Context Technical Rules Found:**
  45. - Languages/Frameworks: {{languages_frameworks_from_context}}
  46. - Tools & Libraries: {{tools_from_context}}
  47. - Development Patterns: {{patterns_from_context}}
  48. - Platform Preferences: {{platforms_from_context}}
  49. {{else}}
  50. No existing technical preferences found in project context file. We'll establish your technical preferences now.
  51. {{/if_project_context}}"
  52. **Discover User Technical Preferences:**
  53. "Based on your project context, let's discuss your technical preferences:
  54. {{primary_technology_category}} Preferences:
  55. - **Languages**: Do you have preferences between TypeScript/JavaScript, Python, Go, Rust, etc.?
  56. - **Frameworks**: Any existing familiarity or preferences (React, Vue, Angular, Next.js, etc.)?
  57. - **Databases**: Any preferences or existing infrastructure (PostgreSQL, MongoDB, MySQL, etc.)?
  58. **Development Experience:**
  59. - What's your team's experience level with different technologies?
  60. - Are there any technologies you want to learn vs. what you're comfortable with?
  61. **Platform/Deployment Preferences:**
  62. - Cloud provider preferences (AWS, Vercel, Railway, etc.)?
  63. - Container preferences (Docker, Serverless, Traditional)?
  64. **Integrations:**
  65. - Any existing systems or APIs you need to integrate with?
  66. - Third-party services you plan to use (payment, authentication, analytics, etc.)?
  67. These preferences will help me recommend the most suitable starter templates and guide our architectural decisions."
  68. ### 1. Identify Primary Technology Domain
  69. Based on project context analysis and technical preferences, identify the primary technology stack:
  70. - **Web application** → Look for Next.js, Vite, Remix, SvelteKit starters
  71. - **Mobile app** → Look for React Native, Expo, Flutter starters
  72. - **API/Backend** → Look for NestJS, Express, Fastify, Supabase starters
  73. - **CLI tool** → Look for CLI framework starters (oclif, commander, etc.)
  74. - **Full-stack** → Look for T3, RedwoodJS, Blitz, Next.js starters
  75. - **Desktop** → Look for Electron, Tauri starters
  76. ### 2. UX Requirements Consideration
  77. If UX specification was loaded, consider UX requirements when selecting starter:
  78. - **Rich animations** → Framer Motion compatible starter
  79. - **Complex forms** → React Hook Form included starter
  80. - **Real-time features** → Socket.io or WebSocket ready starter
  81. - **Design system** → Storybook-enabled starter
  82. - **Offline capability** → Service worker or PWA configured starter
  83. ### 3. Research Current Starter Options
  84. Search the web to find current, maintained starter templates:
  85. ```
  86. Search the web: "{{primary_technology}} starter template CLI create command latest"
  87. Search the web: "{{primary_technology}} boilerplate generator latest options"
  88. Search the web: "{{primary_technology}} production-ready starter best practices"
  89. ```
  90. ### 4. Investigate Top Starter Options
  91. For each promising starter found, investigate details:
  92. ```
  93. Search the web: "{{starter_name}} default setup technologies included latest"
  94. Search the web: "{{starter_name}} project structure file organization"
  95. Search the web: "{{starter_name}} production deployment capabilities"
  96. Search the web: "{{starter_name}} recent updates maintenance status"
  97. ```
  98. ### 5. Analyze What Each Starter Provides
  99. For each viable starter option, document:
  100. **Technology Decisions Made:**
  101. - Language/TypeScript configuration
  102. - Styling solution (CSS, Tailwind, Styled Components, etc.)
  103. - Testing framework setup
  104. - Linting/Formatting configuration
  105. - Build tooling and optimization
  106. - Project structure and organization
  107. **Architectural Patterns Established:**
  108. - Code organization patterns
  109. - Component structure conventions
  110. - API layering approach
  111. - State management setup
  112. - Routing patterns
  113. - Environment configuration
  114. **Development Experience Features:**
  115. - Hot reloading and development server
  116. - TypeScript configuration
  117. - Debugging setup
  118. - Testing infrastructure
  119. - Documentation generation
  120. ### 6. Present Starter Options
  121. Based on user skill level and project needs:
  122. **For Expert Users:**
  123. "Found {{starter_name}} which provides:
  124. {{quick_decision_list_of_key_decisions}}
  125. This would establish our base architecture with these technical decisions already made. Use it?"
  126. **For Intermediate Users:**
  127. "I found {{starter_name}}, which is a well-maintained starter for {{project_type}} projects.
  128. It makes these architectural decisions for us:
  129. {{decision_list_with_explanations}}
  130. This gives us a solid foundation following current best practices. Should we use it?"
  131. **For Beginner Users:**
  132. "I found {{starter_name}}, which is like a pre-built foundation for your project.
  133. Think of it like buying a prefab house frame instead of cutting each board yourself.
  134. It makes these decisions for us:
  135. {{friendly_explanation_of_decisions}}
  136. This is a great starting point that follows best practices and saves us from making dozens of small technical choices. Should we use it?"
  137. ### 7. Get Current CLI Commands
  138. If user shows interest in a starter, get the exact current commands:
  139. ```
  140. Search the web: "{{starter_name}} CLI command options flags latest"
  141. Search the web: "{{starter_name}} create new project command examples"
  142. ```
  143. ### 8. Generate Starter Template Content
  144. Prepare the content to append to the document:
  145. #### Content Structure:
  146. ````markdown
  147. ## Starter Template Evaluation
  148. ### Primary Technology Domain
  149. {{identified_domain}} based on project requirements analysis
  150. ### Starter Options Considered
  151. {{analysis_of_evaluated_starters}}
  152. ### Selected Starter: {{starter_name}}
  153. **Rationale for Selection:**
  154. {{why_this_starter_was_chosen}}
  155. **Initialization Command:**
  156. ```bash
  157. {{full_starter_command_with_options}}
  158. ```
  159. **Architectural Decisions Provided by Starter:**
  160. **Language & Runtime:**
  161. {{language_typescript_setup}}
  162. **Styling Solution:**
  163. {{styling_solution_configuration}}
  164. **Build Tooling:**
  165. {{build_tools_and_optimization}}
  166. **Testing Framework:**
  167. {{testing_setup_and_configuration}}
  168. **Code Organization:**
  169. {{project_structure_and_patterns}}
  170. **Development Experience:**
  171. {{development_tools_and_workflow}}
  172. **Note:** Project initialization using this command should be the first implementation story.
  173. ````
  174. ### 9. Present Content and Menu
  175. Show the generated content and present choices:
  176. "I've analyzed starter template options for {{project_type}} projects.
  177. **Here's what I'll add to the document:**
  178. [Show the complete markdown content from step 8]
  179. **What would you like to do?**
  180. [A] Advanced Elicitation - Explore custom approaches or unconventional starters
  181. [P] Party Mode - Evaluate trade-offs from different perspectives
  182. [C] Continue - Save this decision and move to architectural decisions"
  183. ### 10. Handle Menu Selection
  184. #### If 'A' (Advanced Elicitation):
  185. - Invoke the `bmad-advanced-elicitation` skill with current starter analysis
  186. - Process enhanced insights about starter options or custom approaches
  187. - Ask user: "Accept these changes to the starter template evaluation? (y/n)"
  188. - If yes: Update content, then return to A/P/C menu
  189. - If no: Keep original content, then return to A/P/C menu
  190. #### If 'P' (Party Mode):
  191. - Invoke the `bmad-party-mode` skill with starter evaluation context
  192. - Process collaborative insights about starter trade-offs
  193. - Ask user: "Accept these changes to the starter template evaluation? (y/n)"
  194. - If yes: Update content, then return to A/P/C menu
  195. - If no: Keep original content, then return to A/P/C menu
  196. #### If 'C' (Continue):
  197. - Append the final content to `{planning_artifacts}/architecture.md`
  198. - Update frontmatter: `stepsCompleted: [1, 2, 3]`
  199. - Load `./step-04-decisions.md`
  200. ## APPEND TO DOCUMENT:
  201. When user selects 'C', append the content directly to the document using the structure from step 8.
  202. ## SUCCESS METRICS:
  203. ✅ Primary technology domain correctly identified from project context
  204. ✅ Current, maintained starter templates researched and evaluated
  205. ✅ All versions verified using web search, not hardcoded
  206. ✅ Architectural implications of starter choice clearly documented
  207. ✅ User provided with clear rationale for starter selection
  208. ✅ A/P/C menu presented and handled correctly
  209. ✅ Content properly appended to document when C selected
  210. ## FAILURE MODES:
  211. ❌ Not verifying current versions with web search
  212. ❌ Ignoring UX requirements when evaluating starters
  213. ❌ Not documenting what architectural decisions the starter makes
  214. ❌ Failing to consider maintenance status of starter templates
  215. ❌ Not providing clear rationale for starter selection
  216. ❌ Not presenting A/P/C menu after content generation
  217. ❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions
  218. ❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file
  219. ❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols
  220. ## NEXT STEP:
  221. After user selects 'C' and content is saved to document, load `./step-04-decisions.md` to begin making specific architectural decisions.
  222. Remember: Do NOT proceed to step-04 until user explicitly selects 'C' from the A/P/C menu and content is saved!