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
@@ -0,0 +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: 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
+ ```
@@ -1,197 +1,197 @@
1
- <system-cross-cutting>
2
- <purpose>
3
- Template for `.docs/wiki/subsystems/[subsystem-name]/cross-cutting/<concern-name>.md` — a
4
- concern that spans multiple systems within a codebase subsystem. Answers "How does this
5
- shared infrastructure/concern work, and how do I plug into it?"
6
-
7
- Each cross-cutting doc describes shared infrastructure or mechanisms that multiple domain
8
- systems depend on. It is the document an AI agent reads to understand how to register,
9
- configure, or interact with shared concerns.
10
-
11
- Examples of cross-cutting concerns:
12
- - Dependency injection and container registration
13
- - Factory/registry registration patterns
14
- - Event systems, invalidation, pub/sub
15
- - Serialization/deserialization
16
- - Error handling and logging infrastructure
17
- - Authentication/authorization middleware
18
- - Cache/invalidation infrastructure
19
- - Shared abstract base classes
20
-
21
- Complements:
22
- - systems/ docs (domain systems that USE these cross-cutting concerns)
23
- - patterns/ docs (reusable structural patterns, not shared infrastructure)
24
- - guides/ docs (task recipes that reference cross-cutting setup steps)
25
- </purpose>
26
-
27
- <template>
28
- <overview>
29
- # [Cross-Cutting Concern]
30
-
31
- ## Overview
32
- What this concern addresses, why it exists. One paragraph.
33
- </overview>
34
-
35
- <how-it-works>
36
- ## How It Works
37
-
38
- The pattern/mechanism used. Reference actual code locations.
39
-
40
- 1. **Step**: Description at `file:ClassName.method`
41
- 2. **Step**: Description at `file:ClassName.method`
42
- 3. **Step**: Description at `file:ClassName.method`
43
- </how-it-works>
44
-
45
- <registration-and-setup>
46
- ## Registration / Setup
47
-
48
- Where and how components register with this concern.
49
- - **Container**: `file:container.ts:registerServices`
50
- - **Factory**: `file:DrawingFactory.ts:DrawingFactory`
51
- - **Registry**: `file:DrawingRegistry.ts:DrawingRegistry`
52
- </registration-and-setup>
53
-
54
- <usage>
55
- ## Usage
56
-
57
- How other systems interact with this concern.
58
-
59
- ```typescript
60
- // Usage pattern (inline only if non-obvious)
61
- ```
62
- </usage>
63
-
64
- <current-registrations>
65
- ## Current Registrations / Implementations
66
-
67
- What is currently registered/using this concern:
68
- - `TrendLine` registered at `file:container.ts:registerDrawings`
69
- - `ParallelChannel` registered at `file:container.ts:registerDrawings`
70
- - ...
71
- </current-registrations>
72
-
73
- <integration-points>
74
- ## Integration Points
75
-
76
- Where this concern connects to other systems.
77
- - [System A](../systems/system-a.md) — uses this for [purpose]
78
- - [System B](../systems/system-b.md) — uses this for [purpose]
79
- </integration-points>
80
-
81
- <gotchas>
82
- ## Gotchas
83
-
84
- Common mistakes when working with this concern.
85
- - [Common mistake 1]
86
- - [Common mistake 2]
87
- </gotchas>
88
-
89
- <tech-debt>
90
- ## Tech Debt
91
-
92
- Known quality issues in this cross-cutting concern discovered during story code reviews.
93
- Items are added by the wiki mapper and removed when fixed by a future story.
94
- Include ONLY if this concern has known tech debt items. Omit section entirely if clean.
95
-
96
- ### [Short descriptive title of the issue]
97
- - **Severity:** high | medium | low
98
- - **File:** `[file-path:SymbolName]`
99
- - **Description:** What the issue is, why it matters, and what could go wrong
100
- if left unfixed. For cross-cutting concerns, note which dependent systems are affected.
101
- - **Discovered during:** [story-id] — [story title]
102
-
103
- ### [Another issue]
104
- - **Severity:** ...
105
- - **File:** ...
106
- - **Description:** ...
107
- - **Discovered during:** ...
108
- </tech-debt>
109
- </template>
110
-
111
- <guidelines>
112
-
113
- **Documentation Style:**
114
- - EXTREMELY SUCCINCT — every word must add value
115
- - NO FLUFF — direct, actionable information only
116
- - Bullet points over paragraphs
117
- - Code references as `file-path:ClassName.methodName` (not line numbers)
118
- - Inline snippets ONLY for usage patterns and registration examples
119
- - **ALL visual representations of architecture, dependencies, flows, or relationships MUST be ```mermaid fenced code blocks. NO ASCII arrows (->), NO dependency trees, NO PlantUML. Only mermaid. The ONLY ASCII exception is file trees.**
120
-
121
- **Overview:**
122
- - ONE paragraph. What the concern does and why it exists.
123
- - Focus on what an agent needs to know to interact with this concern.
124
-
125
- **How It Works:**
126
- - Numbered steps explaining the mechanism.
127
- - Reference actual code locations — not theoretical descriptions.
128
- - If the mechanism has a flow (event dispatching, DI resolution), show a mermaid sequence diagram.
129
-
130
- **Registration / Setup:**
131
- - The MOST CRITICAL section for AI agents. They need to know WHERE to register new things.
132
- - List every registration point with exact file paths.
133
- - Show the registration pattern (inline code only if non-obvious).
134
-
135
- **Usage:**
136
- - How consuming code interacts with this concern.
137
- - Inline code snippet ONLY if the usage pattern is non-obvious.
138
- - If usage is straightforward (e.g., inject via constructor), a one-liner suffices.
139
-
140
- **Current Registrations / Implementations:**
141
- - Complete list of everything currently registered/using this concern.
142
- - Agent uses this to verify its new registration is consistent with existing ones.
143
- - Update when new registrations are added.
144
-
145
- **Integration Points:**
146
- - Cross-reference with markdown links to system docs that depend on this concern.
147
- - Helps agents understand the blast radius of changes to this concern.
148
-
149
- **Gotchas:**
150
- - Registration order dependencies, naming conventions, initialization timing.
151
- - Anything that silently fails if done wrong.
152
-
153
- **Tech Debt:**
154
- - One `###` subsection per known issue — NOT a table. Each issue needs enough context
155
- for an agent to understand the problem without reading the code.
156
- - For cross-cutting concerns, always note which dependent systems are affected.
157
- - Severity: `high` (security, data loss, production instability), `medium` (quality,
158
- maintainability), `low` (cosmetic, minor inefficiency).
159
- - Always link to the discovering story for traceability.
160
- - REMOVE items when fixed by a future story.
161
- - Omit the entire section if no tech debt exists in this concern.
162
-
163
- **What does NOT belong here:**
164
- - Domain-specific logic (that's in systems/ docs)
165
- - Reusable structural patterns (that's in patterns/ docs)
166
- - Step-by-step task recipes (that's in guides/ docs)
167
- - Story numbers, sprint context, revision history
168
- - Testing instructions, performance benchmarks
169
-
170
- </guidelines>
171
-
172
- <evolution>
173
-
174
- This is a LIVING document — updated when the cross-cutting concern changes.
175
-
176
- **Update triggers:**
177
- - New registration added (update Current Registrations list)
178
- - Registration mechanism changed (new file, new pattern)
179
- - New integration point discovered
180
- - New gotcha discovered
181
- - Setup/initialization process changed
182
- - Tech debt discovered or resolved in this concern's files
183
-
184
- **NOT an update trigger:**
185
- - New feature that registers with existing mechanism without changing it
186
- - Bug fix in one registered component
187
- - Internal refactoring of the mechanism that doesn't change the external API
188
-
189
- **Update rules:**
190
- - ADD new registrations to the list
191
- - UPDATE Registration / Setup if the process changed
192
- - ADD new gotchas as they are discovered
193
- - REMOVE registrations for deleted components
194
-
195
- </evolution>
196
-
197
- </system-cross-cutting>
1
+ <system-cross-cutting>
2
+ <purpose>
3
+ Template for `.docs/wiki/subsystems/[subsystem-name]/cross-cutting/<concern-name>.md` — a
4
+ concern that spans multiple systems within a codebase subsystem. Answers "How does this
5
+ shared infrastructure/concern work, and how do I plug into it?"
6
+
7
+ Each cross-cutting doc describes shared infrastructure or mechanisms that multiple domain
8
+ systems depend on. It is the document an AI agent reads to understand how to register,
9
+ configure, or interact with shared concerns.
10
+
11
+ Examples of cross-cutting concerns:
12
+ - Dependency injection and container registration
13
+ - Factory/registry registration patterns
14
+ - Event systems, invalidation, pub/sub
15
+ - Serialization/deserialization
16
+ - Error handling and logging infrastructure
17
+ - Authentication/authorization middleware
18
+ - Cache/invalidation infrastructure
19
+ - Shared abstract base classes
20
+
21
+ Complements:
22
+ - systems/ docs (domain systems that USE these cross-cutting concerns)
23
+ - patterns/ docs (reusable structural patterns, not shared infrastructure)
24
+ - guides/ docs (task recipes that reference cross-cutting setup steps)
25
+ </purpose>
26
+
27
+ <template>
28
+ <overview>
29
+ # [Cross-Cutting Concern]
30
+
31
+ ## Overview
32
+ What this concern addresses, why it exists. One paragraph.
33
+ </overview>
34
+
35
+ <how-it-works>
36
+ ## How It Works
37
+
38
+ The pattern/mechanism used. Reference actual code locations.
39
+
40
+ 1. **Step**: Description at `file:ClassName.method`
41
+ 2. **Step**: Description at `file:ClassName.method`
42
+ 3. **Step**: Description at `file:ClassName.method`
43
+ </how-it-works>
44
+
45
+ <registration-and-setup>
46
+ ## Registration / Setup
47
+
48
+ Where and how components register with this concern.
49
+ - **Container**: `file:container.ts:registerServices`
50
+ - **Factory**: `file:DrawingFactory.ts:DrawingFactory`
51
+ - **Registry**: `file:DrawingRegistry.ts:DrawingRegistry`
52
+ </registration-and-setup>
53
+
54
+ <usage>
55
+ ## Usage
56
+
57
+ How other systems interact with this concern.
58
+
59
+ ```typescript
60
+ // Usage pattern (inline only if non-obvious)
61
+ ```
62
+ </usage>
63
+
64
+ <current-registrations>
65
+ ## Current Registrations / Implementations
66
+
67
+ What is currently registered/using this concern:
68
+ - `TrendLine` registered at `file:container.ts:registerDrawings`
69
+ - `ParallelChannel` registered at `file:container.ts:registerDrawings`
70
+ - ...
71
+ </current-registrations>
72
+
73
+ <integration-points>
74
+ ## Integration Points
75
+
76
+ Where this concern connects to other systems.
77
+ - [System A](../systems/system-a.md) — uses this for [purpose]
78
+ - [System B](../systems/system-b.md) — uses this for [purpose]
79
+ </integration-points>
80
+
81
+ <gotchas>
82
+ ## Gotchas
83
+
84
+ Common mistakes when working with this concern.
85
+ - [Common mistake 1]
86
+ - [Common mistake 2]
87
+ </gotchas>
88
+
89
+ <tech-debt>
90
+ ## Tech Debt
91
+
92
+ Known quality issues in this cross-cutting concern discovered during story code reviews.
93
+ Items are added by the wiki mapper and removed when fixed by a future story.
94
+ Include ONLY if this concern has known tech debt items. Omit section entirely if clean.
95
+
96
+ ### [Short descriptive title of the issue]
97
+ - **Severity:** high | medium | low
98
+ - **File:** `[file-path:SymbolName]`
99
+ - **Description:** What the issue is, why it matters, and what could go wrong
100
+ if left unfixed. For cross-cutting concerns, note which dependent systems are affected.
101
+ - **Discovered during:** [story-id] — [story title]
102
+
103
+ ### [Another issue]
104
+ - **Severity:** ...
105
+ - **File:** ...
106
+ - **Description:** ...
107
+ - **Discovered during:** ...
108
+ </tech-debt>
109
+ </template>
110
+
111
+ <guidelines>
112
+
113
+ **Documentation Style:**
114
+ - EXTREMELY SUCCINCT — every word must add value
115
+ - NO FLUFF — direct, actionable information only
116
+ - Bullet points over paragraphs
117
+ - Code references as `file-path:ClassName.methodName` (not line numbers)
118
+ - Inline snippets ONLY for usage patterns and registration examples
119
+ - **ALL visual representations of architecture, dependencies, flows, or relationships MUST be ```mermaid fenced code blocks. NO ASCII arrows (->), NO dependency trees, NO PlantUML. Only mermaid. The ONLY ASCII exception is file trees.**
120
+
121
+ **Overview:**
122
+ - ONE paragraph. What the concern does and why it exists.
123
+ - Focus on what an agent needs to know to interact with this concern.
124
+
125
+ **How It Works:**
126
+ - Numbered steps explaining the mechanism.
127
+ - Reference actual code locations — not theoretical descriptions.
128
+ - If the mechanism has a flow (event dispatching, DI resolution), show a mermaid sequence diagram.
129
+
130
+ **Registration / Setup:**
131
+ - The MOST CRITICAL section for AI agents. They need to know WHERE to register new things.
132
+ - List every registration point with exact file paths.
133
+ - Show the registration pattern (inline code only if non-obvious).
134
+
135
+ **Usage:**
136
+ - How consuming code interacts with this concern.
137
+ - Inline code snippet ONLY if the usage pattern is non-obvious.
138
+ - If usage is straightforward (e.g., inject via constructor), a one-liner suffices.
139
+
140
+ **Current Registrations / Implementations:**
141
+ - Complete list of everything currently registered/using this concern.
142
+ - Agent uses this to verify its new registration is consistent with existing ones.
143
+ - Update when new registrations are added.
144
+
145
+ **Integration Points:**
146
+ - Cross-reference with markdown links to system docs that depend on this concern.
147
+ - Helps agents understand the blast radius of changes to this concern.
148
+
149
+ **Gotchas:**
150
+ - Registration order dependencies, naming conventions, initialization timing.
151
+ - Anything that silently fails if done wrong.
152
+
153
+ **Tech Debt:**
154
+ - One `###` subsection per known issue — NOT a table. Each issue needs enough context
155
+ for an agent to understand the problem without reading the code.
156
+ - For cross-cutting concerns, always note which dependent systems are affected.
157
+ - Severity: `high` (security, data loss, production instability), `medium` (quality,
158
+ maintainability), `low` (cosmetic, minor inefficiency).
159
+ - Always link to the discovering story for traceability.
160
+ - REMOVE items when fixed by a future story.
161
+ - Omit the entire section if no tech debt exists in this concern.
162
+
163
+ **What does NOT belong here:**
164
+ - Domain-specific logic (that's in systems/ docs)
165
+ - Reusable structural patterns (that's in patterns/ docs)
166
+ - Step-by-step task recipes (that's in guides/ docs)
167
+ - Story numbers, sprint context, revision history
168
+ - Testing instructions, performance benchmarks
169
+
170
+ </guidelines>
171
+
172
+ <evolution>
173
+
174
+ This is a LIVING document — updated when the cross-cutting concern changes.
175
+
176
+ **Update triggers:**
177
+ - New registration added (update Current Registrations list)
178
+ - Registration mechanism changed (new file, new pattern)
179
+ - New integration point discovered
180
+ - New gotcha discovered
181
+ - Setup/initialization process changed
182
+ - Tech debt discovered or resolved in this concern's files
183
+
184
+ **NOT an update trigger:**
185
+ - New feature that registers with existing mechanism without changing it
186
+ - Bug fix in one registered component
187
+ - Internal refactoring of the mechanism that doesn't change the external API
188
+
189
+ **Update rules:**
190
+ - ADD new registrations to the list
191
+ - UPDATE Registration / Setup if the process changed
192
+ - ADD new gotchas as they are discovered
193
+ - REMOVE registrations for deleted components
194
+
195
+ </evolution>
196
+
197
+ </system-cross-cutting>