agile-context-engineering 0.5.0 → 0.5.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 (102) hide show
  1. package/.claude-plugin/marketplace.json +18 -0
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +7 -1
  4. package/README.md +16 -12
  5. package/agents/ace-code-discovery-analyst.md +245 -245
  6. package/agents/ace-code-integration-analyst.md +248 -248
  7. package/agents/ace-code-reviewer.md +375 -375
  8. package/agents/ace-product-owner.md +365 -361
  9. package/agents/ace-project-researcher.md +606 -606
  10. package/agents/ace-technical-application-architect.md +315 -315
  11. package/bin/install.js +587 -173
  12. package/hooks/ace-check-update.js +15 -14
  13. package/hooks/ace-statusline.js +30 -12
  14. package/hooks/hooks.json +14 -0
  15. package/package.json +3 -2
  16. package/shared/lib/ace-core.js +53 -0
  17. package/shared/lib/ace-core.test.js +308 -308
  18. package/shared/lib/ace-story.test.js +250 -250
  19. package/skills/execute-story/SKILL.md +116 -110
  20. package/skills/execute-story/script.js +13 -27
  21. package/skills/execute-story/script.test.js +261 -261
  22. package/skills/execute-story/story-template.xml +451 -451
  23. package/skills/execute-story/workflow.xml +3 -1
  24. package/skills/help/SKILL.md +71 -69
  25. package/skills/help/script.js +32 -35
  26. package/skills/help/script.test.js +183 -183
  27. package/skills/help/workflow.xml +14 -3
  28. package/skills/init-coding-standards/SKILL.md +91 -72
  29. package/skills/init-coding-standards/coding-standards-template.xml +531 -531
  30. package/skills/init-coding-standards/script.js +50 -59
  31. package/skills/init-coding-standards/script.test.js +70 -70
  32. package/skills/init-coding-standards/workflow.xml +1 -1
  33. package/skills/map-cross-cutting/SKILL.md +126 -89
  34. package/skills/map-cross-cutting/workflow.xml +1 -1
  35. package/skills/map-guide/SKILL.md +126 -89
  36. package/skills/map-guide/workflow.xml +1 -1
  37. package/skills/map-pattern/SKILL.md +125 -89
  38. package/skills/map-pattern/workflow.xml +1 -1
  39. package/skills/map-story/SKILL.md +180 -127
  40. package/skills/map-story/templates/tech-debt-index.xml +125 -125
  41. package/skills/map-story/workflow.xml +2 -2
  42. package/skills/map-subsystem/SKILL.md +155 -111
  43. package/skills/map-subsystem/script.js +51 -60
  44. package/skills/map-subsystem/script.test.js +68 -68
  45. package/skills/map-subsystem/templates/subsystem-architecture.xml +343 -343
  46. package/skills/map-subsystem/templates/subsystem-structure.xml +234 -234
  47. package/skills/map-subsystem/workflow.xml +1173 -1173
  48. package/skills/map-sys-doc/SKILL.md +125 -90
  49. package/skills/map-sys-doc/workflow.xml +1 -1
  50. package/skills/map-system/SKILL.md +103 -85
  51. package/skills/map-system/script.js +75 -84
  52. package/skills/map-system/script.test.js +73 -73
  53. package/skills/map-system/templates/system-structure.xml +177 -177
  54. package/skills/map-system/templates/testing-framework.xml +283 -283
  55. package/skills/map-system/workflow.xml +667 -667
  56. package/skills/map-walkthrough/SKILL.md +140 -92
  57. package/skills/map-walkthrough/workflow.xml +457 -457
  58. package/skills/plan-backlog/SKILL.md +93 -75
  59. package/skills/plan-backlog/script.js +121 -136
  60. package/skills/plan-backlog/script.test.js +83 -83
  61. package/skills/plan-backlog/workflow.xml +1348 -1348
  62. package/skills/plan-feature/SKILL.md +99 -76
  63. package/skills/plan-feature/feature-template.xml +361 -361
  64. package/skills/plan-feature/script.js +131 -148
  65. package/skills/plan-feature/script.test.js +80 -80
  66. package/skills/plan-feature/workflow.xml +1 -1
  67. package/skills/plan-product-vision/SKILL.md +91 -75
  68. package/skills/plan-product-vision/product-vision-template.xml +227 -227
  69. package/skills/plan-product-vision/script.js +51 -60
  70. package/skills/plan-product-vision/script.test.js +69 -69
  71. package/skills/plan-product-vision/workflow.xml +337 -337
  72. package/skills/plan-story/SKILL.md +125 -102
  73. package/skills/plan-story/script.js +18 -49
  74. package/skills/plan-story/story-template.xml +8 -1
  75. package/skills/plan-story/workflow.xml +17 -1
  76. package/skills/research-external-solution/SKILL.md +120 -107
  77. package/skills/research-external-solution/external-solution-template.xml +832 -832
  78. package/skills/research-external-solution/script.js +229 -238
  79. package/skills/research-external-solution/script.test.js +134 -134
  80. package/skills/research-external-solution/workflow.xml +657 -657
  81. package/skills/research-integration-solution/SKILL.md +121 -98
  82. package/skills/research-integration-solution/integration-solution-template.xml +1015 -1015
  83. package/skills/research-integration-solution/script.js +223 -231
  84. package/skills/research-integration-solution/script.test.js +134 -134
  85. package/skills/research-integration-solution/workflow.xml +711 -711
  86. package/skills/research-story-wiki/SKILL.md +101 -92
  87. package/skills/research-story-wiki/script.js +223 -231
  88. package/skills/research-story-wiki/script.test.js +138 -138
  89. package/skills/research-story-wiki/story-wiki-template.xml +194 -194
  90. package/skills/research-story-wiki/workflow.xml +473 -473
  91. package/skills/research-technical-solution/SKILL.md +131 -103
  92. package/skills/research-technical-solution/script.js +223 -231
  93. package/skills/research-technical-solution/script.test.js +134 -134
  94. package/skills/research-technical-solution/technical-solution-template.xml +1025 -1025
  95. package/skills/research-technical-solution/workflow.xml +761 -761
  96. package/skills/review-story/SKILL.md +99 -100
  97. package/skills/review-story/script.js +8 -16
  98. package/skills/review-story/script.test.js +169 -169
  99. package/skills/review-story/story-template.xml +451 -451
  100. package/skills/review-story/workflow.xml +1 -1
  101. package/skills/update/SKILL.md +65 -53
  102. package/skills/update/workflow.xml +21 -5
@@ -1,59 +1,50 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * init-coding-standards skill script — Entry point for ace-tools operations
5
- * needed by the init-coding-standards skill.
6
- *
7
- * Subcommands:
8
- * init [args] Environment detection for init-coding-standards workflow
9
- *
10
- * Usage: node script.js <subcommand> [args] [--raw]
11
- */
12
-
13
- const {
14
- loadConfig, pathExists,
15
- detectBrownfieldStatus, output, error,
16
- } = require('../../shared/lib/ace-core');
17
-
18
- // ─── CLI Dispatch ────────────────────────────────────────────────────────────
19
-
20
- const cwd = process.cwd();
21
- const args = process.argv.slice(2);
22
- const raw = args.includes('--raw');
23
- const cmd = args[0];
24
-
25
- switch (cmd) {
26
- case 'init':
27
- cmdInit(cwd, raw, args.slice(1).filter(a => a !== '--raw'));
28
- break;
29
- default:
30
- error(`Unknown command: ${cmd}\nAvailable: init`);
31
- }
32
-
33
- // ─── Init: Coding Standards ─────────────────────────────────────────────────
34
-
35
- function cmdInit(cwd, raw) {
36
- const config = loadConfig(cwd);
37
- const brownfield = detectBrownfieldStatus(cwd);
38
-
39
- const result = {
40
- // Config
41
- commit_docs: config.commit_docs,
42
-
43
- // Brownfield detection
44
- ...brownfield,
45
-
46
- // Existing coding standards
47
- has_coding_standards: pathExists(cwd, '.docs/wiki/system-wide/coding-standards.md'),
48
- wiki_dir_exists: pathExists(cwd, '.docs/wiki/system-wide'),
49
-
50
- // Existing wiki context (useful for cross-referencing)
51
- has_system_architecture: pathExists(cwd, '.docs/wiki/system-wide/system-architecture.md'),
52
- has_system_structure: pathExists(cwd, '.docs/wiki/system-wide/system-structure.md'),
53
-
54
- // Git state
55
- has_git: pathExists(cwd, '.git'),
56
- };
57
-
58
- output(result, raw);
59
- }
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * init-coding-standards skill script — Entry point for ace-tools operations
5
+ * needed by the init-coding-standards skill.
6
+ *
7
+ * Subcommands:
8
+ * init [args] Environment detection for init-coding-standards workflow
9
+ *
10
+ * Usage: node script.js <subcommand> [args] [--raw]
11
+ */
12
+
13
+ const {
14
+ loadConfig, pathExists,
15
+ detectBrownfieldStatus, output, error, runSkillScript,
16
+ } = require('../../shared/lib/ace-core');
17
+
18
+ // ─── CLI Dispatch ────────────────────────────────────────────────────────────
19
+
20
+ runSkillScript({
21
+ init: cmdInit,
22
+ });
23
+
24
+ // ─── Init: Coding Standards ─────────────────────────────────────────────────
25
+
26
+ function cmdInit(cwd, raw, args, parsed) {
27
+ const config = loadConfig(cwd);
28
+ const brownfield = detectBrownfieldStatus(cwd);
29
+
30
+ const result = {
31
+ // Config
32
+ commit_docs: config.commit_docs,
33
+
34
+ // Brownfield detection
35
+ ...brownfield,
36
+
37
+ // Existing coding standards
38
+ has_coding_standards: pathExists(cwd, '.docs/wiki/system-wide/coding-standards.md'),
39
+ wiki_dir_exists: pathExists(cwd, '.docs/wiki/system-wide'),
40
+
41
+ // Existing wiki context (useful for cross-referencing)
42
+ has_system_architecture: pathExists(cwd, '.docs/wiki/system-wide/system-architecture.md'),
43
+ has_system_structure: pathExists(cwd, '.docs/wiki/system-wide/system-structure.md'),
44
+
45
+ // Git state
46
+ has_git: pathExists(cwd, '.git'),
47
+ };
48
+
49
+ output(result, raw);
50
+ }
@@ -1,70 +1,70 @@
1
- const { describe, it, before, after } = require('node:test');
2
- const assert = require('node:assert');
3
- const { execSync } = require('child_process');
4
- const fs = require('fs');
5
- const path = require('path');
6
- const os = require('os');
7
-
8
- const SCRIPT = path.join(__dirname, 'script.js');
9
-
10
- function createTestProject() {
11
- const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ace-test-'));
12
-
13
- const aceDir = path.join(tmpDir, '.ace');
14
- fs.mkdirSync(aceDir, { recursive: true });
15
- fs.writeFileSync(path.join(aceDir, 'config.json'), JSON.stringify({
16
- version: '0.1.0',
17
- projectName: 'test-project',
18
- model_profile: 'quality',
19
- commit_docs: true,
20
- github: { enabled: false },
21
- }, null, 2));
22
-
23
- return tmpDir;
24
- }
25
-
26
- function runScript(subcommand, args, cwd) {
27
- return execSync(`node "${SCRIPT}" ${subcommand} ${args}`, {
28
- cwd,
29
- encoding: 'utf-8',
30
- timeout: 10000,
31
- });
32
- }
33
-
34
- function cleanup(tmpDir) {
35
- fs.rmSync(tmpDir, { recursive: true, force: true });
36
- }
37
-
38
- describe('init-coding-standards script', () => {
39
- it('errors on unknown command', () => {
40
- assert.throws(() => {
41
- execSync(`node "${SCRIPT}" bogus`, { encoding: 'utf-8', stdio: 'pipe' });
42
- });
43
- });
44
-
45
- describe('init', () => {
46
- let tmpDir;
47
-
48
- before(() => { tmpDir = createTestProject(); });
49
- after(() => { cleanup(tmpDir); });
50
-
51
- it('init returns valid JSON', () => {
52
- const result = JSON.parse(runScript('init', '', tmpDir));
53
- assert.ok(typeof result === 'object');
54
- assert.strictEqual(typeof result.commit_docs, 'boolean');
55
- assert.strictEqual(typeof result.has_git, 'boolean');
56
- assert.strictEqual(typeof result.is_brownfield, 'boolean');
57
- assert.strictEqual(typeof result.has_coding_standards, 'boolean');
58
- assert.strictEqual(typeof result.wiki_dir_exists, 'boolean');
59
- assert.strictEqual(typeof result.has_system_architecture, 'boolean');
60
- assert.strictEqual(typeof result.has_system_structure, 'boolean');
61
- });
62
-
63
- it('returns brownfield detection fields', () => {
64
- const result = JSON.parse(runScript('init', '', tmpDir));
65
- assert.strictEqual(typeof result.is_brownfield, 'boolean');
66
- assert.strictEqual(typeof result.is_greenfield, 'boolean');
67
- assert.strictEqual(result.is_brownfield, !result.is_greenfield);
68
- });
69
- });
70
- });
1
+ const { describe, it, before, after } = require('node:test');
2
+ const assert = require('node:assert');
3
+ const { execSync } = require('child_process');
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const os = require('os');
7
+
8
+ const SCRIPT = path.join(__dirname, 'script.js');
9
+
10
+ function createTestProject() {
11
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ace-test-'));
12
+
13
+ const aceDir = path.join(tmpDir, '.ace');
14
+ fs.mkdirSync(aceDir, { recursive: true });
15
+ fs.writeFileSync(path.join(aceDir, 'config.json'), JSON.stringify({
16
+ version: '0.1.0',
17
+ projectName: 'test-project',
18
+ model_profile: 'quality',
19
+ commit_docs: true,
20
+ github: { enabled: false },
21
+ }, null, 2));
22
+
23
+ return tmpDir;
24
+ }
25
+
26
+ function runScript(subcommand, args, cwd) {
27
+ return execSync(`node "${SCRIPT}" ${subcommand} ${args}`, {
28
+ cwd,
29
+ encoding: 'utf-8',
30
+ timeout: 10000,
31
+ });
32
+ }
33
+
34
+ function cleanup(tmpDir) {
35
+ fs.rmSync(tmpDir, { recursive: true, force: true });
36
+ }
37
+
38
+ describe('init-coding-standards script', () => {
39
+ it('errors on unknown command', () => {
40
+ assert.throws(() => {
41
+ execSync(`node "${SCRIPT}" bogus`, { encoding: 'utf-8', stdio: 'pipe' });
42
+ });
43
+ });
44
+
45
+ describe('init', () => {
46
+ let tmpDir;
47
+
48
+ before(() => { tmpDir = createTestProject(); });
49
+ after(() => { cleanup(tmpDir); });
50
+
51
+ it('init returns valid JSON', () => {
52
+ const result = JSON.parse(runScript('init', '', tmpDir));
53
+ assert.ok(typeof result === 'object');
54
+ assert.strictEqual(typeof result.commit_docs, 'boolean');
55
+ assert.strictEqual(typeof result.has_git, 'boolean');
56
+ assert.strictEqual(typeof result.is_brownfield, 'boolean');
57
+ assert.strictEqual(typeof result.has_coding_standards, 'boolean');
58
+ assert.strictEqual(typeof result.wiki_dir_exists, 'boolean');
59
+ assert.strictEqual(typeof result.has_system_architecture, 'boolean');
60
+ assert.strictEqual(typeof result.has_system_structure, 'boolean');
61
+ });
62
+
63
+ it('returns brownfield detection fields', () => {
64
+ const result = JSON.parse(runScript('init', '', tmpDir));
65
+ assert.strictEqual(typeof result.is_brownfield, 'boolean');
66
+ assert.strictEqual(typeof result.is_greenfield, 'boolean');
67
+ assert.strictEqual(result.is_brownfield, !result.is_greenfield);
68
+ });
69
+ });
70
+ });
@@ -10,7 +10,7 @@
10
10
  </purpose>
11
11
 
12
12
  <mandatory-context>
13
- Read all files referenced by the invoking command's execution-context before starting.
13
+ All supporting resource files are auto-loaded in the skill prompt above. Do NOT re-read them.
14
14
  Also read any document or text passed as parameter ($ARGUMENTS) in the invoking command.
15
15
  </mandatory-context>
16
16
 
@@ -1,89 +1,126 @@
1
- ---
2
- name: map-cross-cutting
3
- description: Create or update a cross-cutting concern doc in .docs/wiki/subsystems/[name]/cross-cutting/ — shared infrastructure spanning multiple systems
4
- argument-hint: "text='Event system used across all drawing components' subsystem='qarc-charts-v2' commits=3"
5
- disable-model-invocation: true
6
- allowed-tools:
7
- - Read
8
- - Bash
9
- - Glob
10
- - Grep
11
- - Write
12
- - Edit
13
- - AskUserQuestion
14
- model: opus
15
- effort: max
16
- context: fork
17
- agent: ace-wiki-mapper
18
- ---
19
-
20
- # Map Cross-Cutting
21
-
22
- Create or update a cross-cutting concern document for shared infrastructure spanning multiple systems.
23
-
24
- ## When to Use
25
-
26
- - When a cross-cutting concern needs dedicated documentation
27
- - After implementing shared infrastructure that multiple systems depend on
28
- - When agents need to understand how to register with or plug into shared concerns
29
- - A concern spans multiple domain systems within a subsystem
30
- - Multiple systems register with or depend on this infrastructure
31
- - An agent needs to know WHERE to register and HOW to interact with the concern
32
-
33
- ## Input
34
-
35
- ### Required
36
-
37
- - **`text`** (text) Natural language description of the cross-cutting concern to document. Describes WHAT the concern addresses, which systems it spans. E.g.: "Event system used across all drawing components", "Dependency injection container and service registration", "Authentication middleware and authorization pipeline". If not provided, pause and ask the user.
38
-
39
- - **`subsystem`** (path | text) — Subsystem where this cross-cutting doc belongs. Wiki location: `.docs/wiki/subsystems/[subsystem]/cross-cutting/`. If not provided, pause and ask the user.
40
-
41
- ### Optional
42
-
43
- - **`story-context`** (path | GitHub issue) — Path to story artifacts folder (in `.ace/artifacts/`) OR GitHub issue number/URL. Provides context about a story that introduced or modified this cross-cutting concern. When not provided, the agent discovers the concern from codebase analysis.
44
-
45
- - **`commits`** (number | comma-separated commit SHAs) — Specifies which commits to analyze for understanding what was built/changed. As a number: analyze the N most recent commits (e.g., commits=3). As commit SHAs: analyze specific commits (e.g., commits='abc123,def456'). When not provided: search the codebase directly using the text description to find all registration points, usages, and integration points.
46
-
47
- ## Supporting Resources
48
-
49
- Read ALL of these before starting the workflow:
50
-
51
- - **Workflow**: Read [workflow.xml](workflow.xml) — complete orchestration process with all steps
52
- - **Cross-cutting template**: Read [system-cross-cutting.xml](system-cross-cutting.xml) — output format for the cross-cutting concern doc
53
- - **Questioning guide**: Read `${CLAUDE_SKILL_DIR}/../../shared/utils/questioning.xml` deep questioning techniques
54
- - **UI formatting**: Read `${CLAUDE_SKILL_DIR}/../../shared/utils/ui-formatting.md` ACE output formatting rules
55
-
56
- ## Process
57
-
58
- Use the `ace-wiki-mapper` agent that's specialized in wiki exploration and documentation writing.
59
-
60
- Read all supporting resources listed above, then execute the workflow defined in [workflow.xml](workflow.xml) end-to-end. Preserve all workflow gates (validation, user questions, commits).
61
-
62
- **Objective:** Create or update a cross-cutting concern document that describes shared infrastructure spanning multiple systems — how it works, registration/setup points, usage patterns, current registrations, integration points, and gotchas. The document an AI agent reads to understand how to register with or plug into shared concerns when implementing new features.
63
-
64
- ## Artifacts
65
-
66
- ```
67
- .docs/wiki/subsystems/[subsystem-name]/cross-cutting/[concern-name].md
68
- ```
69
-
70
- ## Example Usage
71
-
72
- ```
73
- # Basic cross-cutting concern
74
- /ace:map-cross-cutting text='Event system used across all drawing components' subsystem='qarc-charts-v2'
75
-
76
- # With recent commits for context
77
- /ace:map-cross-cutting text='Dependency injection container' subsystem='api' commits=3
78
-
79
- # With story context
80
- /ace:map-cross-cutting text='Authentication middleware' subsystem='api' story-context='.ace/artifacts/product/e1-auth/f1-middleware/s1-setup/s1-setup.md'
81
- ```
82
-
83
- ## Next Steps
84
-
85
- - `/clear` first for a fresh context window
86
- - `/ace:map-cross-cutting` — create another cross-cutting concern doc
87
- - `/ace:map-sys-doc` — document a system that uses this concern
88
- - `/ace:map-guide` — create a guide that includes registration steps
89
- - Review file at `.docs/wiki/subsystems/[subsystem-name]/cross-cutting/`
1
+ ---
2
+ name: map-cross-cutting
3
+ description: Create or update a cross-cutting concern doc in .docs/wiki/subsystems/[name]/cross-cutting/ — shared infrastructure spanning multiple systems
4
+ argument-hint: "text='Event system used across all drawing components' subsystem='qarc-charts-v2' commits=3"
5
+ disable-model-invocation: false
6
+ allowed-tools:
7
+ - Read
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - Write
12
+ - Edit
13
+ - AskUserQuestion
14
+ model: opus
15
+ effort: max
16
+ context: fork
17
+ agent: ace-wiki-mapper
18
+ ---
19
+
20
+ ## Supporting Resources (auto-loaded)
21
+
22
+ !`cat "${CLAUDE_SKILL_DIR}/workflow.xml"`
23
+
24
+ !`cat "${CLAUDE_SKILL_DIR}/system-cross-cutting.xml"`
25
+
26
+ !`cat "${CLAUDE_SKILL_DIR}/../../shared/utils/questioning.xml"`
27
+
28
+ !`cat "${CLAUDE_SKILL_DIR}/../../shared/utils/ui-formatting.md"`
29
+
30
+ ```xml
31
+ <command>
32
+
33
+ <execution-time>
34
+ <runs-after>
35
+ <trigger>When a cross-cutting concern needs dedicated documentation</trigger>
36
+ <trigger>After implementing shared infrastructure that multiple systems depend on</trigger>
37
+ <trigger>When agents need to understand how to register with or plug into shared concerns</trigger>
38
+ </runs-after>
39
+ <use-when>
40
+ <condition>A concern spans multiple domain systems within a subsystem</condition>
41
+ <condition>Multiple systems register with or depend on this infrastructure</condition>
42
+ <condition>An agent needs to know WHERE to register and HOW to interact with the concern</condition>
43
+ </use-when>
44
+ </execution-time>
45
+
46
+ <input>
47
+ <flags>
48
+ </flags>
49
+
50
+ <parameters>
51
+ <required>
52
+ <param name="text" type="text">
53
+ Natural language description of the cross-cutting concern to document.
54
+ Describes WHAT the concern addresses, which systems it spans.
55
+
56
+ E.g.:
57
+ - "Event system used across all drawing components"
58
+ - "Dependency injection container and service registration"
59
+ - "Authentication middleware and authorization pipeline"
60
+
61
+ If not provided, pause and ask the user.
62
+ </param>
63
+ <param name="subsystem" type="path | text">
64
+ Subsystem where this cross-cutting doc belongs.
65
+ Wiki location: `.docs/wiki/subsystems/[subsystem]/cross-cutting/`.
66
+ If not provided, pause and ask the user.
67
+ </param>
68
+ </required>
69
+
70
+ <optional>
71
+ <param name="story-context" type="path | GitHub issue">
72
+ Path to story artifacts folder (in `.ace/artifacts/`) OR GitHub issue
73
+ number/URL. Provides context about a story that introduced or modified
74
+ this cross-cutting concern.
75
+ When not provided, the agent discovers the concern from codebase analysis.
76
+ </param>
77
+ <param name="commits" type="number | comma-separated commit SHAs">
78
+ Specifies which commits to analyze for understanding what was built/changed.
79
+ As a number: analyze the N most recent commits (e.g., commits=3).
80
+ As commit SHAs: analyze specific commits (e.g., commits='abc123,def456').
81
+ When not provided: search the codebase directly using the text description
82
+ to find all registration points, usages, and integration points.
83
+ </param>
84
+ </optional>
85
+ </parameters>
86
+ </input>
87
+
88
+ <execution-context>
89
+ <!-- All supporting files are auto-loaded in the Supporting Resources section above.
90
+ The model does NOT need to Read these files — they are already in context. -->
91
+ </execution-context>
92
+
93
+ <output>
94
+ <objective>
95
+ Create or update a cross-cutting concern document that describes shared
96
+ infrastructure spanning multiple systems — how it works, registration/setup
97
+ points, usage patterns, current registrations, integration points, and gotchas.
98
+
99
+ The document an AI agent reads to understand how to register with or plug
100
+ into shared concerns when implementing new features.
101
+ </objective>
102
+
103
+ <artifacts>
104
+ .docs/wiki/subsystems/[subsystem-name]/cross-cutting/[concern-name].md
105
+ </artifacts>
106
+ </output>
107
+
108
+ <process>
109
+ For this command use the `ace-wiki-mapper` agent
110
+ that's specialized in wiki exploration and documentation writing.
111
+
112
+ Execute the map-cross-cutting workflow from
113
+ `workflow.xml` end-to-end.
114
+ Preserve all workflow gates (validation, user questions, commits).
115
+ </process>
116
+
117
+ <next-steps>
118
+ <step>/clear first for a fresh context window</step>
119
+ <step>/ace:map-cross-cutting — create another cross-cutting concern doc</step>
120
+ <step>/ace:map-sys-doc — document a system that uses this concern</step>
121
+ <step>/ace:map-guide — create a guide that includes registration steps</step>
122
+ <step>Review file at .docs/wiki/subsystems/[subsystem-name]/cross-cutting/</step>
123
+ </next-steps>
124
+
125
+ </command>
126
+ ```
@@ -17,7 +17,7 @@
17
17
  </purpose>
18
18
 
19
19
  <mandatory-context>
20
- Read all files referenced by the invoking command's execution-context before starting.
20
+ All supporting resource files are auto-loaded in the skill prompt above. Do NOT re-read them.
21
21
  Also read any document or text passed as parameter ($ARGUMENTS) in the invoking command.
22
22
  </mandatory-context>
23
23