bmalph 2.6.0 → 2.7.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 (75) hide show
  1. package/README.md +33 -31
  2. package/bmad/lite/create-prd.md +145 -0
  3. package/dist/cli.js +2 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/check-updates.js +1 -1
  6. package/dist/commands/check-updates.js.map +1 -1
  7. package/dist/commands/doctor-checks.js +103 -0
  8. package/dist/commands/doctor-checks.js.map +1 -0
  9. package/dist/commands/doctor-health-checks.js +101 -0
  10. package/dist/commands/doctor-health-checks.js.map +1 -0
  11. package/dist/commands/doctor-runtime-checks.js +143 -0
  12. package/dist/commands/doctor-runtime-checks.js.map +1 -0
  13. package/dist/commands/doctor.js +5 -369
  14. package/dist/commands/doctor.js.map +1 -1
  15. package/dist/commands/implement.js +9 -14
  16. package/dist/commands/implement.js.map +1 -1
  17. package/dist/commands/init.js +1 -1
  18. package/dist/commands/init.js.map +1 -1
  19. package/dist/commands/status.js +4 -44
  20. package/dist/commands/status.js.map +1 -1
  21. package/dist/commands/upgrade.js +1 -1
  22. package/dist/commands/upgrade.js.map +1 -1
  23. package/dist/installer.js +321 -50
  24. package/dist/installer.js.map +1 -1
  25. package/dist/platform/aider.js +1 -1
  26. package/dist/platform/aider.js.map +1 -1
  27. package/dist/platform/claude-code.js +1 -1
  28. package/dist/platform/codex.js +3 -3
  29. package/dist/platform/codex.js.map +1 -1
  30. package/dist/platform/copilot.js +1 -1
  31. package/dist/platform/copilot.js.map +1 -1
  32. package/dist/platform/cursor.js +5 -4
  33. package/dist/platform/cursor.js.map +1 -1
  34. package/dist/platform/doctor-checks.js +16 -7
  35. package/dist/platform/doctor-checks.js.map +1 -1
  36. package/dist/platform/instructions-snippet.js +37 -38
  37. package/dist/platform/instructions-snippet.js.map +1 -1
  38. package/dist/platform/types.js +9 -1
  39. package/dist/platform/types.js.map +1 -1
  40. package/dist/platform/windsurf.js +1 -1
  41. package/dist/platform/windsurf.js.map +1 -1
  42. package/dist/reset.js +18 -7
  43. package/dist/reset.js.map +1 -1
  44. package/dist/run/ralph-process.js +14 -8
  45. package/dist/run/ralph-process.js.map +1 -1
  46. package/dist/transition/artifact-scan.js +3 -13
  47. package/dist/transition/artifact-scan.js.map +1 -1
  48. package/dist/transition/orchestration.js +16 -26
  49. package/dist/transition/orchestration.js.map +1 -1
  50. package/dist/transition/specs-index.js +4 -4
  51. package/dist/transition/specs-index.js.map +1 -1
  52. package/dist/transition/tech-stack.js +1 -1
  53. package/dist/transition/tech-stack.js.map +1 -1
  54. package/dist/utils/artifact-definitions.js +19 -0
  55. package/dist/utils/artifact-definitions.js.map +1 -0
  56. package/dist/utils/constants.js +4 -0
  57. package/dist/utils/constants.js.map +1 -1
  58. package/dist/utils/file-system.js +1 -1
  59. package/dist/utils/file-system.js.map +1 -1
  60. package/dist/utils/format-status.js +31 -0
  61. package/dist/utils/format-status.js.map +1 -0
  62. package/dist/utils/json.js +3 -0
  63. package/dist/utils/json.js.map +1 -1
  64. package/dist/utils/validate.js +12 -15
  65. package/dist/utils/validate.js.map +1 -1
  66. package/dist/watch/dashboard.js +22 -11
  67. package/dist/watch/dashboard.js.map +1 -1
  68. package/dist/watch/renderer.js +1 -15
  69. package/dist/watch/renderer.js.map +1 -1
  70. package/package.json +2 -2
  71. package/ralph/drivers/cursor.sh +90 -0
  72. package/ralph/ralph_loop.sh +20 -13
  73. package/ralph/templates/ralphrc.template +1 -1
  74. package/dist/platform/index.js +0 -4
  75. package/dist/platform/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"implement.js","sourceRoot":"","sources":["../../src/commands/implement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"implement.js","sourceRoot":"","sources":["../../src/commands/implement.ts"],"names":[],"mappings":"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"}
@@ -97,7 +97,7 @@ async function runInit(options) {
97
97
  const validatedName = validateProjectName(name);
98
98
  console.log(chalk.blue(`\nInstalling BMAD + Ralph for ${platform.displayName}...`));
99
99
  await installProject(projectDir, platform);
100
- const bundledVersions = getBundledVersions();
100
+ const bundledVersions = await getBundledVersions();
101
101
  const config = {
102
102
  name: validatedName,
103
103
  description: description ?? "",
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import chalk from "chalk";
2
2
  import { readConfig } from "../utils/config.js";
3
3
  import { readState, readRalphStatus, getPhaseLabel, getPhaseInfo } from "../utils/state.js";
4
4
  import { withErrorHandling } from "../utils/errors.js";
5
+ import { formatStatus } from "../utils/format-status.js";
6
+ import { ARTIFACT_DEFINITIONS } from "../utils/artifact-definitions.js";
5
7
  import { resolveProjectPlatform } from "../platform/resolve.js";
6
8
  import { getFullTierPlatformNames } from "../platform/registry.js";
7
9
  import { scanProjectArtifacts } from "../transition/artifact-scan.js";
@@ -97,7 +99,7 @@ export async function runStatus(options) {
97
99
  if (phase === 4 && ralphStatus) {
98
100
  console.log("");
99
101
  console.log(chalk.bold(" Ralph Loop"));
100
- console.log(` ${chalk.cyan("Status:")} ${formatRalphStatus(ralphStatus.status)}`);
102
+ console.log(` ${chalk.cyan("Status:")} ${formatStatus(ralphStatus.status)}`);
101
103
  console.log(` ${chalk.cyan("Loop count:")} ${ralphStatus.loopCount}`);
102
104
  console.log(` ${chalk.cyan("Tasks:")} ${ralphStatus.tasksCompleted}/${ralphStatus.tasksTotal}`);
103
105
  }
@@ -116,22 +118,6 @@ export async function runStatus(options) {
116
118
  console.log(` ${chalk.cyan("Next:")} ${nextAction}`);
117
119
  }
118
120
  }
119
- const ARTIFACT_DEFINITIONS = [
120
- { phase: 1, name: "Product Brief", required: false },
121
- { phase: 1, name: "Market Research", required: false },
122
- { phase: 1, name: "Domain Research", required: false },
123
- { phase: 1, name: "Technical Research", required: false },
124
- { phase: 2, name: "PRD", required: true },
125
- { phase: 2, name: "UX Design", required: false },
126
- { phase: 3, name: "Architecture", required: true },
127
- { phase: 3, name: "Epics & Stories", required: true },
128
- { phase: 3, name: "Readiness Report", required: true },
129
- ];
130
- const PHASE_LABELS = {
131
- 1: "Phase 1 - Analysis",
132
- 2: "Phase 2 - Planning",
133
- 3: "Phase 3 - Solutioning",
134
- };
135
121
  function printArtifactChecklist(scan) {
136
122
  const foundByName = new Map();
137
123
  for (const artifacts of [scan.phases[1], scan.phases[2], scan.phases[3]]) {
@@ -143,7 +129,7 @@ function printArtifactChecklist(scan) {
143
129
  for (const def of ARTIFACT_DEFINITIONS) {
144
130
  if (def.phase !== currentPhase) {
145
131
  currentPhase = def.phase;
146
- console.log(` ${PHASE_LABELS[currentPhase]}`);
132
+ console.log(` Phase ${currentPhase} - ${getPhaseLabel(currentPhase)}`);
147
133
  }
148
134
  const found = foundByName.get(def.name);
149
135
  if (found) {
@@ -155,32 +141,6 @@ function printArtifactChecklist(scan) {
155
141
  }
156
142
  }
157
143
  }
158
- function formatStatus(status) {
159
- switch (status) {
160
- case "planning":
161
- return chalk.blue("planning");
162
- case "implementing":
163
- return chalk.yellow("implementing");
164
- case "completed":
165
- return chalk.green("completed");
166
- default:
167
- return status;
168
- }
169
- }
170
- function formatRalphStatus(status) {
171
- switch (status) {
172
- case "running":
173
- return chalk.yellow("running");
174
- case "blocked":
175
- return chalk.red("blocked");
176
- case "completed":
177
- return chalk.green("completed");
178
- case "not_started":
179
- return chalk.dim("not started");
180
- default:
181
- return status;
182
- }
183
- }
184
144
  function getNextAction(phase, status, ralphStatus, platform) {
185
145
  if (status === "completed") {
186
146
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ async function runUpgrade(options) {
46
46
  // Update upstreamVersions in config to match bundled versions
47
47
  const config = await readConfig(projectDir);
48
48
  if (config) {
49
- config.upstreamVersions = getBundledVersions();
49
+ config.upstreamVersions = await getBundledVersions();
50
50
  await writeConfig(projectDir, config);
51
51
  }
52
52
  console.log(chalk.green("\nUpdated:"));
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
package/dist/installer.js CHANGED
@@ -1,27 +1,29 @@
1
1
  import { cp, mkdir, readFile, readdir, rm, chmod, rename } from "node:fs/promises";
2
- import { readFileSync } from "node:fs";
3
2
  import { join, basename, dirname } from "node:path";
4
3
  import { fileURLToPath } from "node:url";
5
4
  import { debug, warn } from "./utils/logger.js";
6
5
  import { formatError, isEnoent } from "./utils/errors.js";
7
6
  import { exists, atomicWriteFile, parseGitignoreLines, replaceSection, } from "./utils/file-system.js";
8
- import { STATE_DIR, CONFIG_FILE } from "./utils/constants.js";
7
+ import { STATE_DIR, CONFIG_FILE, SKILLS_DIR, SKILLS_PREFIX } from "./utils/constants.js";
9
8
  const __filename = fileURLToPath(import.meta.url);
10
9
  const __dirname = dirname(__filename);
11
- export function getPackageVersion() {
10
+ export async function getPackageVersion() {
12
11
  const pkgPath = join(__dirname, "..", "package.json");
13
12
  try {
14
- const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
13
+ const pkg = JSON.parse(await readFile(pkgPath, "utf-8"));
15
14
  return pkg.version ?? "unknown";
16
15
  }
17
- catch {
16
+ catch (err) {
17
+ if (!isEnoent(err)) {
18
+ debug(`Failed to read package.json: ${formatError(err)}`);
19
+ }
18
20
  return "unknown";
19
21
  }
20
22
  }
21
- export function getBundledVersions() {
23
+ export async function getBundledVersions() {
22
24
  const versionsPath = join(__dirname, "..", "bundled-versions.json");
23
25
  try {
24
- const versions = JSON.parse(readFileSync(versionsPath, "utf-8"));
26
+ const versions = JSON.parse(await readFile(versionsPath, "utf-8"));
25
27
  if (!versions || typeof versions.bmadCommit !== "string") {
26
28
  throw new Error("Invalid bundled-versions.json structure: missing bmadCommit");
27
29
  }
@@ -75,65 +77,319 @@ async function getDefaultPlatform() {
75
77
  * Deliver slash commands based on the platform's command delivery strategy.
76
78
  *
77
79
  * - "directory": Copy command files to a directory (e.g., .claude/commands/)
78
- * - "inline": Merge command content as sections in the instructions file
79
- * - "none": Skip command delivery entirely
80
+ * - "skills": No-op commands are generated as skills by generateSkills()
81
+ * - "index": No-op commands are discoverable via _bmad/COMMANDS.md
80
82
  */
81
83
  async function deliverCommands(projectDir, platform, slashCommandsDir) {
82
84
  const delivery = platform.commandDelivery;
83
- if (delivery.kind === "none") {
85
+ if (delivery.kind !== "directory") {
84
86
  return [];
85
87
  }
86
88
  const slashFiles = await readdir(slashCommandsDir);
87
89
  const bundledCommandNames = new Set(slashFiles.filter((f) => f.endsWith(".md")));
88
- if (delivery.kind === "directory") {
89
- const commandsDir = join(projectDir, delivery.dir);
90
- await mkdir(commandsDir, { recursive: true });
91
- // Clean stale bmalph-owned commands before copying (preserve user-created commands)
92
- try {
93
- const existingCommands = await readdir(commandsDir);
94
- for (const file of existingCommands) {
95
- if (file.endsWith(".md") && bundledCommandNames.has(file)) {
96
- await rm(join(commandsDir, file), { force: true });
90
+ const commandsDir = join(projectDir, delivery.dir);
91
+ await mkdir(commandsDir, { recursive: true });
92
+ // Clean stale bmalph-owned commands before copying (preserve user-created commands)
93
+ try {
94
+ const existingCommands = await readdir(commandsDir);
95
+ for (const file of existingCommands) {
96
+ if (file.endsWith(".md") && bundledCommandNames.has(file)) {
97
+ await rm(join(commandsDir, file), { force: true });
98
+ }
99
+ }
100
+ }
101
+ catch (err) {
102
+ if (!isEnoent(err))
103
+ throw err;
104
+ }
105
+ for (const file of bundledCommandNames) {
106
+ await cp(join(slashCommandsDir, file), join(commandsDir, file), { dereference: false });
107
+ }
108
+ return [`${delivery.dir}/`];
109
+ }
110
+ /**
111
+ * Parse a CSV row handling double-quoted fields.
112
+ */
113
+ function parseCsvRow(row) {
114
+ const fields = [];
115
+ let current = "";
116
+ let inQuotes = false;
117
+ for (let i = 0; i < row.length; i++) {
118
+ const ch = row[i];
119
+ if (inQuotes) {
120
+ if (ch === '"') {
121
+ if (i + 1 < row.length && row[i + 1] === '"') {
122
+ current += '"';
123
+ i++;
97
124
  }
125
+ else {
126
+ inQuotes = false;
127
+ }
128
+ }
129
+ else {
130
+ current += ch;
98
131
  }
99
132
  }
100
- catch (err) {
101
- if (!isEnoent(err))
102
- throw err;
133
+ else if (ch === '"') {
134
+ inQuotes = true;
103
135
  }
104
- for (const file of bundledCommandNames) {
105
- await cp(join(slashCommandsDir, file), join(commandsDir, file), { dereference: false });
136
+ else if (ch === ",") {
137
+ fields.push(current);
138
+ current = "";
139
+ }
140
+ else {
141
+ current += ch;
106
142
  }
107
- return [`${delivery.dir}/`];
108
143
  }
109
- if (delivery.kind === "inline") {
110
- // Merge command content as sections in the instructions file
111
- const instructionsPath = join(projectDir, platform.instructionsFile);
112
- let existing = "";
113
- try {
114
- existing = await readFile(instructionsPath, "utf-8");
144
+ fields.push(current);
145
+ return fields;
146
+ }
147
+ const AGENT_DESCRIPTIONS = {
148
+ analyst: "Research, briefs, discovery",
149
+ architect: "Technical design, architecture",
150
+ pm: "PRDs, epics, stories",
151
+ sm: "Sprint planning, status, coordination",
152
+ dev: "Implementation, coding",
153
+ "ux-designer": "User experience, wireframes",
154
+ qa: "Test automation, quality assurance",
155
+ "tech-writer": "Documentation, technical writing",
156
+ "quick-flow-solo-dev": "Quick one-off tasks, small changes",
157
+ };
158
+ const BMALPH_COMMANDS = {
159
+ bmalph: {
160
+ description: "BMAD master agent — navigate phases",
161
+ howToRun: "Read and follow the master agent instructions in this file",
162
+ },
163
+ "bmalph-implement": {
164
+ description: "Transition planning artifacts to Ralph format",
165
+ howToRun: "Run `bmalph implement`",
166
+ },
167
+ "bmalph-status": {
168
+ description: "Show current phase, Ralph progress, version info",
169
+ howToRun: "Run `bmalph status`",
170
+ },
171
+ "bmalph-upgrade": {
172
+ description: "Update bundled assets to current version",
173
+ howToRun: "Run `bmalph upgrade`",
174
+ },
175
+ "bmalph-doctor": {
176
+ description: "Check project health and report issues",
177
+ howToRun: "Run `bmalph doctor`",
178
+ },
179
+ "bmalph-watch": {
180
+ description: "Launch Ralph live dashboard",
181
+ howToRun: "Run `bmalph run`",
182
+ },
183
+ };
184
+ const PHASE_SECTIONS = [
185
+ { key: "1-analysis", label: "Phase 1: Analysis" },
186
+ { key: "2-planning", label: "Phase 2: Planning" },
187
+ { key: "3-solutioning", label: "Phase 3: Solutioning" },
188
+ { key: "4-implementation", label: "Phase 4: Implementation" },
189
+ { key: "anytime", label: "Utilities" },
190
+ ];
191
+ // CSV column indices for bmad-help.csv
192
+ const CSV_COL_PHASE = 1;
193
+ const CSV_COL_NAME = 2;
194
+ const CSV_COL_WORKFLOW_FILE = 5;
195
+ const CSV_COL_DESCRIPTION = 10;
196
+ const FALLBACK_PHASE = "anytime";
197
+ /** CLI-pointer bmalph commands are all bmalph-* except the master "bmalph" command. */
198
+ function isCliPointer(cmd) {
199
+ return cmd.kind === "bmalph" && cmd.name !== "bmalph";
200
+ }
201
+ /**
202
+ * Classify all slash commands by reading CSV metadata and file contents.
203
+ * Shared by generateCommandIndex() and generateSkills().
204
+ */
205
+ export async function classifyCommands(projectDir, slashCmdsDir) {
206
+ const helpCsvPath = join(projectDir, "_bmad/_config/bmad-help.csv");
207
+ const helpCsv = await readFile(helpCsvPath, "utf-8");
208
+ // Parse CSV: build workflow-file → {phase, description} lookup
209
+ const csvLines = helpCsv.trimEnd().split(/\r?\n/);
210
+ const workflowLookup = new Map();
211
+ for (const line of csvLines.slice(1)) {
212
+ if (!line.trim())
213
+ continue;
214
+ const fields = parseCsvRow(line);
215
+ const workflowFile = fields[CSV_COL_WORKFLOW_FILE]?.trim();
216
+ if (workflowFile) {
217
+ workflowLookup.set(workflowFile, {
218
+ phase: fields[CSV_COL_PHASE]?.trim() ?? FALLBACK_PHASE,
219
+ description: fields[CSV_COL_DESCRIPTION]?.trim() ?? fields[CSV_COL_NAME]?.trim() ?? "",
220
+ });
115
221
  }
116
- catch (err) {
117
- if (!isEnoent(err))
118
- throw err;
222
+ }
223
+ // Read slash command files
224
+ const slashFiles = (await readdir(slashCmdsDir)).filter((f) => f.endsWith(".md")).sort();
225
+ const results = [];
226
+ for (const file of slashFiles) {
227
+ const name = file.replace(/\.md$/, "");
228
+ const body = (await readFile(join(slashCmdsDir, file), "utf-8")).trim();
229
+ const firstLine = body.split("\n")[0].trim();
230
+ // Extract _bmad/ file references from content
231
+ const fileRefs = [...body.matchAll(/`(_bmad\/[^`]+)`/g)].map((m) => m[1]);
232
+ const agentRef = fileRefs.find((ref) => ref.includes("/agents/"));
233
+ const workflowRef = fileRefs.find((ref) => ref.includes("/workflows/") || ref.includes("/tasks/"));
234
+ // Classify: bmalph CLI commands
235
+ if (name.startsWith("bmalph")) {
236
+ const known = BMALPH_COMMANDS[name];
237
+ const desc = known?.description ?? name.replace(/-/g, " ");
238
+ const howToRun = known?.howToRun ?? `Run \`bmalph ${name.replace("bmalph-", "")}\``;
239
+ results.push({
240
+ name,
241
+ description: desc,
242
+ invocation: firstLine,
243
+ body,
244
+ kind: "bmalph",
245
+ howToRun,
246
+ });
247
+ continue;
119
248
  }
120
- const commandSections = [];
121
- for (const file of [...bundledCommandNames].sort()) {
122
- const commandName = file.replace(/\.md$/, "");
123
- const content = await readFile(join(slashCommandsDir, file), "utf-8");
124
- commandSections.push(`### Command: ${commandName}\n\n${content.trim()}`);
249
+ // Classify: workflow/task commands (matched via CSV)
250
+ if (workflowRef && workflowLookup.has(workflowRef)) {
251
+ const csv = workflowLookup.get(workflowRef);
252
+ results.push({
253
+ name,
254
+ description: csv.description,
255
+ invocation: firstLine,
256
+ body,
257
+ kind: "workflow",
258
+ phase: csv.phase,
259
+ });
260
+ continue;
125
261
  }
126
- const inlineMarker = "## BMAD Commands";
127
- const commandsBlock = `\n${inlineMarker}\n\n${commandSections.join("\n\n---\n\n")}\n`;
128
- if (existing.includes(inlineMarker)) {
129
- await atomicWriteFile(instructionsPath, replaceSection(existing, inlineMarker, commandsBlock));
262
+ // Classify: pure agent commands
263
+ if (agentRef && !workflowRef) {
264
+ results.push({
265
+ name,
266
+ description: AGENT_DESCRIPTIONS[name] ?? name,
267
+ invocation: firstLine,
268
+ body,
269
+ kind: "agent",
270
+ });
271
+ continue;
272
+ }
273
+ // Fallback: unmatched commands go to utilities
274
+ results.push({
275
+ name,
276
+ description: name.replace(/-/g, " "),
277
+ invocation: firstLine,
278
+ body,
279
+ kind: "utility",
280
+ phase: FALLBACK_PHASE,
281
+ });
282
+ }
283
+ return results;
284
+ }
285
+ /**
286
+ * Generate _bmad/COMMANDS.md from pre-classified slash commands.
287
+ * Provides command discoverability for platforms without native slash command support.
288
+ */
289
+ export async function generateCommandIndex(projectDir, classified) {
290
+ const agents = [];
291
+ const phaseGroups = {};
292
+ const bmalpEntries = [];
293
+ for (const cmd of classified) {
294
+ if (cmd.kind === "bmalph") {
295
+ bmalpEntries.push({
296
+ name: cmd.name,
297
+ description: cmd.description,
298
+ howToRun: cmd.howToRun,
299
+ });
300
+ }
301
+ else if (cmd.kind === "agent") {
302
+ agents.push({ name: cmd.name, description: cmd.description, invocation: cmd.invocation });
303
+ }
304
+ else if (cmd.kind === "workflow") {
305
+ const phase = cmd.phase;
306
+ if (!phaseGroups[phase])
307
+ phaseGroups[phase] = [];
308
+ phaseGroups[phase].push({
309
+ name: cmd.name,
310
+ description: cmd.description,
311
+ invocation: cmd.invocation,
312
+ });
130
313
  }
131
314
  else {
132
- await atomicWriteFile(instructionsPath, existing + commandsBlock);
315
+ const phase = cmd.phase ?? FALLBACK_PHASE;
316
+ if (!phaseGroups[phase])
317
+ phaseGroups[phase] = [];
318
+ phaseGroups[phase].push({
319
+ name: cmd.name,
320
+ description: cmd.description,
321
+ invocation: cmd.invocation,
322
+ });
323
+ }
324
+ }
325
+ // Build markdown
326
+ const sections = ["# BMAD Commands\n\n> Auto-generated by bmalph. Do not edit.\n"];
327
+ if (agents.length > 0) {
328
+ sections.push(formatCommandTable("Agents", agents));
329
+ }
330
+ for (const { key, label } of PHASE_SECTIONS) {
331
+ const entries = phaseGroups[key];
332
+ if (entries && entries.length > 0) {
333
+ sections.push(formatCommandTable(label, entries));
334
+ }
335
+ }
336
+ if (bmalpEntries.length > 0) {
337
+ sections.push(formatCommandTable("bmalph CLI", bmalpEntries.map((b) => ({
338
+ name: b.name,
339
+ description: b.description,
340
+ invocation: b.howToRun,
341
+ })), "How to run"));
342
+ }
343
+ await atomicWriteFile(join(projectDir, "_bmad/COMMANDS.md"), sections.join("\n"));
344
+ }
345
+ /**
346
+ * Generate Codex Skills from pre-classified slash commands.
347
+ * Creates .agents/skills/bmad-<name>/SKILL.md for each non-CLI-pointer command.
348
+ */
349
+ export async function generateSkills(projectDir, classified) {
350
+ const skillsBaseDir = join(projectDir, SKILLS_DIR);
351
+ // Cleanup: remove existing bmad-* skill directories
352
+ try {
353
+ const existingDirs = await readdir(skillsBaseDir);
354
+ for (const dir of existingDirs) {
355
+ if (dir.startsWith(SKILLS_PREFIX)) {
356
+ await rm(join(skillsBaseDir, dir), { recursive: true, force: true });
357
+ }
133
358
  }
134
- return [platform.instructionsFile];
135
359
  }
136
- return [];
360
+ catch (err) {
361
+ if (!isEnoent(err))
362
+ throw err;
363
+ }
364
+ // Generate skills for non-CLI-pointer commands
365
+ for (const cmd of classified) {
366
+ if (isCliPointer(cmd))
367
+ continue;
368
+ const skillDir = join(skillsBaseDir, `${SKILLS_PREFIX}${cmd.name}`);
369
+ await mkdir(skillDir, { recursive: true });
370
+ const skillContent = `---
371
+ name: ${cmd.name}
372
+ description: >
373
+ ${cmd.description}. Use when the user asks about ${cmd.name.replace(/-/g, " ")}.
374
+ metadata:
375
+ managed-by: bmalph
376
+ ---
377
+
378
+ ${cmd.body}
379
+ `;
380
+ await atomicWriteFile(join(skillDir, "SKILL.md"), skillContent);
381
+ }
382
+ }
383
+ function formatCommandTable(heading, entries, thirdCol = "Invocation") {
384
+ const lines = [
385
+ `## ${heading}\n`,
386
+ `| Command | Description | ${thirdCol} |`,
387
+ "|---------|-------------|------------|",
388
+ ];
389
+ for (const e of entries) {
390
+ lines.push(`| ${e.name} | ${e.description} | ${e.invocation} |`);
391
+ }
392
+ return lines.join("\n") + "\n";
137
393
  }
138
394
  export async function copyBundledAssets(projectDir, platform) {
139
395
  const p = platform ?? (await getDefaultPlatform());
@@ -189,6 +445,14 @@ export async function copyBundledAssets(projectDir, platform) {
189
445
  await rm(bmadOld, { recursive: true, force: true });
190
446
  // Generate combined manifest from module-help.csv files
191
447
  await generateManifests(projectDir);
448
+ // Classify commands once, reuse for both COMMANDS.md and skills generation
449
+ const classified = await classifyCommands(projectDir, slashCommandsDir);
450
+ // Generate _bmad/COMMANDS.md for command discoverability
451
+ await generateCommandIndex(projectDir, classified);
452
+ // Generate Codex Skills for skills-based platforms
453
+ if (p.commandDelivery.kind === "skills") {
454
+ await generateSkills(projectDir, classified);
455
+ }
192
456
  // Generate _bmad/config.yaml with platform-specific value
193
457
  const projectName = await deriveProjectName(projectDir);
194
458
  const escapedName = projectName.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
@@ -236,7 +500,7 @@ modules:
236
500
  // Copy Ralph loop and lib → .ralph/
237
501
  // Add version marker to ralph_loop.sh
238
502
  const loopContent = await readFile(join(ralphDir, "ralph_loop.sh"), "utf-8");
239
- const markerLine = `# bmalph-version: ${getPackageVersion()}`;
503
+ const markerLine = `# bmalph-version: ${await getPackageVersion()}`;
240
504
  // Use .* to handle empty version (edge case) and EOF without newline
241
505
  const markedContent = loopContent.includes("# bmalph-version:")
242
506
  ? loopContent.replace(/# bmalph-version:.*/, markerLine)
@@ -422,14 +686,18 @@ export async function previewInstall(projectDir, platform) {
422
686
  ".ralph/docs/generated/",
423
687
  "_bmad/",
424
688
  ];
425
- // Add command directory only for directory-based delivery
689
+ // Add command directory based on delivery strategy
426
690
  if (p.commandDelivery.kind === "directory") {
427
691
  dirsToCreate.push(`${p.commandDelivery.dir}/`);
428
692
  }
693
+ else if (p.commandDelivery.kind === "skills") {
694
+ dirsToCreate.push(`${SKILLS_DIR}/`);
695
+ }
429
696
  for (const dir of dirsToCreate) {
430
697
  if (await exists(join(projectDir, dir))) {
431
698
  if (dir === "_bmad/" ||
432
- (p.commandDelivery.kind === "directory" && dir === `${p.commandDelivery.dir}/`)) {
699
+ (p.commandDelivery.kind === "directory" && dir === `${p.commandDelivery.dir}/`) ||
700
+ (p.commandDelivery.kind === "skills" && dir === `${SKILLS_DIR}/`)) {
433
701
  wouldModify.push(dir);
434
702
  }
435
703
  }
@@ -494,10 +762,13 @@ export async function previewUpgrade(projectDir, platform) {
494
762
  { path: ".ralph/RALPH-REFERENCE.md", isDir: false },
495
763
  { path: ".gitignore", isDir: false },
496
764
  ];
497
- // Add command directory only for directory-based delivery
765
+ // Add command directory based on delivery strategy
498
766
  if (p.commandDelivery.kind === "directory") {
499
767
  managedPaths.push({ path: `${p.commandDelivery.dir}/`, isDir: true });
500
768
  }
769
+ else if (p.commandDelivery.kind === "skills") {
770
+ managedPaths.push({ path: `${SKILLS_DIR}/`, isDir: true });
771
+ }
501
772
  const wouldUpdate = [];
502
773
  const wouldCreate = [];
503
774
  const wouldPreserve = [];