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.
- package/CHANGELOG.md +38 -0
- package/LICENSE +21 -0
- package/README.md +317 -0
- package/_config/agent-manifest.csv +10 -0
- package/_config/manifest.yaml +10 -0
- package/_config/workflow-manifest.csv +10 -0
- package/bmm/agents/analyst.md +93 -0
- package/bmm/agents/architect.md +72 -0
- package/bmm/agents/dev.md +85 -0
- package/bmm/agents/pm.md +61 -0
- package/bmm/agents/quick-flow-solo-dev.md +58 -0
- package/bmm/agents/sm.md +56 -0
- package/bmm/agents/tea.md +57 -0
- package/bmm/agents/tech-writer.md +56 -0
- package/bmm/agents/ux-designer.md +56 -0
- package/bmm/config.yaml +27 -0
- package/bmm/data/odoo-knowledge-base.md +90 -0
- package/bmm/teams/default-team.md +17 -0
- package/bmm/testarch/odoo-test-design/steps/step-01-init.md +44 -0
- package/bmm/testarch/odoo-test-design/steps/step-02-test-cases.md +82 -0
- package/bmm/testarch/odoo-test-design/steps/step-03-complete.md +69 -0
- package/bmm/testarch/odoo-test-design/workflow.md +30 -0
- package/bmm/testarch/odoo-testing-guide.md +30 -0
- package/bmm/workflows/1-analysis/analyze-process/process-analysis.template.md +80 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-01-init.md +44 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-02-current-state.md +55 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-03-pain-points.md +67 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-04-odoo-mapping.md +67 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-05-recommendations.md +99 -0
- package/bmm/workflows/1-analysis/analyze-process/steps/step-06-complete.md +62 -0
- package/bmm/workflows/1-analysis/analyze-process/workflow.md +60 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-01-init.md +45 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-02-users-stakeholders.md +46 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-03-odoo-modules.md +59 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-04-scope-timeline.md +64 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/steps/step-05-complete.md +32 -0
- package/bmm/workflows/1-analysis/create-odoo-product-brief/workflow.md +35 -0
- package/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +182 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +166 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +204 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +207 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +210 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +224 -0
- package/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +199 -0
- package/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
- package/bmm/workflows/1-analysis/gap-analysis/steps/step-01-init.md +45 -0
- package/bmm/workflows/1-analysis/gap-analysis/steps/step-02-odoo-capabilities.md +36 -0
- package/bmm/workflows/1-analysis/gap-analysis/steps/step-03-gap-matrix.md +51 -0
- package/bmm/workflows/1-analysis/gap-analysis/workflow.md +45 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
- package/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/bmm/workflows/1-analysis/research/workflow.md +173 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-01-init.md +48 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-02-technical-design.md +82 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-addon/steps/step-03-generate.md +86 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-addon/workflow.md +39 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-01-init.md +55 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-02-stories.md +53 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-epic/steps/step-03-complete.md +39 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-epic/workflow.md +35 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-01-init.md +46 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-02-functional-requirements.md +56 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-03-technical-requirements.md +45 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/steps/step-04-complete.md +40 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-prd/workflow.md +29 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-01-init.md +52 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-02-form-design.md +78 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-03-tree-design.md +84 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/steps/step-04-complete.md +55 -0
- package/bmm/workflows/2-plan-workflows/create-odoo-ux-design/workflow.md +30 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +228 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
- package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-01-init.md +49 -0
- package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-02-risk-assessment.md +51 -0
- package/bmm/workflows/2-plan-workflows/plan-odoo-migration/steps/step-03-roadmap.md +58 -0
- package/bmm/workflows/2-plan-workflows/plan-odoo-migration/workflow.md +29 -0
- package/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/bmm/workflows/2-plan-workflows/prd/prd-template.md +11 -0
- package/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +197 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +166 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +421 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +290 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +291 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +271 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +262 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +258 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +299 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +270 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +294 -0
- package/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +186 -0
- package/bmm/workflows/2-plan-workflows/prd/workflow.md +63 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +133 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
- package/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
- package/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +352 -0
- package/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +145 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
- package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-01-init.md +44 -0
- package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-02-inheritance-strategy.md +75 -0
- package/bmm/workflows/3-solutioning/enhance-existing-system/steps/step-03-implementation.md +64 -0
- package/bmm/workflows/3-solutioning/enhance-existing-system/workflow.md +30 -0
- package/bmm/workflows/3-solutioning/quick-addon/workflow.md +23 -0
- package/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/bmm/workflows/4-implementation/code-review/instructions.xml +225 -0
- package/bmm/workflows/4-implementation/code-review/workflow.yaml +50 -0
- package/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
- package/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -0
- package/bmm/workflows/4-implementation/create-next-story/steps/step-01-init.md +53 -0
- package/bmm/workflows/4-implementation/create-next-story/steps/step-02-acceptance-criteria.md +63 -0
- package/bmm/workflows/4-implementation/create-next-story/steps/step-03-tasks.md +68 -0
- package/bmm/workflows/4-implementation/create-next-story/steps/step-04-complete.md +70 -0
- package/bmm/workflows/4-implementation/create-next-story/workflow.md +30 -0
- package/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/bmm/workflows/4-implementation/dev-story/instructions.xml +409 -0
- package/bmm/workflows/4-implementation/dev-story/workflow.yaml +25 -0
- package/bmm/workflows/4-implementation/rapid-brownfield/steps/step-01-quick-story.md +79 -0
- package/bmm/workflows/4-implementation/rapid-brownfield/workflow.md +29 -0
- package/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/bmm/workflows/4-implementation/retrospective/workflow.yaml +57 -0
- package/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
- package/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -0
- package/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
- package/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-01-understand.md +189 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-02-investigate.md +144 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-03-generate.md +128 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-04-review.md +173 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/tech-spec-template.md +74 -0
- package/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.md +79 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +52 -0
- package/bmm/workflows/document-odoo/steps/step-01-init.md +43 -0
- package/bmm/workflows/document-odoo/steps/step-02-readme.md +98 -0
- package/bmm/workflows/document-odoo/steps/step-03-user-guide.md +76 -0
- package/bmm/workflows/document-odoo/steps/step-04-complete.md +58 -0
- package/bmm/workflows/document-odoo/workflow.md +30 -0
- package/bmm/workflows/document-project/checklist.md +245 -0
- package/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/bmm/workflows/document-project/instructions.md +221 -0
- package/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/bmm/workflows/document-project/workflow.yaml +28 -0
- package/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
- package/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
- package/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
- package/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +26 -0
- package/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
- package/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
- package/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +26 -0
- package/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
- package/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
- package/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +26 -0
- package/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
- package/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
- package/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +26 -0
- package/bmm/workflows/generate-project-context/project-context-template.md +21 -0
- package/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
- package/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
- package/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
- package/bmm/workflows/generate-project-context/workflow.md +49 -0
- package/bmm/workflows/testarch/atdd/atdd-checklist-template.md +364 -0
- package/bmm/workflows/testarch/atdd/checklist.md +374 -0
- package/bmm/workflows/testarch/atdd/instructions.md +806 -0
- package/bmm/workflows/testarch/atdd/workflow.yaml +45 -0
- package/bmm/workflows/testarch/automate/checklist.md +582 -0
- package/bmm/workflows/testarch/automate/instructions.md +1324 -0
- package/bmm/workflows/testarch/automate/workflow.yaml +52 -0
- package/bmm/workflows/testarch/ci/checklist.md +248 -0
- package/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
- package/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
- package/bmm/workflows/testarch/ci/instructions.md +536 -0
- package/bmm/workflows/testarch/ci/workflow.yaml +45 -0
- package/bmm/workflows/testarch/framework/checklist.md +321 -0
- package/bmm/workflows/testarch/framework/instructions.md +481 -0
- package/bmm/workflows/testarch/framework/workflow.yaml +47 -0
- package/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
- package/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
- package/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +445 -0
- package/bmm/workflows/testarch/nfr-assess/workflow.yaml +47 -0
- package/bmm/workflows/testarch/test-design/checklist.md +235 -0
- package/bmm/workflows/testarch/test-design/instructions.md +788 -0
- package/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
- package/bmm/workflows/testarch/test-design/workflow.yaml +54 -0
- package/bmm/workflows/testarch/test-review/checklist.md +472 -0
- package/bmm/workflows/testarch/test-review/instructions.md +628 -0
- package/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
- package/bmm/workflows/testarch/test-review/workflow.yaml +46 -0
- package/bmm/workflows/testarch/trace/checklist.md +655 -0
- package/bmm/workflows/testarch/trace/instructions.md +1047 -0
- package/bmm/workflows/testarch/trace/trace-template.md +675 -0
- package/bmm/workflows/testarch/trace/workflow.yaml +55 -0
- package/bmm/workflows/workflow-status/init/instructions.md +346 -0
- package/bmm/workflows/workflow-status/init/workflow.yaml +29 -0
- package/bmm/workflows/workflow-status/instructions.md +395 -0
- package/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +103 -0
- package/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +100 -0
- package/bmm/workflows/workflow-status/paths/method-brownfield.yaml +103 -0
- package/bmm/workflows/workflow-status/paths/method-greenfield.yaml +100 -0
- package/bmm/workflows/workflow-status/project-levels.yaml +59 -0
- package/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/bmm/workflows/workflow-status/workflow.yaml +30 -0
- package/core/agents/bmad-odoo-master.md +61 -0
- package/core/config.yaml +7 -0
- package/core/resources/README.md +5 -0
- package/core/tasks/README.md +7 -0
- package/core/workflows/README.md +8 -0
- package/index.js +84 -0
- package/package.json +48 -0
- package/scripts/postinstall.js +447 -0
- 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');
|