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.
- package/.claude-plugin/marketplace.json +18 -0
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +7 -1
- package/README.md +16 -12
- package/agents/ace-code-discovery-analyst.md +245 -245
- package/agents/ace-code-integration-analyst.md +248 -248
- package/agents/ace-code-reviewer.md +375 -375
- package/agents/ace-product-owner.md +365 -361
- package/agents/ace-project-researcher.md +606 -606
- package/agents/ace-technical-application-architect.md +315 -315
- package/bin/install.js +587 -173
- package/hooks/ace-check-update.js +15 -14
- package/hooks/ace-statusline.js +30 -12
- package/hooks/hooks.json +14 -0
- package/package.json +3 -2
- package/shared/lib/ace-core.js +53 -0
- package/shared/lib/ace-core.test.js +308 -308
- package/shared/lib/ace-story.test.js +250 -250
- package/skills/execute-story/SKILL.md +116 -110
- package/skills/execute-story/script.js +13 -27
- package/skills/execute-story/script.test.js +261 -261
- package/skills/execute-story/story-template.xml +451 -451
- package/skills/execute-story/workflow.xml +3 -1
- package/skills/help/SKILL.md +71 -69
- package/skills/help/script.js +32 -35
- package/skills/help/script.test.js +183 -183
- package/skills/help/workflow.xml +14 -3
- package/skills/init-coding-standards/SKILL.md +91 -72
- package/skills/init-coding-standards/coding-standards-template.xml +531 -531
- package/skills/init-coding-standards/script.js +50 -59
- package/skills/init-coding-standards/script.test.js +70 -70
- package/skills/init-coding-standards/workflow.xml +1 -1
- package/skills/map-cross-cutting/SKILL.md +126 -89
- package/skills/map-cross-cutting/workflow.xml +1 -1
- package/skills/map-guide/SKILL.md +126 -89
- package/skills/map-guide/workflow.xml +1 -1
- package/skills/map-pattern/SKILL.md +125 -89
- package/skills/map-pattern/workflow.xml +1 -1
- package/skills/map-story/SKILL.md +180 -127
- package/skills/map-story/templates/tech-debt-index.xml +125 -125
- package/skills/map-story/workflow.xml +2 -2
- package/skills/map-subsystem/SKILL.md +155 -111
- package/skills/map-subsystem/script.js +51 -60
- package/skills/map-subsystem/script.test.js +68 -68
- package/skills/map-subsystem/templates/subsystem-architecture.xml +343 -343
- package/skills/map-subsystem/templates/subsystem-structure.xml +234 -234
- package/skills/map-subsystem/workflow.xml +1173 -1173
- package/skills/map-sys-doc/SKILL.md +125 -90
- package/skills/map-sys-doc/workflow.xml +1 -1
- package/skills/map-system/SKILL.md +103 -85
- package/skills/map-system/script.js +75 -84
- package/skills/map-system/script.test.js +73 -73
- package/skills/map-system/templates/system-structure.xml +177 -177
- package/skills/map-system/templates/testing-framework.xml +283 -283
- package/skills/map-system/workflow.xml +667 -667
- package/skills/map-walkthrough/SKILL.md +140 -92
- package/skills/map-walkthrough/workflow.xml +457 -457
- package/skills/plan-backlog/SKILL.md +93 -75
- package/skills/plan-backlog/script.js +121 -136
- package/skills/plan-backlog/script.test.js +83 -83
- package/skills/plan-backlog/workflow.xml +1348 -1348
- package/skills/plan-feature/SKILL.md +99 -76
- package/skills/plan-feature/feature-template.xml +361 -361
- package/skills/plan-feature/script.js +131 -148
- package/skills/plan-feature/script.test.js +80 -80
- package/skills/plan-feature/workflow.xml +1 -1
- package/skills/plan-product-vision/SKILL.md +91 -75
- package/skills/plan-product-vision/product-vision-template.xml +227 -227
- package/skills/plan-product-vision/script.js +51 -60
- package/skills/plan-product-vision/script.test.js +69 -69
- package/skills/plan-product-vision/workflow.xml +337 -337
- package/skills/plan-story/SKILL.md +125 -102
- package/skills/plan-story/script.js +18 -49
- package/skills/plan-story/story-template.xml +8 -1
- package/skills/plan-story/workflow.xml +17 -1
- package/skills/research-external-solution/SKILL.md +120 -107
- package/skills/research-external-solution/external-solution-template.xml +832 -832
- package/skills/research-external-solution/script.js +229 -238
- package/skills/research-external-solution/script.test.js +134 -134
- package/skills/research-external-solution/workflow.xml +657 -657
- package/skills/research-integration-solution/SKILL.md +121 -98
- package/skills/research-integration-solution/integration-solution-template.xml +1015 -1015
- package/skills/research-integration-solution/script.js +223 -231
- package/skills/research-integration-solution/script.test.js +134 -134
- package/skills/research-integration-solution/workflow.xml +711 -711
- package/skills/research-story-wiki/SKILL.md +101 -92
- package/skills/research-story-wiki/script.js +223 -231
- package/skills/research-story-wiki/script.test.js +138 -138
- package/skills/research-story-wiki/story-wiki-template.xml +194 -194
- package/skills/research-story-wiki/workflow.xml +473 -473
- package/skills/research-technical-solution/SKILL.md +131 -103
- package/skills/research-technical-solution/script.js +223 -231
- package/skills/research-technical-solution/script.test.js +134 -134
- package/skills/research-technical-solution/technical-solution-template.xml +1025 -1025
- package/skills/research-technical-solution/workflow.xml +761 -761
- package/skills/review-story/SKILL.md +99 -100
- package/skills/review-story/script.js +8 -16
- package/skills/review-story/script.test.js +169 -169
- package/skills/review-story/story-template.xml +451 -451
- package/skills/review-story/workflow.xml +1 -1
- package/skills/update/SKILL.md +65 -53
- 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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
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
|
-
|
|
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
|
|