agile-context-engineering 0.1.0 → 0.2.1

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 (84) hide show
  1. package/LICENSE +30 -0
  2. package/README.md +272 -78
  3. package/agents/ace-code-discovery-analyst.md +245 -0
  4. package/agents/ace-code-integration-analyst.md +248 -0
  5. package/agents/ace-code-reviewer.md +375 -0
  6. package/agents/ace-product-owner.md +361 -0
  7. package/agents/ace-project-researcher.md +606 -0
  8. package/agents/ace-research-synthesizer.md +228 -0
  9. package/agents/ace-technical-application-architect.md +287 -0
  10. package/agents/ace-wiki-mapper.md +334 -0
  11. package/agile-context-engineering/src/ace-tools.js +2881 -0
  12. package/agile-context-engineering/src/ace-tools.test.js +1089 -0
  13. package/agile-context-engineering/templates/_command.md +54 -0
  14. package/agile-context-engineering/templates/_workflow.xml +17 -0
  15. package/agile-context-engineering/templates/config.json +0 -0
  16. package/agile-context-engineering/templates/product/external-solution.xml +832 -0
  17. package/agile-context-engineering/templates/product/feature.xml +361 -0
  18. package/agile-context-engineering/templates/product/integration-solution.xml +0 -0
  19. package/agile-context-engineering/templates/product/product-backlog.xml +231 -0
  20. package/agile-context-engineering/templates/product/product-vision.xml +227 -0
  21. package/agile-context-engineering/templates/product/story-integration-solution.xml +1014 -0
  22. package/agile-context-engineering/templates/product/story-technical-solution.xml +1025 -0
  23. package/agile-context-engineering/templates/product/story-wiki.xml +190 -0
  24. package/agile-context-engineering/templates/product/story.xml +451 -0
  25. package/agile-context-engineering/templates/wiki/coding-standards.xml +493 -0
  26. package/agile-context-engineering/templates/wiki/decizions.xml +115 -0
  27. package/agile-context-engineering/templates/wiki/guide.xml +137 -0
  28. package/agile-context-engineering/templates/wiki/module-discovery.xml +174 -0
  29. package/agile-context-engineering/templates/wiki/pattern.xml +159 -0
  30. package/agile-context-engineering/templates/wiki/subsystem-architecture.xml +343 -0
  31. package/agile-context-engineering/templates/wiki/subsystem-structure.xml +235 -0
  32. package/agile-context-engineering/templates/wiki/system-architecture.xml +254 -0
  33. package/agile-context-engineering/templates/wiki/system-cross-cutting.xml +197 -0
  34. package/agile-context-engineering/templates/wiki/system-structure.xml +178 -0
  35. package/agile-context-engineering/templates/wiki/system.xml +381 -0
  36. package/agile-context-engineering/templates/wiki/tech-debt-index.xml +125 -0
  37. package/agile-context-engineering/templates/wiki/testing-framework.xml +283 -0
  38. package/agile-context-engineering/templates/wiki/wiki-readme.xml +276 -0
  39. package/agile-context-engineering/utils/questioning.xml +111 -0
  40. package/agile-context-engineering/utils/ui-formatting.md +300 -0
  41. package/agile-context-engineering/workflows/execute-story.xml +1145 -0
  42. package/agile-context-engineering/workflows/help.xml +540 -0
  43. package/agile-context-engineering/workflows/init-coding-standards.xml +386 -0
  44. package/agile-context-engineering/workflows/map-story.xml +797 -0
  45. package/agile-context-engineering/workflows/map-subsystem.xml +1177 -0
  46. package/agile-context-engineering/workflows/map-system.xml +672 -0
  47. package/agile-context-engineering/workflows/plan-backlog.xml +1356 -0
  48. package/agile-context-engineering/workflows/plan-feature.xml +1495 -0
  49. package/agile-context-engineering/workflows/plan-product-vision.xml +342 -0
  50. package/agile-context-engineering/workflows/plan-story.xml +909 -0
  51. package/agile-context-engineering/workflows/research-external-solution.xml +659 -0
  52. package/agile-context-engineering/workflows/research-integration-solution.xml +712 -0
  53. package/agile-context-engineering/workflows/research-story-wiki.xml +474 -0
  54. package/agile-context-engineering/workflows/research-technical-solution.xml +762 -0
  55. package/agile-context-engineering/workflows/review-story.xml +281 -0
  56. package/bin/install.js +102 -166
  57. package/commands/ace/execute-story.md +137 -0
  58. package/commands/ace/help.md +93 -0
  59. package/commands/ace/init-coding-standards.md +83 -0
  60. package/commands/ace/map-story.md +156 -0
  61. package/commands/ace/map-subsystem.md +138 -0
  62. package/commands/ace/map-system.md +92 -0
  63. package/commands/ace/plan-backlog.md +83 -0
  64. package/commands/ace/plan-feature.md +89 -0
  65. package/commands/ace/plan-product-vision.md +81 -0
  66. package/commands/ace/plan-story.md +145 -0
  67. package/commands/ace/research-external-solution.md +138 -0
  68. package/commands/ace/research-integration-solution.md +135 -0
  69. package/commands/ace/research-story-wiki.md +116 -0
  70. package/commands/ace/research-technical-solution.md +147 -0
  71. package/commands/ace/review-story.md +109 -0
  72. package/package.json +5 -8
  73. package/agents/executor.md +0 -88
  74. package/agents/planner.md +0 -78
  75. package/agents/researcher.md +0 -77
  76. package/agents/verifier.md +0 -116
  77. package/commands/ace-execute-story.md +0 -114
  78. package/commands/ace-init.md +0 -254
  79. package/commands/ace-plan-epic.md +0 -79
  80. package/commands/ace-plan-feature.md +0 -78
  81. package/commands/ace-plan-project.md +0 -205
  82. package/commands/ace-plan-story.md +0 -97
  83. package/commands/ace-refine-story.md +0 -90
  84. package/commands/ace-verify-story.md +0 -127
package/bin/install.js CHANGED
@@ -30,30 +30,18 @@ const RUNTIMES = {
30
30
  supportsLocal: true,
31
31
  },
32
32
  opencode: {
33
- name: 'OpenCode',
34
- description: 'OpenCode AI coding assistant',
33
+ name: 'Crush',
34
+ description: 'Crush AI coding assistant (formerly OpenCode)',
35
35
  globalDir: '.opencode',
36
36
  commandsDir: 'commands',
37
37
  agentsDir: 'agents',
38
38
  supportsLocal: true,
39
39
  },
40
- gemini: {
41
- name: 'Gemini CLI',
42
- description: "Google's Gemini CLI",
43
- globalDir: '.gemini',
44
- commandsDir: 'commands',
45
- agentsDir: 'agents',
46
- supportsLocal: true,
47
- },
48
- codex: {
49
- name: 'Codex CLI',
50
- description: "OpenAI's Codex CLI",
51
- globalDir: '.codex',
52
- skillsDir: 'skills',
53
- supportsLocal: false, // Codex only supports global installation
54
- },
55
40
  };
56
41
 
42
+ // The folder name installed inside the config directory (e.g. ~/.claude/agile-context-engineering/)
43
+ const ACE_DIR_NAME = 'agile-context-engineering';
44
+
57
45
  function log(message, color = '') {
58
46
  console.log(`${color}${message}${colors.reset}`);
59
47
  }
@@ -76,8 +64,6 @@ function parseArgs() {
76
64
  const flags = {
77
65
  claude: args.includes('--claude'),
78
66
  opencode: args.includes('--opencode'),
79
- gemini: args.includes('--gemini'),
80
- codex: args.includes('--codex'),
81
67
  all: args.includes('--all'),
82
68
  global: args.includes('--global'),
83
69
  local: args.includes('--local'),
@@ -93,20 +79,18 @@ Usage: npx agile-context-engineering [options]
93
79
 
94
80
  Options:
95
81
  --claude Install for Claude Code only
96
- --opencode Install for OpenCode only
97
- --gemini Install for Gemini CLI only
98
- --codex Install for Codex CLI only (global only)
82
+ --opencode Install for Crush (formerly OpenCode)
99
83
  --all Install for all supported runtimes
100
- --global Install globally (~/.claude, ~/.gemini, etc.)
101
- --local Install locally (.claude, .opencode, etc.)
84
+ --global Install globally (~/.claude, ~/.opencode)
85
+ --local Install locally (.claude, .opencode)
102
86
  -h, --help Show this help message
103
87
  -v, --version Show version number
104
88
 
105
89
  Examples:
106
90
  npx agile-context-engineering # Interactive installation
107
91
  npx agile-context-engineering --claude --local # Claude Code, local install
92
+ npx agile-context-engineering --opencode --global # Crush (formerly OpenCode), global install
108
93
  npx agile-context-engineering --all --global # All runtimes, global install
109
- npx agile-context-engineering --codex # Codex CLI (always global)
110
94
  `);
111
95
  }
112
96
 
@@ -148,7 +132,7 @@ async function askMultiple(rl, question, options) {
148
132
  log(` ${opt.description}`, colors.dim);
149
133
  }
150
134
  });
151
- log(`\n Enter numbers separated by commas (e.g., 1,2,3) or 'all'`, colors.dim);
135
+ log(`\n Enter numbers separated by commas (e.g., 1,2) or 'all'`, colors.dim);
152
136
  rl.question(`\n${colors.yellow}Your choice: ${colors.reset}`, (answer) => {
153
137
  if (answer.toLowerCase() === 'all') {
154
138
  resolve(options.map(o => o.value));
@@ -174,18 +158,24 @@ function getBasePath(runtime, scope) {
174
158
  const cwd = process.cwd();
175
159
  const config = RUNTIMES[runtime];
176
160
 
177
- if (scope === 'local' && !config.supportsLocal) {
178
- // Fallback to global for runtimes that don't support local
179
- return path.join(home, config.globalDir);
180
- }
181
-
182
161
  return scope === 'global'
183
162
  ? path.join(home, config.globalDir)
184
163
  : path.join(cwd, config.globalDir);
185
164
  }
186
165
 
187
- // Copy directory recursively
188
- function copyDir(src, dest) {
166
+ // File extensions that contain path references needing runtime transformation
167
+ const TRANSFORMABLE_EXTENSIONS = new Set(['.md', '.xml']);
168
+
169
+ // Transform file content for a target runtime (replaces .claude/ paths with target runtime paths)
170
+ function transformForRuntime(content, runtime) {
171
+ if (runtime === 'claude') return content; // Source files already use .claude paths
172
+ const targetDir = RUNTIMES[runtime].globalDir; // e.g. '.opencode'
173
+ // Replace path references: ~/.claude/ → ~/.opencode/, .claude/settings → .opencode/settings, etc.
174
+ return content.replace(/\.claude\//g, `${targetDir}/`);
175
+ }
176
+
177
+ // Copy directory recursively, optionally transforming text file content for the target runtime
178
+ function copyDir(src, dest, runtime) {
189
179
  if (!fs.existsSync(dest)) {
190
180
  fs.mkdirSync(dest, { recursive: true });
191
181
  }
@@ -197,148 +187,100 @@ function copyDir(src, dest) {
197
187
  const destPath = path.join(dest, entry.name);
198
188
 
199
189
  if (entry.isDirectory()) {
200
- copyDir(srcPath, destPath);
190
+ copyDir(srcPath, destPath, runtime);
201
191
  } else {
202
- fs.copyFileSync(srcPath, destPath);
192
+ const ext = path.extname(entry.name).toLowerCase();
193
+ if (runtime !== 'claude' && TRANSFORMABLE_EXTENSIONS.has(ext)) {
194
+ // Transform path references for non-Claude runtimes
195
+ const content = fs.readFileSync(srcPath, 'utf-8');
196
+ fs.writeFileSync(destPath, transformForRuntime(content, runtime), 'utf-8');
197
+ } else {
198
+ fs.copyFileSync(srcPath, destPath);
199
+ }
203
200
  }
204
201
  }
205
202
  }
206
203
 
207
- // Install for Claude Code, OpenCode, or Gemini (similar structure)
208
- function installStandard(runtime, scope, packageDir) {
204
+ // Install ACE for a runtime (Claude Code or Crush)
205
+ function installForRuntime(runtime, scope, packageDir) {
209
206
  const config = RUNTIMES[runtime];
210
207
  const basePath = getBasePath(runtime, scope);
211
208
  const commandsPath = path.join(basePath, config.commandsDir);
212
209
  const agentsPath = path.join(basePath, config.agentsDir);
210
+ const acePath = path.join(basePath, ACE_DIR_NAME);
213
211
 
214
212
  // Source directories
215
213
  const srcCommands = path.join(packageDir, 'commands');
216
214
  const srcAgents = path.join(packageDir, 'agents');
215
+ const srcTemplates = path.join(packageDir, 'agile-context-engineering', 'templates');
216
+ const srcUtils = path.join(packageDir, 'agile-context-engineering', 'utils');
217
+ const srcWorkflows = path.join(packageDir, 'agile-context-engineering', 'workflows');
218
+ const srcTools = path.join(packageDir, 'agile-context-engineering', 'src');
217
219
 
218
220
  log(`\nInstalling ACE for ${config.name}...`, colors.cyan);
219
221
  log(` Target: ${basePath}`, colors.dim);
220
222
 
223
+ // Clean previous ACE installation to remove stale files from renamed/deleted commands
224
+ const aceCommandsPath = path.join(commandsPath, 'ace');
225
+ if (fs.existsSync(aceCommandsPath)) {
226
+ fs.rmSync(aceCommandsPath, { recursive: true });
227
+ }
228
+ if (fs.existsSync(agentsPath)) {
229
+ // Only remove ace-* agent files, preserve non-ACE agents
230
+ for (const f of fs.readdirSync(agentsPath)) {
231
+ if (f.startsWith('ace-')) {
232
+ fs.rmSync(path.join(agentsPath, f), { recursive: true });
233
+ }
234
+ }
235
+ }
236
+ if (fs.existsSync(acePath)) {
237
+ fs.rmSync(acePath, { recursive: true });
238
+ }
239
+
221
240
  // Create directories
222
241
  fs.mkdirSync(commandsPath, { recursive: true });
223
242
  fs.mkdirSync(agentsPath, { recursive: true });
243
+ fs.mkdirSync(acePath, { recursive: true });
224
244
 
225
- // Copy commands
245
+ // Copy commands (transform paths for target runtime)
226
246
  if (fs.existsSync(srcCommands)) {
227
- copyDir(srcCommands, commandsPath);
247
+ copyDir(srcCommands, commandsPath, runtime);
228
248
  log(` ✓ Commands installed`, colors.green);
229
249
  }
230
250
 
231
- // Copy agents
251
+ // Copy agents (transform paths for target runtime)
232
252
  if (fs.existsSync(srcAgents)) {
233
- copyDir(srcAgents, agentsPath);
253
+ copyDir(srcAgents, agentsPath, runtime);
234
254
  log(` ✓ Agents installed`, colors.green);
235
255
  }
236
256
 
237
- return basePath;
238
- }
239
-
240
- // Install for Codex CLI (different structure - uses skills with SKILL.md)
241
- function installCodex(packageDir) {
242
- const config = RUNTIMES.codex;
243
- const home = os.homedir();
244
- const basePath = path.join(home, config.globalDir);
245
- const skillsPath = path.join(basePath, config.skillsDir, 'ace');
246
-
247
- // Source directories
248
- const srcCommands = path.join(packageDir, 'commands');
249
- const srcAgents = path.join(packageDir, 'agents');
250
-
251
- log(`\nInstalling ACE for ${config.name}...`, colors.cyan);
252
- log(` Target: ${skillsPath}`, colors.dim);
253
-
254
- // Create ace skill directory
255
- fs.mkdirSync(skillsPath, { recursive: true });
257
+ // Copy templates into agile-context-engineering/
258
+ if (fs.existsSync(srcTemplates)) {
259
+ copyDir(srcTemplates, path.join(acePath, 'templates'), runtime);
260
+ log(` ✓ Templates installed`, colors.green);
261
+ }
256
262
 
257
- // For Codex, we need to create a combined SKILL.md file
258
- // or individual skill directories for each command
263
+ // Copy utils into agile-context-engineering/
264
+ if (fs.existsSync(srcUtils)) {
265
+ copyDir(srcUtils, path.join(acePath, 'utils'), runtime);
266
+ log(` ✓ Utils installed`, colors.green);
267
+ }
259
268
 
260
- // Create main ACE skill file
261
- const skillContent = generateCodexSkill(srcCommands, srcAgents);
262
- fs.writeFileSync(path.join(skillsPath, 'SKILL.md'), skillContent);
263
- log(` ✓ Main skill installed`, colors.green);
269
+ // Copy workflows into agile-context-engineering/
270
+ if (fs.existsSync(srcWorkflows)) {
271
+ copyDir(srcWorkflows, path.join(acePath, 'workflows'), runtime);
272
+ log(` ✓ Workflows installed`, colors.green);
273
+ }
264
274
 
265
- // Create individual command skills
266
- if (fs.existsSync(srcCommands)) {
267
- const commands = fs.readdirSync(srcCommands).filter(f => f.endsWith('.md'));
268
- for (const cmd of commands) {
269
- const cmdName = cmd.replace('.md', '').replace('ace-', '');
270
- const cmdSkillPath = path.join(basePath, config.skillsDir, `ace-${cmdName}`);
271
- fs.mkdirSync(cmdSkillPath, { recursive: true });
272
- fs.copyFileSync(
273
- path.join(srcCommands, cmd),
274
- path.join(cmdSkillPath, 'SKILL.md')
275
- );
276
- }
277
- log(` ✓ Command skills installed`, colors.green);
275
+ // Copy src (ace-tools) into agile-context-engineering/
276
+ if (fs.existsSync(srcTools)) {
277
+ copyDir(srcTools, path.join(acePath, 'src'), runtime);
278
+ log(` ✓ Tools installed`, colors.green);
278
279
  }
279
280
 
280
281
  return basePath;
281
282
  }
282
283
 
283
- // Generate a combined skill file for Codex
284
- function generateCodexSkill(srcCommands, srcAgents) {
285
- let content = `# ACE - Agile Context Engineering
286
-
287
- A spec-driven development system with Agile workflows.
288
-
289
- ## Description
290
-
291
- ACE (Agile Context Engineering) helps you plan and execute projects using Agile methodology with epics, features, stories, and tasks.
292
-
293
- ## Commands
294
-
295
- The following ACE commands are available:
296
-
297
- - \`/ace:init\` - Initialize ACE in your project
298
- - \`/ace:plan-project\` - Plan your project with epics and features
299
- - \`/ace:plan-epic\` - Break an epic into features
300
- - \`/ace:plan-feature\` - Break a feature into stories
301
- - \`/ace:plan-story\` - Create a new user story
302
- - \`/ace:refine-story\` - Prepare a story for execution
303
- - \`/ace:execute-story\` - Execute a story with atomic commits
304
- - \`/ace:verify-story\` - Verify a completed story
305
-
306
- ## Workflow
307
-
308
- \`\`\`
309
- Epic → Feature → Story → Tasks
310
- ↓ ↓ ↓ ↓
311
- Plan → Refine → Execute → Verify
312
- \`\`\`
313
-
314
- ## Agile Hierarchy
315
-
316
- - **Epic**: Large body of work (1-3 months)
317
- - **Feature**: Deliverable functionality (1-2 sprints)
318
- - **Story**: User-facing work item (1-3 days)
319
- - **Task**: Atomic implementation step (30 min - 2 hours)
320
-
321
- ## Getting Started
322
-
323
- 1. Run \`/ace:init\` to initialize ACE in your project
324
- 2. Run \`/ace:plan-project\` to start planning
325
- 3. Break down work: epic → feature → story
326
- 4. Execute and verify stories
327
-
328
- Each command has its own skill file with detailed instructions.
329
- `;
330
-
331
- return content;
332
- }
333
-
334
- // Install commands and agents for a specific runtime
335
- function installForRuntime(runtime, scope, packageDir) {
336
- if (runtime === 'codex') {
337
- return installCodex(packageDir);
338
- }
339
- return installStandard(runtime, scope, packageDir);
340
- }
341
-
342
284
  // Main installation logic
343
285
  async function main() {
344
286
  const flags = parseArgs();
@@ -363,7 +305,7 @@ async function main() {
363
305
  let scope = null;
364
306
 
365
307
  // Check if non-interactive mode
366
- const hasRuntimeFlag = flags.claude || flags.opencode || flags.gemini || flags.codex || flags.all;
308
+ const hasRuntimeFlag = flags.claude || flags.opencode || flags.all;
367
309
  const hasScopeFlag = flags.global || flags.local;
368
310
  const isInteractive = !hasRuntimeFlag && !hasScopeFlag;
369
311
 
@@ -373,44 +315,27 @@ async function main() {
373
315
  // Ask for runtime selection (multiple choice)
374
316
  runtimes = await askMultiple(rl, '\nWhich runtime(s) do you want to install ACE for?', [
375
317
  { label: 'Claude Code', value: 'claude', description: "Anthropic's Claude Code CLI" },
376
- { label: 'OpenCode', value: 'opencode', description: 'OpenCode AI coding assistant' },
377
- { label: 'Gemini CLI', value: 'gemini', description: "Google's Gemini CLI" },
378
- { label: 'Codex CLI', value: 'codex', description: "OpenAI's Codex CLI (global only)" },
318
+ { label: 'Crush', value: 'opencode', description: 'Crush AI coding assistant (formerly OpenCode)' },
379
319
  ]);
380
320
 
381
- // Check if any selected runtime doesn't support local
382
- const hasGlobalOnly = runtimes.some(r => !RUNTIMES[r].supportsLocal);
383
-
384
- if (hasGlobalOnly && runtimes.length === 1 && runtimes[0] === 'codex') {
385
- // Only Codex selected, skip scope question
386
- scope = 'global';
387
- log(`\nNote: Codex CLI only supports global installation.`, colors.yellow);
388
- } else {
389
- // Ask for scope
390
- scope = await ask(rl, '\nWhere should ACE be installed?', [
391
- { label: 'Global', value: 'global', description: 'Install in home directory (~/.claude, ~/.gemini, etc.)' },
392
- { label: 'Local', value: 'local', description: 'Install in current project (.claude, .opencode, etc.)' },
393
- ]);
394
-
395
- if (scope === 'local' && hasGlobalOnly) {
396
- log(`\nNote: Codex CLI will be installed globally (doesn't support local).`, colors.yellow);
397
- }
398
- }
321
+ // Ask for scope
322
+ scope = await ask(rl, '\nWhere should ACE be installed?', [
323
+ { label: 'Global', value: 'global', description: 'Install in home directory (~/.claude, ~/.opencode)' },
324
+ { label: 'Local', value: 'local', description: 'Install in current project (.claude, .opencode)' },
325
+ ]);
399
326
 
400
327
  rl.close();
401
328
  } else {
402
329
  // Non-interactive mode
403
330
  if (flags.all) {
404
- runtimes = ['claude', 'opencode', 'gemini', 'codex'];
331
+ runtimes = ['claude', 'opencode'];
405
332
  } else {
406
333
  if (flags.claude) runtimes.push('claude');
407
334
  if (flags.opencode) runtimes.push('opencode');
408
- if (flags.gemini) runtimes.push('gemini');
409
- if (flags.codex) runtimes.push('codex');
410
335
  }
411
336
 
412
337
  if (runtimes.length === 0) {
413
- log('Error: No runtime specified. Use --claude, --opencode, --gemini, --codex, or --all', colors.red);
338
+ log('Error: No runtime specified. Use --claude, --opencode (Crush), or --all', colors.red);
414
339
  process.exit(1);
415
340
  }
416
341
 
@@ -440,8 +365,19 @@ async function main() {
440
365
  log(` ${name}: ${p}`, colors.dim);
441
366
  }
442
367
 
368
+ log(`\nInstalled structure:`, colors.cyan);
369
+ for (const { name, path: p } of installedPaths) {
370
+ log(` ${p}/`, colors.dim);
371
+ log(` commands/ace/ Slash commands`, colors.dim);
372
+ log(` agents/ Agent definitions`, colors.dim);
373
+ log(` ${ACE_DIR_NAME}/`, colors.dim);
374
+ log(` templates/ Project & artifact templates`, colors.dim);
375
+ log(` utils/ Formatting & utility guides`, colors.dim);
376
+ log(` workflows/ Workflow definitions`, colors.dim);
377
+ }
378
+
443
379
  log(`\nAvailable commands:`, colors.cyan);
444
- log(` /ace:init Initialize ACE in your project`, colors.dim);
380
+ log(` /ace:help Check project status and next steps`, colors.dim);
445
381
  log(` /ace:plan-project Plan your project with epics and features`, colors.dim);
446
382
  log(` /ace:plan-epic Plan an epic with features and stories`, colors.dim);
447
383
  log(` /ace:plan-feature Plan a feature with stories`, colors.dim);
@@ -452,7 +388,7 @@ async function main() {
452
388
 
453
389
  log(`\nGet started:`, colors.cyan);
454
390
  log(` 1. Navigate to your project directory`, colors.dim);
455
- log(` 2. Run /ace:init to initialize ACE`, colors.dim);
391
+ log(` 2. Run /ace:help to initialize ACE`, colors.dim);
456
392
  log(` 3. Run /ace:plan-project to start planning\n`, colors.dim);
457
393
  }
458
394
 
@@ -0,0 +1,137 @@
1
+ ---
2
+ name: ace:execute-story
3
+ description: Execute a fully-planned story — loads AC + Technical Solution, creates execution plan via Plan Mode, implements (solo or agent teams), runs code review, updates state, and triggers wiki mapping
4
+ argument-hint: "story=<file-path|github-url> [--agent-teams-off]"
5
+ allowed-tools:
6
+ - Read
7
+ - Bash
8
+ - Write
9
+ - Edit
10
+ - AskUserQuestion
11
+ - Glob
12
+ - Grep
13
+ - Agent
14
+ - EnterPlanMode
15
+ - ExitPlanMode
16
+ ---
17
+
18
+ ```xml
19
+ <command>
20
+
21
+ <execution-time>
22
+ <runs-after>
23
+ <trigger>After /ace:plan-story — once a story has AC + Technical Solution</trigger>
24
+ <trigger>Anytime — to execute a fully-planned story specification</trigger>
25
+ </runs-after>
26
+ <use-when>
27
+ <condition>A story has both Acceptance Criteria AND Technical Solution sections</condition>
28
+ <condition>Story status is "Refined" (ready for implementation)</condition>
29
+ </use-when>
30
+ </execution-time>
31
+
32
+ <input>
33
+ <flags>
34
+ <flag name="--agent-teams-off">
35
+ Force solo execution mode regardless of agent_teams setting.
36
+ Overrides the agent_teams flag in settings.json.
37
+ Use when you want single-context execution even if teams are enabled.
38
+ </flag>
39
+ </flags>
40
+
41
+ <parameters>
42
+ <required>
43
+ <param name="story" type="file | github-url">
44
+ Story source — can be either:
45
+ - **File path**: Path to a fully-planned story markdown file
46
+ (must have AC + Technical Solution sections)
47
+ - **GitHub URL or issue number**: GitHub story reference
48
+ Must be a valid, accessible file or GitHub issue.
49
+ The story MUST have been through /ace:plan-story (has AC + Technical Solution).
50
+ </param>
51
+ </required>
52
+ </parameters>
53
+ </input>
54
+
55
+ <execution-context>
56
+ <execute-story-workflow>@~/.claude/agile-context-engineering/workflows/execute-story.xml</execute-story-workflow>
57
+ <story-template>@~/.claude/agile-context-engineering/templates/product/story.xml</story-template>
58
+ <questioning>@~/.claude/agile-context-engineering/utils/questioning.xml</questioning>
59
+ <ui-formatting>@~/.claude/agile-context-engineering/utils/ui-formatting.md</ui-formatting>
60
+ </execution-context>
61
+
62
+ <output>
63
+ <objective>
64
+ Take a fully-planned story (with AC + Technical Solution) and:
65
+ 1. Create an execution plan via Claude Code Plan Mode
66
+ 2. Execute the plan — solo or with Agent Teams
67
+ 3. Run code review (3-level verification, anti-pattern detection, coding standards)
68
+ 4. Present results to user for verification/approval
69
+ 5. Commit implementation (single commit after approval)
70
+ 6. Update state: story file, feature file, product backlog, GitHub
71
+ 7. Trigger wiki mapping (background) with tech debt integration
72
+
73
+ Two execution modes:
74
+ - **Solo Mode** (default or --agent-teams-off): Single context, plan mode → execute
75
+ - **Agent Teams Mode** (when enabled + plan recommends): Lead + teammates for parallel work
76
+ </objective>
77
+
78
+ <artifacts>
79
+ Story file updated with Summary &amp; State section and Wiki Updates section.
80
+ Feature file updated with story status.
81
+ Product backlog updated with story (and possibly feature) status.
82
+ Wiki documents updated/created based on implementation changes.
83
+ </artifacts>
84
+ </output>
85
+
86
+ <process>
87
+ **STRICT WORKFLOW EXECUTION — Follow the execute-story workflow STEP BY STEP.
88
+ Do NOT skip steps. Do NOT improvise. Do NOT start reading code or planning
89
+ until step 1 (init &amp; validate) is fully complete with the init command output parsed.**
90
+
91
+ Execute the execute-story workflow from
92
+ `@~/.claude/agile-context-engineering/workflows/execute-story.xml` end-to-end.
93
+
94
+ **MANDATORY FIRST ACTION: Run the init command (step 1.2) BEFORE doing anything else.
95
+ Do NOT read the story file manually. Do NOT explore the codebase. Do NOT start planning.
96
+ The init command validates the story and provides all paths and context needed.**
97
+
98
+ **CRITICAL REQUIREMENTS:**
99
+ - Story MUST have Acceptance Criteria — STOP if missing
100
+ - Story MUST have Technical Solution — STOP if missing
101
+ - NO intermediary commits during implementation
102
+ - ONE single commit per story after user approval (code + state + docs)
103
+ - Code review is MANDATORY — blockers must be fixed before approval
104
+ - Coding standards violations are BLOCKERS, not warnings
105
+ - Dead code and backwards-compatible shims must be DELETED
106
+ </process>
107
+
108
+ <example-usage>
109
+ ```
110
+ # Execute a story from a file path
111
+ /ace:execute-story \
112
+ story=.ace/artifacts/product/e1-auth/f3-oauth/s1-buttons/s1-buttons.md
113
+
114
+ # Execute from a GitHub issue
115
+ /ace:execute-story \
116
+ story=https://github.com/owner/repo/issues/95
117
+
118
+ # Force solo mode (no agent teams)
119
+ /ace:execute-story \
120
+ story=.ace/artifacts/product/e1-auth/f3-oauth/s1-buttons/s1-buttons.md \
121
+ --agent-teams-off
122
+
123
+ # With just an issue number
124
+ /ace:execute-story story=#95
125
+ ```
126
+ </example-usage>
127
+
128
+ <next-steps>
129
+ **After this command:**
130
+ - `/ace:execute-story story=...` — Execute the next story in the feature
131
+ - `/ace:review-story story=...` — Re-run code review (standalone)
132
+ - `/ace:plan-story story=...` — Plan the next story
133
+ - `/ace:help` — Check project status
134
+ </next-steps>
135
+
136
+ </command>
137
+ ```
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: ace:help
3
+ description: Check project initialization status and suggest next steps
4
+ argument-hint: ""
5
+ allowed-tools:
6
+ - Read
7
+ - Bash
8
+ - Write
9
+ - AskUserQuestion
10
+ ---
11
+
12
+ ```xml
13
+ <command>
14
+
15
+ <execution-time>
16
+ <runs-after>
17
+ <trigger>At any time — to check which ACE documents exist and what to do next</trigger>
18
+ <trigger>At the start of a new project — to see the initialization checklist</trigger>
19
+ </runs-after>
20
+ <use-when>
21
+ <condition>Starting a new project and want to see what needs to be set up</condition>
22
+ <condition>Returning to a project and want to check initialization status</condition>
23
+ <condition>Unsure which ACE command to run next</condition>
24
+ </use-when>
25
+ </execution-time>
26
+
27
+ <input>
28
+ <flags>
29
+ </flags>
30
+
31
+ <parameters>
32
+ <required>
33
+ </required>
34
+
35
+ <optional>
36
+ </optional>
37
+ </parameters>
38
+ </input>
39
+
40
+ <execution-context>
41
+ <help-workflow>@~/.claude/agile-context-engineering/workflows/help.xml</help-workflow>
42
+ <questioning>@~/.claude/agile-context-engineering/utils/questioning.xml</questioning>
43
+ <ui-formatting>@~/.claude/agile-context-engineering/utils/ui-formatting.md</ui-formatting>
44
+ </execution-context>
45
+
46
+ <output>
47
+ <objective>
48
+ Detect which ACE documents exist (product vision, system architecture, system structure,
49
+ coding standards, testing framework). Display a status dashboard showing what's done
50
+ and what's missing. Suggest the next command to run based on gaps.
51
+ </objective>
52
+
53
+ <artifacts>
54
+ - .ace/settings.json (created on first run if missing)
55
+ </artifacts>
56
+ </output>
57
+
58
+ <process>
59
+ Execute the help workflow from
60
+ `@~/.claude/agile-context-engineering/workflows/help.xml` end-to-end.
61
+ This is a lightweight state-check and routing workflow.
62
+
63
+ CRITICAL MANDATORY STEP — DO NOT SKIP:
64
+ Before displaying the status dashboard, you MUST run:
65
+ ```bash
66
+ node ~/.claude/agile-context-engineering/src/ace-tools.js sync-agent-teams --raw
67
+ ```
68
+ Then you MUST use `AskUserQuestion` to ask the user whether they want to
69
+ enable or disable Claude Code Agent Teams (experimental feature).
70
+ This step is NOT optional. You MUST present this question every time.
71
+
72
+ When the user chooses to enable or disable Agent Teams, you MUST run the
73
+ bash command — NEVER directly edit .ace/settings.json or .claude/settings.json:
74
+ ```bash
75
+ node ~/.claude/agile-context-engineering/src/ace-tools.js write-agent-teams true
76
+ ```
77
+ or
78
+ ```bash
79
+ node ~/.claude/agile-context-engineering/src/ace-tools.js write-agent-teams false
80
+ ```
81
+ The write-agent-teams command updates BOTH .ace/settings.json AND .claude/settings.json.
82
+ Direct file edits will cause the two files to go out of sync.
83
+ </process>
84
+
85
+ <next-steps>
86
+ **Specialized commands for each document:**
87
+ - `/ace:plan-product-vision` — Create or update the product vision
88
+ - `/ace:map-system` — Map codebase structure, architecture, and testing framework
89
+ - `/ace:init-coding-standards` — Generate tailored coding standards
90
+ </next-steps>
91
+
92
+ </command>
93
+ ```