agile-context-engineering 0.2.1 → 0.3.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 (51) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/LICENSE +51 -51
  3. package/README.md +324 -319
  4. package/agents/ace-research-synthesizer.md +228 -228
  5. package/agents/ace-technical-application-architect.md +28 -0
  6. package/agents/ace-wiki-mapper.md +445 -334
  7. package/agile-context-engineering/src/ace-tools.test.js +1089 -1089
  8. package/agile-context-engineering/templates/_command.md +53 -53
  9. package/agile-context-engineering/templates/_workflow.xml +16 -16
  10. package/agile-context-engineering/templates/product/product-backlog.xml +231 -231
  11. package/agile-context-engineering/templates/product/story-integration-solution.xml +1 -0
  12. package/agile-context-engineering/templates/product/story-wiki.xml +4 -0
  13. package/agile-context-engineering/templates/wiki/coding-standards.xml +38 -0
  14. package/agile-context-engineering/templates/wiki/decizions.xml +115 -115
  15. package/agile-context-engineering/templates/wiki/guide.xml +137 -137
  16. package/agile-context-engineering/templates/wiki/module-discovery.xml +174 -174
  17. package/agile-context-engineering/templates/wiki/pattern.xml +159 -159
  18. package/agile-context-engineering/templates/wiki/system-architecture.xml +254 -254
  19. package/agile-context-engineering/templates/wiki/system-cross-cutting.xml +197 -197
  20. package/agile-context-engineering/templates/wiki/system.xml +381 -381
  21. package/agile-context-engineering/templates/wiki/walkthrough.xml +255 -0
  22. package/agile-context-engineering/templates/wiki/wiki-readme.xml +297 -276
  23. package/agile-context-engineering/utils/questioning.xml +110 -110
  24. package/agile-context-engineering/workflows/execute-story.xml +1219 -1145
  25. package/agile-context-engineering/workflows/help.xml +540 -540
  26. package/agile-context-engineering/workflows/init-coding-standards.xml +386 -386
  27. package/agile-context-engineering/workflows/map-story.xml +1046 -797
  28. package/agile-context-engineering/workflows/map-subsystem.xml +2 -1
  29. package/agile-context-engineering/workflows/map-walkthrough.xml +457 -0
  30. package/agile-context-engineering/workflows/plan-feature.xml +1495 -1495
  31. package/agile-context-engineering/workflows/plan-story.xml +36 -1
  32. package/agile-context-engineering/workflows/research-integration-solution.xml +1 -0
  33. package/agile-context-engineering/workflows/research-story-wiki.xml +2 -1
  34. package/agile-context-engineering/workflows/research-technical-solution.xml +1 -0
  35. package/agile-context-engineering/workflows/review-story.xml +281 -281
  36. package/agile-context-engineering/workflows/update.xml +238 -0
  37. package/bin/install.js +126 -7
  38. package/commands/ace/execute-story.md +1 -0
  39. package/commands/ace/help.md +93 -93
  40. package/commands/ace/init-coding-standards.md +83 -83
  41. package/commands/ace/map-story.md +165 -156
  42. package/commands/ace/map-subsystem.md +140 -138
  43. package/commands/ace/map-system.md +92 -92
  44. package/commands/ace/map-walkthrough.md +127 -0
  45. package/commands/ace/plan-feature.md +89 -89
  46. package/commands/ace/plan-story.md +15 -1
  47. package/commands/ace/review-story.md +109 -109
  48. package/commands/ace/update.md +56 -0
  49. package/hooks/ace-check-update.js +62 -0
  50. package/hooks/ace-statusline.js +89 -0
  51. package/package.json +5 -3
@@ -0,0 +1,238 @@
1
+ <workflow>
2
+
3
+ <purpose>
4
+ Check for ACE updates via npm, display changelog for versions between installed and latest,
5
+ obtain user confirmation, and execute clean installation with cache clearing.
6
+ </purpose>
7
+
8
+ <mandatory-context>
9
+ Read all files referenced by the invoking prompt's execution-context before starting.
10
+ </mandatory-context>
11
+
12
+ <process>
13
+
14
+ <!-- ══════════════════════════════════════════════════════════════════ -->
15
+ <!-- STEP 1: DETECT INSTALLATION -->
16
+ <!-- ══════════════════════════════════════════════════════════════════ -->
17
+
18
+ <step name="detect-installation" order="1">
19
+ Detect whether ACE is installed locally or globally, and for which runtime.
20
+
21
+ ```bash
22
+ if [ -f "./.claude/agile-context-engineering/VERSION" ]; then
23
+ echo "SCOPE=local"
24
+ echo "RUNTIME=claude"
25
+ echo "VERSION=$(cat ./.claude/agile-context-engineering/VERSION)"
26
+ elif [ -f "$HOME/.claude/agile-context-engineering/VERSION" ]; then
27
+ echo "SCOPE=global"
28
+ echo "RUNTIME=claude"
29
+ echo "VERSION=$(cat $HOME/.claude/agile-context-engineering/VERSION)"
30
+ elif [ -f "./.opencode/agile-context-engineering/VERSION" ]; then
31
+ echo "SCOPE=local"
32
+ echo "RUNTIME=opencode"
33
+ echo "VERSION=$(cat ./.opencode/agile-context-engineering/VERSION)"
34
+ elif [ -f "$HOME/.opencode/agile-context-engineering/VERSION" ]; then
35
+ echo "SCOPE=global"
36
+ echo "RUNTIME=opencode"
37
+ echo "VERSION=$(cat $HOME/.opencode/agile-context-engineering/VERSION)"
38
+ else
39
+ echo "SCOPE=unknown"
40
+ echo "RUNTIME=claude"
41
+ echo "VERSION=0.0.0"
42
+ fi
43
+ ```
44
+
45
+ Parse SCOPE, RUNTIME, and VERSION from the output.
46
+
47
+ **If SCOPE is "unknown":**
48
+ ```
49
+ ## ACE Update
50
+
51
+ **Installed version:** Unknown
52
+
53
+ Your installation doesn't include version tracking.
54
+ Running fresh install...
55
+ ```
56
+
57
+ Proceed with VERSION=0.0.0.
58
+ </step>
59
+
60
+ <!-- ══════════════════════════════════════════════════════════════════ -->
61
+ <!-- STEP 2: CHECK LATEST VERSION -->
62
+ <!-- ══════════════════════════════════════════════════════════════════ -->
63
+
64
+ <step name="check-latest-version" order="2">
65
+ Check npm for the latest published version:
66
+
67
+ ```bash
68
+ npm view agile-context-engineering version 2>/dev/null
69
+ ```
70
+
71
+ **If npm check fails:**
72
+ ```
73
+ Couldn't check for updates (offline or npm unavailable).
74
+
75
+ To update manually: `npx agile-context-engineering --claude --global`
76
+ ```
77
+ Exit.
78
+ </step>
79
+
80
+ <!-- ══════════════════════════════════════════════════════════════════ -->
81
+ <!-- STEP 3: COMPARE VERSIONS -->
82
+ <!-- ══════════════════════════════════════════════════════════════════ -->
83
+
84
+ <step name="compare-versions" order="3">
85
+ Compare installed vs latest.
86
+
87
+ **If installed == latest:**
88
+ ```
89
+ ## ACE Update
90
+
91
+ **Installed:** X.Y.Z
92
+ **Latest:** X.Y.Z
93
+
94
+ You're already on the latest version.
95
+ ```
96
+ Exit.
97
+
98
+ **If installed > latest:**
99
+ ```
100
+ ## ACE Update
101
+
102
+ **Installed:** X.Y.Z
103
+ **Latest:** A.B.C
104
+
105
+ You're ahead of the latest release (development version?).
106
+ ```
107
+ Exit.
108
+ </step>
109
+
110
+ <!-- ══════════════════════════════════════════════════════════════════ -->
111
+ <!-- STEP 4: FETCH AND SHOW CHANGELOG -->
112
+ <!-- ══════════════════════════════════════════════════════════════════ -->
113
+
114
+ <step name="show-changelog-and-confirm" order="4">
115
+ If update is available, fetch the changelog and show what's new BEFORE updating.
116
+
117
+ 1. **Try local changelog first** — check if CHANGELOG.md exists in the installation:
118
+
119
+ For SCOPE=local: `./.claude/agile-context-engineering/CHANGELOG.md`
120
+ For SCOPE=global: `~/.claude/agile-context-engineering/CHANGELOG.md`
121
+ (substitute `.opencode` for Crush runtime)
122
+
123
+ If found, read it directly.
124
+
125
+ 2. **Fall back to GitHub** — if local file not found, use WebFetch to fetch:
126
+ `https://raw.githubusercontent.com/Quantarcane/ACE/main/CHANGELOG.md`
127
+
128
+ If fetch fails, skip changelog display and proceed without it.
129
+
130
+ 3. **Extract relevant entries** — from the fetched/read content, extract all
131
+ changelog sections between the installed version and the latest version.
132
+
133
+ Look for lines matching `## [X.Y.Z]` and extract everything from
134
+ `## [{latest_version}]` down to (but not including) `## [{installed_version}]`.
135
+
136
+ 4. **Display preview and ask for confirmation:**
137
+
138
+ ```
139
+ ## ACE Update Available
140
+
141
+ **Installed:** {installed_version}
142
+ **Latest:** {latest_version}
143
+
144
+ ### What's New
145
+ ────────────────────────────────────────────────────────────
146
+
147
+ {extracted changelog entries}
148
+
149
+ ────────────────────────────────────────────────────────────
150
+
151
+ The installer performs a clean install of ACE folders:
152
+ - `commands/ace/` will be wiped and replaced
153
+ - `agile-context-engineering/` will be wiped and replaced
154
+ - `agents/ace-*` files will be replaced
155
+
156
+ Your custom files are preserved:
157
+ - Custom commands not in `commands/ace/`
158
+ - Custom agents not prefixed with `ace-`
159
+ - Your CLAUDE.md files
160
+ - Your .ace/ project artifacts
161
+ ```
162
+
163
+ Use AskUserQuestion:
164
+ - Question: "Proceed with update?"
165
+ - Options:
166
+ - "Yes, update now"
167
+ - "No, cancel"
168
+
169
+ **If user cancels:** Exit.
170
+ </step>
171
+
172
+ <!-- ══════════════════════════════════════════════════════════════════ -->
173
+ <!-- STEP 5: RUN UPDATE -->
174
+ <!-- ══════════════════════════════════════════════════════════════════ -->
175
+
176
+ <step name="run-update" order="5">
177
+ Run the update using detected SCOPE and RUNTIME from step 1.
178
+
179
+ Build the command: `npx agile-context-engineering --{RUNTIME} --{SCOPE}`
180
+
181
+ Examples:
182
+ - Global Claude: `npx agile-context-engineering --claude --global`
183
+ - Local Claude: `npx agile-context-engineering --claude --local`
184
+ - Global Crush: `npx agile-context-engineering --opencode --global`
185
+ - Local Crush: `npx agile-context-engineering --opencode --local`
186
+
187
+ If SCOPE was "unknown", default to `--claude --global`.
188
+
189
+ Capture output. If install fails, show error and exit.
190
+
191
+ Clear the update cache so statusline indicator disappears:
192
+
193
+ **If SCOPE is "local":**
194
+ ```bash
195
+ rm -f ./.claude/cache/ace-update-check.json
196
+ ```
197
+
198
+ **If SCOPE is "global":**
199
+ ```bash
200
+ rm -f "$HOME/.claude/cache/ace-update-check.json"
201
+ ```
202
+
203
+ For Crush runtime, substitute `.opencode` for `.claude` in the cache path.
204
+ </step>
205
+
206
+ <!-- ══════════════════════════════════════════════════════════════════ -->
207
+ <!-- STEP 6: DISPLAY RESULT -->
208
+ <!-- ══════════════════════════════════════════════════════════════════ -->
209
+
210
+ <step name="display-result" order="6">
211
+ Format completion message (changelog was already shown in confirmation step):
212
+
213
+ ```
214
+ ============================================================
215
+ ACE Updated: v{old} -> v{new}
216
+ ============================================================
217
+
218
+ Restart Claude Code to pick up the new commands.
219
+
220
+ View full changelog: https://github.com/Quantarcane/ACE/blob/main/CHANGELOG.md
221
+ ```
222
+ </step>
223
+
224
+ </process>
225
+
226
+ <success_criteria>
227
+ <check>Installed version detected correctly (local/global, claude/crush)</check>
228
+ <check>Latest version checked via npm</check>
229
+ <check>Update skipped if already current</check>
230
+ <check>Changelog fetched and displayed BEFORE update</check>
231
+ <check>Clean install warning shown</check>
232
+ <check>User confirmation obtained before update</check>
233
+ <check>Update executed with correct --runtime and --scope flags</check>
234
+ <check>Update cache cleared</check>
235
+ <check>Restart reminder shown</check>
236
+ </success_criteria>
237
+
238
+ </workflow>
package/bin/install.js CHANGED
@@ -5,7 +5,7 @@ const path = require('path');
5
5
  const readline = require('readline');
6
6
  const os = require('os');
7
7
 
8
- const VERSION = '0.1.0';
8
+ const VERSION = require('../package.json').version;
9
9
 
10
10
  // ANSI color codes
11
11
  const colors = {
@@ -67,12 +67,31 @@ function parseArgs() {
67
67
  all: args.includes('--all'),
68
68
  global: args.includes('--global'),
69
69
  local: args.includes('--local'),
70
+ forceStatusline: args.includes('--force-statusline'),
70
71
  help: args.includes('--help') || args.includes('-h'),
71
72
  version: args.includes('--version') || args.includes('-v'),
72
73
  };
73
74
  return flags;
74
75
  }
75
76
 
77
+ // Read or create settings.json
78
+ function readSettings(settingsPath) {
79
+ if (fs.existsSync(settingsPath)) {
80
+ try {
81
+ return JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
82
+ } catch (e) {
83
+ return {};
84
+ }
85
+ }
86
+ return {};
87
+ }
88
+
89
+ // Build hook command with proper quoting for the target directory
90
+ function buildHookCommand(targetDir, hookFile) {
91
+ const hookPath = path.join(targetDir, 'hooks', hookFile);
92
+ return `node "${hookPath.replace(/\\/g, '/')}"`;
93
+ }
94
+
76
95
  function showHelp() {
77
96
  log(`
78
97
  Usage: npx agile-context-engineering [options]
@@ -82,9 +101,10 @@ Options:
82
101
  --opencode Install for Crush (formerly OpenCode)
83
102
  --all Install for all supported runtimes
84
103
  --global Install globally (~/.claude, ~/.opencode)
85
- --local Install locally (.claude, .opencode)
86
- -h, --help Show this help message
87
- -v, --version Show version number
104
+ --local Install locally (.claude, .opencode)
105
+ --force-statusline Replace existing statusline configuration
106
+ -h, --help Show this help message
107
+ -v, --version Show version number
88
108
 
89
109
  Examples:
90
110
  npx agile-context-engineering # Interactive installation
@@ -278,6 +298,34 @@ function installForRuntime(runtime, scope, packageDir) {
278
298
  log(` ✓ Tools installed`, colors.green);
279
299
  }
280
300
 
301
+ // Copy hooks
302
+ const srcHooks = path.join(packageDir, 'hooks');
303
+ const hooksPath = path.join(basePath, 'hooks');
304
+ if (fs.existsSync(srcHooks)) {
305
+ // Only copy ace-* hook files, preserve non-ACE hooks (e.g. GSD)
306
+ if (!fs.existsSync(hooksPath)) {
307
+ fs.mkdirSync(hooksPath, { recursive: true });
308
+ }
309
+ for (const f of fs.readdirSync(srcHooks)) {
310
+ if (f.startsWith('ace-')) {
311
+ fs.copyFileSync(path.join(srcHooks, f), path.join(hooksPath, f));
312
+ }
313
+ }
314
+ log(` ✓ Hooks installed`, colors.green);
315
+ }
316
+
317
+ // Write VERSION file for update checking
318
+ const versionFile = path.join(acePath, 'VERSION');
319
+ fs.writeFileSync(versionFile, VERSION, 'utf-8');
320
+
321
+ // Copy CHANGELOG.md
322
+ const changelogSrc = path.join(packageDir, 'CHANGELOG.md');
323
+ const changelogDest = path.join(acePath, 'CHANGELOG.md');
324
+ if (fs.existsSync(changelogSrc)) {
325
+ fs.copyFileSync(changelogSrc, changelogDest);
326
+ log(` ✓ CHANGELOG.md installed`, colors.green);
327
+ }
328
+
281
329
  return basePath;
282
330
  }
283
331
 
@@ -355,21 +403,92 @@ async function main() {
355
403
  installedPaths.push({ runtime, name: RUNTIMES[runtime].name, path: installedPath });
356
404
  }
357
405
 
406
+ // Configure hooks and statusline in settings.json (Claude Code only, not Crush)
407
+ for (const { runtime, path: basePath } of installedPaths) {
408
+ if (runtime !== 'claude') continue;
409
+
410
+ const settingsPath = path.join(basePath, 'settings.json');
411
+ const settings = readSettings(settingsPath);
412
+
413
+ const statuslineCommand = buildHookCommand(basePath, 'ace-statusline.js');
414
+ const updateCheckCommand = buildHookCommand(basePath, 'ace-check-update.js');
415
+
416
+ // Register SessionStart hook for background update checking
417
+ if (!settings.hooks) settings.hooks = {};
418
+ if (!settings.hooks.SessionStart) settings.hooks.SessionStart = [];
419
+
420
+ const hasAceUpdateHook = settings.hooks.SessionStart.some(entry =>
421
+ entry.hooks && entry.hooks.some(h => h.command && h.command.includes('ace-check-update'))
422
+ );
423
+ if (!hasAceUpdateHook) {
424
+ settings.hooks.SessionStart.push({
425
+ hooks: [{ type: 'command', command: updateCheckCommand }]
426
+ });
427
+ log(` ✓ Configured update check hook`, colors.green);
428
+ }
429
+
430
+ // Handle statusline configuration
431
+ const hasExisting = settings.statusLine != null;
432
+ const isAceStatusline = hasExisting && settings.statusLine.command &&
433
+ settings.statusLine.command.includes('ace-statusline');
434
+
435
+ if (!hasExisting || flags.forceStatusline) {
436
+ // No existing statusline or force flag — install ACE statusline
437
+ settings.statusLine = { type: 'command', command: statuslineCommand };
438
+ log(` ✓ Configured statusline`, colors.green);
439
+ } else if (isAceStatusline) {
440
+ // Already ACE statusline — update path
441
+ settings.statusLine = { type: 'command', command: statuslineCommand };
442
+ log(` ✓ Updated statusline`, colors.green);
443
+ } else if (isInteractive) {
444
+ // Existing non-ACE statusline in interactive mode — ask user
445
+ const existingCmd = settings.statusLine.command || settings.statusLine.url || '(custom)';
446
+ log(`\n ⚠ Existing statusline detected`, colors.yellow);
447
+ log(` Current: ${existingCmd}`, colors.dim);
448
+ log(`\n ACE statusline shows:`, colors.cyan);
449
+ log(` • Model name`, colors.dim);
450
+ log(` • Current task (from todo list)`, colors.dim);
451
+ log(` • Context window usage (color-coded)`, colors.dim);
452
+ log(` • Update notifications`, colors.dim);
453
+
454
+ const rl = createPrompt();
455
+ const choice = await ask(rl, '\n What would you like to do?', [
456
+ { label: 'Keep existing statusline', value: 'keep' },
457
+ { label: 'Replace with ACE statusline', value: 'replace' },
458
+ ]);
459
+ rl.close();
460
+
461
+ if (choice === 'replace') {
462
+ settings.statusLine = { type: 'command', command: statuslineCommand };
463
+ log(` ✓ Configured statusline`, colors.green);
464
+ } else {
465
+ log(` ⚠ Skipping statusline (kept existing)`, colors.yellow);
466
+ }
467
+ } else {
468
+ // Non-interactive with existing statusline — skip
469
+ log(` ⚠ Skipping statusline (already configured, use --force-statusline to replace)`, colors.yellow);
470
+ }
471
+
472
+ // Write settings
473
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
474
+ }
475
+
358
476
  // Show success message
359
477
  log(`\n${'═'.repeat(50)}`, colors.green);
360
478
  log(` ACE installed successfully!`, colors.green + colors.bright);
361
479
  log(`${'═'.repeat(50)}`, colors.green);
362
480
 
363
481
  log(`\nInstalled locations:`, colors.cyan);
364
- for (const { name, path: p } of installedPaths) {
365
- log(` ${name}: ${p}`, colors.dim);
482
+ for (const { name: runtimeName, path: p } of installedPaths) {
483
+ log(` ${runtimeName}: ${p}`, colors.dim);
366
484
  }
367
485
 
368
486
  log(`\nInstalled structure:`, colors.cyan);
369
- for (const { name, path: p } of installedPaths) {
487
+ for (const { path: p } of installedPaths) {
370
488
  log(` ${p}/`, colors.dim);
371
489
  log(` commands/ace/ Slash commands`, colors.dim);
372
490
  log(` agents/ Agent definitions`, colors.dim);
491
+ log(` hooks/ Statusline & update hooks`, colors.dim);
373
492
  log(` ${ACE_DIR_NAME}/`, colors.dim);
374
493
  log(` templates/ Project & artifact templates`, colors.dim);
375
494
  log(` utils/ Formatting & utility guides`, colors.dim);
@@ -55,6 +55,7 @@ allowed-tools:
55
55
  <execution-context>
56
56
  <execute-story-workflow>@~/.claude/agile-context-engineering/workflows/execute-story.xml</execute-story-workflow>
57
57
  <story-template>@~/.claude/agile-context-engineering/templates/product/story.xml</story-template>
58
+ <walkthrough-template>@~/.claude/agile-context-engineering/templates/wiki/walkthrough.xml</walkthrough-template>
58
59
  <questioning>@~/.claude/agile-context-engineering/utils/questioning.xml</questioning>
59
60
  <ui-formatting>@~/.claude/agile-context-engineering/utils/ui-formatting.md</ui-formatting>
60
61
  </execution-context>
@@ -1,93 +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
- ```
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
+ ```