bmad-method 6.8.1-next.9 → 6.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/.claude-plugin/marketplace.json +9 -3
  2. package/package.json +10 -4
  3. package/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md +2 -2
  4. package/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +8 -8
  5. package/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md +7 -7
  6. package/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md +2 -2
  7. package/src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml +1 -1
  8. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/headless.md +1 -1
  9. package/src/bmm-skills/2-plan-workflows/bmad-prd/references/validate.md +1 -1
  10. package/src/bmm-skills/2-plan-workflows/bmad-ux/SKILL.md +8 -8
  11. package/src/bmm-skills/2-plan-workflows/bmad-ux/assets/design-directions.md +1 -1
  12. package/src/bmm-skills/2-plan-workflows/bmad-ux/assets/headless-schemas.md +2 -2
  13. package/src/bmm-skills/2-plan-workflows/bmad-ux/assets/key-screens.md +4 -4
  14. package/src/bmm-skills/2-plan-workflows/bmad-ux/customize.toml +1 -1
  15. package/src/bmm-skills/2-plan-workflows/bmad-ux/references/creative-tools.md +1 -1
  16. package/src/bmm-skills/2-plan-workflows/bmad-ux/references/headless.md +1 -1
  17. package/src/bmm-skills/2-plan-workflows/bmad-ux/references/validate.md +2 -2
  18. package/src/bmm-skills/3-solutioning/bmad-agent-architect/customize.toml +2 -2
  19. package/src/bmm-skills/3-solutioning/bmad-architecture/SKILL.md +85 -0
  20. package/src/bmm-skills/3-solutioning/bmad-architecture/assets/spine-template.md +79 -0
  21. package/src/bmm-skills/3-solutioning/bmad-architecture/customize.toml +100 -0
  22. package/src/bmm-skills/3-solutioning/bmad-architecture/references/headless.md +26 -0
  23. package/src/bmm-skills/3-solutioning/bmad-architecture/references/reviewer-gate.md +13 -0
  24. package/src/bmm-skills/3-solutioning/bmad-architecture/scripts/lint_spine.py +257 -0
  25. package/src/bmm-skills/3-solutioning/bmad-architecture/scripts/tests/test_lint_spine.py +270 -0
  26. package/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md +16 -60
  27. package/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +15 -0
  28. package/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md +20 -1
  29. package/src/bmm-skills/4-implementation/bmad-sprint-planning/checklist.md +2 -1
  30. package/src/bmm-skills/4-implementation/bmad-sprint-planning/sprint-status-template.yaml +13 -0
  31. package/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md +13 -0
  32. package/src/bmm-skills/module-help.csv +2 -2
  33. package/src/core-skills/bmad-brainstorming/SKILL.md +8 -10
  34. package/src/core-skills/bmad-brainstorming/references/converge.md +1 -1
  35. package/src/core-skills/bmad-brainstorming/references/finalize.md +1 -1
  36. package/src/core-skills/bmad-brainstorming/references/headless.md +4 -4
  37. package/src/core-skills/bmad-brainstorming/references/in-chat-techniques.md +1 -1
  38. package/src/core-skills/bmad-brainstorming/references/mode-autonomous.md +1 -1
  39. package/src/core-skills/bmad-brainstorming/scripts/tests/test_brain.py +2 -2
  40. package/src/core-skills/bmad-customize/scripts/tests/test_list_customizable_skills.py +1 -1
  41. package/src/core-skills/bmad-forge-idea/SKILL.md +79 -0
  42. package/src/core-skills/bmad-forge-idea/customize.toml +42 -0
  43. package/src/core-skills/bmad-forge-idea/scripts/resolve_personas.py +270 -0
  44. package/src/core-skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py +138 -0
  45. package/src/core-skills/bmad-party-mode/SKILL.md +39 -56
  46. package/src/core-skills/bmad-party-mode/customize.toml +175 -0
  47. package/src/core-skills/bmad-party-mode/references/create-party.md +70 -0
  48. package/src/core-skills/bmad-party-mode/references/mode-agent-team.md +11 -0
  49. package/src/core-skills/bmad-party-mode/references/mode-auto.md +13 -0
  50. package/src/core-skills/bmad-party-mode/references/mode-subagent.md +19 -0
  51. package/src/core-skills/bmad-party-mode/references/party-memory.md +51 -0
  52. package/src/core-skills/bmad-party-mode/scripts/resolve_party.py +272 -0
  53. package/src/core-skills/bmad-party-mode/scripts/tests/test-resolve_party.py +146 -0
  54. package/src/core-skills/bmad-spec/SKILL.md +5 -3
  55. package/src/core-skills/bmad-spec/assets/spec-template.md +3 -3
  56. package/src/core-skills/module-help.csv +1 -0
  57. package/src/scripts/resolve_config.py +8 -6
  58. package/src/scripts/resolve_customization.py +8 -6
  59. package/tools/installer/commands/install.js +3 -0
  60. package/tools/installer/core/installer.js +3 -0
  61. package/tools/installer/core/uv-check.js +97 -0
  62. package/tools/installer/core/wsl-node-check.js +109 -0
  63. package/tools/installer/ide/platform-codes.yaml +7 -0
  64. package/tools/installer/install-messages.yaml +4 -0
  65. package/tools/installer/ui.js +10 -9
  66. package/evals/bmm-skills/bmad-product-brief/evals.json +0 -237
  67. package/evals/bmm-skills/bmad-product-brief/files/branfield-memo.md +0 -46
  68. package/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/addendum.md +0 -40
  69. package/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md +0 -56
  70. package/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md +0 -27
  71. package/evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md +0 -116
  72. package/evals/bmm-skills/bmad-product-brief/files/mossridge-brief/addendum.md +0 -41
  73. package/evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md +0 -57
  74. package/evals/bmm-skills/bmad-product-brief/files/mossridge-brief/decision-log.md +0 -29
  75. package/evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md +0 -90
  76. package/evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md +0 -101
  77. package/evals/bmm-skills/bmad-product-brief/triggers.json +0 -18
  78. package/src/bmm-skills/3-solutioning/bmad-create-architecture/architecture-decision-template.md +0 -12
  79. package/src/bmm-skills/3-solutioning/bmad-create-architecture/data/domain-complexity.csv +0 -13
  80. package/src/bmm-skills/3-solutioning/bmad-create-architecture/data/project-types.csv +0 -7
  81. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-01-init.md +0 -153
  82. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md +0 -173
  83. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-02-context.md +0 -224
  84. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-03-starter.md +0 -329
  85. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-04-decisions.md +0 -318
  86. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-05-patterns.md +0 -359
  87. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-06-structure.md +0 -379
  88. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-07-validation.md +0 -361
  89. package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-08-complete.md +0 -82
  90. package/src/core-skills/bmad-brainstorming/scripts/memlog.py +0 -202
  91. package/src/core-skills/bmad-brainstorming/scripts/tests/test_memlog.py +0 -265
  92. package/tools/installer/core/python-check.js +0 -199
@@ -1,361 +0,0 @@
1
- # Step 7: Architecture Validation & Completion
2
-
3
- ## MANDATORY EXECUTION RULES (READ FIRST):
4
-
5
- - 🛑 NEVER generate content without user input
6
-
7
- - 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions
8
- - 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding
9
- - ✅ ALWAYS treat this as collaborative discovery between architectural peers
10
- - 📋 YOU ARE A FACILITATOR, not a content generator
11
- - 💬 FOCUS on validating architectural coherence and completeness
12
- - ✅ VALIDATE all requirements are covered by architectural decisions
13
- - ⚠️ ABSOLUTELY NO TIME ESTIMATES - AI development speed has fundamentally changed
14
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
15
-
16
- ## EXECUTION PROTOCOLS:
17
-
18
- - 🎯 Show your analysis before taking any action
19
- - ✅ Run comprehensive validation checks on the complete architecture
20
- - ⚠️ Present A/P/C menu after generating validation results
21
- - 💾 ONLY save when user chooses C (Continue)
22
- - 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4, 5, 6, 7]` before loading next step
23
- - 🚫 FORBIDDEN to load next step until C is selected
24
-
25
- ## COLLABORATION MENUS (A/P/C):
26
-
27
- This step will generate content and present choices:
28
-
29
- - **A (Advanced Elicitation)**: Use discovery protocols to address complex architectural issues found during validation
30
- - **P (Party Mode)**: Bring multiple perspectives to resolve validation concerns
31
- - **C (Continue)**: Save the validation results and complete the architecture
32
-
33
- ## PROTOCOL INTEGRATION:
34
-
35
- - When 'A' selected: Invoke the `bmad-advanced-elicitation` skill
36
- - When 'P' selected: Invoke the `bmad-party-mode` skill
37
- - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
38
- - User accepts/rejects protocol changes before proceeding
39
-
40
- ## CONTEXT BOUNDARIES:
41
-
42
- - Complete architecture document with all sections is available
43
- - All architectural decisions, patterns, and structure are defined
44
- - Focus on validation, gap analysis, and coherence checking
45
- - Prepare for handoff to implementation phase
46
-
47
- ## YOUR TASK:
48
-
49
- Validate the complete architecture for coherence, completeness, and readiness to guide AI agents through consistent implementation.
50
-
51
- ## VALIDATION SEQUENCE:
52
-
53
- ### 1. Coherence Validation
54
-
55
- Check that all architectural decisions work together:
56
-
57
- **Decision Compatibility:**
58
-
59
- - Do all technology choices work together without conflicts?
60
- - Are all versions compatible with each other?
61
- - Do patterns align with technology choices?
62
- - Are there any contradictory decisions?
63
-
64
- **Pattern Consistency:**
65
-
66
- - Do implementation patterns support the architectural decisions?
67
- - Are naming conventions consistent across all areas?
68
- - Do structure patterns align with technology stack?
69
- - Are communication patterns coherent?
70
-
71
- **Structure Alignment:**
72
-
73
- - Does the project structure support all architectural decisions?
74
- - Are boundaries properly defined and respected?
75
- - Does the structure enable the chosen patterns?
76
- - Are integration points properly structured?
77
-
78
- ### 2. Requirements Coverage Validation
79
-
80
- Verify all project requirements are architecturally supported:
81
-
82
- **From Epics (if available):**
83
-
84
- - Does every epic have architectural support?
85
- - Are all user stories implementable with these decisions?
86
- - Are cross-epic dependencies handled architecturally?
87
- - Are there any gaps in epic coverage?
88
-
89
- **From FR Categories (if no epics):**
90
-
91
- - Does every functional requirement have architectural support?
92
- - Are all FR categories fully covered by architectural decisions?
93
- - Are cross-cutting FRs properly addressed?
94
- - Are there any missing architectural capabilities?
95
-
96
- **Non-Functional Requirements:**
97
-
98
- - Are performance requirements addressed architecturally?
99
- - Are security requirements fully covered?
100
- - Are scalability considerations properly handled?
101
- - Are compliance requirements architecturally supported?
102
-
103
- ### 3. Implementation Readiness Validation
104
-
105
- Assess if AI agents can implement consistently:
106
-
107
- **Decision Completeness:**
108
-
109
- - Are all critical decisions documented with versions?
110
- - Are implementation patterns comprehensive enough?
111
- - Are consistency rules clear and enforceable?
112
- - Are examples provided for all major patterns?
113
-
114
- **Structure Completeness:**
115
-
116
- - Is the project structure complete and specific?
117
- - Are all files and directories defined?
118
- - Are integration points clearly specified?
119
- - Are component boundaries well-defined?
120
-
121
- **Pattern Completeness:**
122
-
123
- - Are all potential conflict points addressed?
124
- - Are naming conventions comprehensive?
125
- - Are communication patterns fully specified?
126
- - Are process patterns (error handling, etc.) complete?
127
-
128
- ### 4. Gap Analysis
129
-
130
- Identify and document any missing elements:
131
-
132
- **Critical Gaps:**
133
-
134
- - Missing architectural decisions that block implementation
135
- - Incomplete patterns that could cause conflicts
136
- - Missing structural elements needed for development
137
- - Undefined integration points
138
-
139
- **Important Gaps:**
140
-
141
- - Areas that need more detailed specification
142
- - Patterns that could be more comprehensive
143
- - Documentation that would help implementation
144
- - Examples that would clarify complex decisions
145
-
146
- **Nice-to-Have Gaps:**
147
-
148
- - Additional patterns that would be helpful
149
- - Supplementary documentation
150
- - Tooling recommendations
151
- - Development workflow optimizations
152
-
153
- ### 5. Address Validation Issues
154
-
155
- For any issues found, facilitate resolution:
156
-
157
- **Critical Issues:**
158
- "I found some issues that need to be addressed before implementation:
159
-
160
- {{critical_issue_description}}
161
-
162
- These could cause implementation problems. How would you like to resolve this?"
163
-
164
- **Important Issues:**
165
- "I noticed a few areas that could be improved:
166
-
167
- {{important_issue_description}}
168
-
169
- These aren't blocking, but addressing them would make implementation smoother. Should we work on these?"
170
-
171
- **Minor Issues:**
172
- "Here are some minor suggestions for improvement:
173
-
174
- {{minor_issue_description}}
175
-
176
- These are optional refinements. Would you like to address any of these?"
177
-
178
- ### 6. Generate Validation Content
179
-
180
- Prepare the content to append to the document:
181
-
182
- #### Content Structure:
183
-
184
- ```markdown
185
- ## Architecture Validation Results
186
-
187
- ### Coherence Validation ✅
188
-
189
- **Decision Compatibility:**
190
- {{assessment_of_how_all_decisions_work_together}}
191
-
192
- **Pattern Consistency:**
193
- {{verification_that_patterns_support_decisions}}
194
-
195
- **Structure Alignment:**
196
- {{confirmation_that_structure_supports_architecture}}
197
-
198
- ### Requirements Coverage Validation ✅
199
-
200
- **Epic/Feature Coverage:**
201
- {{verification_that_all_epics_or_features_are_supported}}
202
-
203
- **Functional Requirements Coverage:**
204
- {{confirmation_that_all_FRs_are_architecturally_supported}}
205
-
206
- **Non-Functional Requirements Coverage:**
207
- {{verification_that_NFRs_are_addressed}}
208
-
209
- ### Implementation Readiness Validation ✅
210
-
211
- **Decision Completeness:**
212
- {{assessment_of_decision_documentation_completeness}}
213
-
214
- **Structure Completeness:**
215
- {{evaluation_of_project_structure_completeness}}
216
-
217
- **Pattern Completeness:**
218
- {{verification_of_implementation_patterns_completeness}}
219
-
220
- ### Gap Analysis Results
221
-
222
- {{gap_analysis_findings_with_priority_levels}}
223
-
224
- ### Validation Issues Addressed
225
-
226
- {{description_of_any_issues_found_and_resolutions}}
227
-
228
- ### Architecture Completeness Checklist
229
-
230
- Mark each item `[x]` only if validation confirms it; leave `[ ]` if it is missing, partial, or unverified. Any unchecked item must be reflected in the Gap Analysis above and in the Overall Status below.
231
-
232
- **Requirements Analysis**
233
-
234
- - [ ] Project context thoroughly analyzed
235
- - [ ] Scale and complexity assessed
236
- - [ ] Technical constraints identified
237
- - [ ] Cross-cutting concerns mapped
238
-
239
- **Architectural Decisions**
240
-
241
- - [ ] Critical decisions documented with versions
242
- - [ ] Technology stack fully specified
243
- - [ ] Integration patterns defined
244
- - [ ] Performance considerations addressed
245
-
246
- **Implementation Patterns**
247
-
248
- - [ ] Naming conventions established
249
- - [ ] Structure patterns defined
250
- - [ ] Communication patterns specified
251
- - [ ] Process patterns documented
252
-
253
- **Project Structure**
254
-
255
- - [ ] Complete directory structure defined
256
- - [ ] Component boundaries established
257
- - [ ] Integration points mapped
258
- - [ ] Requirements to structure mapping complete
259
-
260
- ### Architecture Readiness Assessment
261
-
262
- **Overall Status:** {{READY FOR IMPLEMENTATION | READY WITH MINOR GAPS | NOT READY}} (choose READY FOR IMPLEMENTATION only when all 16 checklist items are `[x]` and no Critical Gaps remain; choose NOT READY when any Critical Gap is open or any Requirements Analysis or Architectural Decisions item is unchecked; otherwise READY WITH MINOR GAPS)
263
-
264
- **Confidence Level:** {{high/medium/low}} based on validation results
265
-
266
- **Key Strengths:**
267
- {{list_of_architecture_strengths}}
268
-
269
- **Areas for Future Enhancement:**
270
- {{areas_that_could_be_improved_later}}
271
-
272
- ### Implementation Handoff
273
-
274
- **AI Agent Guidelines:**
275
-
276
- - Follow all architectural decisions exactly as documented
277
- - Use implementation patterns consistently across all components
278
- - Respect project structure and boundaries
279
- - Refer to this document for all architectural questions
280
-
281
- **First Implementation Priority:**
282
- {{starter_template_command_or_first_architectural_step}}
283
- ```
284
-
285
- ### 7. Present Content and Menu
286
-
287
- Show the validation results and present choices:
288
-
289
- "I've completed a comprehensive validation of your architecture.
290
-
291
- **Validation Summary:**
292
-
293
- - ✅ Coherence: All decisions work together
294
- - ✅ Coverage: All requirements are supported
295
- - ✅ Readiness: AI agents can implement consistently
296
-
297
- **Here's what I'll add to complete the architecture document:**
298
-
299
- [Show the complete markdown content from step 6]
300
-
301
- **What would you like to do?**
302
- [A] Advanced Elicitation - Address any complex architectural concerns
303
- [P] Party Mode - Review validation from different implementation perspectives
304
- [C] Continue - Complete the architecture and finish workflow
305
-
306
- ### 8. Handle Menu Selection
307
-
308
- #### If 'A' (Advanced Elicitation):
309
-
310
- - Invoke the `bmad-advanced-elicitation` skill with validation issues
311
- - Process enhanced solutions for complex concerns
312
- - Ask user: "Accept these architectural improvements? (y/n)"
313
- - If yes: Update content, then return to A/P/C menu
314
- - If no: Keep original content, then return to A/P/C menu
315
-
316
- #### If 'P' (Party Mode):
317
-
318
- - Invoke the `bmad-party-mode` skill with validation context
319
- - Process collaborative insights on implementation readiness
320
- - Ask user: "Accept these changes to the validation results? (y/n)"
321
- - If yes: Update content, then return to A/P/C menu
322
- - If no: Keep original content, then return to A/P/C menu
323
-
324
- #### If 'C' (Continue):
325
-
326
- - Append the final content to `{planning_artifacts}/architecture.md`
327
- - Update frontmatter: `stepsCompleted: [1, 2, 3, 4, 5, 6, 7]`
328
- - Load `./step-08-complete.md`
329
-
330
- ## APPEND TO DOCUMENT:
331
-
332
- When user selects 'C', append the content directly to the document using the structure from step 6.
333
-
334
- ## SUCCESS METRICS:
335
-
336
- ✅ All architectural decisions validated for coherence
337
- ✅ Complete requirements coverage verified
338
- ✅ Implementation readiness confirmed
339
- ✅ All gaps identified and addressed
340
- ✅ Comprehensive validation checklist completed
341
- ✅ A/P/C menu presented and handled correctly
342
- ✅ Content properly appended to document when C selected
343
-
344
- ## FAILURE MODES:
345
-
346
- ❌ Skipping validation of decision compatibility
347
- ❌ Not verifying all requirements are architecturally supported
348
- ❌ Missing potential implementation conflicts
349
- ❌ Not addressing gaps found during validation
350
- ❌ Providing incomplete validation checklist
351
- ❌ Not presenting A/P/C menu after content generation
352
-
353
- ❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions
354
- ❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file
355
- ❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols
356
-
357
- ## NEXT STEP:
358
-
359
- After user selects 'C' and content is saved to document, load `./step-08-complete.md` to complete the workflow and provide implementation guidance.
360
-
361
- Remember: Do NOT proceed to step-08 until user explicitly selects 'C' from the A/P/C menu and content is saved!
@@ -1,82 +0,0 @@
1
- # Step 8: Architecture Completion & Handoff
2
-
3
- ## MANDATORY EXECUTION RULES (READ FIRST):
4
-
5
- - 🛑 NEVER generate content without user input
6
-
7
- - 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions
8
- - ✅ ALWAYS treat this as collaborative completion between architectural peers
9
- - 📋 YOU ARE A FACILITATOR, not a content generator
10
- - 💬 FOCUS on successful workflow completion and implementation handoff
11
- - 🎯 PROVIDE clear next steps for implementation phase
12
- - ⚠️ ABSOLUTELY NO TIME ESTIMATES - AI development speed has fundamentally changed
13
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
14
-
15
- ## EXECUTION PROTOCOLS:
16
-
17
- - 🎯 Show your analysis before taking any action
18
- - 🎯 Present completion summary and implementation guidance
19
- - 📖 Update frontmatter with final workflow state
20
- - 🚫 THIS IS THE FINAL STEP IN THIS WORKFLOW
21
-
22
- ## YOUR TASK:
23
-
24
- Complete the architecture workflow, provide a comprehensive completion summary, and guide the user to the next phase of their project development.
25
-
26
- ## COMPLETION SEQUENCE:
27
-
28
- ### 1. Congratulate the User on Completion
29
-
30
- Both you and the User completed something amazing here - give a summary of what you achieved together and really congratulate the user on a job well done.
31
-
32
- ### 2. Update the created document's frontmatter
33
-
34
- ```yaml
35
- stepsCompleted: [1, 2, 3, 4, 5, 6, 7, 8]
36
- workflowType: 'architecture'
37
- lastStep: 8
38
- status: 'complete'
39
- completedAt: '{{current_date}}'
40
- ```
41
-
42
- ### 3. Next Steps Guidance
43
-
44
- Architecture complete. Invoke the `bmad-help` skill.
45
-
46
- Upon Completion of task output: offer to answer any questions about the Architecture Document.
47
-
48
-
49
- ## SUCCESS METRICS:
50
-
51
- ✅ Complete architecture document delivered with all sections
52
- ✅ All architectural decisions documented and validated
53
- ✅ Implementation patterns and consistency rules finalized
54
- ✅ Project structure complete with all files and directories
55
- ✅ User provided with clear next steps and implementation guidance
56
- ✅ Workflow status properly updated
57
- ✅ User collaboration maintained throughout completion process
58
-
59
- ## FAILURE MODES:
60
-
61
- ❌ Not providing clear implementation guidance
62
- ❌ Missing final validation of document completeness
63
- ❌ Not updating workflow status appropriately
64
- ❌ Failing to celebrate the successful completion
65
- ❌ Not providing specific next steps for the user
66
- ❌ Rushing completion without proper summary
67
-
68
- ❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions
69
- ❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file
70
- ❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols
71
-
72
- ## WORKFLOW COMPLETE:
73
-
74
- This is the final step of the Architecture workflow. The user now has a complete, validated architecture document ready for AI agent implementation.
75
-
76
- The architecture will serve as the single source of truth for all technical decisions, ensuring consistent implementation across the entire project development lifecycle.
77
-
78
- ## On Complete
79
-
80
- Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete`
81
-
82
- If the resolved `workflow.on_complete` is non-empty, follow it as the final terminal instruction before exiting.
@@ -1,202 +0,0 @@
1
- #!/usr/bin/env python3
2
- # /// script
3
- # requires-python = ">=3.10"
4
- # ///
5
- """memlog — an append-only memory log: LLM-optimal working memory for a skill.
6
-
7
- A memlog is the dense, chronological record of everything that mattered in a piece of
8
- work — every item the user generated or accepted — kept minimal like human memory: only
9
- what's important, never bloated. It persists ACROSS sessions, so a fresh session can
10
- load it and continue. It is NOT a deliverable; downstream artifacts (a brief, a PRD, a
11
- deck, a report) are *derived* from it on demand. The host skill supplies the vocabulary
12
- by how it calls `append` — the tool stays neutral.
13
-
14
- It is a FLAT log: there are no sections or grouping. Every entry is one line, recorded
15
- at the END in the order it happened. The chronology itself is the structure — an event
16
- like "started technique X" is just another entry, same as an idea or an insight.
17
-
18
- Two invariants make it trustworthy:
19
-
20
- 1. Append-only, chronological. Entries land at the end, in the order they happen.
21
- Nothing is ever inserted backward, reordered, or grouped.
22
- 2. Write-only / blind. Every command is an atomic, context-free write and echoes the
23
- new state as JSON, so the caller never re-reads the file mid-session. The one time
24
- the file is read is on resume — and the caller reads it itself, not via this script.
25
-
26
- The file shape (.memlog.md):
27
-
28
- ---
29
- topic: Onboarding flow for a budgeting app
30
- goal: lift week-1 retention
31
- status: active
32
- updated: 2026-05-30T14:22
33
- ---
34
-
35
- - (note) user picked techniques: SCAMPER, then Six Thinking Hats
36
- - (technique) started SCAMPER
37
- - (idea) skip the signup wall: let people try with sample data first
38
- - (idea) auto-import one bank account so the first screen shows real numbers
39
- - (question) is open-banking consent too heavy for step one?
40
- - (technique) started Six Thinking Hats
41
- - (idea) black-hat: imported transactions look scary before they're categorized
42
- - (insight) the "scary numbers" risk and the "real numbers" idea are one lever: show real data, pre-categorized
43
- - (direction) user wants to optimize for the anxious first-timer, not the power user
44
- - (decision) lead with one pre-categorized account; defer multi-account import
45
-
46
- Each entry may carry an optional `--type` — what KIND it is (idea, insight, question,
47
- decision, technique, …) — and an optional `--by` naming who it came from (e.g. `user`,
48
- `coach`), for sessions where authorship matters. Both render into one short inline tag:
49
- `(idea)`, `(idea by user)`, `(by coach)`. Omit them for a plain note. The host skill
50
- names the vocabulary; the script does not.
51
-
52
- Commands:
53
- init --workspace DIR [--field k=v ...] create the memlog (errors if it exists)
54
- append --workspace DIR --text STR [--type T] [--by W] append one entry at the end
55
- set --workspace DIR --key K --value V set/replace a frontmatter field
56
-
57
- The workspace is the run folder; the memlog is always {workspace}/.memlog.md.
58
- """
59
- import argparse
60
- import json
61
- import os
62
- import sys
63
- from datetime import datetime
64
- from pathlib import Path
65
-
66
- MEMLOG = ".memlog.md"
67
-
68
-
69
- def now() -> str:
70
- return datetime.now().strftime("%Y-%m-%dT%H:%M")
71
-
72
-
73
- def memlog_path(workspace: str) -> Path:
74
- return Path(workspace) / MEMLOG
75
-
76
-
77
- def split(text: str) -> tuple[dict, str]:
78
- """Return (frontmatter dict in source order, body str). Frontmatter is plain key: value.
79
-
80
- The closing fence is the first line that is *exactly* `---`, so a `---` inside a
81
- field value (topic/goal are free user text) never truncates the frontmatter.
82
- """
83
- lines = text.splitlines()
84
- if not lines or lines[0] != "---":
85
- raise ValueError(".memlog.md has no frontmatter")
86
- end = next((i for i in range(1, len(lines)) if lines[i] == "---"), None)
87
- if end is None:
88
- raise ValueError(".memlog.md frontmatter is not terminated")
89
- meta: dict[str, str] = {}
90
- for line in lines[1:end]:
91
- if ":" in line:
92
- k, v = line.split(":", 1)
93
- meta[k.strip()] = v.strip()
94
- return meta, "\n".join(lines[end + 1:]).lstrip("\n")
95
-
96
-
97
- def render(meta: dict, body: str) -> str:
98
- # Neutralize newlines in values so a multi-line field can't break the fence on re-read.
99
- fm = "\n".join(f"{k}: {' '.join(str(v).splitlines())}" for k, v in meta.items())
100
- return "---\n" + fm + "\n---\n\n" + body.rstrip("\n") + "\n"
101
-
102
-
103
- def touch(meta: dict) -> None:
104
- """Stamp `updated` and keep it last so the field order stays predictable."""
105
- meta.pop("updated", None)
106
- meta["updated"] = now()
107
-
108
-
109
- def write_atomic(path: Path, text: str) -> None:
110
- tmp = path.with_suffix(path.suffix + ".tmp")
111
- tmp.write_text(text, encoding="utf-8")
112
- os.replace(tmp, path)
113
-
114
-
115
- def entry_count(body: str) -> int:
116
- return sum(1 for ln in body.splitlines() if ln.startswith("- "))
117
-
118
-
119
- def ack(path: Path, meta: dict, body: str) -> None:
120
- """Echo new state so the caller never re-reads the file to know where it stands."""
121
- print(json.dumps({
122
- "ok": True,
123
- "memlog": str(path),
124
- "status": meta.get("status", ""),
125
- "entries": entry_count(body),
126
- }))
127
-
128
-
129
- def cmd_init(args) -> int:
130
- path = memlog_path(args.workspace)
131
- if path.exists():
132
- print(f"error: {path} already exists; use append/set to update it", file=sys.stderr)
133
- return 2
134
- path.parent.mkdir(parents=True, exist_ok=True)
135
- meta: dict[str, str] = {}
136
- for pair in args.field or []:
137
- if "=" not in pair:
138
- print(f"error: --field expects key=value, got {pair!r}", file=sys.stderr)
139
- return 2
140
- k, v = pair.split("=", 1)
141
- meta[k.strip()] = v.strip()
142
- meta.setdefault("status", "active")
143
- touch(meta)
144
- write_atomic(path, render(meta, ""))
145
- ack(path, meta, "")
146
- return 0
147
-
148
-
149
- def cmd_append(args) -> int:
150
- path = memlog_path(args.workspace)
151
- meta, body = split(path.read_text(encoding="utf-8"))
152
- text = " ".join(args.text.split()) # collapse newlines/runs → one-line entry, no prose bloat
153
- label = args.type or ""
154
- if args.by:
155
- label = f"{label} by {args.by}".strip() # attribution: "(idea by user)" / "(by coach)"
156
- tag = f"({label}) " if label else ""
157
- entry = f"- {tag}{text}"
158
- body = (body.rstrip("\n") + "\n" + entry) if body.strip() else entry # always at the end
159
- touch(meta)
160
- write_atomic(path, render(meta, body))
161
- ack(path, meta, body)
162
- return 0
163
-
164
-
165
- def cmd_set(args) -> int:
166
- path = memlog_path(args.workspace)
167
- meta, body = split(path.read_text(encoding="utf-8"))
168
- meta[args.key] = args.value
169
- touch(meta)
170
- write_atomic(path, render(meta, body))
171
- ack(path, meta, body)
172
- return 0
173
-
174
-
175
- def main(argv: list[str] | None = None) -> int:
176
- p = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
177
- sub = p.add_subparsers(dest="cmd", required=True)
178
-
179
- pi = sub.add_parser("init", help="create the memlog")
180
- pi.add_argument("--workspace", required=True)
181
- pi.add_argument("--field", action="append", metavar="KEY=VALUE", help="frontmatter field (repeatable)")
182
- pi.set_defaults(func=cmd_init)
183
-
184
- pa = sub.add_parser("append", help="append one entry at the end")
185
- pa.add_argument("--workspace", required=True)
186
- pa.add_argument("--text", required=True)
187
- pa.add_argument("--type", help="entry kind, rendered as an inline tag")
188
- pa.add_argument("--by", help="who the entry came from (e.g. user, coach); rendered into the tag")
189
- pa.set_defaults(func=cmd_append)
190
-
191
- pset = sub.add_parser("set", help="set a frontmatter field")
192
- pset.add_argument("--workspace", required=True)
193
- pset.add_argument("--key", required=True)
194
- pset.add_argument("--value", required=True)
195
- pset.set_defaults(func=cmd_set)
196
-
197
- args = p.parse_args(argv)
198
- return args.func(args)
199
-
200
-
201
- if __name__ == "__main__":
202
- sys.exit(main())