@puzzmo/cli 1.0.25 → 1.0.27

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.
@@ -48,16 +48,15 @@ const buildAgentCmd = (agent, prompt) => {
48
48
  return { cmd: "codex", args: ["--quiet", prompt] };
49
49
  return { cmd: agent, args: [prompt] };
50
50
  };
51
- /** Fetches skill instructions from the MCP server, then builds a self-contained prompt for the agent */
52
- const buildPrompt = async (skillName, gameDir) => {
53
- const instructions = await fetchSkillPrompt(skillName, gameDir);
54
- if (instructions)
55
- return `${instructions}\n\nThe game source is in the current directory.`;
56
- return `Run the skill "${skillName}". The game source is in the current directory.`;
51
+ /** Fetches step instructions from the MCP server and wraps them as an agent prompt */
52
+ const buildPrompt = async (stepName, gameDir, repoContext) => {
53
+ const instructions = await fetchSkillPrompt(stepName, gameDir);
54
+ return `Follow these instructions. The game source is in the current directory.\n\n${repoContext}\n\n${instructions}`;
57
55
  };
58
56
  class PipelineTUI {
59
57
  agent;
60
58
  gameDir;
59
+ repoContext;
61
60
  states;
62
61
  currentStep = 0;
63
62
  outputLines = [];
@@ -67,9 +66,10 @@ class PipelineTUI {
67
66
  activeProc = null;
68
67
  sidebarWidth = 30;
69
68
  logsDir;
70
- constructor(agent, gameDir) {
69
+ constructor(agent, gameDir, repoContext) {
71
70
  this.agent = agent;
72
71
  this.gameDir = gameDir;
72
+ this.repoContext = repoContext;
73
73
  this.states = skillsPipeline.map(() => "pending");
74
74
  this.logsDir = path.join(gameDir, ".puzzmo", "logs");
75
75
  fs.mkdirSync(this.logsDir, { recursive: true });
@@ -97,7 +97,7 @@ class PipelineTUI {
97
97
  buf += "╭" + "─".repeat(sidebarWidth - 2) + "┬" + "─".repeat(outputWidth) + "╮";
98
98
  // Sidebar header
99
99
  buf += moveTo(2, 1);
100
- buf += "│ " + bold("Migration Pipeline") + " ".repeat(Math.max(0, sidebarWidth - 21)) + "│";
100
+ buf += "│ " + bold("Migration Steps") + " ".repeat(Math.max(0, sidebarWidth - 18)) + "│";
101
101
  // Output panel header
102
102
  const headerLabel = this.done ? "Done" : `${skillsPipeline[this.currentStep]?.name ?? ""} ${dim(`(${this.phase})`)}`;
103
103
  const headerColor = phaseColor[this.phase];
@@ -377,7 +377,17 @@ class PipelineTUI {
377
377
  this.chatLines = [];
378
378
  this.phase = "agent";
379
379
  this.render();
380
- const prompt = await buildPrompt(skill.name, this.gameDir);
380
+ let prompt;
381
+ try {
382
+ prompt = await buildPrompt(skill.name, this.gameDir, this.repoContext);
383
+ }
384
+ catch (e) {
385
+ this.appendOutput(`Failed to fetch instructions: ${e.message}`);
386
+ this.writeSkillLog(skill.name);
387
+ this.states[stepIndex] = "failed";
388
+ this.render();
389
+ return false;
390
+ }
381
391
  let success = await this.runAgent(prompt);
382
392
  if (!success) {
383
393
  this.appendOutput("\n--- Retrying ---\n");
@@ -396,7 +406,7 @@ class PipelineTUI {
396
406
  const buildResult = this.runCmd("npx vite build");
397
407
  if (!buildResult.success) {
398
408
  this.appendOutput("Asking agent to fix...");
399
- const fixPrompt = `The vite build failed after running skill ${skill.name}. Fix the build errors:\n\n${buildResult.output}`;
409
+ const fixPrompt = `The vite build failed after the "${skill.name}" step. Fix the build errors:\n\n${buildResult.output}`;
400
410
  await this.runAgent(fixPrompt);
401
411
  const retry = this.runCmd("npx vite build");
402
412
  if (!retry.success) {
@@ -410,7 +420,7 @@ class PipelineTUI {
410
420
  this.phase = "commit";
411
421
  this.render();
412
422
  this.runCmd("git add -A");
413
- const commitResult = this.runCmd(`git commit -m "skill: ${skill.name}"`);
423
+ const commitResult = this.runCmd(`git commit -m "step: ${skill.name}"`);
414
424
  if (commitResult.success)
415
425
  this.appendOutput("Committed.");
416
426
  else
@@ -470,8 +480,8 @@ class PipelineTUI {
470
480
  }
471
481
  }
472
482
  /** Render the pipeline TUI and wait for it to complete */
473
- export const runPipelineTUI = async (agent, gameDir) => {
474
- const tui = new PipelineTUI(agent, gameDir);
483
+ export const runPipelineTUI = async (agent, gameDir, repoContext) => {
484
+ const tui = new PipelineTUI(agent, gameDir, repoContext);
475
485
  await tui.run();
476
486
  };
477
487
  //# sourceMappingURL=pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/tui/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/tui/pipeline.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@puzzmo/cli",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "puzzmo": "./lib/index.js"
@@ -9,7 +9,7 @@ import { runCommand, gitCommit } from "../../util/exec.js"
9
9
  import { runSkillsPipelineTUI } from "../../skills/runner.js"
10
10
  import { login } from "../login.js"
11
11
  import { getToken } from "../../util/config.js"
12
- import { detectRepoContext } from "./detectRepo.js"
12
+ import { detectRepoContext, type RepoType } from "./detectRepo.js"
13
13
 
14
14
  type CreateOptions = {
15
15
  name?: string
@@ -83,8 +83,8 @@ const setupNewRepo = (gameDir: string) => {
83
83
  }
84
84
  }
85
85
 
86
- /** Sets up the game inside an existing monorepo */
87
- const setupMonorepoGame = (tmpDir: string, slug: string, repoRoot: string, parentFolder: string): string => {
86
+ /** Places a game inside an existing repo's parent folder (games/, packages/, etc.) */
87
+ const setupRepoGame = (tmpDir: string, slug: string, repoRoot: string, parentFolder: string): string => {
88
88
  const parentDir = path.join(repoRoot, parentFolder)
89
89
  if (!fs.existsSync(parentDir)) fs.mkdirSync(parentDir, { recursive: true })
90
90
 
@@ -102,6 +102,60 @@ const setupMonorepoGame = (tmpDir: string, slug: string, repoRoot: string, paren
102
102
  return gameDir
103
103
  }
104
104
 
105
+ /** Files/dirs that stay at the repo root during a standalone→multi-game conversion */
106
+ const rootKeepList = new Set([
107
+ ".git",
108
+ ".gitignore",
109
+ ".mcp.json",
110
+ "node_modules",
111
+ "dist",
112
+ ".puzzmo",
113
+ ".DS_Store",
114
+ "package.json",
115
+ "package-lock.json",
116
+ "yarn.lock",
117
+ "pnpm-lock.yaml",
118
+ ".yarnrc.yml",
119
+ ".yarn",
120
+ ".pnp.cjs",
121
+ ".pnp.loader.mjs",
122
+ "tsconfig.json",
123
+ "vite.config.ts",
124
+ "vite.config.js",
125
+ ".prettierrc",
126
+ ".prettierrc.json",
127
+ "prettier.config.js",
128
+ ".eslintrc",
129
+ ".eslintrc.json",
130
+ "eslint.config.js",
131
+ ])
132
+
133
+ /** Converts a standalone single-game repo into a multi-game repo by moving existing files into games/<name>/ */
134
+ const convertToMultiGame = (repoRoot: string): string => {
135
+ // Derive existing game name from package.json or directory name
136
+ let existingName: string | undefined
137
+ try {
138
+ const pkg = JSON.parse(fs.readFileSync(path.join(repoRoot, "package.json"), "utf-8"))
139
+ if (pkg.name) existingName = slugify(pkg.name)
140
+ } catch {}
141
+ if (!existingName) existingName = path.basename(repoRoot)
142
+
143
+ const gamesDir = path.join(repoRoot, "games")
144
+ const existingGameDir = path.join(gamesDir, existingName)
145
+ fs.mkdirSync(existingGameDir, { recursive: true })
146
+
147
+ // Move all non-root files into games/<existing>/
148
+ for (const entry of fs.readdirSync(repoRoot)) {
149
+ if (rootKeepList.has(entry) || entry === "games") continue
150
+ fs.renameSync(path.join(repoRoot, entry), path.join(existingGameDir, entry))
151
+ }
152
+
153
+ runCommand("git add -A", { cwd: repoRoot })
154
+ gitCommit(`Restructure: move existing game to games/${existingName}`, { cwd: repoRoot })
155
+
156
+ return existingName
157
+ }
158
+
105
159
  /** Main game create wizard */
106
160
  export const gameCreate = async (args: string[]) => {
107
161
  const opts = parseArgs(args)
@@ -112,13 +166,13 @@ export const gameCreate = async (args: string[]) => {
112
166
 
113
167
  // Step 1: Detect repo context and choose mode
114
168
  const repo = detectRepoContext()
115
- const isMonorepo = repo.inGitRepo && repo.hasWorkspaces && repo.workspaceFolders.length > 0
169
+ const canAddToRepo = repo.repoType === "multi-game" || repo.repoType === "workspace-monorepo" || repo.repoType === "standalone"
116
170
 
117
171
  const modeOptions = [
118
172
  { value: "new-repo" as const, label: "Create game in a new repo" },
119
- { value: "add-to-repo" as const, label: "Add a game to this repo" },
173
+ ...(canAddToRepo ? [{ value: "add-to-repo" as const, label: "Add a game to this repo" }] : []),
120
174
  ]
121
- if (isMonorepo) modeOptions.reverse()
175
+ if (canAddToRepo && repo.repoType !== "none") modeOptions.reverse()
122
176
 
123
177
  const mode = await p.select({
124
178
  message: "How would you like to create your game?",
@@ -159,46 +213,58 @@ export const gameCreate = async (args: string[]) => {
159
213
  login(opts.accessToken)
160
214
  }
161
215
 
162
- // Step 6: Diamond — set up repo or monorepo subdir
216
+ // Step 6: Diamond — set up repo or add to existing
163
217
  let gameDir: string
218
+ let repoType: RepoType = repo.repoType
164
219
 
165
220
  if (mode === "new-repo") {
166
221
  gameDir = path.resolve(slug)
167
222
  if (fs.existsSync(gameDir)) fs.rmSync(gameDir, { recursive: true })
168
223
  fs.renameSync(tmpDir, gameDir)
169
224
  setupNewRepo(gameDir)
225
+ repoType = "standalone"
170
226
  } else {
171
227
  if (!repo.repoRoot) {
172
228
  p.log.error("Could not detect repository root. Are you inside a git repo?")
173
229
  process.exit(1)
174
230
  }
175
231
 
176
- // Determine which workspace folder to place the game in
177
- let parentFolder: string
178
- const hasGames = repo.workspaceFolders.includes("games")
232
+ // Standalone repo convert to multi-game first
233
+ if (repo.repoType === "standalone") {
234
+ const existingGame = convertToMultiGame(repo.repoRoot)
235
+ p.log.step(`Moved existing game to games/${existingGame}/`)
236
+ repoType = "multi-game"
237
+ }
179
238
 
180
- if (hasGames) {
181
- parentFolder = "games"
182
- } else if (repo.workspaceFolders.length === 0) {
239
+ // Determine which folder to place the game in
240
+ let parentFolder: string
241
+ if (repoType === "multi-game") {
183
242
  parentFolder = "games"
184
- } else if (repo.workspaceFolders.length === 1) {
185
- parentFolder = repo.workspaceFolders[0]
186
243
  } else {
187
- parentFolder = (await p.select({
188
- message: "Which folder should the game be added to?",
189
- options: repo.workspaceFolders.map((f) => ({ value: f, label: f })),
190
- })) as string
191
- if (p.isCancel(parentFolder)) process.exit(0)
244
+ const hasGames = repo.workspaceFolders.includes("games")
245
+ if (hasGames) {
246
+ parentFolder = "games"
247
+ } else if (repo.workspaceFolders.length === 1) {
248
+ parentFolder = repo.workspaceFolders[0]
249
+ } else if (repo.workspaceFolders.length === 0) {
250
+ parentFolder = "games"
251
+ } else {
252
+ parentFolder = (await p.select({
253
+ message: "Which folder should the game be added to?",
254
+ options: repo.workspaceFolders.map((f) => ({ value: f, label: f })),
255
+ })) as string
256
+ if (p.isCancel(parentFolder)) process.exit(0)
257
+ }
192
258
  }
193
259
 
194
- gameDir = setupMonorepoGame(tmpDir, slug, repo.repoRoot, parentFolder)
260
+ gameDir = setupRepoGame(tmpDir, slug, repo.repoRoot, parentFolder)
195
261
  }
196
262
 
197
263
  // Step 7: Detect agent and run skills pipeline
198
264
  const agents = detectAgent()
199
265
  const agentChoices = [
200
266
  ...agents.map((a) => ({ value: a.binary, label: `${a.displayName} (${a.path})` })),
201
- { value: "none", label: "None - I'll run the skills manually" },
267
+ { value: "none", label: "None - I'll run the steps manually" },
202
268
  ]
203
269
 
204
270
  let selectedAgent: string
@@ -213,12 +279,22 @@ export const gameCreate = async (args: string[]) => {
213
279
  }
214
280
 
215
281
  if (selectedAgent !== "none") {
216
- p.log.step("Running Puzzmo skills pipeline...")
217
- await runSkillsPipelineTUI(selectedAgent, gameDir)
282
+ const repoContextLines = [
283
+ `Repo type: ${repoType}`,
284
+ `Package manager: ${repo.packageManager} (use this instead of npm/npx when running commands or adding dependencies)`,
285
+ ]
286
+ if (repoType === "multi-game")
287
+ repoContextLines.push(
288
+ "This is a multi-game repo with a shared root package.json. Do not create a per-game package.json or vite config.",
289
+ )
290
+ if (repoType === "workspace-monorepo") repoContextLines.push("This is a workspace monorepo. The game has its own package.json.")
291
+
292
+ p.log.step("Running Puzzmo migration pipeline...")
293
+ await runSkillsPipelineTUI(selectedAgent, gameDir, repoContextLines.join("\n"))
218
294
  }
219
295
 
220
296
  // Done
221
- const pm = opts.pm || "npm"
297
+ const pm = opts.pm || repo.packageManager
222
298
  const runCmd = pm === "npm" ? "npx" : pm === "yarn" ? "yarn dlx" : "pnpm dlx"
223
299
  const relativePath = path.relative(process.cwd(), gameDir)
224
300
 
@@ -2,12 +2,27 @@ import fs from "node:fs"
2
2
  import path from "node:path"
3
3
  import { execSync } from "node:child_process"
4
4
 
5
+ /** The type of repo we're in */
6
+ export type RepoType =
7
+ /** Not in a git repo */
8
+ | "none"
9
+ /** A standalone single-game repo (has package.json, no workspaces, no games/ dir) */
10
+ | "standalone"
11
+ /** A multi-game repo with a shared root package.json (has games/ dir, no workspaces) */
12
+ | "multi-game"
13
+ /** A monorepo with workspace-managed packages */
14
+ | "workspace-monorepo"
15
+
16
+ export type PackageManager = "npm" | "yarn" | "pnpm"
17
+
5
18
  export type RepoContext = {
6
19
  inGitRepo: boolean
7
20
  repoRoot: string | null
8
- hasWorkspaces: boolean
21
+ repoType: RepoType
9
22
  /** Top-level workspace folders derived from globs (e.g. ["apps", "packages", "games"]) */
10
23
  workspaceFolders: string[]
24
+ /** Detected package manager based on lockfiles and packageManager field */
25
+ packageManager: PackageManager
11
26
  }
12
27
 
13
28
  /** Extracts top-level folder names from workspace glob patterns like "apps/*" or "packages/**" */
@@ -62,7 +77,21 @@ const readPnpmWorkspaces = (repoRoot: string): string[] | null => {
62
77
  return null
63
78
  }
64
79
 
65
- /** Detects whether we're inside a git repo and if it's a monorepo with workspace folders */
80
+ /** Detects package manager from lock files and the packageManager field */
81
+ const detectPackageManager = (repoRoot: string): PackageManager => {
82
+ if (fs.existsSync(path.join(repoRoot, "yarn.lock"))) return "yarn"
83
+ if (fs.existsSync(path.join(repoRoot, "pnpm-lock.yaml"))) return "pnpm"
84
+ try {
85
+ const pkg = JSON.parse(fs.readFileSync(path.join(repoRoot, "package.json"), "utf-8"))
86
+ if (typeof pkg.packageManager === "string") {
87
+ if (pkg.packageManager.startsWith("yarn")) return "yarn"
88
+ if (pkg.packageManager.startsWith("pnpm")) return "pnpm"
89
+ }
90
+ } catch {}
91
+ return "npm"
92
+ }
93
+
94
+ /** Detects the repo type, root, workspace folders, and package manager */
66
95
  export const detectRepoContext = (): RepoContext => {
67
96
  let repoRoot: string | null = null
68
97
 
@@ -70,15 +99,21 @@ export const detectRepoContext = (): RepoContext => {
70
99
  const result = execSync("git rev-parse --show-toplevel", { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] })
71
100
  repoRoot = result.trim()
72
101
  } catch {
73
- return { inGitRepo: false, repoRoot: null, hasWorkspaces: false, workspaceFolders: [] }
102
+ return { inGitRepo: false, repoRoot: null, repoType: "none", workspaceFolders: [], packageManager: "npm" }
74
103
  }
75
104
 
105
+ const pm = detectPackageManager(repoRoot)
76
106
  const globs = readPackageJsonWorkspaces(repoRoot) ?? readPnpmWorkspaces(repoRoot)
77
- const hasWorkspaces = globs !== null
78
- const workspaceFolders = globs ? foldersFromGlobs(globs) : []
79
107
 
80
- // Also recognize a games/ directory even without formal workspaces config
81
- if (!workspaceFolders.includes("games") && fs.existsSync(path.join(repoRoot, "games"))) workspaceFolders.push("games")
108
+ if (globs) {
109
+ const workspaceFolders = foldersFromGlobs(globs)
110
+ // Also recognize a games/ directory even if not in workspace globs
111
+ if (!workspaceFolders.includes("games") && fs.existsSync(path.join(repoRoot, "games"))) workspaceFolders.push("games")
112
+ return { inGitRepo: true, repoRoot, repoType: "workspace-monorepo", workspaceFolders, packageManager: pm }
113
+ }
114
+
115
+ const hasGamesDir = fs.existsSync(path.join(repoRoot, "games"))
116
+ if (hasGamesDir) return { inGitRepo: true, repoRoot, repoType: "multi-game", workspaceFolders: ["games"], packageManager: pm }
82
117
 
83
- return { inGitRepo: true, repoRoot, hasWorkspaces: hasWorkspaces || workspaceFolders.length > 0, workspaceFolders }
118
+ return { inGitRepo: true, repoRoot, repoType: "standalone", workspaceFolders: [], packageManager: pm }
84
119
  }
@@ -5,15 +5,22 @@ type McpConfig = {
5
5
  mcpServers: Record<string, { url: string; headers?: Record<string, string> }>
6
6
  }
7
7
 
8
- /** Reads the .mcp.json config from the game directory */
8
+ /** Reads the .mcp.json config, searching the game directory and ancestor directories */
9
9
  const readMcpConfig = (gameDir: string): McpConfig | null => {
10
- const mcpPath = path.join(gameDir, ".mcp.json")
11
- if (!fs.existsSync(mcpPath)) return null
12
- try {
13
- return JSON.parse(fs.readFileSync(mcpPath, "utf-8"))
14
- } catch {
15
- return null
10
+ let dir = path.resolve(gameDir)
11
+ const root = path.parse(dir).root
12
+ while (dir !== root) {
13
+ const mcpPath = path.join(dir, ".mcp.json")
14
+ if (fs.existsSync(mcpPath)) {
15
+ try {
16
+ return JSON.parse(fs.readFileSync(mcpPath, "utf-8"))
17
+ } catch {
18
+ return null
19
+ }
20
+ }
21
+ dir = path.dirname(dir)
16
22
  }
23
+ return null
17
24
  }
18
25
 
19
26
  /** Sends a JSON-RPC request to the MCP server and parses the SSE response */
@@ -28,16 +35,21 @@ const mcpRequest = async (url: string, headers: Record<string, string>, method:
28
35
  body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
29
36
  })
30
37
 
38
+ if (!response.ok) throw new Error(`MCP server returned ${response.status} ${response.statusText}`)
39
+
31
40
  const text = await response.text()
32
41
  // Parse SSE format: lines starting with "data: " contain the JSON payload
33
42
  for (const line of text.split("\n")) {
34
43
  if (!line.startsWith("data: ")) continue
35
44
  try {
36
45
  const parsed = JSON.parse(line.slice(6))
46
+ if (parsed.error) throw new Error(`MCP error: ${parsed.error.message ?? JSON.stringify(parsed.error)}`)
37
47
  if (parsed.result) return parsed.result
38
- } catch {}
48
+ } catch (e) {
49
+ if (e instanceof Error && e.message.startsWith("MCP error:")) throw e
50
+ }
39
51
  }
40
- return null
52
+ throw new Error(`MCP server returned no result. Response body: ${text.slice(0, 200)}`)
41
53
  }
42
54
 
43
55
  /** Returns the MCP server URL from .mcp.json, or null if not configured */
@@ -65,26 +77,25 @@ export const listMcpPrompts = async (gameDir: string): Promise<{ name: string; d
65
77
  }
66
78
  }
67
79
 
68
- /** Fetches a skill prompt's content from the MCP server configured in .mcp.json */
69
- export const fetchSkillPrompt = async (skillName: string, gameDir: string): Promise<string | null> => {
80
+ /** Fetches a step's instructions from the MCP server configured in .mcp.json */
81
+ export const fetchSkillPrompt = async (stepName: string, gameDir: string): Promise<string> => {
70
82
  const config = readMcpConfig(gameDir)
71
- if (!config) return null
83
+ if (!config) throw new Error(`No .mcp.json found in ${gameDir}`)
72
84
 
73
85
  const server = Object.values(config.mcpServers)[0]
74
- if (!server) return null
86
+ if (!server) throw new Error("No MCP server configured in .mcp.json")
75
87
 
76
- try {
77
- const result = await mcpRequest(server.url, server.headers ?? {}, "prompts/get", { name: skillName })
78
- if (!result?.messages?.length) return null
88
+ const result = await mcpRequest(server.url, server.headers ?? {}, "prompts/get", { name: stepName })
89
+ if (!result?.messages?.length) throw new Error(`MCP server returned no instructions for "${stepName}"`)
79
90
 
80
- return result.messages
81
- .map((m: any) => {
82
- if (typeof m.content === "string") return m.content
83
- if (m.content?.text) return m.content.text
84
- return ""
85
- })
86
- .join("\n")
87
- } catch {
88
- return null
89
- }
91
+ const text = result.messages
92
+ .map((m: any) => {
93
+ if (typeof m.content === "string") return m.content
94
+ if (m.content?.text) return m.content.text
95
+ return ""
96
+ })
97
+ .join("\n")
98
+
99
+ if (!text.trim()) throw new Error(`MCP server returned empty instructions for "${stepName}"`)
100
+ return text
90
101
  }
@@ -5,11 +5,10 @@ import { verifyBuild, runCommand, gitCommit } from "../util/exec.js"
5
5
  import { fetchSkillPrompt } from "./mcp-client.js"
6
6
  import { runPipelineTUI } from "../tui/pipeline.js"
7
7
 
8
- /** Fetches skill instructions from the MCP server, then builds a self-contained prompt for the agent */
9
- const buildPrompt = async (skillName: string, gameDir: string): Promise<string> => {
10
- const instructions = await fetchSkillPrompt(skillName, gameDir)
11
- if (instructions) return `${instructions}\n\nThe game source is in the current directory.`
12
- return `Run the skill "${skillName}". The game source is in the current directory.`
8
+ /** Fetches step instructions from the MCP server and wraps them as an agent prompt */
9
+ const buildPrompt = async (stepName: string, gameDir: string, repoContext: string): Promise<string> => {
10
+ const instructions = await fetchSkillPrompt(stepName, gameDir)
11
+ return `Follow these instructions. The game source is in the current directory.\n\n${repoContext}\n\n${instructions}`
13
12
  }
14
13
 
15
14
  /** Invokes an LLM agent with a prompt (plain mode, stdio inherited) */
@@ -32,22 +31,22 @@ const invokeAgent = (agent: string, prompt: string, cwd: string): { success: boo
32
31
  }
33
32
 
34
33
  /** Runs the skills pipeline with plain console output (no TUI) */
35
- export const runSkillsPipeline = async (agent: string, gameDir: string) => {
34
+ export const runSkillsPipeline = async (agent: string, gameDir: string, repoContext: string) => {
36
35
  const total = skillsPipeline.length
37
36
 
38
37
  for (let i = 0; i < total; i++) {
39
38
  const skill = skillsPipeline[i]
40
39
  const step = i + 1
41
- console.log(`[${step}/${total}] Running skill: ${skill.name}`)
40
+ console.log(`[${step}/${total}] Running step: ${skill.name}`)
42
41
 
43
- const prompt = await buildPrompt(skill.name, gameDir)
42
+ const prompt = await buildPrompt(skill.name, gameDir, repoContext)
44
43
  let result = invokeAgent(agent, prompt, gameDir)
45
44
 
46
45
  if (!result.success) {
47
46
  console.log(` Agent failed, retrying...`)
48
47
  result = invokeAgent(agent, prompt, gameDir)
49
48
  if (!result.success) {
50
- console.error(` Skill ${skill.name} failed after retry. Stopping pipeline.`)
49
+ console.error(` Step ${skill.name} failed after retry. Stopping pipeline.`)
51
50
  process.exit(1)
52
51
  }
53
52
  }
@@ -56,7 +55,7 @@ export const runSkillsPipeline = async (agent: string, gameDir: string) => {
56
55
  const buildResult = verifyBuild(gameDir)
57
56
  if (!buildResult.success) {
58
57
  console.log(` Build failed after ${skill.name}, asking agent to fix...`)
59
- const fixPrompt = `The vite build failed after running skill ${skill.name}. Fix the build errors:\n\n${buildResult.error}`
58
+ const fixPrompt = `The vite build failed after the "${skill.name}" step. Fix the build errors:\n\n${buildResult.error}`
60
59
  invokeAgent(agent, fixPrompt, gameDir)
61
60
 
62
61
  const retryBuild = verifyBuild(gameDir)
@@ -69,7 +68,7 @@ export const runSkillsPipeline = async (agent: string, gameDir: string) => {
69
68
  // Commit
70
69
  try {
71
70
  runCommand("git add -A", { cwd: gameDir })
72
- gitCommit(`skill: ${skill.name}`, { cwd: gameDir })
71
+ gitCommit(`step: ${skill.name}`, { cwd: gameDir })
73
72
  console.log(` Committed.`)
74
73
  } catch {
75
74
  console.log(` No changes to commit.`)
@@ -80,6 +79,6 @@ export const runSkillsPipeline = async (agent: string, gameDir: string) => {
80
79
  }
81
80
 
82
81
  /** Runs the skills pipeline with a split-pane TUI */
83
- export const runSkillsPipelineTUI = async (agent: string, gameDir: string) => {
84
- await runPipelineTUI(agent, gameDir)
82
+ export const runSkillsPipelineTUI = async (agent: string, gameDir: string, repoContext: string) => {
83
+ await runPipelineTUI(agent, gameDir, repoContext)
85
84
  }