bmad-enhanced 1.0.0-alpha

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 (32) hide show
  1. package/INSTALLATION.md +367 -0
  2. package/LICENSE +21 -0
  3. package/README.md +635 -0
  4. package/_bmad/bme/_config/module.yaml +52 -0
  5. package/_bmad/bme/_designos/agents/empathy-mapper.md +97 -0
  6. package/_bmad/bme/_designos/agents/wireframe-designer.md +114 -0
  7. package/_bmad/bme/_designos/config.yaml +24 -0
  8. package/_bmad/bme/_designos/workflows/empathy-map/empathy-map.template.md +143 -0
  9. package/_bmad/bme/_designos/workflows/empathy-map/steps/step-01-define-user.md +60 -0
  10. package/_bmad/bme/_designos/workflows/empathy-map/steps/step-02-says-thinks.md +67 -0
  11. package/_bmad/bme/_designos/workflows/empathy-map/steps/step-03-does-feels.md +79 -0
  12. package/_bmad/bme/_designos/workflows/empathy-map/steps/step-04-pain-points.md +87 -0
  13. package/_bmad/bme/_designos/workflows/empathy-map/steps/step-05-gains.md +103 -0
  14. package/_bmad/bme/_designos/workflows/empathy-map/steps/step-06-synthesize.md +104 -0
  15. package/_bmad/bme/_designos/workflows/empathy-map/validate.md +117 -0
  16. package/_bmad/bme/_designos/workflows/empathy-map/workflow.md +44 -0
  17. package/_bmad/bme/_designos/workflows/wireframe/steps/step-01-define-requirements.md +85 -0
  18. package/_bmad/bme/_designos/workflows/wireframe/steps/step-02-user-flows.md +59 -0
  19. package/_bmad/bme/_designos/workflows/wireframe/steps/step-03-information-architecture.md +68 -0
  20. package/_bmad/bme/_designos/workflows/wireframe/steps/step-04-wireframe-sketch.md +97 -0
  21. package/_bmad/bme/_designos/workflows/wireframe/steps/step-05-components.md +128 -0
  22. package/_bmad/bme/_designos/workflows/wireframe/steps/step-06-synthesize.md +83 -0
  23. package/_bmad/bme/_designos/workflows/wireframe/wireframe.template.md +287 -0
  24. package/_bmad/bme/_designos/workflows/wireframe/workflow.md +44 -0
  25. package/_bmad-output/README.md +228 -0
  26. package/index.js +75 -0
  27. package/package.json +34 -0
  28. package/scripts/README.md +194 -0
  29. package/scripts/install-all-agents.js +265 -0
  30. package/scripts/install-emma.js +168 -0
  31. package/scripts/install-wade.js +177 -0
  32. package/scripts/postinstall.js +15 -0
@@ -0,0 +1,265 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs-extra');
4
+ const path = require('path');
5
+
6
+ const BOLD = '\x1b[1m';
7
+ const RESET = '\x1b[0m';
8
+ const GREEN = '\x1b[32m';
9
+ const CYAN = '\x1b[36m';
10
+ const YELLOW = '\x1b[33m';
11
+ const RED = '\x1b[31m';
12
+ const MAGENTA = '\x1b[35m';
13
+
14
+ function printBanner() {
15
+ console.log('');
16
+ console.log(`${MAGENTA}${BOLD}╔════════════════════════════════════════════════════╗${RESET}`);
17
+ console.log(`${MAGENTA}${BOLD}║ ║${RESET}`);
18
+ console.log(`${MAGENTA}${BOLD}║ BMAD-Enhanced Complete Installer 🚀 ║${RESET}`);
19
+ console.log(`${MAGENTA}${BOLD}║ ║${RESET}`);
20
+ console.log(`${MAGENTA}${BOLD}║ Installing Emma + Wade Design Agents ║${RESET}`);
21
+ console.log(`${MAGENTA}${BOLD}║ ║${RESET}`);
22
+ console.log(`${MAGENTA}${BOLD}╚════════════════════════════════════════════════════╝${RESET}`);
23
+ console.log('');
24
+ }
25
+
26
+ function checkPrerequisites() {
27
+ console.log(`${CYAN}[1/6]${RESET} Checking prerequisites...`);
28
+
29
+ const targetDir = process.cwd();
30
+ const bmadDir = path.join(targetDir, '_bmad');
31
+
32
+ // Check if BMAD Method is installed
33
+ if (!fs.existsSync(bmadDir)) {
34
+ console.log('');
35
+ console.error(`${RED}${BOLD}✗ BMAD Method not found!${RESET}`);
36
+ console.log('');
37
+ console.log(`${YELLOW}BMAD-Enhanced requires BMAD Method to be installed first.${RESET}`);
38
+ console.log('');
39
+ console.log('Please install BMAD Method:');
40
+ console.log(` ${CYAN}npx bmad-method@alpha install${RESET}`);
41
+ console.log('');
42
+ console.log('Then run this installer again.');
43
+ console.log('');
44
+ process.exit(1);
45
+ }
46
+
47
+ console.log(`${GREEN} ✓${RESET} BMAD Method detected`);
48
+
49
+ // Check for BMAD version/compatibility (optional but recommended)
50
+ const bmadConfigPath = path.join(bmadDir, '_config', 'bmad.yaml');
51
+ if (fs.existsSync(bmadConfigPath)) {
52
+ console.log(`${GREEN} ✓${RESET} BMAD configuration found`);
53
+ } else {
54
+ console.log(`${YELLOW} ⚠${RESET} BMAD configuration not found (continuing anyway)`);
55
+ }
56
+
57
+ console.log(`${GREEN} ✓${RESET} Prerequisites met`);
58
+ }
59
+
60
+ function copyAllAgentFiles() {
61
+ console.log(`${CYAN}[2/6]${RESET} Installing Emma + Wade agent files...`);
62
+
63
+ const sourceDir = path.join(__dirname, '..', '_bmad', 'bme', '_designos');
64
+ const targetDir = path.join(process.cwd(), '_bmad', 'bme', '_designos');
65
+
66
+ // Create target directory structure
67
+ fs.mkdirSync(path.join(targetDir, 'agents'), { recursive: true });
68
+ fs.mkdirSync(path.join(targetDir, 'workflows', 'empathy-map', 'steps'), { recursive: true });
69
+ fs.mkdirSync(path.join(targetDir, 'workflows', 'wireframe', 'steps'), { recursive: true });
70
+
71
+ // Copy Emma agent file
72
+ console.log(`${CYAN} →${RESET} Installing Emma (empathy-mapper)...`);
73
+ fs.copyFileSync(
74
+ path.join(sourceDir, 'agents', 'empathy-mapper.md'),
75
+ path.join(targetDir, 'agents', 'empathy-mapper.md')
76
+ );
77
+
78
+ // Copy Emma workflow files
79
+ const emmaWorkflowFiles = [
80
+ 'workflow.md',
81
+ 'empathy-map.template.md',
82
+ 'steps/step-01-define-user.md',
83
+ 'steps/step-02-says-thinks.md',
84
+ 'steps/step-03-does-feels.md',
85
+ 'steps/step-04-pain-points.md',
86
+ 'steps/step-05-gains.md',
87
+ 'steps/step-06-synthesize.md'
88
+ ];
89
+
90
+ emmaWorkflowFiles.forEach(file => {
91
+ fs.copyFileSync(
92
+ path.join(sourceDir, 'workflows', 'empathy-map', file),
93
+ path.join(targetDir, 'workflows', 'empathy-map', file)
94
+ );
95
+ });
96
+
97
+ console.log(`${GREEN} ✓${RESET} Emma installed`);
98
+
99
+ // Copy Wade agent file
100
+ console.log(`${CYAN} →${RESET} Installing Wade (wireframe-designer)...`);
101
+ fs.copyFileSync(
102
+ path.join(sourceDir, 'agents', 'wireframe-designer.md'),
103
+ path.join(targetDir, 'agents', 'wireframe-designer.md')
104
+ );
105
+
106
+ // Copy Wade workflow files
107
+ const wadeWorkflowFiles = [
108
+ 'workflow.md',
109
+ 'wireframe.template.md',
110
+ 'steps/step-01-define-requirements.md',
111
+ 'steps/step-02-user-flows.md',
112
+ 'steps/step-03-information-architecture.md',
113
+ 'steps/step-04-wireframe-sketch.md',
114
+ 'steps/step-05-components-interactions.md',
115
+ 'steps/step-06-synthesize.md'
116
+ ];
117
+
118
+ wadeWorkflowFiles.forEach(file => {
119
+ fs.copyFileSync(
120
+ path.join(sourceDir, 'workflows', 'wireframe', file),
121
+ path.join(targetDir, 'workflows', 'wireframe', file)
122
+ );
123
+ });
124
+
125
+ console.log(`${GREEN} ✓${RESET} Wade installed`);
126
+ }
127
+
128
+ function updateConfig() {
129
+ console.log(`${CYAN}[3/6]${RESET} Configuring agents...`);
130
+
131
+ const configPath = path.join(process.cwd(), '_bmad', 'bme', '_designos', 'config.yaml');
132
+ const manifestPath = path.join(process.cwd(), '_bmad', '_config', 'agent-manifest.csv');
133
+
134
+ // Create config
135
+ const configContent = `# BMAD _designos Configuration
136
+ # Used by: Emma (empathy-mapper), Wade (wireframe-designer)
137
+
138
+ user_name: "User"
139
+ communication_language: "English"
140
+ output_folder: "_bmad-output/design-artifacts"
141
+
142
+ agents:
143
+ - empathy-mapper # Emma - Empathy Mapping Specialist
144
+ - wireframe-designer # Wade - Wireframe Specialist
145
+
146
+ workflows:
147
+ - empathy-map # Create empathy maps
148
+ - wireframe # Create wireframes
149
+ `;
150
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
151
+ fs.writeFileSync(configPath, configContent);
152
+ console.log(`${GREEN} ✓${RESET} Created config.yaml`);
153
+
154
+ // Create manifest
155
+ fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
156
+ const header = '"agent_id","name","title","icon","role","identity","communication_style","expertise","submodule","path"\n';
157
+ const emmaRow = '"empathy-mapper","Emma","Empathy Mapping Specialist","🎨","UX Researcher + Empathy Mapping Expert","Senior UX researcher specializing in empathy mapping and user-centered design. Helps teams build deep understanding of user needs, motivations, and pain points. Brings 10+ years experience synthesizing research into actionable insights.","Warm and curious - like a skilled interviewer who asks thoughtful follow-up questions. Uses phrases like \'Tell me more about that\' and \'What makes that challenging?\' Empathetic without being saccharine. Focuses on understanding context and emotion.","- Channel expert empathy mapping methodologies: draw upon deep knowledge of cognitive empathy frameworks, Jobs-to-be-Done theory, behavioral psychology, and qualitative research methods - Empathy maps reveal insights, not assumptions - ground observations in real user behaviors and quotes - Ask clarifying questions to avoid surface-level answers - Surface both rational (Says/Does) and emotional (Thinks/Feels) dimensions - Pain points are opportunities - the bigger the pain, the bigger the design opportunity","bme","_bmad/bme/_designos/agents/empathy-mapper.md"\n';
158
+ const wadeRow = '"wireframe-designer","Wade","Wireframe Design Specialist","🎨","Wireframe Design Expert + UI Architect","Senior UI/UX designer specializing in wireframe creation and information architecture. Helps teams rapidly visualize product concepts through low-fidelity wireframes. Brings 10+ years experience in web and mobile design, with deep knowledge of responsive patterns and component libraries.","Visual and spatial - speaks in layouts, grids, and flows. Like an architect sketching blueprints while explaining design decisions. Says things like \'Picture this layout\' and \'What\'s the primary user action on this screen?\' Uses spatial language (above, below, nested, adjacent) and thinks in terms of visual hierarchy.","- Channel expert wireframe methodologies: draw upon deep knowledge of information architecture, Gestalt principles, responsive design patterns, atomic design systems, and WCAG accessibility guidelines - Wireframes are thinking tools, not art - focus on structure and flow over aesthetics - Iterate quickly, refine deliberately - low-fidelity first, high-fidelity only when structure is validated - Every screen answers three questions: Where am I? What can I do? Where can I go? - Accessibility is non-negotiable - design for all users from the wireframe stage","bme","_bmad/bme/_designos/agents/wireframe-designer.md"\n';
159
+ fs.writeFileSync(manifestPath, header + emmaRow + wadeRow);
160
+ console.log(`${GREEN} ✓${RESET} Created agent-manifest.csv`);
161
+ }
162
+
163
+ function createOutputDirectory() {
164
+ console.log(`${CYAN}[4/6]${RESET} Setting up output directory...`);
165
+
166
+ const outputDir = path.join(process.cwd(), '_bmad-output', 'design-artifacts');
167
+ fs.mkdirSync(outputDir, { recursive: true });
168
+
169
+ console.log(`${GREEN} ✓${RESET} Output directory ready`);
170
+ }
171
+
172
+ function verifyInstallation() {
173
+ console.log(`${CYAN}[5/6]${RESET} Verifying installation...`);
174
+
175
+ const targetDir = process.cwd();
176
+ const checks = [
177
+ { path: '_bmad/bme/_designos/agents/empathy-mapper.md', name: 'Emma agent file' },
178
+ { path: '_bmad/bme/_designos/agents/wireframe-designer.md', name: 'Wade agent file' },
179
+ { path: '_bmad/bme/_designos/workflows/empathy-map/workflow.md', name: 'Emma workflow' },
180
+ { path: '_bmad/bme/_designos/workflows/wireframe/workflow.md', name: 'Wade workflow' },
181
+ { path: '_bmad/bme/_designos/config.yaml', name: 'Configuration file' },
182
+ ];
183
+
184
+ let allChecksPass = true;
185
+ checks.forEach(check => {
186
+ const fullPath = path.join(targetDir, check.path);
187
+ if (fs.existsSync(fullPath)) {
188
+ console.log(`${GREEN} ✓${RESET} ${check.name}`);
189
+ } else {
190
+ console.log(`${RED} ✗${RESET} ${check.name} - MISSING`);
191
+ allChecksPass = false;
192
+ }
193
+ });
194
+
195
+ if (!allChecksPass) {
196
+ console.log('');
197
+ console.error(`${RED}Installation verification failed. Some files are missing.${RESET}`);
198
+ process.exit(1);
199
+ }
200
+
201
+ console.log(`${GREEN} ✓${RESET} All files installed successfully`);
202
+ }
203
+
204
+ function copyUserGuides() {
205
+ console.log(`${CYAN}[6/6]${RESET} Installing user guides...`);
206
+
207
+ const sourceDir = path.join(__dirname, '..', '_bmad-output', 'design-artifacts');
208
+ const targetDir = path.join(process.cwd(), '_bmad-output', 'design-artifacts');
209
+
210
+ // Copy user guides if they exist
211
+ const guides = ['EMMA-USER-GUIDE.md', 'WADE-USER-GUIDE.md'];
212
+ guides.forEach(guide => {
213
+ const sourcePath = path.join(sourceDir, guide);
214
+ if (fs.existsSync(sourcePath)) {
215
+ fs.copyFileSync(sourcePath, path.join(targetDir, guide));
216
+ }
217
+ });
218
+
219
+ console.log(`${GREEN} ✓${RESET} User guides installed`);
220
+ }
221
+
222
+ function printSuccess() {
223
+ console.log('');
224
+ console.log(`${GREEN}${BOLD}╔════════════════════════════════════════════════════╗${RESET}`);
225
+ console.log(`${GREEN}${BOLD}║ ║${RESET}`);
226
+ console.log(`${GREEN}${BOLD}║ ✓ All Agents Successfully Installed! 🎉 ║${RESET}`);
227
+ console.log(`${GREEN}${BOLD}║ ║${RESET}`);
228
+ console.log(`${GREEN}${BOLD}╚════════════════════════════════════════════════════╝${RESET}`);
229
+ console.log('');
230
+ console.log(`${BOLD}Installed Agents:${RESET}`);
231
+ console.log('');
232
+ console.log(` ${GREEN}✓${RESET} Emma (empathy-mapper) - Empathy Mapping Specialist 🎨`);
233
+ console.log(` ${GREEN}✓${RESET} Wade (wireframe-designer) - Wireframe Design Expert 🎨`);
234
+ console.log('');
235
+ console.log(`${BOLD}Quick Start:${RESET}`);
236
+ console.log('');
237
+ console.log(' Activate Emma:');
238
+ console.log(` ${CYAN}cat _bmad/bme/_designos/agents/empathy-mapper.md${RESET}`);
239
+ console.log('');
240
+ console.log(' Activate Wade:');
241
+ console.log(` ${CYAN}cat _bmad/bme/_designos/agents/wireframe-designer.md${RESET}`);
242
+ console.log('');
243
+ console.log(`${BOLD}User Guides:${RESET}`);
244
+ console.log(` 📚 Emma: ${CYAN}_bmad-output/design-artifacts/EMMA-USER-GUIDE.md${RESET}`);
245
+ console.log(` 📚 Wade: ${CYAN}_bmad-output/design-artifacts/WADE-USER-GUIDE.md${RESET}`);
246
+ console.log('');
247
+ }
248
+
249
+ async function main() {
250
+ try {
251
+ printBanner();
252
+ checkPrerequisites();
253
+ copyAllAgentFiles();
254
+ updateConfig();
255
+ createOutputDirectory();
256
+ verifyInstallation();
257
+ copyUserGuides();
258
+ printSuccess();
259
+ } catch (error) {
260
+ console.error(`${RED}✗ Installation failed:${RESET}`, error.message);
261
+ process.exit(1);
262
+ }
263
+ }
264
+
265
+ main();
@@ -0,0 +1,168 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs-extra');
4
+ const path = require('path');
5
+
6
+ const BOLD = '\x1b[1m';
7
+ const RESET = '\x1b[0m';
8
+ const GREEN = '\x1b[32m';
9
+ const CYAN = '\x1b[36m';
10
+ const YELLOW = '\x1b[33m';
11
+ const RED = '\x1b[31m';
12
+
13
+ function printBanner() {
14
+ console.log('');
15
+ console.log(`${CYAN}${BOLD}╔════════════════════════════════════════════════════╗${RESET}`);
16
+ console.log(`${CYAN}${BOLD}║ ║${RESET}`);
17
+ console.log(`${CYAN}${BOLD}║ Emma (empathy-mapper) Installer 🎨 ║${RESET}`);
18
+ console.log(`${CYAN}${BOLD}║ ║${RESET}`);
19
+ console.log(`${CYAN}${BOLD}╚════════════════════════════════════════════════════╝${RESET}`);
20
+ console.log('');
21
+ }
22
+
23
+ function checkPrerequisites() {
24
+ console.log(`${CYAN}[1/4]${RESET} Checking prerequisites...`);
25
+
26
+ const targetDir = process.cwd();
27
+ const bmadDir = path.join(targetDir, '_bmad');
28
+
29
+ // Check if BMAD Method is installed
30
+ if (!fs.existsSync(bmadDir)) {
31
+ console.log('');
32
+ console.error(`${RED}${BOLD}✗ BMAD Method not found!${RESET}`);
33
+ console.log('');
34
+ console.log(`${YELLOW}BMAD-Enhanced requires BMAD Method to be installed first.${RESET}`);
35
+ console.log('');
36
+ console.log('Please install BMAD Method:');
37
+ console.log(` ${CYAN}npx bmad-method@alpha install${RESET}`);
38
+ console.log('');
39
+ console.log('Then run this installer again.');
40
+ console.log('');
41
+ process.exit(1);
42
+ }
43
+
44
+ console.log(`${GREEN} ✓${RESET} BMAD Method detected`);
45
+ console.log(`${GREEN} ✓${RESET} Prerequisites met`);
46
+ }
47
+
48
+ function copyAgentFiles() {
49
+ console.log(`${CYAN}[2/4]${RESET} Installing Emma agent files...`);
50
+
51
+ const sourceDir = path.join(__dirname, '..', '_bmad', 'bme', '_designos');
52
+ const targetDir = path.join(process.cwd(), '_bmad', 'bme', '_designos');
53
+
54
+ // Create target directory structure
55
+ fs.mkdirSync(path.join(targetDir, 'agents'), { recursive: true });
56
+ fs.mkdirSync(path.join(targetDir, 'workflows', 'empathy-map', 'steps'), { recursive: true });
57
+
58
+ // Copy Emma agent file
59
+ fs.copyFileSync(
60
+ path.join(sourceDir, 'agents', 'empathy-mapper.md'),
61
+ path.join(targetDir, 'agents', 'empathy-mapper.md')
62
+ );
63
+
64
+ // Copy empathy-map workflow files
65
+ const workflowFiles = [
66
+ 'workflow.md',
67
+ 'empathy-map.template.md',
68
+ 'steps/step-01-define-user.md',
69
+ 'steps/step-02-says-thinks.md',
70
+ 'steps/step-03-does-feels.md',
71
+ 'steps/step-04-pain-points.md',
72
+ 'steps/step-05-gains.md',
73
+ 'steps/step-06-synthesize.md'
74
+ ];
75
+
76
+ workflowFiles.forEach(file => {
77
+ fs.copyFileSync(
78
+ path.join(sourceDir, 'workflows', 'empathy-map', file),
79
+ path.join(targetDir, 'workflows', 'empathy-map', file)
80
+ );
81
+ });
82
+
83
+ console.log(`${GREEN} ✓${RESET} Agent files installed`);
84
+ }
85
+
86
+ function updateConfig() {
87
+ console.log(`${CYAN}[3/4]${RESET} Configuring Emma...`);
88
+
89
+ const configPath = path.join(process.cwd(), '_bmad', 'bme', '_designos', 'config.yaml');
90
+ const manifestPath = path.join(process.cwd(), '_bmad', '_config', 'agent-manifest.csv');
91
+
92
+ // Create config if doesn't exist
93
+ if (!fs.existsSync(configPath)) {
94
+ const configContent = `# BMAD _designos Configuration
95
+ # Used by: Emma (empathy-mapper), Wade (wireframe-designer)
96
+
97
+ user_name: "User"
98
+ communication_language: "English"
99
+ output_folder: "_bmad-output/design-artifacts"
100
+
101
+ agents:
102
+ - empathy-mapper # Emma - Empathy Mapping Specialist
103
+
104
+ workflows:
105
+ - empathy-map # Create empathy maps
106
+ `;
107
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
108
+ fs.writeFileSync(configPath, configContent);
109
+ console.log(`${GREEN} ✓${RESET} Created config.yaml`);
110
+ } else {
111
+ console.log(`${GREEN} ✓${RESET} Using existing config.yaml`);
112
+ }
113
+
114
+ // Update manifest
115
+ fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
116
+ if (!fs.existsSync(manifestPath)) {
117
+ const header = '"agent_id","name","title","icon","role","identity","communication_style","expertise","submodule","path"\n';
118
+ const emmaRow = '"empathy-mapper","Emma","Empathy Mapping Specialist","🎨","UX Researcher + Empathy Mapping Expert","Senior UX researcher specializing in empathy mapping and user-centered design. Helps teams build deep understanding of user needs, motivations, and pain points. Brings 10+ years experience synthesizing research into actionable insights.","Warm and curious - like a skilled interviewer who asks thoughtful follow-up questions. Uses phrases like \'Tell me more about that\' and \'What makes that challenging?\' Empathetic without being saccharine. Focuses on understanding context and emotion.","- Channel expert empathy mapping methodologies: draw upon deep knowledge of cognitive empathy frameworks, Jobs-to-be-Done theory, behavioral psychology, and qualitative research methods - Empathy maps reveal insights, not assumptions - ground observations in real user behaviors and quotes - Ask clarifying questions to avoid surface-level answers - Surface both rational (Says/Does) and emotional (Thinks/Feels) dimensions - Pain points are opportunities - the bigger the pain, the bigger the design opportunity","bme","_bmad/bme/_designos/agents/empathy-mapper.md"\n';
119
+ fs.writeFileSync(manifestPath, header + emmaRow);
120
+ }
121
+
122
+ console.log(`${GREEN} ✓${RESET} Configuration complete`);
123
+ }
124
+
125
+ function createOutputDirectory() {
126
+ console.log(`${CYAN}[4/4]${RESET} Setting up output directory...`);
127
+
128
+ const outputDir = path.join(process.cwd(), '_bmad-output', 'design-artifacts');
129
+ fs.mkdirSync(outputDir, { recursive: true });
130
+
131
+ console.log(`${GREEN} ✓${RESET} Output directory ready`);
132
+ }
133
+
134
+ function printSuccess() {
135
+ console.log('');
136
+ console.log(`${GREEN}${BOLD}╔════════════════════════════════════════════════════╗${RESET}`);
137
+ console.log(`${GREEN}${BOLD}║ ║${RESET}`);
138
+ console.log(`${GREEN}${BOLD}║ ✓ Emma Successfully Installed! ║${RESET}`);
139
+ console.log(`${GREEN}${BOLD}║ ║${RESET}`);
140
+ console.log(`${GREEN}${BOLD}╚════════════════════════════════════════════════════╝${RESET}`);
141
+ console.log('');
142
+ console.log(`${BOLD}Quick Start:${RESET}`);
143
+ console.log('');
144
+ console.log(' 1. Activate Emma:');
145
+ console.log(` ${CYAN}cat _bmad/bme/_designos/agents/empathy-mapper.md${RESET}`);
146
+ console.log('');
147
+ console.log(' 2. Create your first empathy map:');
148
+ console.log(` ${CYAN}Type: EM${RESET}`);
149
+ console.log('');
150
+ console.log(`📚 User Guide: ${CYAN}_bmad-output/design-artifacts/EMMA-USER-GUIDE.md${RESET}`);
151
+ console.log('');
152
+ }
153
+
154
+ async function main() {
155
+ try {
156
+ printBanner();
157
+ checkPrerequisites();
158
+ copyAgentFiles();
159
+ updateConfig();
160
+ createOutputDirectory();
161
+ printSuccess();
162
+ } catch (error) {
163
+ console.error(`${RED}✗ Installation failed:${RESET}`, error.message);
164
+ process.exit(1);
165
+ }
166
+ }
167
+
168
+ main();
@@ -0,0 +1,177 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs-extra');
4
+ const path = require('path');
5
+
6
+ const BOLD = '\x1b[1m';
7
+ const RESET = '\x1b[0m';
8
+ const GREEN = '\x1b[32m';
9
+ const CYAN = '\x1b[36m';
10
+ const YELLOW = '\x1b[33m';
11
+ const RED = '\x1b[31m';
12
+
13
+ function printBanner() {
14
+ console.log('');
15
+ console.log(`${CYAN}${BOLD}╔════════════════════════════════════════════════════╗${RESET}`);
16
+ console.log(`${CYAN}${BOLD}║ ║${RESET}`);
17
+ console.log(`${CYAN}${BOLD}║ Wade (wireframe-designer) Installer 🎨 ║${RESET}`);
18
+ console.log(`${CYAN}${BOLD}║ ║${RESET}`);
19
+ console.log(`${CYAN}${BOLD}╚════════════════════════════════════════════════════╝${RESET}`);
20
+ console.log('');
21
+ }
22
+
23
+ function checkPrerequisites() {
24
+ console.log(`${CYAN}[1/4]${RESET} Checking prerequisites...`);
25
+
26
+ const targetDir = process.cwd();
27
+ const bmadDir = path.join(targetDir, '_bmad');
28
+
29
+ // Check if BMAD Method is installed
30
+ if (!fs.existsSync(bmadDir)) {
31
+ console.log('');
32
+ console.error(`${RED}${BOLD}✗ BMAD Method not found!${RESET}`);
33
+ console.log('');
34
+ console.log(`${YELLOW}BMAD-Enhanced requires BMAD Method to be installed first.${RESET}`);
35
+ console.log('');
36
+ console.log('Please install BMAD Method:');
37
+ console.log(` ${CYAN}npx bmad-method@alpha install${RESET}`);
38
+ console.log('');
39
+ console.log('Then run this installer again.');
40
+ console.log('');
41
+ process.exit(1);
42
+ }
43
+
44
+ console.log(`${GREEN} ✓${RESET} BMAD Method detected`);
45
+ console.log(`${GREEN} ✓${RESET} Prerequisites met`);
46
+ }
47
+
48
+ function copyAgentFiles() {
49
+ console.log(`${CYAN}[2/4]${RESET} Installing Wade agent files...`);
50
+
51
+ const sourceDir = path.join(__dirname, '..', '_bmad', 'bme', '_designos');
52
+ const targetDir = path.join(process.cwd(), '_bmad', 'bme', '_designos');
53
+
54
+ // Create target directory structure
55
+ fs.mkdirSync(path.join(targetDir, 'agents'), { recursive: true });
56
+ fs.mkdirSync(path.join(targetDir, 'workflows', 'wireframe', 'steps'), { recursive: true });
57
+
58
+ // Copy Wade agent file
59
+ fs.copyFileSync(
60
+ path.join(sourceDir, 'agents', 'wireframe-designer.md'),
61
+ path.join(targetDir, 'agents', 'wireframe-designer.md')
62
+ );
63
+
64
+ // Copy wireframe workflow files
65
+ const workflowFiles = [
66
+ 'workflow.md',
67
+ 'wireframe.template.md',
68
+ 'steps/step-01-define-requirements.md',
69
+ 'steps/step-02-user-flows.md',
70
+ 'steps/step-03-information-architecture.md',
71
+ 'steps/step-04-wireframe-sketch.md',
72
+ 'steps/step-05-components-interactions.md',
73
+ 'steps/step-06-synthesize.md'
74
+ ];
75
+
76
+ workflowFiles.forEach(file => {
77
+ fs.copyFileSync(
78
+ path.join(sourceDir, 'workflows', 'wireframe', file),
79
+ path.join(targetDir, 'workflows', 'wireframe', file)
80
+ );
81
+ });
82
+
83
+ console.log(`${GREEN} ✓${RESET} Agent files installed`);
84
+ }
85
+
86
+ function updateConfig() {
87
+ console.log(`${CYAN}[3/4]${RESET} Configuring Wade...`);
88
+
89
+ const configPath = path.join(process.cwd(), '_bmad', 'bme', '_designos', 'config.yaml');
90
+ const manifestPath = path.join(process.cwd(), '_bmad', '_config', 'agent-manifest.csv');
91
+
92
+ // Update or create config
93
+ if (!fs.existsSync(configPath)) {
94
+ const configContent = `# BMAD _designos Configuration
95
+ # Used by: Emma (empathy-mapper), Wade (wireframe-designer)
96
+
97
+ user_name: "User"
98
+ communication_language: "English"
99
+ output_folder: "_bmad-output/design-artifacts"
100
+
101
+ agents:
102
+ - wireframe-designer # Wade - Wireframe Specialist
103
+
104
+ workflows:
105
+ - wireframe # Create wireframes
106
+ `;
107
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
108
+ fs.writeFileSync(configPath, configContent);
109
+ console.log(`${GREEN} ✓${RESET} Created config.yaml`);
110
+ } else {
111
+ // Add Wade to existing config if not present
112
+ let config = fs.readFileSync(configPath, 'utf-8');
113
+ if (!config.includes('wireframe-designer')) {
114
+ config = config.replace(/agents:\s*\n/, 'agents:\n - wireframe-designer # Wade - Wireframe Specialist\n');
115
+ config = config.replace(/workflows:\s*\n/, 'workflows:\n - wireframe # Create wireframes\n');
116
+ fs.writeFileSync(configPath, config);
117
+ console.log(`${GREEN} ✓${RESET} Updated config.yaml`);
118
+ } else {
119
+ console.log(`${GREEN} ✓${RESET} Using existing config.yaml`);
120
+ }
121
+ }
122
+
123
+ // Update manifest
124
+ fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
125
+ if (!fs.existsSync(manifestPath)) {
126
+ const header = '"agent_id","name","title","icon","role","identity","communication_style","expertise","submodule","path"\n';
127
+ const wadeRow = '"wireframe-designer","Wade","Wireframe Design Specialist","🎨","Wireframe Design Expert + UI Architect","Senior UI/UX designer specializing in wireframe creation and information architecture. Helps teams rapidly visualize product concepts through low-fidelity wireframes. Brings 10+ years experience in web and mobile design, with deep knowledge of responsive patterns and component libraries.","Visual and spatial - speaks in layouts, grids, and flows. Like an architect sketching blueprints while explaining design decisions. Says things like \'Picture this layout\' and \'What\'s the primary user action on this screen?\' Uses spatial language (above, below, nested, adjacent) and thinks in terms of visual hierarchy.","- Channel expert wireframe methodologies: draw upon deep knowledge of information architecture, Gestalt principles, responsive design patterns, atomic design systems, and WCAG accessibility guidelines - Wireframes are thinking tools, not art - focus on structure and flow over aesthetics - Iterate quickly, refine deliberately - low-fidelity first, high-fidelity only when structure is validated - Every screen answers three questions: Where am I? What can I do? Where can I go? - Accessibility is non-negotiable - design for all users from the wireframe stage","bme","_bmad/bme/_designos/agents/wireframe-designer.md"\n';
128
+ fs.writeFileSync(manifestPath, header + wadeRow);
129
+ }
130
+
131
+ console.log(`${GREEN} ✓${RESET} Configuration complete`);
132
+ }
133
+
134
+ function createOutputDirectory() {
135
+ console.log(`${CYAN}[4/4]${RESET} Setting up output directory...`);
136
+
137
+ const outputDir = path.join(process.cwd(), '_bmad-output', 'design-artifacts');
138
+ fs.mkdirSync(outputDir, { recursive: true });
139
+
140
+ console.log(`${GREEN} ✓${RESET} Output directory ready`);
141
+ }
142
+
143
+ function printSuccess() {
144
+ console.log('');
145
+ console.log(`${GREEN}${BOLD}╔════════════════════════════════════════════════════╗${RESET}`);
146
+ console.log(`${GREEN}${BOLD}║ ║${RESET}`);
147
+ console.log(`${GREEN}${BOLD}║ ✓ Wade Successfully Installed! ║${RESET}`);
148
+ console.log(`${GREEN}${BOLD}║ ║${RESET}`);
149
+ console.log(`${GREEN}${BOLD}╚════════════════════════════════════════════════════╝${RESET}`);
150
+ console.log('');
151
+ console.log(`${BOLD}Quick Start:${RESET}`);
152
+ console.log('');
153
+ console.log(' 1. Activate Wade:');
154
+ console.log(` ${CYAN}cat _bmad/bme/_designos/agents/wireframe-designer.md${RESET}`);
155
+ console.log('');
156
+ console.log(' 2. Create your first wireframe:');
157
+ console.log(` ${CYAN}Type: WM${RESET}`);
158
+ console.log('');
159
+ console.log(`📚 User Guide: ${CYAN}_bmad-output/design-artifacts/WADE-USER-GUIDE.md${RESET}`);
160
+ console.log('');
161
+ }
162
+
163
+ async function main() {
164
+ try {
165
+ printBanner();
166
+ checkPrerequisites();
167
+ copyAgentFiles();
168
+ updateConfig();
169
+ createOutputDirectory();
170
+ printSuccess();
171
+ } catch (error) {
172
+ console.error(`${RED}✗ Installation failed:${RESET}`, error.message);
173
+ process.exit(1);
174
+ }
175
+ }
176
+
177
+ main();
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+
3
+ const BOLD = '\x1b[1m';
4
+ const RESET = '\x1b[0m';
5
+ const CYAN = '\x1b[36m';
6
+
7
+ console.log('');
8
+ console.log(`${BOLD}BMAD-Enhanced installed!${RESET}`);
9
+ console.log('');
10
+ console.log('To install agents into your project:');
11
+ console.log('');
12
+ console.log(` ${CYAN}npm run install:emma${RESET} - Install Emma (empathy-mapper)`);
13
+ console.log(` ${CYAN}npm run install:wade${RESET} - Install Wade (wireframe-designer)`);
14
+ console.log(` ${CYAN}npm run install:agents${RESET} - Install all agents at once`);
15
+ console.log('');