bmad-odoo 1.0.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 (282) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +317 -0
  4. package/_config/agent-manifest.csv +10 -0
  5. package/_config/manifest.yaml +10 -0
  6. package/_config/workflow-manifest.csv +10 -0
  7. package/bmm/agents/analyst.md +93 -0
  8. package/bmm/agents/architect.md +72 -0
  9. package/bmm/agents/dev.md +85 -0
  10. package/bmm/agents/pm.md +61 -0
  11. package/bmm/agents/quick-flow-solo-dev.md +58 -0
  12. package/bmm/agents/sm.md +56 -0
  13. package/bmm/agents/tea.md +57 -0
  14. package/bmm/agents/tech-writer.md +56 -0
  15. package/bmm/agents/ux-designer.md +56 -0
  16. package/bmm/config.yaml +27 -0
  17. package/bmm/data/odoo-knowledge-base.md +90 -0
  18. package/bmm/teams/default-team.md +17 -0
  19. package/bmm/testarch/odoo-test-design/steps/step-01-init.md +44 -0
  20. package/bmm/testarch/odoo-test-design/steps/step-02-test-cases.md +82 -0
  21. package/bmm/testarch/odoo-test-design/steps/step-03-complete.md +69 -0
  22. package/bmm/testarch/odoo-test-design/workflow.md +30 -0
  23. package/bmm/testarch/odoo-testing-guide.md +30 -0
  24. package/bmm/workflows/1-analysis/analyze-process/process-analysis.template.md +80 -0
  25. package/bmm/workflows/1-analysis/analyze-process/steps/step-01-init.md +44 -0
  26. package/bmm/workflows/1-analysis/analyze-process/steps/step-02-current-state.md +55 -0
  27. package/bmm/workflows/1-analysis/analyze-process/steps/step-03-pain-points.md +67 -0
  28. package/bmm/workflows/1-analysis/analyze-process/steps/step-04-odoo-mapping.md +67 -0
  29. package/bmm/workflows/1-analysis/analyze-process/steps/step-05-recommendations.md +99 -0
  30. package/bmm/workflows/1-analysis/analyze-process/steps/step-06-complete.md +62 -0
  31. package/bmm/workflows/1-analysis/analyze-process/workflow.md +60 -0
  32. package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-01-init.md +45 -0
  33. package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-02-users-stakeholders.md +46 -0
  34. package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-03-odoo-modules.md +59 -0
  35. package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-04-scope-timeline.md +64 -0
  36. package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-05-complete.md +32 -0
  37. package/bmm/workflows/1-analysis/create-odoo-product-brief/workflow.md +35 -0
  38. package/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  39. package/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +182 -0
  40. package/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +166 -0
  41. package/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +204 -0
  42. package/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +207 -0
  43. package/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +210 -0
  44. package/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +224 -0
  45. package/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +199 -0
  46. package/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  47. package/bmm/workflows/1-analysis/gap-analysis/steps/step-01-init.md +45 -0
  48. package/bmm/workflows/1-analysis/gap-analysis/steps/step-02-odoo-capabilities.md +36 -0
  49. package/bmm/workflows/1-analysis/gap-analysis/steps/step-03-gap-matrix.md +51 -0
  50. package/bmm/workflows/1-analysis/gap-analysis/workflow.md +45 -0
  51. package/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  52. package/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  53. package/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  54. package/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  55. package/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  56. package/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
  57. package/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  58. package/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  59. package/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
  60. package/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  61. package/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  62. package/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  63. package/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
  64. package/bmm/workflows/1-analysis/research/research.template.md +29 -0
  65. package/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  66. package/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  67. package/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  68. package/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  69. package/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
  70. package/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
  71. package/bmm/workflows/1-analysis/research/workflow.md +173 -0
  72. package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-01-init.md +48 -0
  73. package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-02-technical-design.md +82 -0
  74. package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-03-generate.md +86 -0
  75. package/bmm/workflows/2-plan-workflows/create-odoo-addon/workflow.md +39 -0
  76. package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-01-init.md +55 -0
  77. package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-02-stories.md +53 -0
  78. package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-03-complete.md +39 -0
  79. package/bmm/workflows/2-plan-workflows/create-odoo-epic/workflow.md +35 -0
  80. package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-01-init.md +46 -0
  81. package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-02-functional-requirements.md +56 -0
  82. package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-03-technical-requirements.md +45 -0
  83. package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-04-complete.md +40 -0
  84. package/bmm/workflows/2-plan-workflows/create-odoo-prd/workflow.md +29 -0
  85. package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-01-init.md +52 -0
  86. package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-02-form-design.md +78 -0
  87. package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-03-tree-design.md +84 -0
  88. package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-04-complete.md +55 -0
  89. package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/workflow.md +30 -0
  90. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  91. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  92. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  93. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  94. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  95. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  96. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  97. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  98. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  99. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  100. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  101. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  102. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  103. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  104. package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +228 -0
  105. package/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  106. package/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
  107. package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-01-init.md +49 -0
  108. package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-02-risk-assessment.md +51 -0
  109. package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-03-roadmap.md +58 -0
  110. package/bmm/workflows/2-plan-workflows/plan-odoo-migration/workflow.md +29 -0
  111. package/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
  112. package/bmm/workflows/2-plan-workflows/prd/prd-template.md +11 -0
  113. package/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
  114. package/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +197 -0
  115. package/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +166 -0
  116. package/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +421 -0
  117. package/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +290 -0
  118. package/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +291 -0
  119. package/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +271 -0
  120. package/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +262 -0
  121. package/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +258 -0
  122. package/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +299 -0
  123. package/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +270 -0
  124. package/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +294 -0
  125. package/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +186 -0
  126. package/bmm/workflows/2-plan-workflows/prd/workflow.md +63 -0
  127. package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
  128. package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
  129. package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
  130. package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
  131. package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
  132. package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +133 -0
  133. package/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  134. package/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
  135. package/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  136. package/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  137. package/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  138. package/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  139. package/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
  140. package/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  141. package/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
  142. package/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  143. package/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  144. package/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  145. package/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  146. package/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +352 -0
  147. package/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
  148. package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  149. package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  150. package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  151. package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +145 -0
  152. package/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  153. package/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
  154. package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-01-init.md +44 -0
  155. package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-02-inheritance-strategy.md +75 -0
  156. package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-03-implementation.md +64 -0
  157. package/bmm/workflows/3-solutioning/enhance-existing-system/workflow.md +30 -0
  158. package/bmm/workflows/3-solutioning/quick-addon/workflow.md +23 -0
  159. package/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  160. package/bmm/workflows/4-implementation/code-review/instructions.xml +225 -0
  161. package/bmm/workflows/4-implementation/code-review/workflow.yaml +50 -0
  162. package/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
  163. package/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
  164. package/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -0
  165. package/bmm/workflows/4-implementation/create-next-story/steps/step-01-init.md +53 -0
  166. package/bmm/workflows/4-implementation/create-next-story/steps/step-02-acceptance-criteria.md +63 -0
  167. package/bmm/workflows/4-implementation/create-next-story/steps/step-03-tasks.md +68 -0
  168. package/bmm/workflows/4-implementation/create-next-story/steps/step-04-complete.md +70 -0
  169. package/bmm/workflows/4-implementation/create-next-story/workflow.md +30 -0
  170. package/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  171. package/bmm/workflows/4-implementation/dev-story/instructions.xml +409 -0
  172. package/bmm/workflows/4-implementation/dev-story/workflow.yaml +25 -0
  173. package/bmm/workflows/4-implementation/rapid-brownfield/steps/step-01-quick-story.md +79 -0
  174. package/bmm/workflows/4-implementation/rapid-brownfield/workflow.md +29 -0
  175. package/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
  176. package/bmm/workflows/4-implementation/retrospective/workflow.yaml +57 -0
  177. package/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  178. package/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
  179. package/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  180. package/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -0
  181. package/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  182. package/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
  183. package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-01-understand.md +189 -0
  184. package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-02-investigate.md +144 -0
  185. package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-03-generate.md +128 -0
  186. package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-04-review.md +173 -0
  187. package/bmm/workflows/bmad-quick-flow/create-tech-spec/tech-spec-template.md +74 -0
  188. package/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.md +79 -0
  189. package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
  190. package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  191. package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
  192. package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  193. package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  194. package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
  195. package/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +52 -0
  196. package/bmm/workflows/document-odoo/steps/step-01-init.md +43 -0
  197. package/bmm/workflows/document-odoo/steps/step-02-readme.md +98 -0
  198. package/bmm/workflows/document-odoo/steps/step-03-user-guide.md +76 -0
  199. package/bmm/workflows/document-odoo/steps/step-04-complete.md +58 -0
  200. package/bmm/workflows/document-odoo/workflow.md +30 -0
  201. package/bmm/workflows/document-project/checklist.md +245 -0
  202. package/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  203. package/bmm/workflows/document-project/instructions.md +221 -0
  204. package/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  205. package/bmm/workflows/document-project/templates/index-template.md +169 -0
  206. package/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  207. package/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  208. package/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  209. package/bmm/workflows/document-project/workflow.yaml +28 -0
  210. package/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  211. package/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  212. package/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  213. package/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  214. package/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  215. package/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  216. package/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  217. package/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  218. package/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +26 -0
  219. package/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  220. package/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  221. package/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +26 -0
  222. package/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  223. package/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  224. package/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +26 -0
  225. package/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  226. package/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  227. package/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +26 -0
  228. package/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  229. package/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
  230. package/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
  231. package/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
  232. package/bmm/workflows/generate-project-context/workflow.md +49 -0
  233. package/bmm/workflows/testarch/atdd/atdd-checklist-template.md +364 -0
  234. package/bmm/workflows/testarch/atdd/checklist.md +374 -0
  235. package/bmm/workflows/testarch/atdd/instructions.md +806 -0
  236. package/bmm/workflows/testarch/atdd/workflow.yaml +45 -0
  237. package/bmm/workflows/testarch/automate/checklist.md +582 -0
  238. package/bmm/workflows/testarch/automate/instructions.md +1324 -0
  239. package/bmm/workflows/testarch/automate/workflow.yaml +52 -0
  240. package/bmm/workflows/testarch/ci/checklist.md +248 -0
  241. package/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
  242. package/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
  243. package/bmm/workflows/testarch/ci/instructions.md +536 -0
  244. package/bmm/workflows/testarch/ci/workflow.yaml +45 -0
  245. package/bmm/workflows/testarch/framework/checklist.md +321 -0
  246. package/bmm/workflows/testarch/framework/instructions.md +481 -0
  247. package/bmm/workflows/testarch/framework/workflow.yaml +47 -0
  248. package/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
  249. package/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
  250. package/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +445 -0
  251. package/bmm/workflows/testarch/nfr-assess/workflow.yaml +47 -0
  252. package/bmm/workflows/testarch/test-design/checklist.md +235 -0
  253. package/bmm/workflows/testarch/test-design/instructions.md +788 -0
  254. package/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
  255. package/bmm/workflows/testarch/test-design/workflow.yaml +54 -0
  256. package/bmm/workflows/testarch/test-review/checklist.md +472 -0
  257. package/bmm/workflows/testarch/test-review/instructions.md +628 -0
  258. package/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
  259. package/bmm/workflows/testarch/test-review/workflow.yaml +46 -0
  260. package/bmm/workflows/testarch/trace/checklist.md +655 -0
  261. package/bmm/workflows/testarch/trace/instructions.md +1047 -0
  262. package/bmm/workflows/testarch/trace/trace-template.md +675 -0
  263. package/bmm/workflows/testarch/trace/workflow.yaml +55 -0
  264. package/bmm/workflows/workflow-status/init/instructions.md +346 -0
  265. package/bmm/workflows/workflow-status/init/workflow.yaml +29 -0
  266. package/bmm/workflows/workflow-status/instructions.md +395 -0
  267. package/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +103 -0
  268. package/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +100 -0
  269. package/bmm/workflows/workflow-status/paths/method-brownfield.yaml +103 -0
  270. package/bmm/workflows/workflow-status/paths/method-greenfield.yaml +100 -0
  271. package/bmm/workflows/workflow-status/project-levels.yaml +59 -0
  272. package/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
  273. package/bmm/workflows/workflow-status/workflow.yaml +30 -0
  274. package/core/agents/bmad-odoo-master.md +61 -0
  275. package/core/config.yaml +7 -0
  276. package/core/resources/README.md +5 -0
  277. package/core/tasks/README.md +7 -0
  278. package/core/workflows/README.md +8 -0
  279. package/index.js +84 -0
  280. package/package.json +48 -0
  281. package/scripts/postinstall.js +447 -0
  282. package/scripts/setup-cli.js +17 -0
@@ -0,0 +1,447 @@
1
+ /**
2
+ * BMAD-Odoo - Post-install Script
3
+ * Tα»± Δ‘α»™ng setup BMAD-Odoo cho project
4
+ *
5
+ * Features:
6
+ * - Cho phép chọn IDE (VS Code, Cursor, Antigravity...)
7
+ * - Tα»± Δ‘α»™ng tαΊ‘o _bmad-odoo (symlink/copy)
8
+ * - Tα»± Δ‘α»™ng tαΊ‘o _bmad-odoo-output
9
+ * - Setup workflows vΓ o .agent/workflows/
10
+ */
11
+
12
+ const fs = require('fs');
13
+ const path = require('path');
14
+ const readline = require('readline');
15
+
16
+ // Colors for console output
17
+ const colors = {
18
+ reset: '\x1b[0m',
19
+ bright: '\x1b[1m',
20
+ dim: '\x1b[2m',
21
+ green: '\x1b[32m',
22
+ yellow: '\x1b[33m',
23
+ blue: '\x1b[34m',
24
+ cyan: '\x1b[36m',
25
+ red: '\x1b[31m',
26
+ magenta: '\x1b[35m'
27
+ };
28
+
29
+ function log(message, color = colors.reset) {
30
+ console.log(`${color}${message}${colors.reset}`);
31
+ }
32
+
33
+ function logStep(step, message) {
34
+ console.log(`${colors.cyan}[${step}]${colors.reset} ${message}`);
35
+ }
36
+
37
+ function logSuccess(message) {
38
+ console.log(`${colors.green}βœ… ${message}${colors.reset}`);
39
+ }
40
+
41
+ function logWarning(message) {
42
+ console.log(`${colors.yellow}⚠️ ${message}${colors.reset}`);
43
+ }
44
+
45
+ function logError(message) {
46
+ console.log(`${colors.red}❌ ${message}${colors.reset}`);
47
+ }
48
+
49
+ // IDE configurations
50
+ const IDE_CONFIGS = {
51
+ vscode: {
52
+ name: 'VS Code',
53
+ workflowDir: '.vscode/workflows',
54
+ configFile: '.vscode/settings.json',
55
+ description: 'Visual Studio Code vα»›i extensions AI'
56
+ },
57
+ cursor: {
58
+ name: 'Cursor',
59
+ workflowDir: '.cursor/workflows',
60
+ configFile: '.cursor/settings.json',
61
+ description: 'Cursor AI IDE'
62
+ },
63
+ antigravity: {
64
+ name: 'Antigravity (Gemini)',
65
+ workflowDir: '.agent/workflows',
66
+ configFile: '.agent/config.json',
67
+ description: 'Google Gemini Antigravity Agent'
68
+ },
69
+ windsurf: {
70
+ name: 'Windsurf',
71
+ workflowDir: '.windsurf/workflows',
72
+ configFile: '.windsurf/settings.json',
73
+ description: 'Windsurf AI IDE'
74
+ },
75
+ all: {
76
+ name: 'TαΊ₯t cαΊ£ IDEs',
77
+ description: 'Setup cho tαΊ₯t cαΊ£ IDEs trΓͺn'
78
+ }
79
+ };
80
+
81
+ // Get project root from node_modules
82
+ function getProjectRoot() {
83
+ let currentDir = __dirname;
84
+
85
+ for (let i = 0; i < 5; i++) {
86
+ currentDir = path.dirname(currentDir);
87
+ const packageJsonPath = path.join(currentDir, 'package.json');
88
+
89
+ if (fs.existsSync(packageJsonPath)) {
90
+ try {
91
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
92
+ if (pkg.name !== 'bmad-odoo') {
93
+ return currentDir;
94
+ }
95
+ } catch (e) {
96
+ // Continue searching
97
+ }
98
+ }
99
+ }
100
+
101
+ return null;
102
+ }
103
+
104
+ // Create readline interface for user input
105
+ function createReadlineInterface() {
106
+ return readline.createInterface({
107
+ input: process.stdin,
108
+ output: process.stdout
109
+ });
110
+ }
111
+
112
+ // Ask user a question
113
+ function askQuestion(rl, question) {
114
+ return new Promise((resolve) => {
115
+ rl.question(question, (answer) => {
116
+ resolve(answer.trim());
117
+ });
118
+ });
119
+ }
120
+
121
+ // Create _bmad-odoo symlink or copy
122
+ function createBmadOdooFolder(projectRoot, packageRoot) {
123
+ const targetPath = path.join(projectRoot, '_bmad-odoo');
124
+
125
+ if (fs.existsSync(targetPath)) {
126
+ logWarning(`_bmad-odoo Δ‘Γ£ tα»“n tαΊ‘i, bỏ qua...`);
127
+ return true;
128
+ }
129
+
130
+ try {
131
+ // Try to create symlink first (requires admin on Windows)
132
+ fs.symlinkSync(packageRoot, targetPath, 'junction');
133
+ logSuccess(`Đã tẑo symlink: _bmad-odoo -> node_modules/bmad-odoo`);
134
+ return true;
135
+ } catch (symlinkError) {
136
+ // Fallback: copy the folder
137
+ try {
138
+ copyFolderRecursive(packageRoot, targetPath, ['node_modules', '.git', '*.tgz']);
139
+ logSuccess(`Đã copy: _bmad-odoo`);
140
+ return true;
141
+ } catch (copyError) {
142
+ logError(`KhΓ΄ng thể tαΊ‘o _bmad-odoo: ${copyError.message}`);
143
+ return false;
144
+ }
145
+ }
146
+ }
147
+
148
+ // Copy folder recursively
149
+ function copyFolderRecursive(source, target, excludePatterns = []) {
150
+ if (!fs.existsSync(target)) {
151
+ fs.mkdirSync(target, { recursive: true });
152
+ }
153
+
154
+ const items = fs.readdirSync(source);
155
+
156
+ for (const item of items) {
157
+ // Check exclusions
158
+ const shouldExclude = excludePatterns.some(pattern => {
159
+ if (pattern.includes('*')) {
160
+ const regex = new RegExp(pattern.replace(/\*/g, '.*'));
161
+ return regex.test(item);
162
+ }
163
+ return item === pattern;
164
+ });
165
+
166
+ if (shouldExclude) continue;
167
+
168
+ const sourcePath = path.join(source, item);
169
+ const targetPath = path.join(target, item);
170
+ const stat = fs.statSync(sourcePath);
171
+
172
+ if (stat.isDirectory()) {
173
+ copyFolderRecursive(sourcePath, targetPath, excludePatterns);
174
+ } else {
175
+ fs.copyFileSync(sourcePath, targetPath);
176
+ }
177
+ }
178
+ }
179
+
180
+ // Create _bmad-odoo-output folder structure
181
+ function createOutputFolder(projectRoot) {
182
+ const outputPath = path.join(projectRoot, '_bmad-odoo-output');
183
+ const subfolders = [
184
+ 'planning-artifacts',
185
+ 'implementation-artifacts',
186
+ 'test-artifacts',
187
+ 'documentation'
188
+ ];
189
+
190
+ if (!fs.existsSync(outputPath)) {
191
+ fs.mkdirSync(outputPath, { recursive: true });
192
+ }
193
+
194
+ for (const subfolder of subfolders) {
195
+ const subfolderPath = path.join(outputPath, subfolder);
196
+ if (!fs.existsSync(subfolderPath)) {
197
+ fs.mkdirSync(subfolderPath, { recursive: true });
198
+ }
199
+ }
200
+
201
+ // Create .gitkeep files
202
+ for (const subfolder of subfolders) {
203
+ const gitkeepPath = path.join(outputPath, subfolder, '.gitkeep');
204
+ if (!fs.existsSync(gitkeepPath)) {
205
+ fs.writeFileSync(gitkeepPath, '');
206
+ }
207
+ }
208
+
209
+ // Create README for output folder
210
+ const readmePath = path.join(outputPath, 'README.md');
211
+ if (!fs.existsSync(readmePath)) {
212
+ fs.writeFileSync(readmePath, `# BMAD-Odoo Output
213
+
214
+ ThΖ° mα»₯c nΓ y chα»©a cΓ‘c artifacts được tαΊ‘o bởi BMAD-Odoo agents.
215
+
216
+ ## CαΊ₯u trΓΊc
217
+
218
+ - \`planning-artifacts/\` - Product briefs, PRDs, Architecture docs
219
+ - \`implementation-artifacts/\` - Epics, Stories, Technical specs
220
+ - \`test-artifacts/\` - Test plans, Test cases
221
+ - \`documentation/\` - Module docs, User guides
222
+
223
+ ## LΖ°u Γ½
224
+
225
+ CΓ‘c file trong thΖ° mα»₯c nΓ y được tαΊ‘o tα»± Δ‘α»™ng bởi AI agents.
226
+ BαΊ‘n cΓ³ thể commit chΓΊng vΓ o git để theo dΓ΅i tiαΊΏn Δ‘α»™ dα»± Γ‘n.
227
+ `);
228
+ }
229
+
230
+ logSuccess(`Đã tẑo: _bmad-odoo-output/`);
231
+ return true;
232
+ }
233
+
234
+ // Create workflow files for a specific IDE
235
+ function createWorkflowsForIDE(projectRoot, packageRoot, ideConfig, ideName) {
236
+ const workflowDir = path.join(projectRoot, ideConfig.workflowDir);
237
+
238
+ if (!fs.existsSync(workflowDir)) {
239
+ fs.mkdirSync(workflowDir, { recursive: true });
240
+ }
241
+
242
+ const agents = [
243
+ { name: 'analyst', desc: 'Business Analyst (Sofia) - PhÒn tích quy trình' },
244
+ { name: 'architect', desc: 'Technical Architect (Antonio) - ThiαΊΏt kαΊΏ kiαΊΏn trΓΊc' },
245
+ { name: 'dev', desc: 'Developer (Carlos) - PhΓ‘t triển code Odoo' },
246
+ { name: 'pm', desc: 'Product Manager (Maria) - QuαΊ£n lΓ½ sαΊ£n phαΊ©m' },
247
+ { name: 'sm', desc: 'Scrum Master (Diego) - QuαΊ£n lΓ½ Sprint' },
248
+ { name: 'tea', desc: 'Test Architect (Elena) - ThiαΊΏt kαΊΏ test' },
249
+ { name: 'ux-designer', desc: 'UX Designer (Sally) - ThiαΊΏt kαΊΏ UX' },
250
+ { name: 'quick-flow-solo-dev', desc: 'Quick Flow Dev (Barry) - PhΓ‘t triển nhanh' },
251
+ { name: 'tech-writer', desc: 'Tech Writer (Paige) - TΓ i liệu hΓ³a' }
252
+ ];
253
+
254
+ let created = 0;
255
+
256
+ for (const agent of agents) {
257
+ const workflowPath = path.join(workflowDir, `${agent.name}.md`);
258
+
259
+ // Check if target workflow already exists
260
+ if (fs.existsSync(workflowPath)) continue;
261
+
262
+ const content = `---
263
+ description: ${agent.desc}
264
+ ---
265
+
266
+ # Activation
267
+
268
+ Load and activate the agent by reading the file at:
269
+ \`node_modules/bmad-odoo/bmm/agents/${agent.name}.md\`
270
+
271
+ Or if using _bmad-odoo symlink:
272
+ \`_bmad-odoo/bmm/agents/${agent.name}.md\`
273
+
274
+ Follow all activation instructions in that file precisely.
275
+ `;
276
+
277
+ fs.writeFileSync(workflowPath, content);
278
+ created++;
279
+ }
280
+
281
+ // Create party-mode workflow
282
+ const partyModePath = path.join(workflowDir, 'bmad-core-workflows-party-mode.md');
283
+ if (!fs.existsSync(partyModePath)) {
284
+ fs.writeFileSync(partyModePath, `---
285
+ description: Orchestrates group discussions between all BMAD-Odoo agents
286
+ ---
287
+
288
+ # Party Mode Activation
289
+
290
+ Load the party mode workflow from:
291
+ \`node_modules/bmad-odoo/core/workflows/party-mode/party-mode.md\`
292
+
293
+ Or if using _bmad-odoo symlink:
294
+ \`_bmad-odoo/core/workflows/party-mode/party-mode.md\`
295
+
296
+ Follow all instructions to start multi-agent collaboration.
297
+ `);
298
+ created++;
299
+ }
300
+
301
+ if (created > 0) {
302
+ logSuccess(`Đã tẑo ${created} workflows cho ${ideConfig.name}`);
303
+ } else {
304
+ logWarning(`Workflows cho ${ideConfig.name} Δ‘Γ£ tα»“n tαΊ‘i`);
305
+ }
306
+
307
+ return created;
308
+ }
309
+
310
+ // Interactive setup
311
+ async function interactiveSetup(projectRoot, packageRoot) {
312
+ const rl = createReadlineInterface();
313
+
314
+ log('\n╔════════════════════════════════════════════════════════════╗', colors.cyan);
315
+ log('β•‘ πŸš€ BMAD-Odoo Interactive Setup β•‘', colors.cyan);
316
+ log('β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\n', colors.cyan);
317
+
318
+ log('Chọn IDE bαΊ‘n Δ‘ang sα»­ dα»₯ng:\n', colors.bright);
319
+ log(' 1. VS Code - Visual Studio Code vα»›i extensions AI', colors.reset);
320
+ log(' 2. Cursor - Cursor AI IDE', colors.reset);
321
+ log(' 3. Antigravity - Google Gemini Antigravity Agent', colors.reset);
322
+ log(' 4. Windsurf - Windsurf AI IDE', colors.reset);
323
+ log(' 5. TαΊ₯t cαΊ£ - Setup cho tαΊ₯t cαΊ£ IDEs\n', colors.reset);
324
+
325
+ const choice = await askQuestion(rl, `${colors.yellow}NhαΊ­p sα»‘ (1-5) [mαΊ·c Δ‘α»‹nh: 3]: ${colors.reset}`);
326
+
327
+ const ideMapping = {
328
+ '1': 'vscode',
329
+ '2': 'cursor',
330
+ '3': 'antigravity',
331
+ '4': 'windsurf',
332
+ '5': 'all',
333
+ '': 'antigravity' // Default
334
+ };
335
+
336
+ const selectedIde = ideMapping[choice] || 'antigravity';
337
+
338
+ rl.close();
339
+
340
+ log(`\nπŸ“Œ Đã chọn: ${IDE_CONFIGS[selectedIde].name}\n`, colors.green);
341
+
342
+ // Step 1: Create _bmad-odoo
343
+ logStep('1/3', 'TαΊ‘o thΖ° mα»₯c _bmad-odoo...');
344
+ createBmadOdooFolder(projectRoot, packageRoot);
345
+
346
+ // Step 2: Create _bmad-odoo-output
347
+ logStep('2/3', 'TαΊ‘o thΖ° mα»₯c _bmad-odoo-output...');
348
+ createOutputFolder(projectRoot);
349
+
350
+ // Step 3: Create workflows for selected IDE(s)
351
+ logStep('3/3', 'TαΊ‘o workflow files...');
352
+
353
+ if (selectedIde === 'all') {
354
+ for (const [ideName, ideConfig] of Object.entries(IDE_CONFIGS)) {
355
+ if (ideName !== 'all') {
356
+ createWorkflowsForIDE(projectRoot, packageRoot, ideConfig, ideName);
357
+ }
358
+ }
359
+ } else {
360
+ createWorkflowsForIDE(projectRoot, packageRoot, IDE_CONFIGS[selectedIde], selectedIde);
361
+ }
362
+
363
+ printSuccessMessage(selectedIde);
364
+ }
365
+
366
+ // Non-interactive setup (for CI/CD or when stdin is not available)
367
+ function autoSetup(projectRoot, packageRoot) {
368
+ log('\n╔════════════════════════════════════════════════════════════╗', colors.cyan);
369
+ log('β•‘ πŸš€ BMAD-Odoo Auto Setup β•‘', colors.cyan);
370
+ log('β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\n', colors.cyan);
371
+
372
+ // Default to Antigravity
373
+ logStep('1/3', 'TαΊ‘o thΖ° mα»₯c _bmad-odoo...');
374
+ createBmadOdooFolder(projectRoot, packageRoot);
375
+
376
+ logStep('2/3', 'TαΊ‘o thΖ° mα»₯c _bmad-odoo-output...');
377
+ createOutputFolder(projectRoot);
378
+
379
+ logStep('3/3', 'TαΊ‘o workflow files cho Antigravity...');
380
+ createWorkflowsForIDE(projectRoot, packageRoot, IDE_CONFIGS.antigravity, 'antigravity');
381
+
382
+ printSuccessMessage('antigravity');
383
+
384
+ log(`\nπŸ’‘ Để setup cho IDE khΓ‘c, chαΊ‘y: npx bmad-odoo-setup\n`, colors.blue);
385
+ }
386
+
387
+ // Print success message
388
+ function printSuccessMessage(selectedIde) {
389
+ log('\n╔════════════════════════════════════════════════════════════╗', colors.green);
390
+ log('β•‘ βœ… BMAD-Odoo Setup HoΓ n TαΊ₯t! β•‘', colors.green);
391
+ log('β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\n', colors.green);
392
+
393
+ log('πŸ“‚ CαΊ₯u trΓΊc Δ‘Γ£ tαΊ‘o:', colors.bright);
394
+ log(' _bmad-odoo/ β†’ Symlink/copy cα»§a package', colors.reset);
395
+ log(' _bmad-odoo-output/ β†’ ThΖ° mα»₯c output cho artifacts', colors.reset);
396
+
397
+ if (selectedIde === 'all') {
398
+ log(' .vscode/workflows/ β†’ Workflows cho VS Code', colors.reset);
399
+ log(' .cursor/workflows/ β†’ Workflows cho Cursor', colors.reset);
400
+ log(' .agent/workflows/ β†’ Workflows cho Antigravity', colors.reset);
401
+ log(' .windsurf/workflows/ β†’ Workflows cho Windsurf', colors.reset);
402
+ } else {
403
+ const ideConfig = IDE_CONFIGS[selectedIde];
404
+ log(` ${ideConfig.workflowDir}/ β†’ Workflows cho ${ideConfig.name}`, colors.reset);
405
+ }
406
+
407
+ log('\nπŸ“‹ CΓ‘c slash commands cΓ³ sαΊ΅n:', colors.bright);
408
+ log(' /analyst - Business Analyst (Sofia)', colors.reset);
409
+ log(' /architect - Technical Architect (Antonio)', colors.reset);
410
+ log(' /dev - Developer (Carlos)', colors.reset);
411
+ log(' /pm - Product Manager (Maria)', colors.reset);
412
+ log(' /sm - Scrum Master (Diego)', colors.reset);
413
+ log(' /tea - Test Architect (Elena)', colors.reset);
414
+ log(' /ux-designer - UX Designer (Sally)', colors.reset);
415
+ log(' /quick-flow-solo-dev - Quick Flow Dev (Barry)', colors.reset);
416
+ log(' /tech-writer - Tech Writer (Paige)', colors.reset);
417
+ log(' /bmad-core-workflows-party-mode - Multi-agent mode\n', colors.reset);
418
+
419
+ log('πŸ“– Xem thΓͺm: _bmad-odoo/README.md\n', colors.blue);
420
+ }
421
+
422
+ // Main function
423
+ async function main() {
424
+ const projectRoot = getProjectRoot();
425
+ const packageRoot = path.join(__dirname, '..');
426
+
427
+ if (!projectRoot) {
428
+ logWarning('KhΓ΄ng tΓ¬m thαΊ₯y project root. Bỏ qua auto-setup.');
429
+ logWarning('BαΊ‘n cΓ³ thể setup thα»§ cΓ΄ng theo hΖ°α»›ng dαΊ«n trong README.md\n');
430
+ return;
431
+ }
432
+
433
+ // Check if running interactively (has stdin)
434
+ const isInteractive = process.stdin.isTTY;
435
+
436
+ if (isInteractive) {
437
+ await interactiveSetup(projectRoot, packageRoot);
438
+ } else {
439
+ autoSetup(projectRoot, packageRoot);
440
+ }
441
+ }
442
+
443
+ // Run the script
444
+ main().catch((error) => {
445
+ logError(`Lỗi trong quÑ trình setup: ${error.message}`);
446
+ logWarning('BαΊ‘n cΓ³ thể setup thα»§ cΓ΄ng theo hΖ°α»›ng dαΊ«n trong README.md\n');
447
+ });
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * BMAD-Odoo Setup CLI
5
+ * Cho phΓ©p chαΊ‘y setup lαΊ‘i bαΊ₯t cα»© lΓΊc nΓ o
6
+ *
7
+ * Usage: npx bmad-odoo-setup
8
+ */
9
+
10
+ const path = require('path');
11
+ const fs = require('fs');
12
+
13
+ // Set project root to current working directory
14
+ process.env.BMAD_PROJECT_ROOT = process.cwd();
15
+
16
+ // Run the postinstall script in interactive mode
17
+ require('./postinstall.js');