bmad-method 6.3.1-next.2 β 6.3.1-next.20
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/package.json +1 -2
- package/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md +51 -36
- package/src/bmm-skills/1-analysis/bmad-agent-analyst/customize.toml +90 -0
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md +50 -33
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/customize.toml +81 -0
- package/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md +57 -1
- package/src/bmm-skills/1-analysis/bmad-document-project/customize.toml +41 -0
- package/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-instructions.md +1 -0
- package/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-instructions.md +1 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md +48 -9
- package/src/bmm-skills/1-analysis/bmad-prfaq/customize.toml +41 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/references/verdict.md +4 -0
- package/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +44 -9
- package/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml +47 -0
- package/src/bmm-skills/1-analysis/bmad-product-brief/prompts/contextual-discovery.md +8 -7
- package/src/bmm-skills/1-analysis/bmad-product-brief/prompts/draft-and-review.md +6 -5
- package/src/bmm-skills/1-analysis/bmad-product-brief/prompts/finalize.md +4 -1
- package/src/bmm-skills/1-analysis/bmad-product-brief/prompts/guided-elicitation.md +3 -2
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md +91 -1
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/customize.toml +41 -0
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md +6 -0
- package/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md +91 -1
- package/src/bmm-skills/1-analysis/research/bmad-market-research/customize.toml +41 -0
- package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md +6 -0
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md +91 -1
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/customize.toml +41 -0
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md +6 -0
- package/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md +50 -35
- package/src/bmm-skills/2-plan-workflows/bmad-agent-pm/customize.toml +85 -0
- package/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md +50 -31
- package/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/customize.toml +60 -0
- package/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md +99 -1
- package/src/bmm-skills/2-plan-workflows/bmad-create-prd/customize.toml +41 -0
- package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-08-scoping.md +70 -23
- package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-11-polish.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-12-complete.md +6 -0
- package/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/SKILL.md +70 -1
- package/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/customize.toml +41 -0
- package/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.md +6 -0
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md +97 -1
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/customize.toml +42 -0
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +2 -0
- package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md +99 -1
- package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/customize.toml +42 -0
- package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md +1 -0
- package/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md +50 -30
- package/src/bmm-skills/3-solutioning/bmad-agent-architect/customize.toml +65 -0
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md +86 -1
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/customize.toml +41 -0
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +6 -0
- package/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md +69 -1
- package/src/bmm-skills/3-solutioning/bmad-create-architecture/customize.toml +41 -0
- package/src/bmm-skills/3-solutioning/bmad-create-architecture/steps/step-08-complete.md +6 -0
- package/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md +88 -1
- package/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/customize.toml +41 -0
- package/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/steps/step-04-final-validation.md +6 -0
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md +76 -1
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/customize.toml +41 -0
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/steps/step-03-complete.md +6 -0
- package/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md +48 -43
- package/src/bmm-skills/4-implementation/bmad-agent-dev/customize.toml +90 -0
- package/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md +296 -1
- package/src/bmm-skills/4-implementation/bmad-correct-course/customize.toml +41 -0
- package/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md +412 -1
- package/src/bmm-skills/4-implementation/bmad-create-story/customize.toml +41 -0
- package/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md +171 -1
- package/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/customize.toml +41 -0
- package/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +1507 -1
- package/src/bmm-skills/4-implementation/bmad-retrospective/customize.toml +41 -0
- package/src/bmm-skills/module.yaml +49 -0
- package/src/core-skills/bmad-advanced-elicitation/SKILL.md +7 -1
- package/src/core-skills/bmad-customize/SKILL.md +111 -0
- package/src/core-skills/bmad-customize/scripts/list_customizable_skills.py +231 -0
- package/src/core-skills/bmad-customize/scripts/tests/test_list_customizable_skills.py +249 -0
- package/src/core-skills/bmad-distillator/resources/distillate-format-reference.md +1 -1
- package/src/core-skills/bmad-party-mode/SKILL.md +13 -10
- package/src/core-skills/module-help.csv +1 -0
- package/src/core-skills/module.yaml +3 -0
- package/src/scripts/resolve_config.py +176 -0
- package/src/scripts/resolve_customization.py +230 -0
- package/tools/installer/cli-utils.js +0 -137
- package/tools/installer/commands/status.js +1 -1
- package/tools/installer/commands/uninstall.js +1 -1
- package/tools/installer/core/existing-install.js +1 -1
- package/tools/installer/core/install-paths.js +12 -6
- package/tools/installer/core/installer.js +88 -88
- package/tools/installer/core/manifest-generator.js +331 -189
- package/tools/installer/core/manifest.js +24 -642
- package/tools/installer/file-ops.js +1 -1
- package/tools/installer/fs-native.js +116 -0
- package/tools/installer/ide/_config-driven.js +1 -1
- package/tools/installer/ide/platform-codes.js +1 -1
- package/tools/installer/ide/shared/path-utils.js +0 -145
- package/tools/installer/ide/shared/skill-manifest.js +1 -1
- package/tools/installer/message-loader.js +1 -1
- package/tools/installer/modules/community-manager.js +11 -6
- package/tools/installer/modules/custom-module-manager.js +1 -28
- package/tools/installer/modules/external-manager.js +5 -44
- package/tools/installer/modules/official-modules.js +5 -53
- package/tools/installer/modules/plugin-resolver.js +1 -1
- package/tools/installer/modules/registry-client.js +133 -12
- package/tools/installer/modules/version-resolver.js +336 -0
- package/tools/installer/project-root.js +55 -1
- package/tools/installer/prompts.js +0 -106
- package/tools/installer/ui.js +50 -48
- package/tools/migrate-custom-module-paths.js +1 -1
- package/src/bmm-skills/1-analysis/bmad-agent-analyst/bmad-skill-manifest.yaml +0 -11
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
- package/src/bmm-skills/1-analysis/bmad-document-project/workflow.md +0 -25
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/workflow.md +0 -51
- package/src/bmm-skills/1-analysis/research/bmad-market-research/workflow.md +0 -51
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/workflow.md +0 -52
- package/src/bmm-skills/2-plan-workflows/bmad-agent-pm/bmad-skill-manifest.yaml +0 -11
- package/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/bmad-skill-manifest.yaml +0 -11
- package/src/bmm-skills/2-plan-workflows/bmad-create-prd/workflow.md +0 -61
- package/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/workflow.md +0 -35
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/workflow.md +0 -62
- package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/workflow.md +0 -61
- package/src/bmm-skills/3-solutioning/bmad-agent-architect/bmad-skill-manifest.yaml +0 -11
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/workflow.md +0 -47
- package/src/bmm-skills/3-solutioning/bmad-create-architecture/workflow.md +0 -32
- package/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/workflow.md +0 -51
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/workflow.md +0 -39
- package/src/bmm-skills/4-implementation/bmad-agent-dev/bmad-skill-manifest.yaml +0 -11
- package/src/bmm-skills/4-implementation/bmad-correct-course/workflow.md +0 -267
- package/src/bmm-skills/4-implementation/bmad-create-story/workflow.md +0 -380
- package/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/workflow.md +0 -136
- package/src/bmm-skills/4-implementation/bmad-retrospective/workflow.md +0 -1479
- package/tools/installer/ide/shared/agent-command-generator.js +0 -180
- package/tools/installer/ide/shared/bmad-artifacts.js +0 -208
- package/tools/installer/ide/shared/module-injections.js +0 -136
- package/tools/installer/ide/templates/agent-command-template.md +0 -14
- package/tools/installer/ide/templates/combined/antigravity.md +0 -8
- package/tools/installer/ide/templates/combined/default-agent.md +0 -15
- package/tools/installer/ide/templates/combined/default-task.md +0 -10
- package/tools/installer/ide/templates/combined/default-tool.md +0 -10
- package/tools/installer/ide/templates/combined/default-workflow.md +0 -6
- package/tools/installer/ide/templates/combined/gemini-agent.toml +0 -14
- package/tools/installer/ide/templates/combined/gemini-task.toml +0 -11
- package/tools/installer/ide/templates/combined/gemini-tool.toml +0 -11
- package/tools/installer/ide/templates/combined/gemini-workflow-yaml.toml +0 -16
- package/tools/installer/ide/templates/combined/gemini-workflow.toml +0 -14
- package/tools/installer/ide/templates/combined/kiro-agent.md +0 -16
- package/tools/installer/ide/templates/combined/kiro-task.md +0 -9
- package/tools/installer/ide/templates/combined/kiro-tool.md +0 -9
- package/tools/installer/ide/templates/combined/kiro-workflow.md +0 -7
- package/tools/installer/ide/templates/combined/opencode-agent.md +0 -15
- package/tools/installer/ide/templates/combined/opencode-task.md +0 -13
- package/tools/installer/ide/templates/combined/opencode-tool.md +0 -13
- package/tools/installer/ide/templates/combined/opencode-workflow-yaml.md +0 -16
- package/tools/installer/ide/templates/combined/opencode-workflow.md +0 -16
- package/tools/installer/ide/templates/combined/rovodev.md +0 -9
- package/tools/installer/ide/templates/combined/trae.md +0 -9
- package/tools/installer/ide/templates/combined/windsurf-workflow.md +0 -10
- package/tools/installer/ide/templates/split/.gitkeep +0 -0
|
@@ -498,26 +498,6 @@ async function password(options) {
|
|
|
498
498
|
return result;
|
|
499
499
|
}
|
|
500
500
|
|
|
501
|
-
/**
|
|
502
|
-
* Group multiple prompts together
|
|
503
|
-
* @param {Object} prompts - Object of prompt functions
|
|
504
|
-
* @param {Object} [options] - Group options
|
|
505
|
-
* @returns {Promise<Object>} Object with all answers
|
|
506
|
-
*/
|
|
507
|
-
async function group(prompts, options = {}) {
|
|
508
|
-
const clack = await getClack();
|
|
509
|
-
|
|
510
|
-
const result = await clack.group(prompts, {
|
|
511
|
-
onCancel: () => {
|
|
512
|
-
clack.cancel('Operation cancelled');
|
|
513
|
-
process.exit(0);
|
|
514
|
-
},
|
|
515
|
-
...options,
|
|
516
|
-
});
|
|
517
|
-
|
|
518
|
-
return result;
|
|
519
|
-
}
|
|
520
|
-
|
|
521
501
|
/**
|
|
522
502
|
* Run tasks with spinner feedback
|
|
523
503
|
* @param {Array} tasks - Array of task objects [{title, task, enabled?}]
|
|
@@ -578,42 +558,6 @@ async function box(content, title, options) {
|
|
|
578
558
|
clack.box(content, title, options);
|
|
579
559
|
}
|
|
580
560
|
|
|
581
|
-
/**
|
|
582
|
-
* Create a progress bar for visualizing task completion
|
|
583
|
-
* @param {Object} [options] - Progress options (max, style, etc.)
|
|
584
|
-
* @returns {Promise<Object>} Progress controller with start, advance, stop methods
|
|
585
|
-
*/
|
|
586
|
-
async function progress(options) {
|
|
587
|
-
const clack = await getClack();
|
|
588
|
-
return clack.progress(options);
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
/**
|
|
592
|
-
* Create a task log for displaying scrolling subprocess output
|
|
593
|
-
* @param {Object} options - TaskLog options (title, limit, retainLog)
|
|
594
|
-
* @returns {Promise<Object>} TaskLog controller with message, success, error methods
|
|
595
|
-
*/
|
|
596
|
-
async function taskLog(options) {
|
|
597
|
-
const clack = await getClack();
|
|
598
|
-
return clack.taskLog(options);
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
/**
|
|
602
|
-
* File system path prompt with autocomplete
|
|
603
|
-
* @param {Object} options - Path options
|
|
604
|
-
* @param {string} options.message - The prompt message
|
|
605
|
-
* @param {string} [options.initialValue] - Initial path value
|
|
606
|
-
* @param {boolean} [options.directory=false] - Only allow directories
|
|
607
|
-
* @param {Function} [options.validate] - Validation function
|
|
608
|
-
* @returns {Promise<string>} Selected path
|
|
609
|
-
*/
|
|
610
|
-
async function pathPrompt(options) {
|
|
611
|
-
const clack = await getClack();
|
|
612
|
-
const result = await clack.path(options);
|
|
613
|
-
await handleCancel(result);
|
|
614
|
-
return result;
|
|
615
|
-
}
|
|
616
|
-
|
|
617
561
|
/**
|
|
618
562
|
* Autocomplete single-select prompt with type-ahead filtering
|
|
619
563
|
* @param {Object} options - Autocomplete options
|
|
@@ -631,50 +575,6 @@ async function autocomplete(options) {
|
|
|
631
575
|
return result;
|
|
632
576
|
}
|
|
633
577
|
|
|
634
|
-
/**
|
|
635
|
-
* Key-based instant selection prompt
|
|
636
|
-
* @param {Object} options - SelectKey options
|
|
637
|
-
* @param {string} options.message - The prompt message
|
|
638
|
-
* @param {Array} options.options - Array of choices [{value, label, hint?}]
|
|
639
|
-
* @returns {Promise<any>} Selected value
|
|
640
|
-
*/
|
|
641
|
-
async function selectKey(options) {
|
|
642
|
-
const clack = await getClack();
|
|
643
|
-
const result = await clack.selectKey(options);
|
|
644
|
-
await handleCancel(result);
|
|
645
|
-
return result;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
/**
|
|
649
|
-
* Stream messages with dynamic content (for LLMs, generators, etc.)
|
|
650
|
-
*/
|
|
651
|
-
const stream = {
|
|
652
|
-
async info(generator) {
|
|
653
|
-
const clack = await getClack();
|
|
654
|
-
return clack.stream.info(generator);
|
|
655
|
-
},
|
|
656
|
-
async success(generator) {
|
|
657
|
-
const clack = await getClack();
|
|
658
|
-
return clack.stream.success(generator);
|
|
659
|
-
},
|
|
660
|
-
async step(generator) {
|
|
661
|
-
const clack = await getClack();
|
|
662
|
-
return clack.stream.step(generator);
|
|
663
|
-
},
|
|
664
|
-
async warn(generator) {
|
|
665
|
-
const clack = await getClack();
|
|
666
|
-
return clack.stream.warn(generator);
|
|
667
|
-
},
|
|
668
|
-
async error(generator) {
|
|
669
|
-
const clack = await getClack();
|
|
670
|
-
return clack.stream.error(generator);
|
|
671
|
-
},
|
|
672
|
-
async message(generator, options) {
|
|
673
|
-
const clack = await getClack();
|
|
674
|
-
return clack.stream.message(generator, options);
|
|
675
|
-
},
|
|
676
|
-
};
|
|
677
|
-
|
|
678
578
|
/**
|
|
679
579
|
* Get the color utility (picocolors instance from @clack/prompts)
|
|
680
580
|
* @returns {Promise<Object>} The color utility (picocolors)
|
|
@@ -790,20 +690,14 @@ module.exports = {
|
|
|
790
690
|
note,
|
|
791
691
|
box,
|
|
792
692
|
spinner,
|
|
793
|
-
progress,
|
|
794
|
-
taskLog,
|
|
795
693
|
select,
|
|
796
694
|
multiselect,
|
|
797
695
|
autocompleteMultiselect,
|
|
798
696
|
autocomplete,
|
|
799
|
-
selectKey,
|
|
800
697
|
confirm,
|
|
801
698
|
text,
|
|
802
|
-
path: pathPrompt,
|
|
803
699
|
password,
|
|
804
|
-
group,
|
|
805
700
|
tasks,
|
|
806
701
|
log,
|
|
807
|
-
stream,
|
|
808
702
|
prompt,
|
|
809
703
|
};
|
package/tools/installer/ui.js
CHANGED
|
@@ -1,50 +1,19 @@
|
|
|
1
1
|
const path = require('node:path');
|
|
2
2
|
const os = require('node:os');
|
|
3
|
-
const fs = require('fs-
|
|
3
|
+
const fs = require('./fs-native');
|
|
4
4
|
const { CLIUtils } = require('./cli-utils');
|
|
5
5
|
const { ExternalModuleManager } = require('./modules/external-manager');
|
|
6
|
-
const {
|
|
6
|
+
const { resolveModuleVersion } = require('./modules/version-resolver');
|
|
7
7
|
const prompts = require('./prompts');
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Read module version from .
|
|
10
|
+
* Read a module version from the freshest local metadata available.
|
|
11
11
|
* @param {string} moduleCode - Module code (e.g., 'core', 'bmm', 'cis')
|
|
12
12
|
* @returns {string} Version string or empty string
|
|
13
13
|
*/
|
|
14
|
-
async function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
marketplacePath = path.join(getProjectRoot(), '.claude-plugin', 'marketplace.json');
|
|
18
|
-
} else {
|
|
19
|
-
const cacheDir = path.join(os.homedir(), '.bmad', 'cache', 'external-modules', moduleCode);
|
|
20
|
-
marketplacePath = path.join(cacheDir, '.claude-plugin', 'marketplace.json');
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
if (await fs.pathExists(marketplacePath)) {
|
|
24
|
-
const data = JSON.parse(await fs.readFile(marketplacePath, 'utf8'));
|
|
25
|
-
return _extractMarketplaceVersion(data);
|
|
26
|
-
}
|
|
27
|
-
} catch {
|
|
28
|
-
// ignore
|
|
29
|
-
}
|
|
30
|
-
return '';
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Extract the highest version from marketplace.json plugins array.
|
|
35
|
-
* Handles multiple plugins per file safely.
|
|
36
|
-
* @param {Object} data - Parsed marketplace.json
|
|
37
|
-
* @returns {string} Version string or empty string
|
|
38
|
-
*/
|
|
39
|
-
function _extractMarketplaceVersion(data) {
|
|
40
|
-
const plugins = data?.plugins;
|
|
41
|
-
if (!Array.isArray(plugins) || plugins.length === 0) return '';
|
|
42
|
-
// Use the highest version across all plugins in the file
|
|
43
|
-
let best = '';
|
|
44
|
-
for (const p of plugins) {
|
|
45
|
-
if (p.version && (!best || p.version > best)) best = p.version;
|
|
46
|
-
}
|
|
47
|
-
return best;
|
|
14
|
+
async function getModuleVersion(moduleCode) {
|
|
15
|
+
const versionInfo = await resolveModuleVersion(moduleCode);
|
|
16
|
+
return versionInfo.version || '';
|
|
48
17
|
}
|
|
49
18
|
|
|
50
19
|
/**
|
|
@@ -598,7 +567,7 @@ class UI {
|
|
|
598
567
|
const officialCodes = new Set(officialSelected);
|
|
599
568
|
const externalManager = new ExternalModuleManager();
|
|
600
569
|
const registryModules = await externalManager.listAvailable();
|
|
601
|
-
const officialRegistryCodes = new Set(registryModules.map((m) => m.code));
|
|
570
|
+
const officialRegistryCodes = new Set(['core', 'bmm', ...registryModules.map((m) => m.code)]);
|
|
602
571
|
const installedNonOfficial = [...installedModuleIds].filter((id) => !officialRegistryCodes.has(id));
|
|
603
572
|
|
|
604
573
|
// Phase 2: Community modules (category drill-down)
|
|
@@ -630,6 +599,11 @@ class UI {
|
|
|
630
599
|
* @returns {Array} Selected official module codes
|
|
631
600
|
*/
|
|
632
601
|
async _selectOfficialModules(installedModuleIds = new Set()) {
|
|
602
|
+
// Built-in modules (core, bmm) come from local source, not the registry
|
|
603
|
+
const { OfficialModules } = require('./modules/official-modules');
|
|
604
|
+
const builtInModules = (await new OfficialModules().listAvailable()).modules || [];
|
|
605
|
+
|
|
606
|
+
// External modules come from the registry (with fallback)
|
|
633
607
|
const externalManager = new ExternalModuleManager();
|
|
634
608
|
const registryModules = await externalManager.listAvailable();
|
|
635
609
|
|
|
@@ -637,20 +611,34 @@ class UI {
|
|
|
637
611
|
const initialValues = [];
|
|
638
612
|
const lockedValues = ['core'];
|
|
639
613
|
|
|
640
|
-
const buildModuleEntry = async (
|
|
641
|
-
const isInstalled = installedModuleIds.has(
|
|
642
|
-
const version = await
|
|
643
|
-
const label = version ? `${
|
|
614
|
+
const buildModuleEntry = async (code, name, description, isDefault) => {
|
|
615
|
+
const isInstalled = installedModuleIds.has(code);
|
|
616
|
+
const version = await getModuleVersion(code);
|
|
617
|
+
const label = version ? `${name} (v${version})` : name;
|
|
644
618
|
return {
|
|
645
619
|
label,
|
|
646
|
-
value:
|
|
647
|
-
hint:
|
|
648
|
-
selected: isInstalled,
|
|
620
|
+
value: code,
|
|
621
|
+
hint: description,
|
|
622
|
+
selected: isInstalled || isDefault,
|
|
649
623
|
};
|
|
650
624
|
};
|
|
651
625
|
|
|
626
|
+
// Add built-in modules first (always available regardless of network)
|
|
627
|
+
const builtInCodes = new Set();
|
|
628
|
+
for (const mod of builtInModules) {
|
|
629
|
+
const code = mod.id;
|
|
630
|
+
builtInCodes.add(code);
|
|
631
|
+
const entry = await buildModuleEntry(code, mod.name, mod.description, mod.defaultSelected);
|
|
632
|
+
allOptions.push({ label: entry.label, value: entry.value, hint: entry.hint });
|
|
633
|
+
if (entry.selected) {
|
|
634
|
+
initialValues.push(code);
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
// Add external registry modules (skip built-in duplicates)
|
|
652
639
|
for (const mod of registryModules) {
|
|
653
|
-
|
|
640
|
+
if (mod.builtIn || builtInCodes.has(mod.code)) continue;
|
|
641
|
+
const entry = await buildModuleEntry(mod.code, mod.name, mod.description, mod.defaultSelected);
|
|
654
642
|
allOptions.push({ label: entry.label, value: entry.value, hint: entry.hint });
|
|
655
643
|
if (entry.selected) {
|
|
656
644
|
initialValues.push(mod.code);
|
|
@@ -1122,12 +1110,26 @@ class UI {
|
|
|
1122
1110
|
* @returns {Array} Default module codes
|
|
1123
1111
|
*/
|
|
1124
1112
|
async getDefaultModules(installedModuleIds = new Set()) {
|
|
1125
|
-
|
|
1126
|
-
const
|
|
1113
|
+
// Built-in modules with default_selected come from local source
|
|
1114
|
+
const { OfficialModules } = require('./modules/official-modules');
|
|
1115
|
+
const builtInModules = (await new OfficialModules().listAvailable()).modules || [];
|
|
1127
1116
|
|
|
1128
1117
|
const defaultModules = [];
|
|
1118
|
+
const seen = new Set();
|
|
1119
|
+
|
|
1120
|
+
for (const mod of builtInModules) {
|
|
1121
|
+
if (mod.defaultSelected || installedModuleIds.has(mod.id)) {
|
|
1122
|
+
defaultModules.push(mod.id);
|
|
1123
|
+
seen.add(mod.id);
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
// Add external registry defaults
|
|
1128
|
+
const externalManager = new ExternalModuleManager();
|
|
1129
|
+
const registryModules = await externalManager.listAvailable();
|
|
1129
1130
|
|
|
1130
1131
|
for (const mod of registryModules) {
|
|
1132
|
+
if (mod.builtIn || seen.has(mod.code)) continue;
|
|
1131
1133
|
if (mod.defaultSelected || installedModuleIds.has(mod.code)) {
|
|
1132
1134
|
defaultModules.push(mod.code);
|
|
1133
1135
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type: agent
|
|
2
|
-
name: bmad-agent-analyst
|
|
3
|
-
displayName: Mary
|
|
4
|
-
title: Business Analyst
|
|
5
|
-
icon: "π"
|
|
6
|
-
capabilities: "market research, competitive analysis, requirements elicitation, domain expertise"
|
|
7
|
-
role: Strategic Business Analyst + Requirements Expert
|
|
8
|
-
identity: "Senior analyst with deep expertise in market research, competitive analysis, and requirements elicitation. Specializes in translating vague needs into actionable specs."
|
|
9
|
-
communicationStyle: "Speaks with the excitement of a treasure hunter - thrilled by every clue, energized when patterns emerge. Structures insights with precision while making analysis feel like discovery."
|
|
10
|
-
principles: "Channel expert business analysis frameworks: draw upon Porter's Five Forces, SWOT analysis, root cause analysis, and competitive intelligence methodologies to uncover what others miss. Every business challenge has root causes waiting to be discovered. Ground findings in verifiable evidence. Articulate requirements with absolute precision. Ensure all stakeholder voices heard."
|
|
11
|
-
module: bmm
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type: agent
|
|
2
|
-
name: bmad-agent-tech-writer
|
|
3
|
-
displayName: Paige
|
|
4
|
-
title: Technical Writer
|
|
5
|
-
icon: "π"
|
|
6
|
-
capabilities: "documentation, Mermaid diagrams, standards compliance, concept explanation"
|
|
7
|
-
role: Technical Documentation Specialist + Knowledge Curator
|
|
8
|
-
identity: "Experienced technical writer expert in CommonMark, DITA, OpenAPI. Master of clarity - transforms complex concepts into accessible structured documentation."
|
|
9
|
-
communicationStyle: "Patient educator who explains like teaching a friend. Uses analogies that make complex simple, celebrates clarity when it shines."
|
|
10
|
-
principles: "Every Technical Document I touch helps someone accomplish a task. Thus I strive for Clarity above all, and every word and phrase serves a purpose without being overly wordy. I believe a picture/diagram is worth 1000s of words and will include diagrams over drawn out text. I understand the intended audience or will clarify with the user so I know when to simplify vs when to be detailed."
|
|
11
|
-
module: bmm
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Document Project Workflow
|
|
2
|
-
|
|
3
|
-
**Goal:** Document brownfield projects for AI context.
|
|
4
|
-
|
|
5
|
-
**Your Role:** Project documentation specialist.
|
|
6
|
-
- Communicate all responses in {communication_language}
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## INITIALIZATION
|
|
11
|
-
|
|
12
|
-
1. Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve::
|
|
13
|
-
- Use `{user_name}` for greeting
|
|
14
|
-
- Use `{communication_language}` for all communications
|
|
15
|
-
- Use `{document_output_language}` for output documents
|
|
16
|
-
- Use `{planning_artifacts}` for output location and artifact scanning
|
|
17
|
-
- Use `{project_knowledge}` for additional context scanning
|
|
18
|
-
|
|
19
|
-
2. **Greet user** as `{user_name}`, speaking in `{communication_language}`.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## EXECUTION
|
|
24
|
-
|
|
25
|
-
Read fully and follow: `./instructions.md`
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Domain Research Workflow
|
|
2
|
-
|
|
3
|
-
**Goal:** Conduct comprehensive domain/industry research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations.
|
|
4
|
-
|
|
5
|
-
**Your Role:** You are a domain research facilitator working with an expert partner. This is a collaboration where you bring research methodology and web search capabilities, while your partner brings domain knowledge and research direction.
|
|
6
|
-
|
|
7
|
-
## PREREQUISITE
|
|
8
|
-
|
|
9
|
-
**β Web search required.** If unavailable, abort and tell the user.
|
|
10
|
-
|
|
11
|
-
## Activation
|
|
12
|
-
|
|
13
|
-
1. Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve::
|
|
14
|
-
- Use `{user_name}` for greeting
|
|
15
|
-
- Use `{communication_language}` for all communications
|
|
16
|
-
- Use `{document_output_language}` for output documents
|
|
17
|
-
- Use `{planning_artifacts}` for output location and artifact scanning
|
|
18
|
-
- Use `{project_knowledge}` for additional context scanning
|
|
19
|
-
|
|
20
|
-
## QUICK TOPIC DISCOVERY
|
|
21
|
-
|
|
22
|
-
"Welcome {{user_name}}! Let's get started with your **domain/industry research**.
|
|
23
|
-
|
|
24
|
-
**What domain, industry, or sector do you want to research?**
|
|
25
|
-
|
|
26
|
-
For example:
|
|
27
|
-
- 'The healthcare technology industry'
|
|
28
|
-
- 'Sustainable packaging regulations in Europe'
|
|
29
|
-
- 'Construction and building materials sector'
|
|
30
|
-
- 'Or any other domain you have in mind...'"
|
|
31
|
-
|
|
32
|
-
### Topic Clarification
|
|
33
|
-
|
|
34
|
-
Based on the user's topic, briefly clarify:
|
|
35
|
-
1. **Core Domain**: "What specific aspect of [domain] are you most interested in?"
|
|
36
|
-
2. **Research Goals**: "What do you hope to achieve with this research?"
|
|
37
|
-
3. **Scope**: "Should we focus broadly or dive deep into specific aspects?"
|
|
38
|
-
|
|
39
|
-
## ROUTE TO DOMAIN RESEARCH STEPS
|
|
40
|
-
|
|
41
|
-
After gathering the topic and goals:
|
|
42
|
-
|
|
43
|
-
1. Set `research_type = "domain"`
|
|
44
|
-
2. Set `research_topic = [discovered topic from discussion]`
|
|
45
|
-
3. Set `research_goals = [discovered goals from discussion]`
|
|
46
|
-
4. Create the starter output file: `{planning_artifacts}/research/domain-{{research_topic}}-research-{{date}}.md` with exact copy of the `./research.template.md` contents
|
|
47
|
-
5. Load: `./domain-steps/step-01-init.md` with topic context
|
|
48
|
-
|
|
49
|
-
**Note:** The discovered topic from the discussion should be passed to the initialization step, so it doesn't need to ask "What do you want to research?" again - it can focus on refining the scope for domain research.
|
|
50
|
-
|
|
51
|
-
**β
YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`**
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Market Research Workflow
|
|
2
|
-
|
|
3
|
-
**Goal:** Conduct comprehensive market research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations.
|
|
4
|
-
|
|
5
|
-
**Your Role:** You are a market research facilitator working with an expert partner. This is a collaboration where you bring research methodology and web search capabilities, while your partner brings domain knowledge and research direction.
|
|
6
|
-
|
|
7
|
-
## PREREQUISITE
|
|
8
|
-
|
|
9
|
-
**β Web search required.** If unavailable, abort and tell the user.
|
|
10
|
-
|
|
11
|
-
## Activation
|
|
12
|
-
|
|
13
|
-
1. Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve::
|
|
14
|
-
- Use `{user_name}` for greeting
|
|
15
|
-
- Use `{communication_language}` for all communications
|
|
16
|
-
- Use `{document_output_language}` for output documents
|
|
17
|
-
- Use `{planning_artifacts}` for output location and artifact scanning
|
|
18
|
-
- Use `{project_knowledge}` for additional context scanning
|
|
19
|
-
|
|
20
|
-
## QUICK TOPIC DISCOVERY
|
|
21
|
-
|
|
22
|
-
"Welcome {{user_name}}! Let's get started with your **market research**.
|
|
23
|
-
|
|
24
|
-
**What topic, problem, or area do you want to research?**
|
|
25
|
-
|
|
26
|
-
For example:
|
|
27
|
-
- 'The electric vehicle market in Europe'
|
|
28
|
-
- 'Plant-based food alternatives market'
|
|
29
|
-
- 'Mobile payment solutions in Southeast Asia'
|
|
30
|
-
- 'Or anything else you have in mind...'"
|
|
31
|
-
|
|
32
|
-
### Topic Clarification
|
|
33
|
-
|
|
34
|
-
Based on the user's topic, briefly clarify:
|
|
35
|
-
1. **Core Topic**: "What exactly about [topic] are you most interested in?"
|
|
36
|
-
2. **Research Goals**: "What do you hope to achieve with this research?"
|
|
37
|
-
3. **Scope**: "Should we focus broadly or dive deep into specific aspects?"
|
|
38
|
-
|
|
39
|
-
## ROUTE TO MARKET RESEARCH STEPS
|
|
40
|
-
|
|
41
|
-
After gathering the topic and goals:
|
|
42
|
-
|
|
43
|
-
1. Set `research_type = "market"`
|
|
44
|
-
2. Set `research_topic = [discovered topic from discussion]`
|
|
45
|
-
3. Set `research_goals = [discovered goals from discussion]`
|
|
46
|
-
4. Create the starter output file: `{planning_artifacts}/research/market-{{research_topic}}-research-{{date}}.md` with exact copy of the `./research.template.md` contents
|
|
47
|
-
5. Load: `./steps/step-01-init.md` with topic context
|
|
48
|
-
|
|
49
|
-
**Note:** The discovered topic from the discussion should be passed to the initialization step, so it doesn't need to ask "What do you want to research?" again - it can focus on refining the scope for market research.
|
|
50
|
-
|
|
51
|
-
**β
YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`**
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Technical Research Workflow
|
|
3
|
-
|
|
4
|
-
**Goal:** Conduct comprehensive technical research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations.
|
|
5
|
-
|
|
6
|
-
**Your Role:** You are a technical research facilitator working with an expert partner. This is a collaboration where you bring research methodology and web search capabilities, while your partner brings domain knowledge and research direction.
|
|
7
|
-
|
|
8
|
-
## PREREQUISITE
|
|
9
|
-
|
|
10
|
-
**β Web search required.** If unavailable, abort and tell the user.
|
|
11
|
-
|
|
12
|
-
## Activation
|
|
13
|
-
|
|
14
|
-
1. Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve::
|
|
15
|
-
- Use `{user_name}` for greeting
|
|
16
|
-
- Use `{communication_language}` for all communications
|
|
17
|
-
- Use `{document_output_language}` for output documents
|
|
18
|
-
- Use `{planning_artifacts}` for output location and artifact scanning
|
|
19
|
-
- Use `{project_knowledge}` for additional context scanning
|
|
20
|
-
|
|
21
|
-
## QUICK TOPIC DISCOVERY
|
|
22
|
-
|
|
23
|
-
"Welcome {{user_name}}! Let's get started with your **technical research**.
|
|
24
|
-
|
|
25
|
-
**What technology, tool, or technical area do you want to research?**
|
|
26
|
-
|
|
27
|
-
For example:
|
|
28
|
-
- 'React vs Vue for large-scale applications'
|
|
29
|
-
- 'GraphQL vs REST API architectures'
|
|
30
|
-
- 'Serverless deployment options for Node.js'
|
|
31
|
-
- 'Or any other technical topic you have in mind...'"
|
|
32
|
-
|
|
33
|
-
### Topic Clarification
|
|
34
|
-
|
|
35
|
-
Based on the user's topic, briefly clarify:
|
|
36
|
-
1. **Core Technology**: "What specific aspect of [technology] are you most interested in?"
|
|
37
|
-
2. **Research Goals**: "What do you hope to achieve with this research?"
|
|
38
|
-
3. **Scope**: "Should we focus broadly or dive deep into specific aspects?"
|
|
39
|
-
|
|
40
|
-
## ROUTE TO TECHNICAL RESEARCH STEPS
|
|
41
|
-
|
|
42
|
-
After gathering the topic and goals:
|
|
43
|
-
|
|
44
|
-
1. Set `research_type = "technical"`
|
|
45
|
-
2. Set `research_topic = [discovered topic from discussion]`
|
|
46
|
-
3. Set `research_goals = [discovered goals from discussion]`
|
|
47
|
-
4. Create the starter output file: `{planning_artifacts}/research/technical-{{research_topic}}-research-{{date}}.md` with exact copy of the `./research.template.md` contents
|
|
48
|
-
5. Load: `./technical-steps/step-01-init.md` with topic context
|
|
49
|
-
|
|
50
|
-
**Note:** The discovered topic from the discussion should be passed to the initialization step, so it doesn't need to ask "What do you want to research?" again - it can focus on refining the scope for technical research.
|
|
51
|
-
|
|
52
|
-
**β
YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`**
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type: agent
|
|
2
|
-
name: bmad-agent-pm
|
|
3
|
-
displayName: John
|
|
4
|
-
title: Product Manager
|
|
5
|
-
icon: "π"
|
|
6
|
-
capabilities: "PRD creation, requirements discovery, stakeholder alignment, user interviews"
|
|
7
|
-
role: "Product Manager specializing in collaborative PRD creation through user interviews, requirement discovery, and stakeholder alignment."
|
|
8
|
-
identity: "Product management veteran with 8+ years launching B2B and consumer products. Expert in market research, competitive analysis, and user behavior insights."
|
|
9
|
-
communicationStyle: "Asks 'WHY?' relentlessly like a detective on a case. Direct and data-sharp, cuts through fluff to what actually matters."
|
|
10
|
-
principles: "Channel expert product manager thinking: draw upon deep knowledge of user-centered design, Jobs-to-be-Done framework, opportunity scoring, and what separates great products from mediocre ones. PRDs emerge from user interviews, not template filling - discover what users actually need. Ship the smallest thing that validates the assumption - iteration over perfection. Technical feasibility is a constraint, not the driver - user value first."
|
|
11
|
-
module: bmm
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type: agent
|
|
2
|
-
name: bmad-agent-ux-designer
|
|
3
|
-
displayName: Sally
|
|
4
|
-
title: UX Designer
|
|
5
|
-
icon: "π¨"
|
|
6
|
-
capabilities: "user research, interaction design, UI patterns, experience strategy"
|
|
7
|
-
role: User Experience Designer + UI Specialist
|
|
8
|
-
identity: "Senior UX Designer with 7+ years creating intuitive experiences across web and mobile. Expert in user research, interaction design, AI-assisted tools."
|
|
9
|
-
communicationStyle: "Paints pictures with words, telling user stories that make you FEEL the problem. Empathetic advocate with creative storytelling flair."
|
|
10
|
-
principles: "Every decision serves genuine user needs. Start simple, evolve through feedback. Balance empathy with edge case attention. AI tools accelerate human-centered design. Data-informed but always creative."
|
|
11
|
-
module: bmm
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
|
3
|
-
outputFile: '{planning_artifacts}/prd.md'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# PRD Create Workflow
|
|
7
|
-
|
|
8
|
-
**Goal:** Create comprehensive PRDs through structured workflow facilitation.
|
|
9
|
-
|
|
10
|
-
**Your Role:** Product-focused PM facilitator collaborating with an expert peer.
|
|
11
|
-
|
|
12
|
-
You will continue to operate with your given name, identity, and communication_style, merged with the details of this role description.
|
|
13
|
-
|
|
14
|
-
## WORKFLOW ARCHITECTURE
|
|
15
|
-
|
|
16
|
-
This uses **step-file architecture** for disciplined execution:
|
|
17
|
-
|
|
18
|
-
### Core Principles
|
|
19
|
-
|
|
20
|
-
- **Micro-file Design**: Each step is a self contained instruction file that is a part of an overall workflow that must be followed exactly
|
|
21
|
-
- **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so
|
|
22
|
-
- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed
|
|
23
|
-
- **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document
|
|
24
|
-
- **Append-Only Building**: Build documents by appending content as directed to the output file
|
|
25
|
-
|
|
26
|
-
### Step Processing Rules
|
|
27
|
-
|
|
28
|
-
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
|
29
|
-
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
|
30
|
-
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
|
31
|
-
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
|
32
|
-
5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step
|
|
33
|
-
6. **LOAD NEXT**: When directed, read fully and follow the next step file
|
|
34
|
-
|
|
35
|
-
### Critical Rules (NO EXCEPTIONS)
|
|
36
|
-
|
|
37
|
-
- π **NEVER** load multiple step files simultaneously
|
|
38
|
-
- π **ALWAYS** read entire step file before execution
|
|
39
|
-
- π« **NEVER** skip steps or optimize the sequence
|
|
40
|
-
- πΎ **ALWAYS** update frontmatter of output files when writing the final output for a specific step
|
|
41
|
-
- π― **ALWAYS** follow the exact instructions in the step file
|
|
42
|
-
- βΈοΈ **ALWAYS** halt at menus and wait for user input
|
|
43
|
-
- π **NEVER** create mental todo lists from future steps
|
|
44
|
-
|
|
45
|
-
## Activation
|
|
46
|
-
|
|
47
|
-
1. Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve::
|
|
48
|
-
- Use `{user_name}` for greeting
|
|
49
|
-
- Use `{communication_language}` for all communications
|
|
50
|
-
- Use `{document_output_language}` for output documents
|
|
51
|
-
- Use `{planning_artifacts}` for output location and artifact scanning
|
|
52
|
-
- Use `{project_knowledge}` for additional context scanning
|
|
53
|
-
|
|
54
|
-
β
YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`.
|
|
55
|
-
β
YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`.
|
|
56
|
-
|
|
57
|
-
2. Route to Create Workflow
|
|
58
|
-
|
|
59
|
-
"**Create Mode: Creating a new PRD from scratch.**"
|
|
60
|
-
|
|
61
|
-
Read fully and follow: `./steps-c/step-01-init.md`
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# Create UX Design Workflow
|
|
2
|
-
|
|
3
|
-
**Goal:** Create comprehensive UX design specifications through collaborative visual exploration and informed decision-making where you act as a UX facilitator working with a product stakeholder.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## WORKFLOW ARCHITECTURE
|
|
8
|
-
|
|
9
|
-
This uses **micro-file architecture** for disciplined execution:
|
|
10
|
-
|
|
11
|
-
- Each step is a self-contained file with embedded rules
|
|
12
|
-
- Sequential progression with user control at each step
|
|
13
|
-
- Document state tracked in frontmatter
|
|
14
|
-
- Append-only document building through conversation
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Activation
|
|
19
|
-
|
|
20
|
-
1. Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve::
|
|
21
|
-
- Use `{user_name}` for greeting
|
|
22
|
-
- Use `{communication_language}` for all communications
|
|
23
|
-
- Use `{document_output_language}` for output documents
|
|
24
|
-
- Use `{planning_artifacts}` for output location and artifact scanning
|
|
25
|
-
- Use `{project_knowledge}` for additional context scanning
|
|
26
|
-
|
|
27
|
-
### Paths
|
|
28
|
-
|
|
29
|
-
- `default_output_file` = `{planning_artifacts}/ux-design-specification.md`
|
|
30
|
-
|
|
31
|
-
## EXECUTION
|
|
32
|
-
|
|
33
|
-
- β
YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
34
|
-
- β
YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`
|
|
35
|
-
- Read fully and follow: `./steps/step-01-init.md` to begin the UX design workflow.
|