agile-context-engineering 0.3.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 (139) hide show
  1. package/.claude-plugin/marketplace.json +18 -0
  2. package/.claude-plugin/plugin.json +10 -0
  3. package/CHANGELOG.md +7 -1
  4. package/LICENSE +51 -51
  5. package/README.md +330 -318
  6. package/agents/ace-code-discovery-analyst.md +245 -245
  7. package/agents/ace-code-integration-analyst.md +248 -248
  8. package/agents/ace-code-reviewer.md +375 -375
  9. package/agents/ace-product-owner.md +365 -361
  10. package/agents/ace-project-researcher.md +606 -606
  11. package/agents/ace-research-synthesizer.md +228 -228
  12. package/agents/ace-technical-application-architect.md +315 -315
  13. package/agents/ace-wiki-mapper.md +449 -445
  14. package/bin/install.js +605 -195
  15. package/hooks/ace-check-update.js +71 -62
  16. package/hooks/ace-statusline.js +107 -89
  17. package/hooks/hooks.json +14 -0
  18. package/package.json +7 -5
  19. package/shared/lib/ace-core.js +361 -0
  20. package/shared/lib/ace-core.test.js +308 -0
  21. package/shared/lib/ace-github.js +753 -0
  22. package/shared/lib/ace-story.js +400 -0
  23. package/shared/lib/ace-story.test.js +250 -0
  24. package/{agile-context-engineering → shared}/utils/questioning.xml +110 -110
  25. package/{agile-context-engineering → shared}/utils/ui-formatting.md +299 -299
  26. package/{commands/ace/execute-story.md → skills/execute-story/SKILL.md} +116 -138
  27. package/skills/execute-story/script.js +291 -0
  28. package/skills/execute-story/script.test.js +261 -0
  29. package/{agile-context-engineering/templates/product/story.xml → skills/execute-story/story-template.xml} +451 -451
  30. package/skills/execute-story/walkthrough-template.xml +255 -0
  31. package/{agile-context-engineering/workflows/execute-story.xml → skills/execute-story/workflow.xml} +1221 -1219
  32. package/skills/help/SKILL.md +71 -0
  33. package/skills/help/script.js +315 -0
  34. package/skills/help/script.test.js +183 -0
  35. package/{agile-context-engineering/workflows/help.xml → skills/help/workflow.xml} +544 -533
  36. package/{commands/ace/init-coding-standards.md → skills/init-coding-standards/SKILL.md} +91 -83
  37. package/{agile-context-engineering/templates/wiki/coding-standards.xml → skills/init-coding-standards/coding-standards-template.xml} +531 -531
  38. package/skills/init-coding-standards/script.js +50 -0
  39. package/skills/init-coding-standards/script.test.js +70 -0
  40. package/{agile-context-engineering/workflows/init-coding-standards.xml → skills/init-coding-standards/workflow.xml} +381 -386
  41. package/skills/map-cross-cutting/SKILL.md +126 -0
  42. package/{agile-context-engineering/templates/wiki → skills/map-cross-cutting}/system-cross-cutting.xml +197 -197
  43. package/skills/map-cross-cutting/workflow.xml +330 -0
  44. package/skills/map-guide/SKILL.md +126 -0
  45. package/{agile-context-engineering/templates/wiki → skills/map-guide}/guide.xml +137 -137
  46. package/skills/map-guide/workflow.xml +320 -0
  47. package/skills/map-pattern/SKILL.md +125 -0
  48. package/{agile-context-engineering/templates/wiki → skills/map-pattern}/pattern.xml +159 -159
  49. package/skills/map-pattern/workflow.xml +331 -0
  50. package/{commands/ace/map-story.md → skills/map-story/SKILL.md} +180 -165
  51. package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/decizions.xml +115 -115
  52. package/skills/map-story/templates/guide.xml +137 -0
  53. package/skills/map-story/templates/pattern.xml +159 -0
  54. package/skills/map-story/templates/system-cross-cutting.xml +197 -0
  55. package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/system.xml +381 -381
  56. package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/tech-debt-index.xml +125 -125
  57. package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/walkthrough.xml +255 -255
  58. package/{agile-context-engineering/workflows/map-story.xml → skills/map-story/workflow.xml} +1046 -1046
  59. package/{commands/ace/map-subsystem.md → skills/map-subsystem/SKILL.md} +155 -140
  60. package/skills/map-subsystem/script.js +51 -0
  61. package/skills/map-subsystem/script.test.js +68 -0
  62. package/skills/map-subsystem/templates/decizions.xml +115 -0
  63. package/skills/map-subsystem/templates/guide.xml +137 -0
  64. package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/module-discovery.xml +174 -174
  65. package/skills/map-subsystem/templates/pattern.xml +159 -0
  66. package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/subsystem-architecture.xml +343 -343
  67. package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/subsystem-structure.xml +234 -234
  68. package/skills/map-subsystem/templates/system-cross-cutting.xml +197 -0
  69. package/skills/map-subsystem/templates/system.xml +381 -0
  70. package/skills/map-subsystem/templates/walkthrough.xml +255 -0
  71. package/{agile-context-engineering/workflows/map-subsystem.xml → skills/map-subsystem/workflow.xml} +1173 -1178
  72. package/skills/map-sys-doc/SKILL.md +125 -0
  73. package/skills/map-sys-doc/system.xml +381 -0
  74. package/skills/map-sys-doc/workflow.xml +336 -0
  75. package/{commands/ace/map-system.md → skills/map-system/SKILL.md} +103 -92
  76. package/skills/map-system/script.js +75 -0
  77. package/skills/map-system/script.test.js +73 -0
  78. package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-architecture.xml +254 -254
  79. package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-structure.xml +177 -177
  80. package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/testing-framework.xml +283 -283
  81. package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/wiki-readme.xml +296 -296
  82. package/{agile-context-engineering/workflows/map-system.xml → skills/map-system/workflow.xml} +667 -672
  83. package/{commands/ace/map-walkthrough.md → skills/map-walkthrough/SKILL.md} +140 -127
  84. package/skills/map-walkthrough/walkthrough.xml +255 -0
  85. package/{agile-context-engineering/workflows/map-walkthrough.xml → skills/map-walkthrough/workflow.xml} +457 -457
  86. package/{commands/ace/plan-backlog.md → skills/plan-backlog/SKILL.md} +93 -83
  87. package/{agile-context-engineering/templates/product/product-backlog.xml → skills/plan-backlog/product-backlog-template.xml} +231 -231
  88. package/skills/plan-backlog/script.js +121 -0
  89. package/skills/plan-backlog/script.test.js +83 -0
  90. package/{agile-context-engineering/workflows/plan-backlog.xml → skills/plan-backlog/workflow.xml} +1348 -1356
  91. package/{commands/ace/plan-feature.md → skills/plan-feature/SKILL.md} +99 -89
  92. package/{agile-context-engineering/templates/product/feature.xml → skills/plan-feature/feature-template.xml} +361 -361
  93. package/skills/plan-feature/script.js +131 -0
  94. package/skills/plan-feature/script.test.js +80 -0
  95. package/{agile-context-engineering/workflows/plan-feature.xml → skills/plan-feature/workflow.xml} +1487 -1495
  96. package/{commands/ace/plan-product-vision.md → skills/plan-product-vision/SKILL.md} +91 -81
  97. package/{agile-context-engineering/templates/product/product-vision.xml → skills/plan-product-vision/product-vision-template.xml} +227 -227
  98. package/skills/plan-product-vision/script.js +51 -0
  99. package/skills/plan-product-vision/script.test.js +69 -0
  100. package/{agile-context-engineering/workflows/plan-product-vision.xml → skills/plan-product-vision/workflow.xml} +337 -342
  101. package/{commands/ace/plan-story.md → skills/plan-story/SKILL.md} +139 -159
  102. package/skills/plan-story/script.js +295 -0
  103. package/skills/plan-story/script.test.js +240 -0
  104. package/skills/plan-story/story-template.xml +458 -0
  105. package/{agile-context-engineering/workflows/plan-story.xml → skills/plan-story/workflow.xml} +1301 -944
  106. package/{commands/ace/research-external-solution.md → skills/research-external-solution/SKILL.md} +120 -138
  107. package/{agile-context-engineering/templates/product/external-solution.xml → skills/research-external-solution/external-solution-template.xml} +832 -832
  108. package/skills/research-external-solution/script.js +229 -0
  109. package/skills/research-external-solution/script.test.js +134 -0
  110. package/{agile-context-engineering/workflows/research-external-solution.xml → skills/research-external-solution/workflow.xml} +657 -659
  111. package/{commands/ace/research-integration-solution.md → skills/research-integration-solution/SKILL.md} +121 -135
  112. package/{agile-context-engineering/templates/product/story-integration-solution.xml → skills/research-integration-solution/integration-solution-template.xml} +1015 -1015
  113. package/skills/research-integration-solution/script.js +223 -0
  114. package/skills/research-integration-solution/script.test.js +134 -0
  115. package/{agile-context-engineering/workflows/research-integration-solution.xml → skills/research-integration-solution/workflow.xml} +711 -713
  116. package/{commands/ace/research-story-wiki.md → skills/research-story-wiki/SKILL.md} +101 -116
  117. package/skills/research-story-wiki/script.js +223 -0
  118. package/skills/research-story-wiki/script.test.js +138 -0
  119. package/{agile-context-engineering/templates/product/story-wiki.xml → skills/research-story-wiki/story-wiki-template.xml} +194 -194
  120. package/{agile-context-engineering/workflows/research-story-wiki.xml → skills/research-story-wiki/workflow.xml} +473 -475
  121. package/{commands/ace/research-technical-solution.md → skills/research-technical-solution/SKILL.md} +131 -147
  122. package/skills/research-technical-solution/script.js +223 -0
  123. package/skills/research-technical-solution/script.test.js +134 -0
  124. package/{agile-context-engineering/templates/product/story-technical-solution.xml → skills/research-technical-solution/technical-solution-template.xml} +1025 -1025
  125. package/{agile-context-engineering/workflows/research-technical-solution.xml → skills/research-technical-solution/workflow.xml} +761 -763
  126. package/{commands/ace/review-story.md → skills/review-story/SKILL.md} +99 -109
  127. package/skills/review-story/script.js +249 -0
  128. package/skills/review-story/script.test.js +169 -0
  129. package/skills/review-story/story-template.xml +451 -0
  130. package/{agile-context-engineering/workflows/review-story.xml → skills/review-story/workflow.xml} +279 -281
  131. package/{commands/ace/update.md → skills/update/SKILL.md} +65 -56
  132. package/{agile-context-engineering/workflows/update.xml → skills/update/workflow.xml} +33 -18
  133. package/agile-context-engineering/src/ace-tools.js +0 -2881
  134. package/agile-context-engineering/src/ace-tools.test.js +0 -1089
  135. package/agile-context-engineering/templates/_command.md +0 -54
  136. package/agile-context-engineering/templates/_workflow.xml +0 -17
  137. package/agile-context-engineering/templates/config.json +0 -0
  138. package/agile-context-engineering/templates/product/integration-solution.xml +0 -0
  139. package/commands/ace/help.md +0 -93
@@ -1,140 +1,155 @@
1
- ---
2
- name: ace:map-subsystem
3
- description: Map a subsystem's structure, architecture, and knowledge docs into .docs/wiki/subsystems/[name]/
4
- argument-hint: "subsystem='src/api' (or subsystem name) existing-docs=comma separated paths | directory"
5
- allowed-tools:
6
- - Read
7
- - Bash
8
- - Glob
9
- - Grep
10
- - Write
11
- - Task
12
- - AskUserQuestion
13
- ---
14
-
15
- ```xml
16
- <command>
17
-
18
- <execution-time>
19
- <runs-after>
20
- <trigger>After /ace:map-system — drill into individual subsystems</trigger>
21
- <trigger>Anytime to refresh an existing subsystem's wiki documents</trigger>
22
- <trigger>When a new subsystem is added and needs to be documented</trigger>
23
- </runs-after>
24
- <use-when>
25
- <condition>A subsystem has not yet been documented in `.docs/wiki/subsystems/`</condition>
26
- <condition>An existing subsystem's docs are stale after a significant refactor</condition>
27
- <condition>You want a deep-dive view of a specific subsystem's internals (components, flows, data)</condition>
28
- </use-when>
29
- </execution-time>
30
-
31
- <input>
32
- <flags>
33
- </flags>
34
-
35
- <parameters>
36
- <required>
37
- <param name="subsystem" type="path | text">
38
- Path to the subsystem (e.g., `src/api`) or its name.
39
- If not provided, pause execution and ask the user for it.
40
- If provided but ambiguous, or not found in the codebase, ask clarifying questions.
41
- </param>
42
- </required>
43
-
44
- <optional>
45
- <param name="existing-docs" type="comma-separated paths or directories">
46
- Pre-existing documentation relevant to this subsystem. Accepts file paths,
47
- directory paths, or a mix of both. When a directory is provided, recursively
48
- discover all files within it (including nested subdirectories).
49
- All resolved file paths are passed through to every map-story invocation
50
- (file mode) alongside any per-module docs discovered during module-discovery.
51
- Use this when the caller already knows about documentation that should
52
- inform knowledge-doc generation.
53
- </param>
54
- </optional>
55
- </parameters>
56
- </input>
57
-
58
- <execution-context>
59
- <map-subsystem-workflow>@~/.claude/agile-context-engineering/workflows/map-subsystem.xml</map-subsystem-workflow>
60
- <subsystem-structure-template>@~/.claude/agile-context-engineering/templates/wiki/subsystem-structure.xml</subsystem-structure-template>
61
- <subsystem-architecture-template>@~/.claude/agile-context-engineering/templates/wiki/subsystem-architecture.xml</subsystem-architecture-template>
62
- <module-discovery-template>@~/.claude/agile-context-engineering/templates/wiki/module-discovery.xml</module-discovery-template>
63
- <map-story-workflow>@~/.claude/agile-context-engineering/workflows/map-story.xml</map-story-workflow>
64
- <system-template>@~/.claude/agile-context-engineering/templates/wiki/system.xml</system-template>
65
- <pattern-template>@~/.claude/agile-context-engineering/templates/wiki/pattern.xml</pattern-template>
66
- <cross-cutting-template>@~/.claude/agile-context-engineering/templates/wiki/system-cross-cutting.xml</cross-cutting-template>
67
- <guide-template>@~/.claude/agile-context-engineering/templates/wiki/guide.xml</guide-template>
68
- <walkthrough-template>@~/.claude/agile-context-engineering/templates/wiki/walkthrough.xml</walkthrough-template>
69
- <decisions-template>@~/.claude/agile-context-engineering/templates/wiki/decizions.xml</decisions-template>
70
- <questioning>@~/.claude/agile-context-engineering/utils/questioning.xml</questioning>
71
- <ui-formatting>@~/.claude/agile-context-engineering/utils/ui-formatting.md</ui-formatting>
72
- </execution-context>
73
-
74
- <output>
75
- <objective>
76
- Resolve the target subsystem, load system-wide wiki context, and determine whether
77
- to create, update, or recreate per-subsystem wiki documents. Then:
78
-
79
- 1. Spawn ace-wiki-mapper agents to produce structure and architecture documents.
80
- 2. Update system-structure.md if this subsystem was not previously listed there.
81
- 3. Update the subsystem responsibility matrix in system-architecture.md if missing.
82
- 4. Run module discovery — trace E2E flows, identify patterns, find cross-cutting
83
- concerns by reading actual source code. Produce module-discovery.md artifact.
84
- 5. For EACH discovered module, run map-story in file mode to create or update
85
- knowledge documentation (systems/, patterns/, cross-cutting/, guides/, walkthroughs/, decisions/).
86
- </objective>
87
-
88
- <artifacts>
89
- - .docs/wiki/subsystems/[subsystem-name]/structure.md
90
- - .docs/wiki/subsystems/[subsystem-name]/architecture.md
91
- - .docs/wiki/subsystems/[subsystem-name]/systems/*.md (created/updated by map-story)
92
- - .docs/wiki/subsystems/[subsystem-name]/patterns/*.md (created/updated by map-story)
93
- - .docs/wiki/subsystems/[subsystem-name]/cross-cutting/*.md (created/updated by map-story)
94
- - .docs/wiki/subsystems/[subsystem-name]/guides/*.md (created/updated by map-story)
95
- - .docs/wiki/subsystems/[subsystem-name]/walkthroughs/*.md (created/updated by map-story)
96
- - .docs/wiki/subsystems/[subsystem-name]/decisions/*.md (created/updated by map-story)
97
- - .ace/artifacts/subsystems/[subsystem-name]/module-discovery/module-discovery.md
98
- - .ace/artifacts/subsystems/[subsystem-name]/module-discovery/existing-docs-inventory.md (if existing-docs directory provided)
99
- - .docs/wiki/system-wide/system-structure.md (subsystem entry added if new)
100
- - .docs/wiki/system-wide/system-architecture.md (subsystem responsibility matrix updated if missing)
101
- </artifacts>
102
- </output>
103
-
104
- <process>
105
- Execute the map-subsystem workflow from
106
- `@~/.claude/agile-context-engineering/workflows/map-subsystem.xml` end-to-end.
107
- Preserve all workflow gates (validation, user questions, commits).
108
-
109
- The workflow has 13 steps:
110
- 1-5: Setup, context loading, subsystem resolution, document triage, directory creation
111
- 6-8: Structure + architecture agents (parallel) + collect results
112
- 9: Update system-wide docs (system-structure.md, system-architecture.md)
113
- 10: Module discovery (3 parallel discovery agents + 1 synthesis agent)
114
- 11: Knowledge documentation — run map-story for EACH discovered module (sequential)
115
- 12: Verify and commit all documents
116
- 13: Completion report
117
-
118
- Steps 10-11 are CRITICAL — they produce the knowledge docs (systems/, patterns/,
119
- cross-cutting/, guides/, walkthroughs/, decisions/) that AI agents need for future implementations.
120
- Do NOT skip them.
121
- </process>
122
-
123
- <next-steps>
124
- **After this command, `/clear` first for a fresh context window, then:**
125
-
126
- For each subsystem found and defined in the Subsystem Responsibility Matrix,
127
- suggest a `/ace:map-subsystem` command. Example:
128
- - `/ace:map-subsystem subsystem="src/api"` Map the API subsystem
129
- - `/ace:map-subsystem subsystem="src/auth"` Map the Auth subsystem
130
- - `/ace:map-subsystem subsystem="src/db"` Map the DB subsystem
131
- (list one per subsystem discovered during this command's execution)
132
-
133
- Also suggest:
134
- - `/ace:init-coding-standards` Define prescriptive coding standards
135
- - `/ace:help` Check project initialization status and next steps
136
- - Review and edit files in `.docs/wiki/system-wide/` anytime
137
- </next-steps>
138
-
139
- </command>
140
- ```
1
+ ---
2
+ name: map-subsystem
3
+ description: Map a subsystem's structure, architecture, and knowledge docs into .docs/wiki/subsystems/[name]/
4
+ argument-hint: "subsystem='src/api' (or subsystem name) existing-docs=comma separated paths | directory"
5
+ disable-model-invocation: true
6
+ allowed-tools: Read, Bash, Glob, Grep, Write, Task, AskUserQuestion
7
+ model: opus
8
+ effort: max
9
+ ---
10
+
11
+ ## Environment Context (preprocessed)
12
+
13
+ !`node "${CLAUDE_SKILL_DIR}/script.js" init 2>/dev/null`
14
+
15
+ ## Supporting Resources (auto-loaded)
16
+
17
+ !`cat "${CLAUDE_SKILL_DIR}/workflow.xml"`
18
+
19
+ !`cat "${CLAUDE_SKILL_DIR}/templates/subsystem-structure.xml"`
20
+
21
+ !`cat "${CLAUDE_SKILL_DIR}/templates/subsystem-architecture.xml"`
22
+
23
+ !`cat "${CLAUDE_SKILL_DIR}/templates/module-discovery.xml"`
24
+
25
+ !`cat "${CLAUDE_SKILL_DIR}/templates/system.xml"`
26
+
27
+ !`cat "${CLAUDE_SKILL_DIR}/templates/system-cross-cutting.xml"`
28
+
29
+ !`cat "${CLAUDE_SKILL_DIR}/templates/pattern.xml"`
30
+
31
+ !`cat "${CLAUDE_SKILL_DIR}/templates/guide.xml"`
32
+
33
+ !`cat "${CLAUDE_SKILL_DIR}/templates/walkthrough.xml"`
34
+
35
+ !`cat "${CLAUDE_SKILL_DIR}/templates/decizions.xml"`
36
+
37
+ !`cat "${CLAUDE_SKILL_DIR}/../../shared/utils/questioning.xml"`
38
+
39
+ !`cat "${CLAUDE_SKILL_DIR}/../../shared/utils/ui-formatting.md"`
40
+
41
+ ```xml
42
+ <command>
43
+
44
+ <execution-time>
45
+ <runs-after>
46
+ <trigger>After /ace:map-system drill into individual subsystems</trigger>
47
+ <trigger>Anytime to refresh an existing subsystem's wiki documents</trigger>
48
+ <trigger>When a new subsystem is added and needs to be documented</trigger>
49
+ </runs-after>
50
+ <use-when>
51
+ <condition>A subsystem has not yet been documented in `.docs/wiki/subsystems/`</condition>
52
+ <condition>An existing subsystem's docs are stale after a significant refactor</condition>
53
+ <condition>You want a deep-dive view of a specific subsystem's internals (components, flows, data)</condition>
54
+ </use-when>
55
+ </execution-time>
56
+
57
+ <input>
58
+ <flags>
59
+ </flags>
60
+
61
+ <parameters>
62
+ <required>
63
+ <param name="subsystem" type="path | text">
64
+ Path to the subsystem (e.g., `src/api`) or its name.
65
+ If not provided, pause execution and ask the user for it.
66
+ If provided but ambiguous, or not found in the codebase, ask clarifying questions.
67
+ </param>
68
+ </required>
69
+
70
+ <optional>
71
+ <param name="existing-docs" type="comma-separated paths or directories">
72
+ Pre-existing documentation relevant to this subsystem. Accepts file paths,
73
+ directory paths, or a mix of both. When a directory is provided, recursively
74
+ discover all files within it (including nested subdirectories).
75
+ All resolved file paths are passed through to every map-story invocation
76
+ (file mode) alongside any per-module docs discovered during module-discovery.
77
+ Use this when the caller already knows about documentation that should
78
+ inform knowledge-doc generation.
79
+ </param>
80
+ </optional>
81
+ </parameters>
82
+ </input>
83
+
84
+ <execution-context>
85
+ <!-- All supporting files are auto-loaded in the Supporting Resources section above.
86
+ The model does NOT need to Read these files — they are already in context. -->
87
+ </execution-context>
88
+
89
+ <output>
90
+ <objective>
91
+ Resolve the target subsystem, load system-wide wiki context, and determine whether
92
+ to create, update, or recreate per-subsystem wiki documents. Then:
93
+
94
+ 1. Spawn ace-wiki-mapper agents to produce structure and architecture documents.
95
+ 2. Update system-structure.md if this subsystem was not previously listed there.
96
+ 3. Update the subsystem responsibility matrix in system-architecture.md if missing.
97
+ 4. Run module discovery — trace E2E flows, identify patterns, find cross-cutting
98
+ concerns by reading actual source code. Produce module-discovery.md artifact.
99
+ 5. For EACH discovered module, run map-story in file mode to create or update
100
+ knowledge documentation (systems/, patterns/, cross-cutting/, guides/, walkthroughs/, decisions/).
101
+ </objective>
102
+
103
+ <artifacts>
104
+ - .docs/wiki/subsystems/[subsystem-name]/structure.md
105
+ - .docs/wiki/subsystems/[subsystem-name]/architecture.md
106
+ - .docs/wiki/subsystems/[subsystem-name]/systems/*.md (created/updated by map-story)
107
+ - .docs/wiki/subsystems/[subsystem-name]/patterns/*.md (created/updated by map-story)
108
+ - .docs/wiki/subsystems/[subsystem-name]/cross-cutting/*.md (created/updated by map-story)
109
+ - .docs/wiki/subsystems/[subsystem-name]/guides/*.md (created/updated by map-story)
110
+ - .docs/wiki/subsystems/[subsystem-name]/walkthroughs/*.md (created/updated by map-story)
111
+ - .docs/wiki/subsystems/[subsystem-name]/decisions/*.md (created/updated by map-story)
112
+ - .ace/artifacts/subsystems/[subsystem-name]/module-discovery/module-discovery.md
113
+ - .ace/artifacts/subsystems/[subsystem-name]/module-discovery/existing-docs-inventory.md (if existing-docs directory provided)
114
+ - .docs/wiki/system-wide/system-structure.md (subsystem entry added if new)
115
+ - .docs/wiki/system-wide/system-architecture.md (subsystem responsibility matrix updated if missing)
116
+ </artifacts>
117
+ </output>
118
+
119
+ <process>
120
+ Execute the map-subsystem workflow from
121
+ `workflow.xml` end-to-end.
122
+ Preserve all workflow gates (validation, user questions, commits).
123
+
124
+ The workflow has 13 steps:
125
+ 1-5: Setup, context loading, subsystem resolution, document triage, directory creation
126
+ 6-8: Structure + architecture agents (parallel) + collect results
127
+ 9: Update system-wide docs (system-structure.md, system-architecture.md)
128
+ 10: Module discovery (3 parallel discovery agents + 1 synthesis agent)
129
+ 11: Knowledge documentation — run map-story for EACH discovered module (sequential)
130
+ 12: Verify and commit all documents
131
+ 13: Completion report
132
+
133
+ Steps 10-11 are CRITICAL — they produce the knowledge docs (systems/, patterns/,
134
+ cross-cutting/, guides/, walkthroughs/, decisions/) that AI agents need for future implementations.
135
+ Do NOT skip them.
136
+ </process>
137
+
138
+ <next-steps>
139
+ **After this command, `/clear` first for a fresh context window, then:**
140
+
141
+ For each subsystem found and defined in the Subsystem Responsibility Matrix,
142
+ suggest a `/ace:map-subsystem` command. Example:
143
+ - `/ace:map-subsystem subsystem="src/api"` — Map the API subsystem
144
+ - `/ace:map-subsystem subsystem="src/auth"` — Map the Auth subsystem
145
+ - `/ace:map-subsystem subsystem="src/db"` — Map the DB subsystem
146
+ (list one per subsystem discovered during this command's execution)
147
+
148
+ Also suggest:
149
+ - `/ace:init-coding-standards` — Define prescriptive coding standards
150
+ - `/ace:help` — Check project initialization status and next steps
151
+ - Review and edit files in `.docs/wiki/system-wide/` anytime
152
+ </next-steps>
153
+
154
+ </command>
155
+ ```
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * map-subsystem skill script — Entry point for ace-tools operations
5
+ * needed by the map-subsystem skill.
6
+ *
7
+ * Subcommands:
8
+ * init [args] Environment detection for map-subsystem workflow
9
+ *
10
+ * Usage: node script.js <subcommand> [args] [--raw]
11
+ */
12
+
13
+ const {
14
+ loadConfig, pathExists, resolveModel,
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: Map Subsystem ────────────────────────────────────────────────────
25
+
26
+ function cmdInit(cwd, raw, args, parsed) {
27
+ const config = loadConfig(cwd);
28
+ const brownfield = detectBrownfieldStatus(cwd);
29
+
30
+ const wikiDir = '.docs/wiki/subsystems';
31
+ const wikiDirExists = pathExists(cwd, wikiDir);
32
+
33
+ const result = {
34
+ // Models
35
+ mapper_model: resolveModel(cwd, 'ace-wiki-mapper'),
36
+
37
+ // Config
38
+ commit_docs: config.commit_docs,
39
+
40
+ // Brownfield detection
41
+ ...brownfield,
42
+
43
+ // Wiki directory state
44
+ wiki_dir_exists: wikiDirExists,
45
+
46
+ // Git state
47
+ has_git: pathExists(cwd, '.git'),
48
+ };
49
+
50
+ output(result, raw);
51
+ }
@@ -0,0 +1,68 @@
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('map-subsystem 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.ok(result.mapper_model, 'should have mapper_model');
55
+ assert.strictEqual(typeof result.commit_docs, 'boolean');
56
+ assert.strictEqual(typeof result.has_git, 'boolean');
57
+ assert.strictEqual(typeof result.is_brownfield, 'boolean');
58
+ assert.strictEqual(typeof result.wiki_dir_exists, 'boolean');
59
+ });
60
+
61
+ it('returns brownfield detection fields', () => {
62
+ const result = JSON.parse(runScript('init', '', tmpDir));
63
+ assert.strictEqual(typeof result.is_brownfield, 'boolean');
64
+ assert.strictEqual(typeof result.is_greenfield, 'boolean');
65
+ assert.strictEqual(result.is_brownfield, !result.is_greenfield);
66
+ });
67
+ });
68
+ });
@@ -0,0 +1,115 @@
1
+ <decisions>
2
+ <purpose>
3
+ Template for `.docs/wiki/subsystems/[subsystem-name]/decisions/<decision-name>.md` — an
4
+ Architecture Decision Record (ADR) capturing WHY a significant choice was made.
5
+ Answers "Why did we choose X over Y?"
6
+
7
+ Each decision doc captures one significant technical decision with its context and
8
+ trade-offs. It is the document an AI agent reads to understand WHY things are built
9
+ a certain way, preventing it from making the wrong choice.
10
+
11
+ Create an ADR ONLY when a significant "why" decision was made:
12
+ - Choosing one approach over another with meaningful trade-offs
13
+ - Deviating from an established pattern for a specific reason
14
+ - Adopting a new technology, pattern, or architectural approach
15
+ - Rejecting a seemingly obvious solution for non-obvious reasons
16
+
17
+ Do NOT create ADRs for trivial or obvious decisions.
18
+
19
+ Complements:
20
+ - systems/ docs (WHAT exists — systems reference decisions that shaped them)
21
+ - patterns/ docs (HOW things work — patterns reference decisions that defined them)
22
+ - cross-cutting/ docs (shared infrastructure shaped by architectural decisions)
23
+ </purpose>
24
+
25
+ <template>
26
+ <decision-record>
27
+ # ADR-NNN: [Decision Title]
28
+
29
+ **Status**: Accepted | Superseded by [ADR-MMM](./ADR-MMM-slug.md)
30
+ **Date**: YYYY-MM-DD
31
+ **Story**: [story reference, if applicable]
32
+
33
+ ## Context
34
+ What situation prompted this decision. 2-3 sentences max.
35
+
36
+ ## Decision
37
+ What was decided. 2-3 sentences max.
38
+
39
+ ## Alternatives Considered
40
+ - **[Alternative A]**: [Why rejected — 1 sentence]
41
+ - **[Alternative B]**: [Why rejected — 1 sentence]
42
+
43
+ ## Consequences
44
+ - Pro: [positive outcome]
45
+ - Pro: [positive outcome]
46
+ - Con: [trade-off accepted]
47
+ </decision-record>
48
+ </template>
49
+
50
+ <guidelines>
51
+
52
+ **Documentation Style:**
53
+ - EXTREMELY SUCCINCT — each ADR should be under 30 lines
54
+ - NO FLUFF — every sentence must convey a decision, reason, or consequence
55
+ - Bullet points for alternatives and consequences
56
+ - Code references as `file-path:ClassName` only when the decision is about specific code
57
+
58
+ **ADR Numbering:**
59
+ - Sequential within the subsystem: ADR-001, ADR-002, etc.
60
+ - Filename format: `ADR-NNN-kebab-case-slug.md`
61
+ - To find the next number, read existing ADRs in the decisions/ directory.
62
+
63
+ **Status:**
64
+ - `Accepted` — the decision is in effect
65
+ - `Superseded by ADR-MMM` — replaced by a later decision (link to it)
66
+ - ADRs are IMMUTABLE — never edit an accepted ADR. Create a new one that supersedes it.
67
+
68
+ **Context:**
69
+ - 2-3 sentences. What problem or situation forced a choice.
70
+ - Reference the system or pattern this decision affects.
71
+
72
+ **Decision:**
73
+ - 2-3 sentences. What was chosen and at what scope.
74
+ - Be specific — "We use X for Y" not "We decided to improve things."
75
+
76
+ **Alternatives Considered:**
77
+ - List each rejected alternative with ONE sentence explaining why.
78
+ - If there were no meaningful alternatives, omit this section.
79
+
80
+ **Consequences:**
81
+ - Bullet list of pros and cons.
82
+ - Be honest about trade-offs — future agents need to know the downsides.
83
+ - Include migration/compatibility consequences if applicable.
84
+
85
+ **What does NOT belong here:**
86
+ - Implementation details (that's in systems/ and patterns/ docs)
87
+ - Step-by-step instructions (that's in guides/)
88
+ - Full analysis or research documents (those are in .ace/artifacts/)
89
+ - Revision history or meeting notes
90
+
91
+ </guidelines>
92
+
93
+ <evolution>
94
+
95
+ ADRs are IMMUTABLE once accepted. They are historical records.
96
+
97
+ **When to create a new ADR:**
98
+ - A significant architectural or pattern choice is made during a story
99
+ - An existing decision is reversed or significantly modified (supersede the old one)
100
+ - A new technology, pattern, or approach is adopted
101
+
102
+ **When NOT to create an ADR:**
103
+ - Routine implementation following existing patterns
104
+ - Bug fixes or refactoring that don't change architectural direction
105
+ - Trivial decisions with no meaningful trade-offs
106
+ - Decisions already captured in an existing ADR
107
+
108
+ **Superseding:**
109
+ - Create the new ADR with its own number
110
+ - Update the old ADR's Status to: `Superseded by [ADR-MMM](./ADR-MMM-slug.md)`
111
+ - This is the ONLY edit allowed on an accepted ADR
112
+
113
+ </evolution>
114
+
115
+ </decisions>