bmad-visual 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/bin/bmad-visual.js +255 -0
  2. package/package.json +31 -0
  3. package/templates/.agent/workflows/analyst.md +20 -0
  4. package/templates/.agent/workflows/architect.md +20 -0
  5. package/templates/.agent/workflows/bmad-advanced-elicitation.md +5 -0
  6. package/templates/.agent/workflows/bmad-brainstorming.md +5 -0
  7. package/templates/.agent/workflows/bmad-check-implementation-readiness.md +5 -0
  8. package/templates/.agent/workflows/bmad-checkpoint-preview.md +5 -0
  9. package/templates/.agent/workflows/bmad-code-review.md +5 -0
  10. package/templates/.agent/workflows/bmad-correct-course.md +5 -0
  11. package/templates/.agent/workflows/bmad-create-architecture.md +5 -0
  12. package/templates/.agent/workflows/bmad-create-epics-and-stories.md +5 -0
  13. package/templates/.agent/workflows/bmad-create-prd.md +5 -0
  14. package/templates/.agent/workflows/bmad-create-story.md +5 -0
  15. package/templates/.agent/workflows/bmad-create-ux-design.md +5 -0
  16. package/templates/.agent/workflows/bmad-dev-story.md +5 -0
  17. package/templates/.agent/workflows/bmad-distillator.md +5 -0
  18. package/templates/.agent/workflows/bmad-document-project.md +5 -0
  19. package/templates/.agent/workflows/bmad-domain-research.md +5 -0
  20. package/templates/.agent/workflows/bmad-edit-prd.md +5 -0
  21. package/templates/.agent/workflows/bmad-editorial-review-prose.md +5 -0
  22. package/templates/.agent/workflows/bmad-editorial-review-structure.md +5 -0
  23. package/templates/.agent/workflows/bmad-generate-project-context.md +5 -0
  24. package/templates/.agent/workflows/bmad-help-full.md +5 -0
  25. package/templates/.agent/workflows/bmad-help.md +5 -0
  26. package/templates/.agent/workflows/bmad-index-docs.md +5 -0
  27. package/templates/.agent/workflows/bmad-market-research.md +5 -0
  28. package/templates/.agent/workflows/bmad-party-mode.md +5 -0
  29. package/templates/.agent/workflows/bmad-prfaq.md +5 -0
  30. package/templates/.agent/workflows/bmad-product-brief.md +5 -0
  31. package/templates/.agent/workflows/bmad-qa-generate-e2e-tests.md +5 -0
  32. package/templates/.agent/workflows/bmad-quick-dev.md +5 -0
  33. package/templates/.agent/workflows/bmad-retrospective.md +5 -0
  34. package/templates/.agent/workflows/bmad-review-adversarial-general.md +5 -0
  35. package/templates/.agent/workflows/bmad-review-edge-case-hunter.md +5 -0
  36. package/templates/.agent/workflows/bmad-shard-doc.md +5 -0
  37. package/templates/.agent/workflows/bmad-sprint-planning.md +5 -0
  38. package/templates/.agent/workflows/bmad-sprint-status.md +5 -0
  39. package/templates/.agent/workflows/bmad-technical-research.md +5 -0
  40. package/templates/.agent/workflows/bmad-validate-prd.md +5 -0
  41. package/templates/.agent/workflows/dev.md +20 -0
  42. package/templates/.agent/workflows/pm.md +20 -0
  43. package/templates/.agent/workflows/qa.md +20 -0
  44. package/templates/.agent/workflows/sm.md +20 -0
  45. package/templates/.agent/workflows/solo-dev.md +20 -0
  46. package/templates/.agent/workflows/ux.md +20 -0
  47. package/templates/.claude/settings.local.json +50 -0
  48. package/templates/.claude/skills/analyst/SKILL.md +77 -0
  49. package/templates/.claude/skills/architect/SKILL.md +72 -0
  50. package/templates/.claude/skills/bmad-advanced-elicitation/SKILL.md +24 -0
  51. package/templates/.claude/skills/bmad-brainstorming/SKILL.md +26 -0
  52. package/templates/.claude/skills/bmad-check-implementation-readiness/SKILL.md +22 -0
  53. package/templates/.claude/skills/bmad-checkpoint-preview/SKILL.md +17 -0
  54. package/templates/.claude/skills/bmad-code-review/SKILL.md +22 -0
  55. package/templates/.claude/skills/bmad-correct-course/SKILL.md +17 -0
  56. package/templates/.claude/skills/bmad-create-architecture/SKILL.md +22 -0
  57. package/templates/.claude/skills/bmad-create-epics-and-stories/SKILL.md +22 -0
  58. package/templates/.claude/skills/bmad-create-prd/SKILL.md +30 -0
  59. package/templates/.claude/skills/bmad-create-story/SKILL.md +21 -0
  60. package/templates/.claude/skills/bmad-create-ux-design/SKILL.md +23 -0
  61. package/templates/.claude/skills/bmad-dev-story/SKILL.md +27 -0
  62. package/templates/.claude/skills/bmad-distillator/SKILL.md +22 -0
  63. package/templates/.claude/skills/bmad-document-project/SKILL.md +27 -0
  64. package/templates/.claude/skills/bmad-domain-research/SKILL.md +21 -0
  65. package/templates/.claude/skills/bmad-edit-prd/SKILL.md +18 -0
  66. package/templates/.claude/skills/bmad-editorial-review-prose/SKILL.md +21 -0
  67. package/templates/.claude/skills/bmad-editorial-review-structure/SKILL.md +25 -0
  68. package/templates/.claude/skills/bmad-generate-project-context/SKILL.md +20 -0
  69. package/templates/.claude/skills/bmad-help/SKILL.md +63 -0
  70. package/templates/.claude/skills/bmad-help-full/SKILL.md +23 -0
  71. package/templates/.claude/skills/bmad-index-docs/SKILL.md +16 -0
  72. package/templates/.claude/skills/bmad-market-research/SKILL.md +22 -0
  73. package/templates/.claude/skills/bmad-party-mode/SKILL.md +24 -0
  74. package/templates/.claude/skills/bmad-prfaq/SKILL.md +36 -0
  75. package/templates/.claude/skills/bmad-product-brief/SKILL.md +36 -0
  76. package/templates/.claude/skills/bmad-qa-generate-e2e-tests/SKILL.md +21 -0
  77. package/templates/.claude/skills/bmad-quick-dev/SKILL.md +23 -0
  78. package/templates/.claude/skills/bmad-retrospective/SKILL.md +17 -0
  79. package/templates/.claude/skills/bmad-review-adversarial-general/SKILL.md +21 -0
  80. package/templates/.claude/skills/bmad-review-edge-case-hunter/SKILL.md +22 -0
  81. package/templates/.claude/skills/bmad-shard-doc/SKILL.md +17 -0
  82. package/templates/.claude/skills/bmad-sprint-planning/SKILL.md +21 -0
  83. package/templates/.claude/skills/bmad-sprint-status/SKILL.md +17 -0
  84. package/templates/.claude/skills/bmad-technical-research/SKILL.md +21 -0
  85. package/templates/.claude/skills/bmad-validate-prd/SKILL.md +22 -0
  86. package/templates/.claude/skills/dev/SKILL.md +71 -0
  87. package/templates/.claude/skills/pm/SKILL.md +76 -0
  88. package/templates/.claude/skills/qa/SKILL.md +64 -0
  89. package/templates/.claude/skills/sm/SKILL.md +74 -0
  90. package/templates/.claude/skills/solo-dev/SKILL.md +64 -0
  91. package/templates/.claude/skills/ux/SKILL.md +71 -0
  92. package/templates/CLAUDE.md +60 -0
  93. package/templates/dashboard/index.html +15 -0
  94. package/templates/dashboard/package.json +30 -0
  95. package/templates/dashboard/public/assets/avatars/Female1_1wave.png +0 -0
  96. package/templates/dashboard/public/assets/avatars/Female1_2wave.png +0 -0
  97. package/templates/dashboard/public/assets/avatars/Female1_blink.png +0 -0
  98. package/templates/dashboard/public/assets/avatars/Female1_talk.png +0 -0
  99. package/templates/dashboard/public/assets/avatars/Female2_1wave.png +0 -0
  100. package/templates/dashboard/public/assets/avatars/Female2_2wave.png +0 -0
  101. package/templates/dashboard/public/assets/avatars/Female2_blink.png +0 -0
  102. package/templates/dashboard/public/assets/avatars/Female2_talk.png +0 -0
  103. package/templates/dashboard/public/assets/avatars/Female3_blink.png +0 -0
  104. package/templates/dashboard/public/assets/avatars/Female3_talk.png +0 -0
  105. package/templates/dashboard/public/assets/avatars/Female3_wave.png +0 -0
  106. package/templates/dashboard/public/assets/avatars/Female4_blink.png +0 -0
  107. package/templates/dashboard/public/assets/avatars/Female4_talk.png +0 -0
  108. package/templates/dashboard/public/assets/avatars/Female4_wave.png +0 -0
  109. package/templates/dashboard/public/assets/avatars/Female5_blink.png +0 -0
  110. package/templates/dashboard/public/assets/avatars/Female5_talk.png +0 -0
  111. package/templates/dashboard/public/assets/avatars/Female5_wave.png +0 -0
  112. package/templates/dashboard/public/assets/avatars/Female6_blink.png +0 -0
  113. package/templates/dashboard/public/assets/avatars/Female6_talk.png +0 -0
  114. package/templates/dashboard/public/assets/avatars/Female6_wave.png +0 -0
  115. package/templates/dashboard/public/assets/avatars/Male1_1wave.png +0 -0
  116. package/templates/dashboard/public/assets/avatars/Male1_2wave.png +0 -0
  117. package/templates/dashboard/public/assets/avatars/Male1_blink.png +0 -0
  118. package/templates/dashboard/public/assets/avatars/Male1_talk.png +0 -0
  119. package/templates/dashboard/public/assets/avatars/Male2_1wave.png +0 -0
  120. package/templates/dashboard/public/assets/avatars/Male2_2wave.png +0 -0
  121. package/templates/dashboard/public/assets/avatars/Male2_blink.png +0 -0
  122. package/templates/dashboard/public/assets/avatars/Male2_talk.png +0 -0
  123. package/templates/dashboard/public/assets/avatars/Male3_blink.png +0 -0
  124. package/templates/dashboard/public/assets/avatars/Male3_talk.png +0 -0
  125. package/templates/dashboard/public/assets/avatars/Male3_wave.png +0 -0
  126. package/templates/dashboard/public/assets/avatars/Male4_blink.png +0 -0
  127. package/templates/dashboard/public/assets/avatars/Male4_talk.png +0 -0
  128. package/templates/dashboard/public/assets/avatars/Male4_wave.png +0 -0
  129. package/templates/dashboard/public/assets/desks/desktop_set_black_down.png +0 -0
  130. package/templates/dashboard/public/assets/desks/desktop_set_black_down_coding-1.png +0 -0
  131. package/templates/dashboard/public/assets/desks/desktop_set_black_down_coding.png +0 -0
  132. package/templates/dashboard/public/assets/desks/desktop_set_black_up.png +0 -0
  133. package/templates/dashboard/public/assets/desks/desktop_set_white_down.png +0 -0
  134. package/templates/dashboard/public/assets/desks/desktop_set_white_down_coding-1.png +0 -0
  135. package/templates/dashboard/public/assets/desks/desktop_set_white_down_coding.png +0 -0
  136. package/templates/dashboard/public/assets/desks/desktop_set_white_up.png +0 -0
  137. package/templates/dashboard/public/assets/furniture/armchair_tan.png +0 -0
  138. package/templates/dashboard/public/assets/furniture/armchair_tan_down.png +0 -0
  139. package/templates/dashboard/public/assets/furniture/backpack_blue.png +0 -0
  140. package/templates/dashboard/public/assets/furniture/backpack_red.png +0 -0
  141. package/templates/dashboard/public/assets/furniture/blinds.png +0 -0
  142. package/templates/dashboard/public/assets/furniture/blinds_large_closed_white.png +0 -0
  143. package/templates/dashboard/public/assets/furniture/bookshelf.png +0 -0
  144. package/templates/dashboard/public/assets/furniture/bookshelf_purple_tall.png +0 -0
  145. package/templates/dashboard/public/assets/furniture/bulletin_board.png +0 -0
  146. package/templates/dashboard/public/assets/furniture/clock.png +0 -0
  147. package/templates/dashboard/public/assets/furniture/coffee_mug.png +0 -0
  148. package/templates/dashboard/public/assets/furniture/coffee_mug_blue.png +0 -0
  149. package/templates/dashboard/public/assets/furniture/coffee_table.png +0 -0
  150. package/templates/dashboard/public/assets/furniture/coffeepot_right.png +0 -0
  151. package/templates/dashboard/public/assets/furniture/coffeetable_black_horizontal.png +0 -0
  152. package/templates/dashboard/public/assets/furniture/couch.png +0 -0
  153. package/templates/dashboard/public/assets/furniture/couch_tan_down.png +0 -0
  154. package/templates/dashboard/public/assets/furniture/cushion_blue.png +0 -0
  155. package/templates/dashboard/public/assets/furniture/cushion_tan.png +0 -0
  156. package/templates/dashboard/public/assets/furniture/desk_wood.png +0 -0
  157. package/templates/dashboard/public/assets/furniture/fancy_rug.png +0 -0
  158. package/templates/dashboard/public/assets/furniture/fancy_rug_wide.png +0 -0
  159. package/templates/dashboard/public/assets/furniture/flowers1.png +0 -0
  160. package/templates/dashboard/public/assets/furniture/flowers2.png +0 -0
  161. package/templates/dashboard/public/assets/furniture/lamp_tan.png +0 -0
  162. package/templates/dashboard/public/assets/furniture/lantern.png +0 -0
  163. package/templates/dashboard/public/assets/furniture/monstera.png +0 -0
  164. package/templates/dashboard/public/assets/furniture/monstera_small.png +0 -0
  165. package/templates/dashboard/public/assets/furniture/picture_frame.png +0 -0
  166. package/templates/dashboard/public/assets/furniture/plant1.png +0 -0
  167. package/templates/dashboard/public/assets/furniture/plant2.png +0 -0
  168. package/templates/dashboard/public/assets/furniture/plant3.png +0 -0
  169. package/templates/dashboard/public/assets/furniture/plant_poof.png +0 -0
  170. package/templates/dashboard/public/assets/furniture/plant_spindly.png +0 -0
  171. package/templates/dashboard/public/assets/furniture/poster_blue.png +0 -0
  172. package/templates/dashboard/public/assets/furniture/rug.png +0 -0
  173. package/templates/dashboard/public/assets/furniture/succulent_blue.png +0 -0
  174. package/templates/dashboard/public/assets/furniture/succulent_green.png +0 -0
  175. package/templates/dashboard/public/assets/furniture/treasurechest_closed_gold.png +0 -0
  176. package/templates/dashboard/public/assets/furniture/water_cooler_better.png +0 -0
  177. package/templates/dashboard/public/assets/furniture/whiteboard.png +0 -0
  178. package/templates/dashboard/public/assets/furniture/whiteboard_stand_graph.png +0 -0
  179. package/templates/dashboard/public/assets/furniture/window_blinds_open.png +0 -0
  180. package/templates/dashboard/public/assets/logo.png +0 -0
  181. package/templates/dashboard/src/App.tsx +119 -0
  182. package/templates/dashboard/src/components/SquadCard.tsx +47 -0
  183. package/templates/dashboard/src/components/SquadSelector.tsx +61 -0
  184. package/templates/dashboard/src/components/StatusBadge.tsx +32 -0
  185. package/templates/dashboard/src/components/StatusBar.tsx +97 -0
  186. package/templates/dashboard/src/hooks/useSquadSocket.ts +137 -0
  187. package/templates/dashboard/src/lib/formatTime.ts +16 -0
  188. package/templates/dashboard/src/lib/normalizeState.ts +25 -0
  189. package/templates/dashboard/src/main.tsx +14 -0
  190. package/templates/dashboard/src/office/AgentSprite.ts +249 -0
  191. package/templates/dashboard/src/office/OfficeScene.ts +577 -0
  192. package/templates/dashboard/src/office/PhaserGame.tsx +101 -0
  193. package/templates/dashboard/src/office/RoomBuilder.ts +190 -0
  194. package/templates/dashboard/src/office/assetKeys.ts +150 -0
  195. package/templates/dashboard/src/office/palette.ts +32 -0
  196. package/templates/dashboard/src/plugin/squadWatcher.ts +260 -0
  197. package/templates/dashboard/src/store/useSquadStore.ts +63 -0
  198. package/templates/dashboard/src/styles/globals.css +41 -0
  199. package/templates/dashboard/src/types/state.ts +69 -0
  200. package/templates/dashboard/src/vite-env.d.ts +1 -0
  201. package/templates/dashboard/tsconfig.json +24 -0
  202. package/templates/dashboard/tsconfig.tsbuildinfo +1 -0
  203. package/templates/dashboard/vite.config.ts +13 -0
  204. package/templates/squads/.gitkeep +0 -0
  205. package/templates/squads/bmad/agents/analyst.agent.md +87 -0
  206. package/templates/squads/bmad/agents/architect.agent.md +82 -0
  207. package/templates/squads/bmad/agents/developer.agent.md +91 -0
  208. package/templates/squads/bmad/agents/pm.agent.md +86 -0
  209. package/templates/squads/bmad/agents/qa-engineer.agent.md +84 -0
  210. package/templates/squads/bmad/agents/scrum-master.agent.md +84 -0
  211. package/templates/squads/bmad/agents/solo-dev.agent.md +81 -0
  212. package/templates/squads/bmad/agents/tech-writer.agent.md +86 -0
  213. package/templates/squads/bmad/agents/ux-designer.agent.md +81 -0
  214. package/templates/squads/bmad/squad.yaml +70 -0
  215. package/templates/squads/bmad/state.json +108 -0
@@ -0,0 +1,255 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('node:fs');
4
+ const path = require('node:path');
5
+ const { execSync } = require('node:child_process');
6
+
7
+ // ─── ANSI Colors ───────────────────────────────────────────────
8
+ const c = {
9
+ reset: '\x1b[0m',
10
+ bold: '\x1b[1m',
11
+ dim: '\x1b[2m',
12
+ green: '\x1b[32m',
13
+ cyan: '\x1b[36m',
14
+ yellow: '\x1b[33m',
15
+ red: '\x1b[31m',
16
+ magenta: '\x1b[35m',
17
+ white: '\x1b[37m',
18
+ };
19
+
20
+ const LOGO = `
21
+ ${c.green} ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓${c.reset}
22
+ ${c.green} ┃${c.reset} ${c.bold}${c.white}BMAD Visual${c.reset} ${c.dim}— AI Agent Dashboard${c.reset} ${c.green}┃${c.reset}
23
+ ${c.green} ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛${c.reset}
24
+ `;
25
+
26
+ function log(msg) {
27
+ console.log(` ${c.green}>${c.reset} ${msg}`);
28
+ }
29
+
30
+ function success(msg) {
31
+ console.log(` ${c.green}✓${c.reset} ${msg}`);
32
+ }
33
+
34
+ function warn(msg) {
35
+ console.log(` ${c.yellow}!${c.reset} ${msg}`);
36
+ }
37
+
38
+ function error(msg) {
39
+ console.error(` ${c.red}✗${c.reset} ${msg}`);
40
+ }
41
+
42
+ function step(n, total, msg) {
43
+ process.stdout.write(` ${c.dim}[${n}/${total}]${c.reset} ${msg}...`);
44
+ }
45
+
46
+ function done() {
47
+ console.log(` ${c.green}done${c.reset}`);
48
+ }
49
+
50
+ // ─── Template Resolver ─────────────────────────────────────────
51
+ function getTemplatesDir() {
52
+ const dir = path.resolve(__dirname, '..', 'templates');
53
+ if (!fs.existsSync(dir)) {
54
+ error('Templates directory not found. Try reinstalling: npm install -g bmad-visual');
55
+ process.exit(1);
56
+ }
57
+ return dir;
58
+ }
59
+
60
+ // ─── Copy Helper ───────────────────────────────────────────────
61
+ function copyDir(src, dest) {
62
+ fs.cpSync(src, dest, { recursive: true });
63
+ }
64
+
65
+ function copyFile(src, dest) {
66
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
67
+ fs.copyFileSync(src, dest);
68
+ }
69
+
70
+ // ─── Commands ──────────────────────────────────────────────────
71
+
72
+ function handleInit(projectName) {
73
+ console.log(LOGO);
74
+
75
+ // Determine target directory
76
+ let targetDir;
77
+ if (projectName) {
78
+ targetDir = path.resolve(process.cwd(), projectName);
79
+ if (fs.existsSync(targetDir)) {
80
+ const entries = fs.readdirSync(targetDir);
81
+ if (entries.length > 0) {
82
+ error(`Directory "${projectName}" already exists and is not empty.`);
83
+ process.exit(1);
84
+ }
85
+ }
86
+ fs.mkdirSync(targetDir, { recursive: true });
87
+ log(`Creating project in ${c.cyan}${targetDir}${c.reset}`);
88
+ } else {
89
+ targetDir = process.cwd();
90
+ log(`Scaffolding into ${c.cyan}${targetDir}${c.reset}`);
91
+ }
92
+
93
+ const templatesDir = getTemplatesDir();
94
+ const totalSteps = 6;
95
+
96
+ console.log('');
97
+
98
+ // Step 1: Dashboard
99
+ step(1, totalSteps, 'Copying dashboard');
100
+ const dashSrc = path.join(templatesDir, 'dashboard');
101
+ const dashDest = path.join(targetDir, 'dashboard');
102
+ if (fs.existsSync(dashDest)) {
103
+ warn('dashboard/ already exists, overwriting...');
104
+ }
105
+ copyDir(dashSrc, dashDest);
106
+ done();
107
+
108
+ // Step 2: Squad definition
109
+ step(2, totalSteps, 'Copying BMAD squad & agents');
110
+ copyDir(
111
+ path.join(templatesDir, 'squads'),
112
+ path.join(targetDir, 'squads'),
113
+ );
114
+ done();
115
+
116
+ // Step 3: Claude Code skills
117
+ step(3, totalSteps, 'Copying Claude Code skills');
118
+ copyDir(
119
+ path.join(templatesDir, '.claude'),
120
+ path.join(targetDir, '.claude'),
121
+ );
122
+ done();
123
+
124
+ // Step 4: Antigravity workflows
125
+ step(4, totalSteps, 'Copying Antigravity workflows');
126
+ copyDir(
127
+ path.join(templatesDir, '.agent'),
128
+ path.join(targetDir, '.agent'),
129
+ );
130
+ done();
131
+
132
+ // Step 5: CLAUDE.md
133
+ step(5, totalSteps, 'Copying CLAUDE.md');
134
+ copyFile(
135
+ path.join(templatesDir, 'CLAUDE.md'),
136
+ path.join(targetDir, 'CLAUDE.md'),
137
+ );
138
+ done();
139
+
140
+ // Step 6: .gitignore
141
+ step(6, totalSteps, 'Updating .gitignore');
142
+ const gitignorePath = path.join(targetDir, '.gitignore');
143
+ const entries = [
144
+ '',
145
+ '# bmad-visual',
146
+ 'dashboard/node_modules/',
147
+ 'dashboard/dist/',
148
+ 'squads/*/state.json',
149
+ ];
150
+ const entriesToAdd = entries.join('\n') + '\n';
151
+
152
+ if (fs.existsSync(gitignorePath)) {
153
+ const current = fs.readFileSync(gitignorePath, 'utf-8');
154
+ if (!current.includes('# bmad-visual')) {
155
+ fs.appendFileSync(gitignorePath, entriesToAdd);
156
+ }
157
+ } else {
158
+ fs.writeFileSync(gitignorePath, entriesToAdd.trimStart());
159
+ }
160
+ done();
161
+
162
+ // Install dependencies
163
+ console.log('');
164
+ log('Installing dashboard dependencies...');
165
+ try {
166
+ execSync('npm install', {
167
+ cwd: path.join(targetDir, 'dashboard'),
168
+ stdio: 'pipe',
169
+ });
170
+ success('Dependencies installed');
171
+ } catch {
172
+ warn('Could not auto-install. Run manually: cd dashboard && npm install');
173
+ }
174
+
175
+ // Done!
176
+ console.log('');
177
+ console.log(` ${c.green}${c.bold}Done!${c.reset} Your BMAD Visual dashboard is ready.`);
178
+ console.log('');
179
+ console.log(` ${c.dim}Next steps:${c.reset}`);
180
+ if (projectName) {
181
+ console.log(` ${c.cyan}cd ${projectName}${c.reset}`);
182
+ }
183
+ console.log(` ${c.cyan}bmad-visual dev${c.reset} ${c.dim}Start the dashboard${c.reset}`);
184
+ console.log('');
185
+ console.log(` ${c.dim}Available agents:${c.reset}`);
186
+ console.log(` /analyst /pm /ux /architect /sm /dev /qa /solo-dev /bmad-help`);
187
+ console.log('');
188
+ }
189
+
190
+ function handleDev() {
191
+ const dashboardDir = path.join(process.cwd(), 'dashboard');
192
+
193
+ if (!fs.existsSync(path.join(dashboardDir, 'package.json'))) {
194
+ error('No dashboard found in this directory.');
195
+ log('Run "bmad-visual init" first to scaffold the project.');
196
+ process.exit(1);
197
+ }
198
+
199
+ // Check if node_modules exists
200
+ if (!fs.existsSync(path.join(dashboardDir, 'node_modules'))) {
201
+ log('Installing dependencies first...');
202
+ execSync('npm install', { cwd: dashboardDir, stdio: 'inherit' });
203
+ }
204
+
205
+ console.log(LOGO);
206
+ log(`Starting dashboard at ${c.cyan}http://localhost:5174${c.reset}`);
207
+ console.log('');
208
+
209
+ try {
210
+ execSync('npm run dev', { cwd: dashboardDir, stdio: 'inherit' });
211
+ } catch {
212
+ // User hit Ctrl+C
213
+ }
214
+ }
215
+
216
+ function showHelp() {
217
+ console.log(LOGO);
218
+ console.log(` ${c.bold}Usage:${c.reset}`);
219
+ console.log('');
220
+ console.log(` ${c.cyan}bmad-visual init${c.reset} Scaffold into current directory`);
221
+ console.log(` ${c.cyan}bmad-visual init ${c.dim}<name>${c.reset} Create new project directory`);
222
+ console.log(` ${c.cyan}bmad-visual dev${c.reset} Start the dashboard dev server`);
223
+ console.log('');
224
+ console.log(` ${c.bold}Agents:${c.reset}`);
225
+ console.log('');
226
+ console.log(` ${c.green}/analyst${c.reset} Mary Market research & requirements`);
227
+ console.log(` ${c.green}/pm${c.reset} John PRD, epics & stories`);
228
+ console.log(` ${c.green}/ux${c.reset} Sally UX design & wireframes`);
229
+ console.log(` ${c.green}/architect${c.reset} Winston System architecture`);
230
+ console.log(` ${c.green}/sm${c.reset} Bob Sprint planning`);
231
+ console.log(` ${c.green}/dev${c.reset} Amelia TDD implementation`);
232
+ console.log(` ${c.green}/qa${c.reset} Quinn QA & testing`);
233
+ console.log(` ${c.green}/solo-dev${c.reset} Barry Quick dev end-to-end`);
234
+ console.log(` ${c.green}/bmad-help${c.reset} Agent guide`);
235
+ console.log('');
236
+ }
237
+
238
+ // ─── Main ──────────────────────────────────────────────────────
239
+ const args = process.argv.slice(2);
240
+ const command = args[0];
241
+
242
+ if (!command || command === '--help' || command === '-h') {
243
+ showHelp();
244
+ } else if (command === 'init') {
245
+ handleInit(args[1]);
246
+ } else if (command === 'dev') {
247
+ handleDev();
248
+ } else if (command === '--version' || command === '-v') {
249
+ const pkg = require('../package.json');
250
+ console.log(pkg.version);
251
+ } else {
252
+ error(`Unknown command: ${command}`);
253
+ showHelp();
254
+ process.exit(1);
255
+ }
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "bmad-visual",
3
+ "version": "0.1.0",
4
+ "description": "BMAD Method visual dashboard — AI agent squad with Phaser.js office",
5
+ "bin": {
6
+ "bmad-visual": "./bin/bmad-visual.js"
7
+ },
8
+ "files": [
9
+ "bin/",
10
+ "templates/"
11
+ ],
12
+ "scripts": {
13
+ "sync-templates": "node scripts/sync-templates.js",
14
+ "prepublishOnly": "node scripts/sync-templates.js"
15
+ },
16
+ "keywords": [
17
+ "bmad",
18
+ "bmad-method",
19
+ "ai-agents",
20
+ "dashboard",
21
+ "phaser",
22
+ "claude",
23
+ "multi-agent",
24
+ "visual-office"
25
+ ],
26
+ "author": "Manoel Neto",
27
+ "license": "MIT",
28
+ "engines": {
29
+ "node": ">=18"
30
+ }
31
+ }
@@ -0,0 +1,20 @@
1
+ ---
2
+ description: BMAD Analyst — Mary. Market research, competitive analysis, brainstorming, product brief, and requirements.
3
+ ---
4
+
5
+ ## Dashboard Update (MANDATORY — do this FIRST)
6
+
7
+ 1. Read `squads/bmad/state.json`
8
+ 2. Set `"status": "running"` on the squad
9
+ 3. Find the agent with `"id": "analyst"` and set its `"status"` to `"working"`
10
+ 4. **If invoked WITHOUT arguments**: also set `"step"` to `{ "current": 0, "total": 12, "label": "intro" }`
11
+ 5. Set `"updatedAt"` to current ISO timestamp
12
+ 6. Write the updated `state.json` back
13
+
14
+ Then read `.claude/skills/analyst/SKILL.md` and follow ALL instructions (skip the Dashboard Update section there since you already did it above).
15
+
16
+ When your work is complete:
17
+ 1. Read `squads/bmad/state.json`
18
+ 2. Find the agent with `"id": "analyst"` and set its `"status"` to `"done"`
19
+ 3. Set `"updatedAt"` to current ISO timestamp
20
+ 4. Write the updated `state.json` back
@@ -0,0 +1,20 @@
1
+ ---
2
+ description: BMAD Architect — Winston. System architecture, tech stack, ADRs, and implementation readiness.
3
+ ---
4
+
5
+ ## Dashboard Update (MANDATORY — do this FIRST)
6
+
7
+ 1. Read `squads/bmad/state.json`
8
+ 2. Set `"status": "running"` on the squad
9
+ 3. Find the agent with `"id": "architect"` and set its `"status"` to `"working"`
10
+ 4. **If invoked WITHOUT arguments**: also set `"step"` to `{ "current": 0, "total": 12, "label": "intro" }`
11
+ 5. Set `"updatedAt"` to current ISO timestamp
12
+ 6. Write the updated `state.json` back
13
+
14
+ Then read `.claude/skills/architect/SKILL.md` and follow ALL instructions (skip the Dashboard Update section there since you already did it above).
15
+
16
+ When your work is complete:
17
+ 1. Read `squads/bmad/state.json`
18
+ 2. Find the agent with `"id": "architect"` and set its `"status"` to `"done"`
19
+ 3. Set `"updatedAt"` to current ISO timestamp
20
+ 4. Write the updated `state.json` back
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Push the LLM to reconsider and refine output. Use when user asks for deeper critique (socratic, first principles, pre-mortem, red team).
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-advanced-elicitation/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Facilitate interactive brainstorming sessions using diverse creative techniques. Use when the user says 'help me brainstorm' or 'help me ideate'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-brainstorming/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Validate PRD, UX, Architecture and Epics specs are complete for implementation. Use when the user says 'check implementation readiness'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-check-implementation-readiness/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: LLM-assisted human-in-the-loop review. Use when the user says 'checkpoint', 'human review', or 'walk me through this change'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-checkpoint-preview/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Adversarial code review using parallel review layers. Use when the user says 'run code review' or 'review this code'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-code-review/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Manage significant changes during sprint execution. Use when the user says 'correct course' or 'propose sprint change'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-correct-course/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Create architecture solution design decisions. Use when the user says 'lets create architecture' or 'create technical architecture'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-create-architecture/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Break requirements into epics and user stories. Use when the user says 'create the epics and stories list'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-create-epics-and-stories/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Create a PRD from scratch. Use when the user says 'lets create a product requirements document' or 'I want to create a new PRD'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-create-prd/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Create a dedicated story file with all context needed for implementation. Use when the user says 'create the next story' or 'create story [id]'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-create-story/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Plan UX patterns and design specifications. Use when the user says 'lets create UX design' or 'create UX specifications'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-create-ux-design/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Execute story implementation following a story spec file. Use when the user says 'dev this story' or 'implement the next story'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-dev-story/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Lossless LLM-optimized compression of source documents. Use when the user requests to 'distill documents' or 'create a distillate'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-distillator/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Document brownfield projects for AI context. Use when the user says 'document this project' or 'generate project docs'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-document-project/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Conduct domain and industry research. Use when the user wants to do domain research for a topic or industry.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-domain-research/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Edit an existing PRD. Use when the user says 'edit this PRD'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-edit-prd/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Clinical copy-editor that reviews text for communication issues. Use when user says 'review for prose' or 'improve the prose'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-editorial-review-prose/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Structural editor that proposes cuts, reorganization, and simplification. Use when user requests 'structural review' or 'editorial review of structure'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-editorial-review-structure/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Create project-context.md with AI rules for the project. Use when the user says 'generate project context'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-generate-project-context/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Full BMAD workflow navigator. Analyzes current state and recommends the next skill to use.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-help-full/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: BMAD Help — Interactive guide to choose the right BMAD agent or workflow for your task.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-help/SKILL.md` and follow ALL instructions exactly as written.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Generate or update an index.md to reference all docs in a folder. Use when user requests to create or update a file index.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-index-docs/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Conduct market research on competition and customers. Use when the user says they need market research.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-market-research/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Orchestrate group discussions between BMAD agents. Use when user wants multiple agent perspectives or a roundtable discussion.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-party-mode/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Working Backwards PRFAQ challenge to forge product concepts. Use when the user requests to 'create a PRFAQ', 'work backwards', or 'run the PRFAQ challenge'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-prfaq/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Create or update product briefs through guided or autonomous discovery. Use when the user requests to create or update a Product Brief.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-product-brief/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Generate end-to-end automated tests for existing features. Use when the user says 'create qa automated tests for [feature]'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-qa-generate-e2e-tests/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Implements any user intent following project conventions. Use when the user wants to build, fix, tweak, refactor, add or modify code.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-quick-dev/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Post-epic review to extract lessons and assess success. Use when the user says 'run a retrospective' or 'lets retro the epic'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-retrospective/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Cynical adversarial review of any content. Use when the user requests a critical review.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-review-adversarial-general/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Exhaustive path enumeration to find unhandled edge cases. Use when you need edge-case analysis of code, specs, or diffs.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-review-edge-case-hunter/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Split large markdown documents into smaller organized files. Use when the user says 'shard document' or needs to split a large doc.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-shard-doc/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Generate sprint plan from epics. Use when the user says 'run sprint planning' or 'generate sprint plan'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-sprint-planning/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Summarize sprint status and surface risks. Use when the user says 'check sprint status' or 'show sprint status'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-sprint-status/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Conduct technical research on technologies and architecture. Use when the user would like to produce a technical research report.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-technical-research/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Validate a PRD against standards. Use when the user says 'validate this PRD' or 'run PRD validation'.
3
+ ---
4
+
5
+ Read the file `.claude/skills/bmad-validate-prd/SKILL.md` and follow ALL instructions.
@@ -0,0 +1,20 @@
1
+ ---
2
+ description: BMAD Developer — Amelia. Dev story, TDD implementation, code review, strict adherence to specs.
3
+ ---
4
+
5
+ ## Dashboard Update (MANDATORY — do this FIRST)
6
+
7
+ 1. Read `squads/bmad/state.json`
8
+ 2. Set `"status": "running"` on the squad
9
+ 3. Find the agent with `"id": "developer"` and set its `"status"` to `"working"`
10
+ 4. **If invoked WITHOUT arguments**: also set `"step"` to `{ "current": 0, "total": 12, "label": "intro" }`
11
+ 5. Set `"updatedAt"` to current ISO timestamp
12
+ 6. Write the updated `state.json` back
13
+
14
+ Then read `.claude/skills/dev/SKILL.md` and follow ALL instructions (skip the Dashboard Update section there since you already did it above).
15
+
16
+ When your work is complete:
17
+ 1. Read `squads/bmad/state.json`
18
+ 2. Find the agent with `"id": "developer"` and set its `"status"` to `"done"`
19
+ 3. Set `"updatedAt"` to current ISO timestamp
20
+ 4. Write the updated `state.json` back
@@ -0,0 +1,20 @@
1
+ ---
2
+ description: BMAD Product Manager — John. PRD creation, validation, epics, stories, and implementation readiness.
3
+ ---
4
+
5
+ ## Dashboard Update (MANDATORY — do this FIRST)
6
+
7
+ 1. Read `squads/bmad/state.json`
8
+ 2. Set `"status": "running"` on the squad
9
+ 3. Find the agent with `"id": "pm"` and set its `"status"` to `"working"`
10
+ 4. **If invoked WITHOUT arguments**: also set `"step"` to `{ "current": 0, "total": 12, "label": "intro" }`
11
+ 5. Set `"updatedAt"` to current ISO timestamp
12
+ 6. Write the updated `state.json` back
13
+
14
+ Then read `.claude/skills/pm/SKILL.md` and follow ALL instructions (skip the Dashboard Update section there since you already did it above).
15
+
16
+ When your work is complete:
17
+ 1. Read `squads/bmad/state.json`
18
+ 2. Find the agent with `"id": "pm"` and set its `"status"` to `"done"`
19
+ 3. Set `"updatedAt"` to current ISO timestamp
20
+ 4. Write the updated `state.json` back
@@ -0,0 +1,20 @@
1
+ ---
2
+ description: BMAD QA Engineer — Quinn. BMAD QA validation, E2E tests, API tests, and coverage analysis.
3
+ ---
4
+
5
+ ## Dashboard Update (MANDATORY — do this FIRST)
6
+
7
+ 1. Read `squads/bmad/state.json`
8
+ 2. Set `"status": "running"` on the squad
9
+ 3. Find the agent with `"id": "qa-engineer"` and set its `"status"` to `"working"`
10
+ 4. **If invoked WITHOUT arguments**: also set `"step"` to `{ "current": 0, "total": 12, "label": "intro" }`
11
+ 5. Set `"updatedAt"` to current ISO timestamp
12
+ 6. Write the updated `state.json` back
13
+
14
+ Then read `.claude/skills/qa/SKILL.md` and follow ALL instructions (skip the Dashboard Update section there since you already did it above).
15
+
16
+ When your work is complete:
17
+ 1. Read `squads/bmad/state.json`
18
+ 2. Find the agent with `"id": "qa-engineer"` and set its `"status"` to `"done"`
19
+ 3. Set `"updatedAt"` to current ISO timestamp
20
+ 4. Write the updated `state.json` back