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,235 +1,235 @@
1
- <subsystem-structure>
2
- <purpose>
3
- Template for `.docs/wiki/subsystems/[subsystem-name]/structure.md` — the physical file
4
- organization within a single subsystem. Answers "I'm working in this subsystem, where do I put things?"
5
-
6
- Complements system-structure.md (which shows the system-wide layout and subsystem index).
7
- One instance per subsystem — each gets its own structure doc.
8
-
9
- A "subsystem" is any cohesive code unit with a clear responsibility boundary —
10
- whether deployed as a microservice, a monolith module, or a library package.
11
-
12
- **Monoliths have subsystems too.** A monolith with bounded contexts, feature modules,
13
- or domain packages gets one subsystem-structure doc per module — same as microservices.
14
- The only difference is deployment topology, not documentation structure.
15
- </purpose>
16
-
17
- <template>
18
- <subsystem-overview>
19
- ## [Subsystem Name]
20
-
21
- **Root:** `[path from project root]`
22
- **Responsibility:** [One-line purpose — what this subsystem owns]
23
- </subsystem-overview>
24
-
25
- <directory-layout>
26
- ## Directory Layout
27
-
28
- [ASCII box-drawing tree of ALL directories and files with purpose - use ├── └── │ characters for tree structure only]
29
-
30
- Complete file tree of this subsystem. List every file and directory — this is the
31
- full inventory. An agent reading this should know exactly what exists without running `ls`.
32
-
33
- ```
34
- [subsystem-root]/
35
- ├── [dir]/ # [Purpose]
36
- │ ├── [subdir]/ # [Purpose]
37
- │ │ └── [subdir]/ # [Purpose]
38
- │ └── [subdir]/ # [Purpose]
39
- ├── [dir]/ # [Purpose]
40
- │ ├── [subdir]/ # [Purpose]
41
- │ └── [file] # [Purpose]
42
- ├── [dir]/ # [Purpose]
43
- └── [file] # [Purpose]
44
- ```
45
- </directory-layout>
46
-
47
- <directory-purposes>
48
- ## Directory Purposes
49
-
50
- **[Directory Name]:**
51
- - Purpose: [What lives here]
52
- - Contains: [Types of files: e.g., "*.ts source files", "component directories"]
53
- - Key files: `[important files in this directory]`
54
- - Subdirectories: [If nested, describe structure]
55
-
56
- **[Directory Name]:**
57
- - Purpose: [What lives here]
58
- - Contains: [Types of files]
59
- - Key files: `[important files]`
60
- - Subdirectories: [Structure]
61
- </directory-purposes>
62
-
63
- <key-file-locations>
64
- ## Key File Locations
65
-
66
- **Entry Points:**
67
- - `[path]`: [Purpose — e.g., "HTTP server startup", "CLI entry point"]
68
-
69
- **Configuration:**
70
- - `[path]`: [Purpose — e.g., "Module config", "DI container setup"]
71
-
72
- **Core Logic:**
73
- - `[path]`: [Purpose — e.g., "Domain services", "Business rules"]
74
- - `[path]`: [Purpose — e.g., "Data access", "Repository implementations"]
75
-
76
- **API Surface:**
77
- - `[path]`: [Purpose — e.g., "Route definitions", "Controller handlers"]
78
- - `[path]`: [Purpose — e.g., "DTOs / request-response types"]
79
-
80
- **Testing:**
81
- - `[path]`: [Purpose — e.g., "Unit tests"]
82
- - `[path]`: [Purpose — e.g., "Test fixtures / factories"]
83
- </key-file-locations>
84
-
85
- <naming-conventions>
86
- ## Naming Conventions
87
-
88
- Subsystem-specific patterns. If this subsystem follows system-wide conventions
89
- without deviation, state: "Follows system-wide conventions — see system-structure.md"
90
-
91
- **Files:**
92
- - [Pattern]: [Example — e.g., "kebab-case.ts for modules"]
93
- - [Pattern]: [Example — e.g., "PascalCase.tsx for React components"]
94
- - [Pattern]: [Example — e.g., "PascalCase.cs for C# classes"]
95
- - [Pattern]: [Example — e.g., "*.test.ts co-located with source"]
96
-
97
- **Directories:**
98
- - [Pattern]: [Example — e.g., "kebab-case for feature directories"]
99
- - [Pattern]: [Example — e.g., "plural names for collections"]
100
-
101
- **Special Patterns:**
102
- - [Pattern]: [Example — e.g., "index.ts barrel exports per directory"]
103
- - [Pattern]: [Example — e.g., "__tests__/ for test directories"]
104
- </naming-conventions>
105
-
106
- <where-to-add-new-code>
107
- ## Where to Add New Code
108
-
109
- **New Feature:**
110
- - Primary code: `[directory path]`
111
- - Tests: `[directory path]`
112
- - Config if needed: `[directory path]`
113
-
114
- **New Component / Module:**
115
- - Implementation: `[directory path]`
116
- - Types: `[directory path]`
117
- - Tests: `[directory path]`
118
-
119
- **New Route / Endpoint / Command:**
120
- - Definition: `[directory path]`
121
- - Handler: `[directory path]`
122
- - Tests: `[directory path]`
123
-
124
- **New Domain Entity / Model:**
125
- - Entity: `[directory path]`
126
- - Repository: `[directory path]`
127
- - Tests: `[directory path]`
128
-
129
- **New Service / Use Case:**
130
- - Service: `[directory path]`
131
- - Use case / application logic: `[directory path]`
132
- - Interface / contract: `[directory path]`
133
- - Tests: `[directory path]`
134
-
135
- **New DTO / Request-Response Object:**
136
- - DTOs: `[directory path]`
137
- - Validators: `[directory path]`
138
-
139
- **New Mapper / Transformer:**
140
- - Mappers: `[directory path]`
141
-
142
- **New Constants / Enums:**
143
- - Constants: `[directory path]`
144
- - Enums: `[directory path]`
145
- - Magic values / lookup tables: `[directory path]`
146
-
147
- **New Database Script / Migration:**
148
- - Migrations: `[directory path]`
149
- - Seeds / fixtures: `[directory path]`
150
- - Stored procedures: `[directory path]`
151
-
152
- **Shared Kernel / Cross-Cutting:**
153
- - Shared kernel: `[directory path]`
154
- - Base classes / interfaces: `[directory path]`
155
- - Common exceptions: `[directory path]`
156
- - Extension methods / helpers: `[directory path]`
157
-
158
- **Utilities:**
159
- - Shared helpers: `[directory path]`
160
- - Type definitions: `[directory path]`
161
- </where-to-add-new-code>
162
-
163
- <special-directories>
164
- ## Special Directories
165
-
166
- Directories with special meaning within this subsystem.
167
-
168
- **[Directory]:**
169
- - Purpose: [e.g., "Generated code", "Build output", "Migrations"]
170
- - Source: [e.g., "Auto-generated by X", "Manually maintained"]
171
- - Committed: [Yes/No]
172
- </special-directories>
173
- </template>
174
-
175
- <guidelines>
176
-
177
- **Subsystem Overview:**
178
- - Root path must be relative to project root — agents use this to navigate
179
- - Responsibility is one line. If you need more, it goes in the subsystem architecture doc
180
-
181
- **Directory Layout:**
182
- - List EVERY file and directory. This is the complete inventory of the subsystem
183
- - Every directory gets a `# Purpose` comment
184
- - Every file gets a `# Purpose` comment
185
- - Use ASCII box-drawing characters: `├── └── │`
186
- - Skip node_modules, build output, and other generated dirs (mention in Special Directories)
187
-
188
- **Directory Purposes:**
189
- - One entry per directory that has meaningful content
190
- - "Key files" should list the 2-3 most important files a developer would look at first
191
- - Skip directories that are obvious from the tree (e.g., don't describe `tests/` if it just has tests)
192
-
193
- **Key File Locations:**
194
- - Paths must be relative to subsystem root
195
- - Group by role, not by directory
196
- - Every entry needs a purpose — `user.service.ts` tells you nothing; "Core user CRUD operations" does
197
- - Focus on files a developer touches when working on this subsystem
198
-
199
- **Where to Add New Code:**
200
- - This is the most actionable section. An agent reads this when creating new files
201
- - Be specific — `src/features/[feature-name]/` not "the features directory"
202
- - Cover the common cases for this subsystem's domain
203
-
204
- **Naming Conventions:**
205
- - Only document if this subsystem has patterns different from system-wide conventions
206
- - If it follows system-wide conventions exactly, say so and link to system-structure.md
207
- - Show actual examples from the codebase, not theoretical patterns
208
-
209
- **What does NOT belong here:**
210
- - Conceptual architecture (that's the subsystem architecture doc)
211
- - Technology stack (that's system-architecture.md)
212
- - Code conventions like formatting rules (that's a conventions doc)
213
- - Other subsystems' structure (each has its own doc)
214
-
215
- </guidelines>
216
-
217
- <evolution>
218
-
219
- Update when the physical layout of this subsystem changes.
220
-
221
- **Update triggers:**
222
- - New top-level directory added within subsystem
223
- - Directory renamed, moved, or removed
224
- - New entry point or configuration file added
225
- - Naming convention changed
226
- - "Where to add new code" guidance no longer accurate
227
-
228
- **NOT an update trigger:**
229
- - New files added within existing directories
230
- - New features that follow existing structure
231
- - Bug fixes or internal refactoring
232
-
233
- </evolution>
234
-
1
+ <subsystem-structure>
2
+ <purpose>
3
+ Template for `.docs/wiki/subsystems/[subsystem-name]/structure.md` — the physical file
4
+ organization within a single subsystem. Answers "I'm working in this subsystem, where do I put things?"
5
+
6
+ Complements system-structure.md (which shows the system-wide layout and subsystem index).
7
+ One instance per subsystem — each gets its own structure doc.
8
+
9
+ A "subsystem" is any cohesive code unit with a clear responsibility boundary —
10
+ whether deployed as a microservice, a monolith module, or a library package.
11
+
12
+ **Monoliths have subsystems too.** A monolith with bounded contexts, feature modules,
13
+ or domain packages gets one subsystem-structure doc per module — same as microservices.
14
+ The only difference is deployment topology, not documentation structure.
15
+ </purpose>
16
+
17
+ <template>
18
+ <subsystem-overview>
19
+ ## [Subsystem Name]
20
+
21
+ **Root:** `[path from project root]`
22
+ **Responsibility:** [One-line purpose — what this subsystem owns]
23
+ </subsystem-overview>
24
+
25
+ <directory-layout>
26
+ ## Directory Layout
27
+
28
+ [ASCII box-drawing tree of ALL directories and files with purpose - use ├── └── │ characters for tree structure only]
29
+
30
+ Complete file tree of this subsystem. List every file and directory — this is the
31
+ full inventory. An agent reading this should know exactly what exists without running `ls`.
32
+
33
+ ```
34
+ [subsystem-root]/
35
+ ├── [dir]/ # [Purpose]
36
+ │ ├── [subdir]/ # [Purpose]
37
+ │ │ └── [subdir]/ # [Purpose]
38
+ │ └── [subdir]/ # [Purpose]
39
+ ├── [dir]/ # [Purpose]
40
+ │ ├── [subdir]/ # [Purpose]
41
+ │ └── [file] # [Purpose]
42
+ ├── [dir]/ # [Purpose]
43
+ └── [file] # [Purpose]
44
+ ```
45
+ </directory-layout>
46
+
47
+ <directory-purposes>
48
+ ## Directory Purposes
49
+
50
+ **[Directory Name]:**
51
+ - Purpose: [What lives here]
52
+ - Contains: [Types of files: e.g., "*.ts source files", "component directories"]
53
+ - Key files: `[important files in this directory]`
54
+ - Subdirectories: [If nested, describe structure]
55
+
56
+ **[Directory Name]:**
57
+ - Purpose: [What lives here]
58
+ - Contains: [Types of files]
59
+ - Key files: `[important files]`
60
+ - Subdirectories: [Structure]
61
+ </directory-purposes>
62
+
63
+ <key-file-locations>
64
+ ## Key File Locations
65
+
66
+ **Entry Points:**
67
+ - `[path]`: [Purpose — e.g., "HTTP server startup", "CLI entry point"]
68
+
69
+ **Configuration:**
70
+ - `[path]`: [Purpose — e.g., "Module config", "DI container setup"]
71
+
72
+ **Core Logic:**
73
+ - `[path]`: [Purpose — e.g., "Domain services", "Business rules"]
74
+ - `[path]`: [Purpose — e.g., "Data access", "Repository implementations"]
75
+
76
+ **API Surface:**
77
+ - `[path]`: [Purpose — e.g., "Route definitions", "Controller handlers"]
78
+ - `[path]`: [Purpose — e.g., "DTOs / request-response types"]
79
+
80
+ **Testing:**
81
+ - `[path]`: [Purpose — e.g., "Unit tests"]
82
+ - `[path]`: [Purpose — e.g., "Test fixtures / factories"]
83
+ </key-file-locations>
84
+
85
+ <naming-conventions>
86
+ ## Naming Conventions
87
+
88
+ Subsystem-specific patterns. If this subsystem follows system-wide conventions
89
+ without deviation, state: "Follows system-wide conventions — see system-structure.md"
90
+
91
+ **Files:**
92
+ - [Pattern]: [Example — e.g., "kebab-case.ts for modules"]
93
+ - [Pattern]: [Example — e.g., "PascalCase.tsx for React components"]
94
+ - [Pattern]: [Example — e.g., "PascalCase.cs for C# classes"]
95
+ - [Pattern]: [Example — e.g., "*.test.ts co-located with source"]
96
+
97
+ **Directories:**
98
+ - [Pattern]: [Example — e.g., "kebab-case for feature directories"]
99
+ - [Pattern]: [Example — e.g., "plural names for collections"]
100
+
101
+ **Special Patterns:**
102
+ - [Pattern]: [Example — e.g., "index.ts barrel exports per directory"]
103
+ - [Pattern]: [Example — e.g., "__tests__/ for test directories"]
104
+ </naming-conventions>
105
+
106
+ <where-to-add-new-code>
107
+ ## Where to Add New Code
108
+
109
+ **New Feature:**
110
+ - Primary code: `[directory path]`
111
+ - Tests: `[directory path]`
112
+ - Config if needed: `[directory path]`
113
+
114
+ **New Component / Module:**
115
+ - Implementation: `[directory path]`
116
+ - Types: `[directory path]`
117
+ - Tests: `[directory path]`
118
+
119
+ **New Route / Endpoint / Command:**
120
+ - Definition: `[directory path]`
121
+ - Handler: `[directory path]`
122
+ - Tests: `[directory path]`
123
+
124
+ **New Domain Entity / Model:**
125
+ - Entity: `[directory path]`
126
+ - Repository: `[directory path]`
127
+ - Tests: `[directory path]`
128
+
129
+ **New Service / Use Case:**
130
+ - Service: `[directory path]`
131
+ - Use case / application logic: `[directory path]`
132
+ - Interface / contract: `[directory path]`
133
+ - Tests: `[directory path]`
134
+
135
+ **New DTO / Request-Response Object:**
136
+ - DTOs: `[directory path]`
137
+ - Validators: `[directory path]`
138
+
139
+ **New Mapper / Transformer:**
140
+ - Mappers: `[directory path]`
141
+
142
+ **New Constants / Enums:**
143
+ - Constants: `[directory path]`
144
+ - Enums: `[directory path]`
145
+ - Magic values / lookup tables: `[directory path]`
146
+
147
+ **New Database Script / Migration:**
148
+ - Migrations: `[directory path]`
149
+ - Seeds / fixtures: `[directory path]`
150
+ - Stored procedures: `[directory path]`
151
+
152
+ **Shared Kernel / Cross-Cutting:**
153
+ - Shared kernel: `[directory path]`
154
+ - Base classes / interfaces: `[directory path]`
155
+ - Common exceptions: `[directory path]`
156
+ - Extension methods / helpers: `[directory path]`
157
+
158
+ **Utilities:**
159
+ - Shared helpers: `[directory path]`
160
+ - Type definitions: `[directory path]`
161
+ </where-to-add-new-code>
162
+
163
+ <special-directories>
164
+ ## Special Directories
165
+
166
+ Directories with special meaning within this subsystem.
167
+
168
+ **[Directory]:**
169
+ - Purpose: [e.g., "Generated code", "Build output", "Migrations"]
170
+ - Source: [e.g., "Auto-generated by X", "Manually maintained"]
171
+ - Committed: [Yes/No]
172
+ </special-directories>
173
+ </template>
174
+
175
+ <guidelines>
176
+
177
+ **Subsystem Overview:**
178
+ - Root path must be relative to project root — agents use this to navigate
179
+ - Responsibility is one line. If you need more, it goes in the subsystem architecture doc
180
+
181
+ **Directory Layout:**
182
+ - List EVERY file and directory. This is the complete inventory of the subsystem
183
+ - Every directory gets a `# Purpose` comment
184
+ - Every file gets a `# Purpose` comment
185
+ - Use ASCII box-drawing characters: `├── └── │`
186
+ - Skip node_modules, build output, and other generated dirs (mention in Special Directories)
187
+
188
+ **Directory Purposes:**
189
+ - One entry per directory that has meaningful content
190
+ - "Key files" should list the 2-3 most important files a developer would look at first
191
+ - Skip directories that are obvious from the tree (e.g., don't describe `tests/` if it just has tests)
192
+
193
+ **Key File Locations:**
194
+ - Paths must be relative to subsystem root
195
+ - Group by role, not by directory
196
+ - Every entry needs a purpose — `user.service.ts` tells you nothing; "Core user CRUD operations" does
197
+ - Focus on files a developer touches when working on this subsystem
198
+
199
+ **Where to Add New Code:**
200
+ - This is the most actionable section. An agent reads this when creating new files
201
+ - Be specific — `src/features/[feature-name]/` not "the features directory"
202
+ - Cover the common cases for this subsystem's domain
203
+
204
+ **Naming Conventions:**
205
+ - Only document if this subsystem has patterns different from system-wide conventions
206
+ - If it follows system-wide conventions exactly, say so and link to system-structure.md
207
+ - Show actual examples from the codebase, not theoretical patterns
208
+
209
+ **What does NOT belong here:**
210
+ - Conceptual architecture (that's the subsystem architecture doc)
211
+ - Technology stack (that's system-architecture.md)
212
+ - Code conventions like formatting rules (that's a conventions doc)
213
+ - Other subsystems' structure (each has its own doc)
214
+
215
+ </guidelines>
216
+
217
+ <evolution>
218
+
219
+ Update when the physical layout of this subsystem changes.
220
+
221
+ **Update triggers:**
222
+ - New top-level directory added within subsystem
223
+ - Directory renamed, moved, or removed
224
+ - New entry point or configuration file added
225
+ - Naming convention changed
226
+ - "Where to add new code" guidance no longer accurate
227
+
228
+ **NOT an update trigger:**
229
+ - New files added within existing directories
230
+ - New features that follow existing structure
231
+ - Bug fixes or internal refactoring
232
+
233
+ </evolution>
234
+
235
235
  </subsystem-structure>
@@ -0,0 +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>