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,137 @@
1
+ <guide>
2
+ <purpose>
3
+ Template for `.docs/wiki/subsystems/[subsystem-name]/guides/<task-name>.md` — a step-by-step
4
+ recipe for a common implementation task. Answers "How do I add/create/implement X?"
5
+
6
+ Each guide combines knowledge from multiple systems, patterns, and cross-cutting concerns
7
+ into one actionable recipe. It is the document an AI agent follows when performing a
8
+ recurring task end-to-end.
9
+
10
+ A "guide" is a task recipe for something developers do repeatedly:
11
+ e.g., "How to Add a New Drawing Tool", "How to Add a New CRUD Endpoint",
12
+ "How to Add a New Indicator", "How to Add a New Repository".
13
+
14
+ Complements:
15
+ - patterns/ docs (the structural patterns that guides reference)
16
+ - systems/ docs (the domain systems where guide steps take place)
17
+ - cross-cutting/ docs (the registrations and setup that guides include as steps)
18
+ </purpose>
19
+
20
+ <template>
21
+ <title>
22
+ # How to [Task]
23
+ </title>
24
+
25
+ <prerequisites>
26
+ ## Prerequisites
27
+
28
+ What you need to know or have in place before starting.
29
+ - Read: [Pattern Doc](../patterns/relevant-pattern.md) — understand the structural pattern
30
+ - Read: [System Doc](../systems/relevant-system.md) — understand the domain context
31
+ - Read: [Cross-Cutting Doc](../cross-cutting/relevant-concern.md) — understand registrations
32
+ </prerequisites>
33
+
34
+ <steps>
35
+ ## Steps
36
+
37
+ ### 1. [First Step]
38
+
39
+ What to do, where to do it, reference implementation to copy from.
40
+ - Create file: `[path]`
41
+ - Copy from: `file:ExistingImplementation` (closest reference)
42
+ - Key changes: [what to modify from the reference]
43
+
44
+ ### 2. [Second Step]
45
+
46
+ ...
47
+
48
+ ### 3. [Third Step]
49
+
50
+ ...
51
+ </steps>
52
+
53
+ <verification>
54
+ ## Verification
55
+
56
+ How to verify the implementation works.
57
+ - [ ] [Check 1]: [What to verify and how]
58
+ - [ ] [Check 2]: [What to verify and how]
59
+ - [ ] [Check 3]: [What to verify and how]
60
+ </verification>
61
+
62
+ <common-mistakes>
63
+ ## Common Mistakes
64
+
65
+ What people typically get wrong.
66
+ - [Mistake 1]: [Why it happens and how to avoid it]
67
+ - [Mistake 2]: [Why it happens and how to avoid it]
68
+ </common-mistakes>
69
+ </template>
70
+
71
+ <guidelines>
72
+
73
+ **Documentation Style:**
74
+ - EXTREMELY SUCCINCT — every word must add value
75
+ - NO FLUFF — direct, actionable information only
76
+ - Numbered steps — the agent follows these in order
77
+ - Code references as `file-path:ClassName.methodName` (not line numbers)
78
+ - Inline snippets ONLY for non-obvious configuration or registration code
79
+ - Every step must have a clear deliverable (a file created, a registration added, etc.)
80
+
81
+ **Prerequisites:**
82
+ - Link to the docs an agent should read BEFORE starting.
83
+ - Don't repeat content from those docs — just link.
84
+ - List any tools, dependencies, or environment requirements.
85
+
86
+ **Steps:**
87
+ - NUMBERED, ORDERED steps. An agent follows these sequentially.
88
+ - Each step has: WHAT to do, WHERE to do it, WHAT to copy from.
89
+ - Reference existing implementations as "copy from" targets — agents copy patterns, not invent.
90
+ - Include ALL steps: file creation, registration, configuration, wiring.
91
+ - Don't skip "obvious" steps — agents don't infer implicit requirements.
92
+
93
+ **Verification:**
94
+ - Checklist format. Agent runs through these after completing all steps.
95
+ - Include compilation check, runtime check, and behavioral check.
96
+ - Reference specific files or commands for verification.
97
+
98
+ **Common Mistakes:**
99
+ - Things agents (and developers) typically get wrong on first attempt.
100
+ - Each mistake should include WHY it happens and HOW to avoid it.
101
+ - Drawn from actual experience (gotchas from pattern and system docs).
102
+
103
+ **What does NOT belong here:**
104
+ - Detailed pattern explanations (link to patterns/ docs instead)
105
+ - System domain knowledge (link to systems/ docs instead)
106
+ - Cross-cutting mechanism details (link to cross-cutting/ docs instead)
107
+ - Story numbers, sprint context, revision history
108
+ - Testing strategy or test code (verification section covers basic checks only)
109
+
110
+ </guidelines>
111
+
112
+ <evolution>
113
+
114
+ This is a LIVING document — updated when the recipe changes.
115
+
116
+ **Update triggers:**
117
+ - New step required (new registration, new file to create)
118
+ - Step removed (registration no longer needed)
119
+ - Step order changed
120
+ - New common mistake discovered
121
+ - Reference implementation changed (new "copy from" target)
122
+ - Prerequisite docs added or removed
123
+
124
+ **NOT an update trigger:**
125
+ - New feature that follows the existing recipe without changes
126
+ - Bug fix in one implementation that followed the guide
127
+ - Internal refactoring that doesn't change the steps
128
+
129
+ **Update rules:**
130
+ - UPDATE steps when the recipe changes
131
+ - ADD new common mistakes as they are discovered
132
+ - UPDATE "copy from" references when better examples exist
133
+ - Keep the guide current — an agent should be able to follow it TODAY
134
+
135
+ </evolution>
136
+
137
+ </guide>
@@ -1,174 +1,174 @@
1
- <module-discovery>
2
- <purpose>
3
- Template for `.ace/artifacts/[subsystem_name]/module-discovery.md` — the discovery
4
- artifact that groups subsystem files into logical documentation modules.
5
-
6
- This document is consumed by Step 8.7 of map-subsystem to determine which map-story
7
- calls to make and what files to pass to each call.
8
-
9
- Each module is a coherent group of related files that together represent one concern.
10
- map-story receives the files and autonomously decides what documentation to produce —
11
- it may create systems/ docs, patterns/ docs, cross-cutting/ docs, guides/ docs,
12
- walkthroughs/ docs, and decisions/ docs, all from a single call. Discovery does NOT pre-categorize modules
13
- by document type.
14
-
15
- Files CAN appear in multiple modules. A domain model shared by two systems legitimately
16
- belongs in both — map-story will document it from each system's perspective.
17
- </purpose>
18
-
19
- <template>
20
- # Module Discovery: [subsystem_name]
21
-
22
- ## Modules
23
-
24
- Each row is one coherent group of related files. map-story receives these files
25
- and autonomously decides what docs to create or update (systems/, patterns/,
26
- cross-cutting/, guides/, walkthroughs/, decisions/).
27
-
28
- | # | Module Name | Files | Relevant Docs |
29
- |---|-------------|-------|---------------|
30
- | 1 | [e.g., User Management] | [comma-separated absolute paths — full E2E flow] | [comma-separated doc paths, or `none`] |
31
- | 2 | [e.g., Order Processing] | [comma-separated absolute paths — full E2E flow] | [comma-separated doc paths, or `none`] |
32
- | 3 | [e.g., Repository Pattern] | [2-4 representative files that demonstrate the pattern] | [docs, or `none`] |
33
- | 4 | [e.g., Dependency Injection] | [all DI/registration files] | [docs, or `none`] |
34
-
35
- ## Existing Documentation Inventory
36
-
37
- All documentation files found within the subsystem, with their curation status.
38
-
39
- | # | Doc Path | Type | Curated To Module |
40
- |---|----------|------|-------------------|
41
- | 1 | [absolute path to .md file] | [README / architecture / implementation-doc / planning / cross-cutting / other] | [module name, or `unmatched`] |
42
-
43
- ## File Coverage
44
-
45
- **Total files in subsystem:** N
46
- **Files covered by at least one module:** M
47
- **Uncovered files:** [list any files intentionally excluded]
48
-
49
- Intentionally excluded (trivial):
50
- - `[path]` — [reason: index re-export / empty stub / generated code / test file]
51
- </template>
52
-
53
- <guidelines>
54
-
55
- **What makes a good module:**
56
-
57
- A module is a coherent group of files that together represent ONE concern worth
58
- documenting. Discovery groups files by concern — map-story decides what doc types
59
- to produce from each group. There are three kinds of modules to discover:
60
-
61
- **E2E Domain Flows (most important):**
62
-
63
- A vertical slice traced from entry point through all architectural layers.
64
-
65
- How to discover:
66
- - Identify entry points: HTTP controllers, CLI handlers, event consumers, background jobs
67
- - Trace DOWNWARD through every layer:
68
- controller -> mapper -> service/use-case -> domain entity + value objects
69
- -> repository interface -> repository implementation -> DB scripts / migrations
70
- - Collect EVERY file that participates — including DTOs, mappers, constants
71
- - Group related entry points when they share the same domain concern:
72
- CreateUser + GetUser + UpdateUser + DeleteUser = "User Management" (not 4 modules)
73
-
74
- Key rule: a domain model shared across flows appears in EVERY module that uses it.
75
- Do NOT exclude a file because it is shared — duplication in the file list is CORRECT.
76
-
77
- **Recurring Implementation Patterns:**
78
-
79
- A group of similarly structured files that follow a common template.
80
-
81
- How to discover:
82
- - Find groups of similar files (3+ repositories, 3+ mappers, 3+ handlers)
83
- - Read them — if they follow the same structural template, that's a pattern
84
- - Use 2-4 representative files (not all implementations — map-story will discover the rest)
85
- - Examples: Repository Pattern, CQRS, Template Method, Factory/Registry, Mapper Pattern
86
-
87
- **Shared Infrastructure / Cross-Cutting Concerns:**
88
-
89
- Infrastructure files that multiple domain flows depend on.
90
-
91
- How to discover:
92
- - DI container / service registration files
93
- - Event bus, message broker, pub/sub infrastructure
94
- - Cache / invalidation infrastructure
95
- - Authentication / authorization middleware
96
- - Shared abstract base classes
97
- - Error handling or logging infrastructure
98
- - Registry / factory lookup tables
99
-
100
- **Existing Documentation (Relevant Docs column):**
101
-
102
- Subsystems often contain pre-existing documentation: READMEs, architecture notes,
103
- legacy implementation docs, feature planning docs, cross-cutting docs. These are
104
- valuable context for map-story — they describe intent, decisions, and history that
105
- the code alone doesn't convey.
106
-
107
- How to discover existing docs:
108
- - Scan the subsystem directory recursively for *.md files
109
- - Scan common documentation locations: `docs/`, `documentation/`, `README.md`,
110
- `ARCHITECTURE.md`, `.docs/` (if legacy docs exist there)
111
- - Include legacy implementation docs (`*-implementation-doc.md`) — they contain
112
- detailed knowledge about what was built and why
113
-
114
- How to curate (assign docs to modules):
115
- - Read each doc's title and first few lines to understand its subject
116
- - Match to the module whose domain it describes:
117
- e.g., `drawing-visibility-implementation-doc.md` -> Drawing System module
118
- - A doc can be relevant to multiple modules — list it in each
119
- - Architecture docs and READMEs are typically relevant to ALL system modules
120
- - Feature planning docs are relevant to the system they planned
121
- - Cross-cutting docs match cross-cutting modules
122
-
123
- The Existing Documentation Inventory table lists ALL docs found with their curation status.
124
- Docs marked `unmatched` were found but don't clearly belong to any module — the
125
- synthesis agent should decide if a new module is needed or if the doc is obsolete.
126
-
127
- **File Coverage:**
128
-
129
- Every non-trivial file must appear in at least one module. Exclude ONLY:
130
- - Index / barrel re-exports (files that only re-export from other files, no logic)
131
- - Empty stubs or placeholder files
132
- - Auto-generated files (never manually edited)
133
- - Build output
134
- - Test files (*.test.ts, *.spec.ts, *Tests.cs, etc.)
135
-
136
- If a file has meaningful logic and fits no existing module, create a new module for it.
137
-
138
- </guidelines>
139
-
140
- <what-not-to-do>
141
-
142
- DO NOT group files by architectural layer:
143
- - WRONG: { module: "Controllers", files: [UserController, OrderController, ProductController] }
144
- - RIGHT: { module: "User Management", files: [UserController, CreateUserDto, UserMapper, UserService, IUserRepository, UserRepository, User, 20240101_CreateUsers.sql] }
145
-
146
- DO NOT exclude domain models because they are shared:
147
- - WRONG: Put the User model in zero modules or only one
148
- - RIGHT: User model appears in every system that uses it (User Management, Authentication, etc.)
149
-
150
- DO NOT create a module per file:
151
- - WRONG: { module: "UserController", files: [UserController.ts] }
152
- - RIGHT: { module: "User Management", files: [UserController.ts, ...all related files] }
153
-
154
- DO NOT infer modules from the structure doc or architecture doc summaries alone:
155
- - WRONG: Read structure.md, see folder names, create one module per folder
156
- - RIGHT: Read the ACTUAL SOURCE CODE — trace E2E flows, read multiple similar files to find patterns
157
-
158
- DO NOT treat all files as equally important:
159
- - Index re-exports, empty stubs, and test files are excluded from modules
160
- - Focus on files that contain real logic a developer would need to understand
161
-
162
- </what-not-to-do>
163
-
164
- <evolution>
165
-
166
- module-discovery.md is a single-use artifact created per map-subsystem run.
167
- It is NOT maintained over time — it is regenerated each time map-subsystem runs.
168
-
169
- It lives in `.ace/artifacts/[subsystem_name]/module-discovery.md` (ephemeral tier).
170
- It is committed to git as a record of what this map-subsystem run documented.
171
-
172
- </evolution>
173
-
174
- </module-discovery>
1
+ <module-discovery>
2
+ <purpose>
3
+ Template for `.ace/artifacts/[subsystem_name]/module-discovery.md` — the discovery
4
+ artifact that groups subsystem files into logical documentation modules.
5
+
6
+ This document is consumed by Step 8.7 of map-subsystem to determine which map-story
7
+ calls to make and what files to pass to each call.
8
+
9
+ Each module is a coherent group of related files that together represent one concern.
10
+ map-story receives the files and autonomously decides what documentation to produce —
11
+ it may create systems/ docs, patterns/ docs, cross-cutting/ docs, guides/ docs,
12
+ walkthroughs/ docs, and decisions/ docs, all from a single call. Discovery does NOT pre-categorize modules
13
+ by document type.
14
+
15
+ Files CAN appear in multiple modules. A domain model shared by two systems legitimately
16
+ belongs in both — map-story will document it from each system's perspective.
17
+ </purpose>
18
+
19
+ <template>
20
+ # Module Discovery: [subsystem_name]
21
+
22
+ ## Modules
23
+
24
+ Each row is one coherent group of related files. map-story receives these files
25
+ and autonomously decides what docs to create or update (systems/, patterns/,
26
+ cross-cutting/, guides/, walkthroughs/, decisions/).
27
+
28
+ | # | Module Name | Files | Relevant Docs |
29
+ |---|-------------|-------|---------------|
30
+ | 1 | [e.g., User Management] | [comma-separated absolute paths — full E2E flow] | [comma-separated doc paths, or `none`] |
31
+ | 2 | [e.g., Order Processing] | [comma-separated absolute paths — full E2E flow] | [comma-separated doc paths, or `none`] |
32
+ | 3 | [e.g., Repository Pattern] | [2-4 representative files that demonstrate the pattern] | [docs, or `none`] |
33
+ | 4 | [e.g., Dependency Injection] | [all DI/registration files] | [docs, or `none`] |
34
+
35
+ ## Existing Documentation Inventory
36
+
37
+ All documentation files found within the subsystem, with their curation status.
38
+
39
+ | # | Doc Path | Type | Curated To Module |
40
+ |---|----------|------|-------------------|
41
+ | 1 | [absolute path to .md file] | [README / architecture / implementation-doc / planning / cross-cutting / other] | [module name, or `unmatched`] |
42
+
43
+ ## File Coverage
44
+
45
+ **Total files in subsystem:** N
46
+ **Files covered by at least one module:** M
47
+ **Uncovered files:** [list any files intentionally excluded]
48
+
49
+ Intentionally excluded (trivial):
50
+ - `[path]` — [reason: index re-export / empty stub / generated code / test file]
51
+ </template>
52
+
53
+ <guidelines>
54
+
55
+ **What makes a good module:**
56
+
57
+ A module is a coherent group of files that together represent ONE concern worth
58
+ documenting. Discovery groups files by concern — map-story decides what doc types
59
+ to produce from each group. There are three kinds of modules to discover:
60
+
61
+ **E2E Domain Flows (most important):**
62
+
63
+ A vertical slice traced from entry point through all architectural layers.
64
+
65
+ How to discover:
66
+ - Identify entry points: HTTP controllers, CLI handlers, event consumers, background jobs
67
+ - Trace DOWNWARD through every layer:
68
+ controller -> mapper -> service/use-case -> domain entity + value objects
69
+ -> repository interface -> repository implementation -> DB scripts / migrations
70
+ - Collect EVERY file that participates — including DTOs, mappers, constants
71
+ - Group related entry points when they share the same domain concern:
72
+ CreateUser + GetUser + UpdateUser + DeleteUser = "User Management" (not 4 modules)
73
+
74
+ Key rule: a domain model shared across flows appears in EVERY module that uses it.
75
+ Do NOT exclude a file because it is shared — duplication in the file list is CORRECT.
76
+
77
+ **Recurring Implementation Patterns:**
78
+
79
+ A group of similarly structured files that follow a common template.
80
+
81
+ How to discover:
82
+ - Find groups of similar files (3+ repositories, 3+ mappers, 3+ handlers)
83
+ - Read them — if they follow the same structural template, that's a pattern
84
+ - Use 2-4 representative files (not all implementations — map-story will discover the rest)
85
+ - Examples: Repository Pattern, CQRS, Template Method, Factory/Registry, Mapper Pattern
86
+
87
+ **Shared Infrastructure / Cross-Cutting Concerns:**
88
+
89
+ Infrastructure files that multiple domain flows depend on.
90
+
91
+ How to discover:
92
+ - DI container / service registration files
93
+ - Event bus, message broker, pub/sub infrastructure
94
+ - Cache / invalidation infrastructure
95
+ - Authentication / authorization middleware
96
+ - Shared abstract base classes
97
+ - Error handling or logging infrastructure
98
+ - Registry / factory lookup tables
99
+
100
+ **Existing Documentation (Relevant Docs column):**
101
+
102
+ Subsystems often contain pre-existing documentation: READMEs, architecture notes,
103
+ legacy implementation docs, feature planning docs, cross-cutting docs. These are
104
+ valuable context for map-story — they describe intent, decisions, and history that
105
+ the code alone doesn't convey.
106
+
107
+ How to discover existing docs:
108
+ - Scan the subsystem directory recursively for *.md files
109
+ - Scan common documentation locations: `docs/`, `documentation/`, `README.md`,
110
+ `ARCHITECTURE.md`, `.docs/` (if legacy docs exist there)
111
+ - Include legacy implementation docs (`*-implementation-doc.md`) — they contain
112
+ detailed knowledge about what was built and why
113
+
114
+ How to curate (assign docs to modules):
115
+ - Read each doc's title and first few lines to understand its subject
116
+ - Match to the module whose domain it describes:
117
+ e.g., `drawing-visibility-implementation-doc.md` -> Drawing System module
118
+ - A doc can be relevant to multiple modules — list it in each
119
+ - Architecture docs and READMEs are typically relevant to ALL system modules
120
+ - Feature planning docs are relevant to the system they planned
121
+ - Cross-cutting docs match cross-cutting modules
122
+
123
+ The Existing Documentation Inventory table lists ALL docs found with their curation status.
124
+ Docs marked `unmatched` were found but don't clearly belong to any module — the
125
+ synthesis agent should decide if a new module is needed or if the doc is obsolete.
126
+
127
+ **File Coverage:**
128
+
129
+ Every non-trivial file must appear in at least one module. Exclude ONLY:
130
+ - Index / barrel re-exports (files that only re-export from other files, no logic)
131
+ - Empty stubs or placeholder files
132
+ - Auto-generated files (never manually edited)
133
+ - Build output
134
+ - Test files (*.test.ts, *.spec.ts, *Tests.cs, etc.)
135
+
136
+ If a file has meaningful logic and fits no existing module, create a new module for it.
137
+
138
+ </guidelines>
139
+
140
+ <what-not-to-do>
141
+
142
+ DO NOT group files by architectural layer:
143
+ - WRONG: { module: "Controllers", files: [UserController, OrderController, ProductController] }
144
+ - RIGHT: { module: "User Management", files: [UserController, CreateUserDto, UserMapper, UserService, IUserRepository, UserRepository, User, 20240101_CreateUsers.sql] }
145
+
146
+ DO NOT exclude domain models because they are shared:
147
+ - WRONG: Put the User model in zero modules or only one
148
+ - RIGHT: User model appears in every system that uses it (User Management, Authentication, etc.)
149
+
150
+ DO NOT create a module per file:
151
+ - WRONG: { module: "UserController", files: [UserController.ts] }
152
+ - RIGHT: { module: "User Management", files: [UserController.ts, ...all related files] }
153
+
154
+ DO NOT infer modules from the structure doc or architecture doc summaries alone:
155
+ - WRONG: Read structure.md, see folder names, create one module per folder
156
+ - RIGHT: Read the ACTUAL SOURCE CODE — trace E2E flows, read multiple similar files to find patterns
157
+
158
+ DO NOT treat all files as equally important:
159
+ - Index re-exports, empty stubs, and test files are excluded from modules
160
+ - Focus on files that contain real logic a developer would need to understand
161
+
162
+ </what-not-to-do>
163
+
164
+ <evolution>
165
+
166
+ module-discovery.md is a single-use artifact created per map-subsystem run.
167
+ It is NOT maintained over time — it is regenerated each time map-subsystem runs.
168
+
169
+ It lives in `.ace/artifacts/[subsystem_name]/module-discovery.md` (ephemeral tier).
170
+ It is committed to git as a record of what this map-subsystem run documented.
171
+
172
+ </evolution>
173
+
174
+ </module-discovery>
@@ -0,0 +1,159 @@
1
+ <pattern>
2
+ <purpose>
3
+ Template for `.docs/wiki/subsystems/[subsystem-name]/patterns/<pattern-name>.md` — a reusable
4
+ implementation pattern within a codebase subsystem. Answers "HOW do I implement something
5
+ that follows this pattern?"
6
+
7
+ Each pattern doc describes a structural template that appears across multiple implementations.
8
+ It is the document an AI agent reads to ensure new code follows established conventions.
9
+
10
+ A "pattern" is a recurring structural approach used by 2+ implementations:
11
+ e.g., Template Method (Path base class with 5 factory methods), Repository Pattern,
12
+ Mapper Pattern, Factory/Registry, CQRS Command/Query handlers.
13
+
14
+ Complements:
15
+ - systems/ docs (WHAT exists — the domain subsystems that USE these patterns)
16
+ - guides/ docs (step-by-step recipes that COMBINE multiple patterns into a task)
17
+ - cross-cutting/ docs (shared infrastructure that patterns depend on)
18
+ </purpose>
19
+
20
+ <template>
21
+ <the-pattern>
22
+ # [Pattern Name]
23
+
24
+ ## The Pattern
25
+ What it is, when to use it. One paragraph max.
26
+ </the-pattern>
27
+
28
+ <structure>
29
+ ## Structure
30
+
31
+ Class/interface diagram showing the pattern's structure.
32
+
33
+ ```mermaid
34
+ classDiagram
35
+ class IContract {
36
+ &lt;&lt;interface&gt;&gt;
37
+ +method() ReturnType
38
+ }
39
+ class AbstractBase {
40
+ &lt;&lt;abstract&gt;&gt;
41
+ +templateMethod()
42
+ #factoryMethod()* ReturnType
43
+ }
44
+ IContract &lt;|.. AbstractBase
45
+ AbstractBase &lt;|-- ConcreteA
46
+ AbstractBase &lt;|-- ConcreteB
47
+ ```
48
+ </structure>
49
+
50
+ <how-it-works>
51
+ ## How It Works
52
+
53
+ Step-by-step of the pattern mechanics. Reference actual code locations.
54
+
55
+ 1. **Step**: Description at `file:ClassName.method`
56
+ 2. **Step**: Description at `file:ClassName.method`
57
+ 3. **Step**: Description at `file:ClassName.method`
58
+ </how-it-works>
59
+
60
+ <how-to-apply>
61
+ ## How to Apply
62
+
63
+ When implementing something new that uses this pattern:
64
+
65
+ 1. [First step] (reference: `file:ClassName.method`)
66
+ 2. [Second step]
67
+ 3. [Third step]
68
+ ...
69
+ </how-to-apply>
70
+
71
+ <current-implementations>
72
+ ## Current Implementations
73
+
74
+ Where this pattern is currently used:
75
+ - `TrendLine` at `src/infrastructure/primitives/trend-line/TrendLine.ts`
76
+ - `ParallelChannel` at `src/infrastructure/primitives/parallel-channel/ParallelChannel.ts`
77
+ - ...
78
+ </current-implementations>
79
+
80
+ <gotchas>
81
+ ## Gotchas
82
+
83
+ Things that commonly go wrong or are easy to forget when applying this pattern.
84
+ - [Common mistake 1]
85
+ - [Common mistake 2]
86
+ </gotchas>
87
+ </template>
88
+
89
+ <guidelines>
90
+
91
+ **Documentation Style:**
92
+ - EXTREMELY SUCCINCT — every word must add value
93
+ - NO FLUFF — direct, actionable information only
94
+ - Bullet points over paragraphs
95
+ - Code references as `file-path:ClassName.methodName` (not line numbers)
96
+ - Inline snippets ONLY for interface contracts and pattern structure definitions
97
+ - **ALL visual representations of architecture, dependencies, flows, or relationships MUST be ```mermaid fenced code blocks (use `classDiagram` for structure). NO ASCII arrows (->), NO dependency trees, NO PlantUML. Only mermaid. The ONLY ASCII exception is file trees.**
98
+
99
+ **The Pattern:**
100
+ - ONE paragraph. Name the GoF/industry pattern if applicable, then explain how it
101
+ manifests in THIS codebase. Not a textbook definition — the codebase-specific version.
102
+
103
+ **Structure:**
104
+ - Mermaid classDiagram showing the abstract/interface hierarchy.
105
+ - Show the pattern skeleton only — not every concrete implementation.
106
+ - Include key method signatures that define the contract.
107
+
108
+ **How It Works:**
109
+ - Numbered steps tracing the pattern's execution flow.
110
+ - Every step references actual code with `file:ClassName.method`.
111
+ - Focus on the mechanics an agent needs to understand to add a new implementation.
112
+
113
+ **How to Apply:**
114
+ - The MOST ACTIONABLE section. An agent follows these steps to create a new instance.
115
+ - Reference existing implementations as "copy from" targets.
116
+ - Include which files to create, which registrations to add, which factories to update.
117
+
118
+ **Current Implementations:**
119
+ - Complete list of all known implementations with file paths.
120
+ - Agent uses this as a reference gallery — "pick the closest one and copy its structure."
121
+ - Update when new implementations are added.
122
+
123
+ **Gotchas:**
124
+ - Timing issues, naming conventions, registration requirements, common mistakes.
125
+ - Anything an agent would get wrong on first attempt without being told.
126
+
127
+ **What does NOT belong here:**
128
+ - System-specific domain logic (that's in systems/ docs)
129
+ - Step-by-step task recipes that combine multiple patterns (that's in guides/)
130
+ - Cross-cutting infrastructure details (that's in cross-cutting/)
131
+ - Story numbers, sprint context, revision history
132
+ - Testing instructions, performance benchmarks
133
+
134
+ </guidelines>
135
+
136
+ <evolution>
137
+
138
+ This is a LIVING document — updated when the pattern itself evolves.
139
+
140
+ **Update triggers:**
141
+ - New implementation added (update Current Implementations list)
142
+ - Pattern structure changed (new factory method, new interface method)
143
+ - How to Apply steps changed (new registration requirement, new file to create)
144
+ - New gotcha discovered during implementation
145
+
146
+ **NOT an update trigger:**
147
+ - New feature that follows the existing pattern without changing it
148
+ - Bug fix in one implementation
149
+ - Internal refactoring that doesn't change the pattern contract
150
+
151
+ **Update rules:**
152
+ - ADD new implementations to the list
153
+ - UPDATE How to Apply if the recipe changed
154
+ - ADD new gotchas as they are discovered
155
+ - Do NOT remove historical gotchas unless they are no longer relevant
156
+
157
+ </evolution>
158
+
159
+ </pattern>