agile-context-engineering 0.2.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +10 -0
- package/CHANGELOG.md +82 -0
- package/README.md +27 -18
- package/agents/ace-product-owner.md +1 -1
- package/agents/ace-technical-application-architect.md +28 -0
- package/agents/ace-wiki-mapper.md +144 -29
- package/bin/install.js +67 -63
- package/hooks/ace-check-update.js +17 -9
- package/package.json +7 -5
- package/shared/lib/ace-core.js +308 -0
- package/shared/lib/ace-core.test.js +308 -0
- package/shared/lib/ace-github.js +753 -0
- package/shared/lib/ace-story.js +400 -0
- package/shared/lib/ace-story.test.js +250 -0
- package/{agile-context-engineering → shared}/utils/ui-formatting.md +299 -299
- package/skills/execute-story/SKILL.md +110 -0
- package/skills/execute-story/script.js +305 -0
- package/skills/execute-story/script.test.js +261 -0
- package/skills/execute-story/walkthrough-template.xml +255 -0
- package/{agile-context-engineering/workflows/execute-story.xml → skills/execute-story/workflow.xml} +83 -9
- package/skills/help/SKILL.md +69 -0
- package/skills/help/script.js +318 -0
- package/skills/help/script.test.js +183 -0
- package/{agile-context-engineering/workflows/help.xml → skills/help/workflow.xml} +8 -8
- package/skills/init-coding-standards/SKILL.md +72 -0
- package/{agile-context-engineering/templates/wiki/coding-standards.xml → skills/init-coding-standards/coding-standards-template.xml} +38 -0
- package/skills/init-coding-standards/script.js +59 -0
- package/skills/init-coding-standards/script.test.js +70 -0
- package/{agile-context-engineering/workflows/init-coding-standards.xml → skills/init-coding-standards/workflow.xml} +4 -9
- package/skills/map-cross-cutting/SKILL.md +89 -0
- package/skills/map-cross-cutting/workflow.xml +330 -0
- package/skills/map-guide/SKILL.md +89 -0
- package/skills/map-guide/workflow.xml +320 -0
- package/skills/map-pattern/SKILL.md +89 -0
- package/skills/map-pattern/workflow.xml +331 -0
- package/skills/map-story/SKILL.md +127 -0
- package/skills/map-story/templates/guide.xml +137 -0
- package/skills/map-story/templates/pattern.xml +159 -0
- package/skills/map-story/templates/system-cross-cutting.xml +197 -0
- package/skills/map-story/templates/walkthrough.xml +255 -0
- package/{agile-context-engineering/workflows/map-story.xml → skills/map-story/workflow.xml} +258 -9
- package/skills/map-subsystem/SKILL.md +111 -0
- package/skills/map-subsystem/script.js +60 -0
- package/skills/map-subsystem/script.test.js +68 -0
- package/skills/map-subsystem/templates/decizions.xml +115 -0
- package/skills/map-subsystem/templates/guide.xml +137 -0
- package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/module-discovery.xml +3 -3
- package/skills/map-subsystem/templates/pattern.xml +159 -0
- package/skills/map-subsystem/templates/system-cross-cutting.xml +197 -0
- package/skills/map-subsystem/templates/system.xml +381 -0
- package/skills/map-subsystem/templates/walkthrough.xml +255 -0
- package/{agile-context-engineering/workflows/map-subsystem.xml → skills/map-subsystem/workflow.xml} +17 -21
- package/skills/map-sys-doc/SKILL.md +90 -0
- package/skills/map-sys-doc/system.xml +381 -0
- package/skills/map-sys-doc/workflow.xml +336 -0
- package/skills/map-system/SKILL.md +85 -0
- package/skills/map-system/script.js +84 -0
- package/skills/map-system/script.test.js +73 -0
- package/skills/map-system/templates/wiki-readme.xml +297 -0
- package/{agile-context-engineering/workflows/map-system.xml → skills/map-system/workflow.xml} +11 -16
- package/skills/map-walkthrough/SKILL.md +92 -0
- package/skills/map-walkthrough/walkthrough.xml +255 -0
- package/skills/map-walkthrough/workflow.xml +457 -0
- package/skills/plan-backlog/SKILL.md +75 -0
- package/skills/plan-backlog/script.js +136 -0
- package/skills/plan-backlog/script.test.js +83 -0
- package/{agile-context-engineering/workflows/plan-backlog.xml → skills/plan-backlog/workflow.xml} +13 -21
- package/skills/plan-feature/SKILL.md +76 -0
- package/skills/plan-feature/script.js +148 -0
- package/skills/plan-feature/script.test.js +80 -0
- package/{agile-context-engineering/workflows/plan-feature.xml → skills/plan-feature/workflow.xml} +21 -29
- package/skills/plan-product-vision/SKILL.md +75 -0
- package/skills/plan-product-vision/script.js +60 -0
- package/skills/plan-product-vision/script.test.js +69 -0
- package/{agile-context-engineering/workflows/plan-product-vision.xml → skills/plan-product-vision/workflow.xml} +4 -9
- package/skills/plan-story/SKILL.md +116 -0
- package/skills/plan-story/script.js +326 -0
- package/skills/plan-story/script.test.js +240 -0
- package/skills/plan-story/story-template.xml +451 -0
- package/{agile-context-engineering/workflows/plan-story.xml → skills/plan-story/workflow.xml} +1285 -909
- package/skills/research-external-solution/SKILL.md +107 -0
- package/skills/research-external-solution/script.js +238 -0
- package/skills/research-external-solution/script.test.js +134 -0
- package/{agile-context-engineering/workflows/research-external-solution.xml → skills/research-external-solution/workflow.xml} +4 -6
- package/skills/research-integration-solution/SKILL.md +98 -0
- package/{agile-context-engineering/templates/product/story-integration-solution.xml → skills/research-integration-solution/integration-solution-template.xml} +1 -0
- package/skills/research-integration-solution/script.js +231 -0
- package/skills/research-integration-solution/script.test.js +134 -0
- package/{agile-context-engineering/workflows/research-integration-solution.xml → skills/research-integration-solution/workflow.xml} +4 -5
- package/skills/research-story-wiki/SKILL.md +92 -0
- package/skills/research-story-wiki/script.js +231 -0
- package/skills/research-story-wiki/script.test.js +138 -0
- package/{agile-context-engineering/templates/product/story-wiki.xml → skills/research-story-wiki/story-wiki-template.xml} +4 -0
- package/{agile-context-engineering/workflows/research-story-wiki.xml → skills/research-story-wiki/workflow.xml} +5 -6
- package/skills/research-technical-solution/SKILL.md +103 -0
- package/skills/research-technical-solution/script.js +231 -0
- package/skills/research-technical-solution/script.test.js +134 -0
- package/{agile-context-engineering/workflows/research-technical-solution.xml → skills/research-technical-solution/workflow.xml} +4 -5
- package/skills/review-story/SKILL.md +100 -0
- package/skills/review-story/script.js +257 -0
- package/skills/review-story/script.test.js +169 -0
- package/skills/review-story/story-template.xml +451 -0
- package/{agile-context-engineering/workflows/review-story.xml → skills/review-story/workflow.xml} +1 -3
- package/skills/update/SKILL.md +53 -0
- package/{agile-context-engineering/workflows/update.xml → skills/update/workflow.xml} +237 -207
- package/agile-context-engineering/src/ace-tools.js +0 -2881
- package/agile-context-engineering/src/ace-tools.test.js +0 -1089
- package/agile-context-engineering/templates/_command.md +0 -54
- package/agile-context-engineering/templates/_workflow.xml +0 -17
- package/agile-context-engineering/templates/config.json +0 -0
- package/agile-context-engineering/templates/product/integration-solution.xml +0 -0
- package/agile-context-engineering/templates/wiki/wiki-readme.xml +0 -276
- package/commands/ace/execute-story.md +0 -137
- package/commands/ace/help.md +0 -93
- package/commands/ace/init-coding-standards.md +0 -83
- package/commands/ace/map-story.md +0 -156
- package/commands/ace/map-subsystem.md +0 -138
- package/commands/ace/map-system.md +0 -92
- package/commands/ace/plan-backlog.md +0 -83
- package/commands/ace/plan-feature.md +0 -89
- package/commands/ace/plan-product-vision.md +0 -81
- package/commands/ace/plan-story.md +0 -145
- package/commands/ace/research-external-solution.md +0 -138
- package/commands/ace/research-integration-solution.md +0 -135
- package/commands/ace/research-story-wiki.md +0 -116
- package/commands/ace/research-technical-solution.md +0 -147
- package/commands/ace/review-story.md +0 -109
- package/commands/ace/update.md +0 -54
- /package/{agile-context-engineering → shared}/utils/questioning.xml +0 -0
- /package/{agile-context-engineering/templates/product/story.xml → skills/execute-story/story-template.xml} +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-cross-cutting}/system-cross-cutting.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-guide}/guide.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-pattern}/pattern.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/decizions.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/system.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/tech-debt-index.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/subsystem-architecture.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/subsystem-structure.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-architecture.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-structure.xml +0 -0
- /package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/testing-framework.xml +0 -0
- /package/{agile-context-engineering/templates/product/product-backlog.xml → skills/plan-backlog/product-backlog-template.xml} +0 -0
- /package/{agile-context-engineering/templates/product/feature.xml → skills/plan-feature/feature-template.xml} +0 -0
- /package/{agile-context-engineering/templates/product/product-vision.xml → skills/plan-product-vision/product-vision-template.xml} +0 -0
- /package/{agile-context-engineering/templates/product/external-solution.xml → skills/research-external-solution/external-solution-template.xml} +0 -0
- /package/{agile-context-engineering/templates/product/story-technical-solution.xml → skills/research-technical-solution/technical-solution-template.xml} +0 -0
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
<system>
|
|
2
|
+
<purpose>
|
|
3
|
+
Template for `.docs/wiki/subsystems/[subsystem-name]/systems/<system-name>.md` — a coherent
|
|
4
|
+
domain system within a codebase subsystem. Answers "How does this system work RIGHT NOW?"
|
|
5
|
+
|
|
6
|
+
Each system doc describes WHAT exists, HOW it works, and WHERE things live for one
|
|
7
|
+
domain concern. It is the primary document an AI agent reads before implementing a
|
|
8
|
+
related story.
|
|
9
|
+
|
|
10
|
+
A "system" is a logical grouping of components that together deliver one domain capability
|
|
11
|
+
(e.g., Drawing System, User Management, Order Processing). A codebase subsystem may
|
|
12
|
+
contain multiple systems.
|
|
13
|
+
|
|
14
|
+
Complements:
|
|
15
|
+
- patterns/ docs (HOW to apply reusable implementation patterns)
|
|
16
|
+
- cross-cutting/ docs (concerns spanning multiple systems)
|
|
17
|
+
- guides/ docs (step-by-step recipes combining multiple patterns)
|
|
18
|
+
- decisions/ docs (WHY significant choices were made)
|
|
19
|
+
</purpose>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<overview>
|
|
23
|
+
# [System Name]
|
|
24
|
+
|
|
25
|
+
## Overview
|
|
26
|
+
One paragraph: what this system does, why it exists.
|
|
27
|
+
</overview>
|
|
28
|
+
|
|
29
|
+
<file-tree>
|
|
30
|
+
## File Tree
|
|
31
|
+
|
|
32
|
+
All files belonging to this system with purpose annotations.
|
|
33
|
+
Update when new files are added by a story.
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
src/[layer]/[area]/
|
|
37
|
+
|-- FileA.ts # Brief purpose
|
|
38
|
+
|-- FileB.ts # Brief purpose
|
|
39
|
+
`-- subfolder/
|
|
40
|
+
|-- FileC.ts # Brief purpose
|
|
41
|
+
`-- FileD.ts # Brief purpose
|
|
42
|
+
```
|
|
43
|
+
</file-tree>
|
|
44
|
+
|
|
45
|
+
<system-boundary>
|
|
46
|
+
## System Boundary
|
|
47
|
+
|
|
48
|
+
Mermaid diagram showing what is INSIDE this system vs what it connects to OUTSIDE.
|
|
49
|
+
Helps agents understand scope — what to touch, what NOT to touch.
|
|
50
|
+
|
|
51
|
+
```mermaid
|
|
52
|
+
graph TB
|
|
53
|
+
subgraph "System Name"
|
|
54
|
+
A[Component A]
|
|
55
|
+
B[Component B]
|
|
56
|
+
C[Component C]
|
|
57
|
+
end
|
|
58
|
+
External[External System]
|
|
59
|
+
B --> External
|
|
60
|
+
```
|
|
61
|
+
</system-boundary>
|
|
62
|
+
|
|
63
|
+
<class-and-interface-hierarchy>
|
|
64
|
+
## Class and Interface Hierarchy
|
|
65
|
+
|
|
66
|
+
Inheritance chains and interface implementations.
|
|
67
|
+
|
|
68
|
+
```mermaid
|
|
69
|
+
classDiagram
|
|
70
|
+
class IExample {
|
|
71
|
+
<<interface>>
|
|
72
|
+
}
|
|
73
|
+
class BaseClass {
|
|
74
|
+
<<abstract>>
|
|
75
|
+
}
|
|
76
|
+
IExample <|.. BaseClass
|
|
77
|
+
BaseClass <|-- ConcreteA
|
|
78
|
+
BaseClass <|-- ConcreteB
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Key contracts INLINE (only interfaces/types that define the API shape):
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
export interface IExample {
|
|
85
|
+
// Only the contract shape — not implementation code
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
</class-and-interface-hierarchy>
|
|
89
|
+
|
|
90
|
+
<entry-points>
|
|
91
|
+
## Entry Points
|
|
92
|
+
|
|
93
|
+
Where flows begin. Each entry point is a "front door" into this system.
|
|
94
|
+
- User action: Click on chart -> `file:MouseHandler.onClick`
|
|
95
|
+
- API endpoint: POST /api/resource -> `file:ResourceController.create`
|
|
96
|
+
- Event handler: onTimeframeChange -> `file:VisibilityManager.handleTimeframeChange`
|
|
97
|
+
</entry-points>
|
|
98
|
+
|
|
99
|
+
<data-flow-and-sequence-diagrams required="true">
|
|
100
|
+
## Data Flow and Sequence Diagrams
|
|
101
|
+
|
|
102
|
+
**MANDATORY — every system doc MUST have at least one mermaid sequenceDiagram.**
|
|
103
|
+
This is the most critical section. Without E2E flow diagrams, an agent cannot
|
|
104
|
+
understand how data moves through the system.
|
|
105
|
+
|
|
106
|
+
How data moves through this system for each key behavior.
|
|
107
|
+
Use mermaid sequence diagrams showing the complete flow through all layers.
|
|
108
|
+
|
|
109
|
+
### Flow: [Behavior Name]
|
|
110
|
+
|
|
111
|
+
```mermaid
|
|
112
|
+
sequenceDiagram
|
|
113
|
+
participant User
|
|
114
|
+
participant Entry as EntryPoint
|
|
115
|
+
participant Svc as Service
|
|
116
|
+
participant Domain as DomainEntity
|
|
117
|
+
participant Repo as Repository
|
|
118
|
+
participant DB as DataStore
|
|
119
|
+
|
|
120
|
+
User->>Entry: action
|
|
121
|
+
Entry->>Svc: command/query
|
|
122
|
+
Svc->>Domain: business logic
|
|
123
|
+
Domain-->>Svc: result
|
|
124
|
+
Svc->>Repo: persist/retrieve
|
|
125
|
+
Repo->>DB: SQL/query
|
|
126
|
+
DB-->>Repo: result
|
|
127
|
+
Repo-->>Svc: domain object
|
|
128
|
+
Svc-->>Entry: response
|
|
129
|
+
Entry-->>User: feedback
|
|
130
|
+
```
|
|
131
|
+
</data-flow-and-sequence-diagrams>
|
|
132
|
+
|
|
133
|
+
<components>
|
|
134
|
+
## Components
|
|
135
|
+
|
|
136
|
+
### [Component A]
|
|
137
|
+
- **Location**: `src/infrastructure/primitives/trend-line/TrendLine.ts:TrendLine`
|
|
138
|
+
- **Purpose**: One line
|
|
139
|
+
- **Key interface**: `src/domain/interfaces/IDrawing.ts:IDrawing`
|
|
140
|
+
- **Implements**: ISeriesPrimitive, IDrawing
|
|
141
|
+
|
|
142
|
+
### [Component B]
|
|
143
|
+
...
|
|
144
|
+
</components>
|
|
145
|
+
|
|
146
|
+
<key-behaviors>
|
|
147
|
+
## Key Behaviors
|
|
148
|
+
|
|
149
|
+
### [Behavior 1]
|
|
150
|
+
- **Trigger**: What causes this behavior
|
|
151
|
+
- **Logic**: Where the logic lives (`file:ClassName.method`), brief description
|
|
152
|
+
- **Effect**: What happens as a result
|
|
153
|
+
|
|
154
|
+
### [Behavior 2]
|
|
155
|
+
...
|
|
156
|
+
</key-behaviors>
|
|
157
|
+
|
|
158
|
+
<state-management>
|
|
159
|
+
## State Management
|
|
160
|
+
|
|
161
|
+
What state this system owns, where it lives, how it flows.
|
|
162
|
+
- **State location**: Redux store at `file:drawingSlice` / local state in `file:DrawingManager`
|
|
163
|
+
- **Key state shape**: (inline only if non-obvious)
|
|
164
|
+
- **State transitions**: What actions/events cause state changes
|
|
165
|
+
</state-management>
|
|
166
|
+
|
|
167
|
+
<error-propagation>
|
|
168
|
+
## Error Propagation
|
|
169
|
+
|
|
170
|
+
What errors this system throws/handles and how they propagate through layers.
|
|
171
|
+
- `DrawingValidationError` at `file:Path.validate` -> caught by `file:DrawingFactory` -> user notification
|
|
172
|
+
- `RepositoryError` at `file:ResourceRepository.save` -> propagates to controller -> HTTP 500
|
|
173
|
+
</error-propagation>
|
|
174
|
+
|
|
175
|
+
<constants-and-enums>
|
|
176
|
+
## Constants and Enums
|
|
177
|
+
|
|
178
|
+
Where constants and enums for this system are defined. Agent MUST use these, never hardcode.
|
|
179
|
+
- **Constants**: `src/domain/constants/DrawingConstants.ts:DrawingConstants`
|
|
180
|
+
- **Enums**: `src/domain/enums/DrawingType.ts:DrawingType`
|
|
181
|
+
- **Config lookup**: `src/domain/configs/DrawingConfigLookup.ts:DrawingConfigLookup`
|
|
182
|
+
</constants-and-enums>
|
|
183
|
+
|
|
184
|
+
<related-systems>
|
|
185
|
+
## Related Systems
|
|
186
|
+
|
|
187
|
+
What other systems this one interacts with. Agent should read these docs before modifying.
|
|
188
|
+
- [Event System](../cross-cutting/event-system.md) — publishes/subscribes to events
|
|
189
|
+
- [Settings System](./settings-system.md) — configuration modal
|
|
190
|
+
</related-systems>
|
|
191
|
+
|
|
192
|
+
<integration-points>
|
|
193
|
+
## Integration Points
|
|
194
|
+
|
|
195
|
+
- Connects to: [other system] via [mechanism] at `file:ClassName.method`
|
|
196
|
+
- Consumed by: [component] at `file:ClassName.method`
|
|
197
|
+
</integration-points>
|
|
198
|
+
|
|
199
|
+
<configuration-and-options>
|
|
200
|
+
## Configuration and Options
|
|
201
|
+
|
|
202
|
+
Options interface shape and defaults. Agent needs this to implement new variants.
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
export interface ISystemOptions {
|
|
206
|
+
// Contract shape — what options this system accepts
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Default values: `file:SystemDefaults.ts:SYSTEM_DEFAULTS`
|
|
211
|
+
</configuration-and-options>
|
|
212
|
+
|
|
213
|
+
<database>
|
|
214
|
+
## Database
|
|
215
|
+
|
|
216
|
+
Include ONLY if this system has database interactions. Omit entirely for pure frontend systems.
|
|
217
|
+
|
|
218
|
+
- **Table**: `table_name` — migration at `file:migrations/20240101_CreateTable.sql`
|
|
219
|
+
- **Key columns**: id, type, data (jsonb), created_at
|
|
220
|
+
- **Indexes**: `idx_table_column` on `column`
|
|
221
|
+
</database>
|
|
222
|
+
|
|
223
|
+
<gotchas>
|
|
224
|
+
## Gotchas
|
|
225
|
+
|
|
226
|
+
Things that commonly go wrong or are easy to forget when working with this system.
|
|
227
|
+
- Constructor timing: factory methods called from `super()` BEFORE subclass fields initialize
|
|
228
|
+
- Button IDs have NO hyphens, registry types DO have hyphens
|
|
229
|
+
</gotchas>
|
|
230
|
+
|
|
231
|
+
<tech-debt>
|
|
232
|
+
## Tech Debt
|
|
233
|
+
|
|
234
|
+
Known quality issues in this system discovered during story code reviews.
|
|
235
|
+
Items are added by the wiki mapper and removed when fixed by a future story.
|
|
236
|
+
Include ONLY if this system has known tech debt items. Omit section entirely if clean.
|
|
237
|
+
|
|
238
|
+
### [Short descriptive title of the issue]
|
|
239
|
+
- **Severity:** high | medium | low
|
|
240
|
+
- **File:** `[file-path:SymbolName]`
|
|
241
|
+
- **Description:** What the issue is, why it matters, and what could go wrong
|
|
242
|
+
if left unfixed. Reference specific code constructs where applicable.
|
|
243
|
+
- **Discovered during:** [story-id] — [story title]
|
|
244
|
+
|
|
245
|
+
### [Another issue]
|
|
246
|
+
- **Severity:** ...
|
|
247
|
+
- **File:** ...
|
|
248
|
+
- **Description:** ...
|
|
249
|
+
- **Discovered during:** ...
|
|
250
|
+
</tech-debt>
|
|
251
|
+
</template>
|
|
252
|
+
|
|
253
|
+
<guidelines>
|
|
254
|
+
|
|
255
|
+
**Documentation Style:**
|
|
256
|
+
- EXTREMELY SUCCINCT — every word must add value
|
|
257
|
+
- NO FLUFF — direct, actionable information only
|
|
258
|
+
- Bullet points over paragraphs
|
|
259
|
+
- File trees: ASCII only (`|--`, backtick-dash-dash) — never Unicode box-drawing characters
|
|
260
|
+
- **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 (directory listings).**
|
|
261
|
+
- Code references as `file-path:ClassName.methodName` or `file-path:functionName` (not line numbers)
|
|
262
|
+
- Inline snippets ONLY for interfaces, types, and short patterns that define contracts
|
|
263
|
+
- When referencing a whole class/module: `file-path:ClassName`
|
|
264
|
+
- When referencing a specific method: `file-path:ClassName.methodName`
|
|
265
|
+
- When referencing a standalone function: `file-path:functionName`
|
|
266
|
+
- When referencing a type/interface: `file-path:InterfaceName`
|
|
267
|
+
|
|
268
|
+
**Overview:**
|
|
269
|
+
- ONE paragraph. If you need more, the system boundary is too large — split it.
|
|
270
|
+
- State what the system DOES, not what it IS.
|
|
271
|
+
|
|
272
|
+
**File Tree:**
|
|
273
|
+
- List ALL files belonging to this system, grouped by directory.
|
|
274
|
+
- Every file gets a `# Brief purpose` comment.
|
|
275
|
+
- Use ASCII only: `|--` for branches, backtick-dash-dash for last item, `|` for continuation.
|
|
276
|
+
- Paths relative to subsystem root.
|
|
277
|
+
|
|
278
|
+
**System Boundary:**
|
|
279
|
+
- The mermaid diagram must clearly separate INSIDE from OUTSIDE.
|
|
280
|
+
- An agent reading this knows: "If my change touches something inside, I'm in scope.
|
|
281
|
+
If it touches something outside, I need to read that system's doc too."
|
|
282
|
+
|
|
283
|
+
**Class and Interface Hierarchy:**
|
|
284
|
+
- Use mermaid `classDiagram` for inheritance and interface implementation.
|
|
285
|
+
- Inline code snippets ONLY for interface/type contracts — never implementation code.
|
|
286
|
+
- If the hierarchy is trivial (1 class, no inheritance), omit this section.
|
|
287
|
+
|
|
288
|
+
**Entry Points:**
|
|
289
|
+
- Every "front door" into this system. An agent needs to know WHERE flows start.
|
|
290
|
+
- Use `file:ClassName.methodName` references.
|
|
291
|
+
|
|
292
|
+
**Data Flow and Sequence Diagrams (MANDATORY — never skip):**
|
|
293
|
+
- Every system doc MUST have at least one ```mermaid sequenceDiagram.
|
|
294
|
+
- One sequence diagram per key behavior (1-5 behaviors typically).
|
|
295
|
+
- Show COMPLETE E2E flow through all layers — entry to data store and back.
|
|
296
|
+
- Participants = components, not files. Keep it at the right abstraction level.
|
|
297
|
+
- If you cannot trace the flow, read more source files until you can. Do NOT skip.
|
|
298
|
+
|
|
299
|
+
**Components:**
|
|
300
|
+
- One subsection per major component. Location + Purpose + Key interface.
|
|
301
|
+
- Skip trivial components (DTOs, simple value objects) unless they define important contracts.
|
|
302
|
+
|
|
303
|
+
**Key Behaviors:**
|
|
304
|
+
- Trigger -> Logic -> Effect format. Concise.
|
|
305
|
+
- Reference code locations with `file:ClassName.method`.
|
|
306
|
+
|
|
307
|
+
**State Management:**
|
|
308
|
+
- Where state lives (Redux, local, database) and what causes transitions.
|
|
309
|
+
- Omit if the system is stateless or state is trivial.
|
|
310
|
+
|
|
311
|
+
**Error Propagation:**
|
|
312
|
+
- How errors flow through layers. What gets caught where.
|
|
313
|
+
- Omit if error handling follows a system-wide pattern documented in cross-cutting.
|
|
314
|
+
|
|
315
|
+
**Constants and Enums:**
|
|
316
|
+
- CRITICAL for AI agents — they must NEVER hardcode values.
|
|
317
|
+
- Always list the exact file paths where constants and enums are defined.
|
|
318
|
+
|
|
319
|
+
**Related Systems:**
|
|
320
|
+
- Cross-reference with markdown links to other docs.
|
|
321
|
+
- Agent should read these before modifying this system.
|
|
322
|
+
|
|
323
|
+
**Tech Debt:**
|
|
324
|
+
- One `###` subsection per known issue — NOT a table. Each issue needs enough context
|
|
325
|
+
for an agent to understand the problem without reading the code.
|
|
326
|
+
- Severity: `high` (security, data loss, production instability), `medium` (quality,
|
|
327
|
+
maintainability), `low` (cosmetic, minor inefficiency).
|
|
328
|
+
- Always link to the discovering story for traceability.
|
|
329
|
+
- REMOVE items when fixed by a future story.
|
|
330
|
+
- Omit the entire section if no tech debt exists in this system.
|
|
331
|
+
|
|
332
|
+
**Section Inclusion:**
|
|
333
|
+
- Include ALL sections that are relevant to the system.
|
|
334
|
+
- OMIT sections that genuinely don't apply (e.g., no Database for pure frontend).
|
|
335
|
+
- **NEVER omit Data Flow and Sequence Diagrams** — this section is always required.
|
|
336
|
+
- When updating, ADD or expand sections — don't rewrite sections that haven't changed.
|
|
337
|
+
|
|
338
|
+
**What does NOT belong here:**
|
|
339
|
+
- Story numbers, sprint context, or agile artifacts
|
|
340
|
+
- Planned vs Actual comparisons
|
|
341
|
+
- Acceptance criteria checklists
|
|
342
|
+
- Revision history (git handles this)
|
|
343
|
+
- Duplicated implementation code (reference it, don't copy it)
|
|
344
|
+
- Line numbers in references (they go stale)
|
|
345
|
+
- Testing docs, coverage metrics, test code
|
|
346
|
+
- Performance benchmarks
|
|
347
|
+
- Debugging utilities
|
|
348
|
+
- ASCII arrows or dependency trees (use mermaid; exception: file trees use ASCII)
|
|
349
|
+
|
|
350
|
+
</guidelines>
|
|
351
|
+
|
|
352
|
+
<evolution>
|
|
353
|
+
|
|
354
|
+
This is a LIVING document — updated after each story that touches this system.
|
|
355
|
+
|
|
356
|
+
**Update triggers:**
|
|
357
|
+
- New component added to this system
|
|
358
|
+
- New behavior or entry point introduced
|
|
359
|
+
- Existing behavior changed significantly
|
|
360
|
+
- New integration point or dependency added
|
|
361
|
+
- Class hierarchy changed (new subclass, interface change)
|
|
362
|
+
- State management approach changed
|
|
363
|
+
- New constants or enums added
|
|
364
|
+
- File tree changed (new files, removed files, moved files)
|
|
365
|
+
- Tech debt discovered or resolved in this system's files
|
|
366
|
+
|
|
367
|
+
**NOT an update trigger:**
|
|
368
|
+
- Bug fixes that don't change system behavior
|
|
369
|
+
- Internal refactoring within existing components
|
|
370
|
+
- New test files
|
|
371
|
+
- Style/formatting changes
|
|
372
|
+
|
|
373
|
+
**Update rules:**
|
|
374
|
+
- ADD new sections or expand existing ones — don't rewrite unchanged sections
|
|
375
|
+
- UPDATE file tree to reflect current state
|
|
376
|
+
- REMOVE references to deleted files or components
|
|
377
|
+
- The document must always reflect the CURRENT state, not history
|
|
378
|
+
|
|
379
|
+
</evolution>
|
|
380
|
+
|
|
381
|
+
</system>
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
<walkthrough>
|
|
2
|
+
<purpose>
|
|
3
|
+
Template for `.docs/wiki/subsystems/[subsystem-name]/walkthroughs/<flow-name>.md` — a deep,
|
|
4
|
+
tutorial-style explanation of a complex end-to-end flow. Answers "Walk me through EXACTLY
|
|
5
|
+
what happens when X."
|
|
6
|
+
|
|
7
|
+
Each walkthrough traces a single flow from entry point to exit point, showing ACTUAL code
|
|
8
|
+
from the codebase at every step, explaining what each piece does and WHY, and calling out
|
|
9
|
+
framework/library concepts with info boxes when external tools are involved.
|
|
10
|
+
|
|
11
|
+
Written for humans (especially new developers and interns) who need to UNDERSTAND a flow
|
|
12
|
+
before they can work with it. Unlike system docs (terse references for AI agents),
|
|
13
|
+
walkthroughs prioritize completeness of information — but deliver it in minimal words.
|
|
14
|
+
|
|
15
|
+
A "walkthrough" is a traced execution flow through multiple classes and layers:
|
|
16
|
+
e.g., "Message arrives via SignalR until it reaches the LLM", "LLM calls a tool until
|
|
17
|
+
the drawing appears on the chart", "User places an order until it's confirmed".
|
|
18
|
+
|
|
19
|
+
Create a walkthrough when:
|
|
20
|
+
- A flow spans 3+ classes across multiple architectural layers
|
|
21
|
+
- External frameworks/libraries are involved that need explanation (MAF, SignalR, EF Core)
|
|
22
|
+
- A system doc would need paragraphs of explanation with code snippets (that's a walkthrough, not a system doc)
|
|
23
|
+
- An intern reading the code alone would not understand what's happening without guidance
|
|
24
|
+
|
|
25
|
+
**Emphasis Frameworks:**
|
|
26
|
+
Walkthroughs can specify one or more "emphasis frameworks" — external frameworks,
|
|
27
|
+
libraries, APIs, or SDKs that deserve deep explanation throughout the walkthrough.
|
|
28
|
+
When an emphasis framework is specified:
|
|
29
|
+
- EVERY step where the flow touches that framework MUST have a framework info box
|
|
30
|
+
- The info box explains the specific framework concept used in that step
|
|
31
|
+
- ALL code from ALL steps that interact with the emphasis framework is shown and explained
|
|
32
|
+
- The agent researches the framework (via WebSearch/context7 or provided docs) if needed
|
|
33
|
+
- The Framework Concepts Reference table at the end is MANDATORY
|
|
34
|
+
|
|
35
|
+
Examples of emphasis frameworks: SignalR, EF Core, MAF (Microsoft Agent Framework),
|
|
36
|
+
React Query, gRPC, MediatR, AutoMapper. Can be specified by name (agent researches)
|
|
37
|
+
or with documentation paths/URLs (agent reads provided docs).
|
|
38
|
+
|
|
39
|
+
Complements:
|
|
40
|
+
- systems/ docs (terse WHAT reference — walkthroughs explain the HOW in depth)
|
|
41
|
+
- patterns/ docs (reusable structural patterns — walkthroughs trace specific flows through them)
|
|
42
|
+
- guides/ docs (procedural recipes for DOING — walkthroughs explain for UNDERSTANDING)
|
|
43
|
+
- cross-cutting/ docs (shared infrastructure — walkthroughs show how flows pass through them)
|
|
44
|
+
</purpose>
|
|
45
|
+
|
|
46
|
+
<template>
|
|
47
|
+
<title>
|
|
48
|
+
# [Flow Name]
|
|
49
|
+
|
|
50
|
+
One line: what this flow does and when it triggers.
|
|
51
|
+
</title>
|
|
52
|
+
|
|
53
|
+
<file-map>
|
|
54
|
+
## Files Involved
|
|
55
|
+
|
|
56
|
+
Every file this flow touches, in execution order.
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
src/[layer]/[area]/
|
|
60
|
+
|-- FileA.cs # Entry point
|
|
61
|
+
|-- FileB.cs # Orchestrates flow
|
|
62
|
+
|-- FileC.cs # Core logic
|
|
63
|
+
`-- FileD.cs # Sends result
|
|
64
|
+
```
|
|
65
|
+
</file-map>
|
|
66
|
+
|
|
67
|
+
<flow-diagram>
|
|
68
|
+
## Flow Overview
|
|
69
|
+
|
|
70
|
+
```mermaid
|
|
71
|
+
sequenceDiagram
|
|
72
|
+
participant A as ComponentA
|
|
73
|
+
participant B as ComponentB
|
|
74
|
+
participant C as ComponentC
|
|
75
|
+
participant D as ExternalSystem
|
|
76
|
+
|
|
77
|
+
A->>B: step description
|
|
78
|
+
B->>C: step description
|
|
79
|
+
C->>D: step description
|
|
80
|
+
D-->>C: response
|
|
81
|
+
C-->>B: result
|
|
82
|
+
B-->>A: result
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Participants = real classes/components. Arrows = real method calls.
|
|
86
|
+
Steps below explain each arrow.
|
|
87
|
+
</flow-diagram>
|
|
88
|
+
|
|
89
|
+
<steps>
|
|
90
|
+
## Step-by-Step
|
|
91
|
+
|
|
92
|
+
### Step 1: [What happens]
|
|
93
|
+
|
|
94
|
+
**File:** `path/to/File.cs:ClassName.MethodName`
|
|
95
|
+
|
|
96
|
+
[1-2 sentences: what this step does and WHY. No filler.]
|
|
97
|
+
|
|
98
|
+
```csharp
|
|
99
|
+
// Actual code from the codebase
|
|
100
|
+
public async Task MethodName(string param1, string param2)
|
|
101
|
+
{
|
|
102
|
+
var result = await _dependency.DoSomething(param1);
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
`_dependency` — injected via constructor, does X.
|
|
107
|
+
`param1` — the Y received from Z.
|
|
108
|
+
[Only explain what's non-obvious. Skip what the code already says clearly.]
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### Step 2: [What happens]
|
|
113
|
+
|
|
114
|
+
**File:** `path/to/AnotherFile.cs:ClassName.MethodName`
|
|
115
|
+
|
|
116
|
+
[What and why — terse.]
|
|
117
|
+
|
|
118
|
+
```csharp
|
|
119
|
+
// Actual code...
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
> **[Framework]: [Concept]**
|
|
123
|
+
>
|
|
124
|
+
> [Succinct explanation of the framework concept. What it is, what it does for us.
|
|
125
|
+
> No history, no alternatives, no "in general" — just what the reader needs to
|
|
126
|
+
> understand THIS code.]
|
|
127
|
+
>
|
|
128
|
+
> *Source: [link to official docs]*
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### Step 3: [What happens]
|
|
133
|
+
|
|
134
|
+
...continue for every step in the flow...
|
|
135
|
+
</steps>
|
|
136
|
+
|
|
137
|
+
<framework-concepts>
|
|
138
|
+
## Framework Concepts Reference
|
|
139
|
+
|
|
140
|
+
Consolidated lookup for framework concepts explained inline above.
|
|
141
|
+
|
|
142
|
+
| Concept | Framework | What It Does | First Appearance |
|
|
143
|
+
|---------|-----------|-------------|------------------|
|
|
144
|
+
| `AIFunctionFactory.Create()` | MS Agent Framework | C# method -> LLM tool | [Step N](#step-n) |
|
|
145
|
+
| `ChatClientAgent` | MS Agent Framework | Wraps IChatClient with auto tool loop | [Step M](#step-m) |
|
|
146
|
+
|
|
147
|
+
Include ONLY if external frameworks/libraries are involved.
|
|
148
|
+
</framework-concepts>
|
|
149
|
+
|
|
150
|
+
<related-docs>
|
|
151
|
+
## Related Documentation
|
|
152
|
+
|
|
153
|
+
- [System Doc](../systems/relevant-system.md) — terse reference
|
|
154
|
+
- [Guide](../guides/relevant-guide.md) — recipe for adding to this flow
|
|
155
|
+
- [Official Docs](../framework-docs/relevant-page.md) — framework docs
|
|
156
|
+
</related-docs>
|
|
157
|
+
</template>
|
|
158
|
+
|
|
159
|
+
<guidelines>
|
|
160
|
+
|
|
161
|
+
### Density Over Prose
|
|
162
|
+
- **EXTREMELY SUCCINCT** — every word must add value. If a word does not add value, remove it.
|
|
163
|
+
- **NO FLUFF** — no introductions, no summaries of what the section will contain, no transitions
|
|
164
|
+
- Bullet points over paragraphs. Tables over bullet points when comparing.
|
|
165
|
+
- If you can say it in 3 words, don't use 10. Then try to say it in 2.
|
|
166
|
+
- **BUT: ALL needed information MUST be present.** Succinctness means cutting WORDS, not cutting INFORMATION. Every concept, every parameter, every non-obvious behavior must be explained — just in fewer words.
|
|
167
|
+
|
|
168
|
+
### Complete but Dense Explanations
|
|
169
|
+
- Explain the WHY, not just the WHAT — "X because Y" not "X happens"
|
|
170
|
+
- After each code snippet: explain ONLY what's non-obvious. If the code says `price > 0`, don't write "checks that price is positive" — the code already says that. DO explain hidden behaviors, framework magic, non-obvious field origins.
|
|
171
|
+
- Use inline code references for fields/params: `` `_connectionId` — captured from `Context.ConnectionId` in AgentHub ``
|
|
172
|
+
- One-line explanations preferred. Multi-line only when genuinely complex.
|
|
173
|
+
|
|
174
|
+
### Code Snippets (MANDATORY per step)
|
|
175
|
+
- ALWAYS from the actual codebase — verified by reading the file
|
|
176
|
+
- NEVER pseudocode, NEVER summaries, NEVER fabricated
|
|
177
|
+
- Use correct language tag: ```csharp, ```typescript, ```json
|
|
178
|
+
- **FOCUSED**: show ONLY the lines relevant to what the step is explaining. If a method has 50 lines but this step is about lines 10-15, show lines 10-15 with a `// ... (validation above)` or `// ... (setup omitted)` comment for context. The snippet serves the step's explanation, not the other way around.
|
|
179
|
+
- Short methods (under 20 lines) where the ENTIRE method is relevant: show entirely
|
|
180
|
+
- Long methods: show the relevant portion only. Use `// ...` comments to indicate omitted sections above/below.
|
|
181
|
+
|
|
182
|
+
### Flow Diagram (MANDATORY)
|
|
183
|
+
- Every walkthrough MUST start with a mermaid sequenceDiagram
|
|
184
|
+
- Participants = real classes/components, not abstract concepts
|
|
185
|
+
- Arrows = real method calls, labeled with method name
|
|
186
|
+
- The diagram is the map; the steps are the guided tour
|
|
187
|
+
|
|
188
|
+
### Framework Info Boxes (when applicable)
|
|
189
|
+
- Use markdown blockquotes (`>`) with `> **[Framework]: [Concept]**` header
|
|
190
|
+
- Explain as if the reader has NEVER used this framework — but in minimal words
|
|
191
|
+
- Place IMMEDIATELY after the first code snippet that uses the concept
|
|
192
|
+
- Each concept explained ONCE — do not repeat
|
|
193
|
+
- Link to official docs with `*Source: [link]*`
|
|
194
|
+
- Keep it dense: what it is, what it does for us, done. No history, no alternatives.
|
|
195
|
+
|
|
196
|
+
### Emphasis Frameworks (when specified)
|
|
197
|
+
- When emphasis-frameworks are specified, framework info boxes become MANDATORY
|
|
198
|
+
for EVERY step that touches the emphasis framework — not just the first occurrence
|
|
199
|
+
- ALL code that interacts with the emphasis framework must be shown in full
|
|
200
|
+
- The Framework Concepts Reference table is MANDATORY (not optional)
|
|
201
|
+
- If the agent does not know the framework: use WebSearch or context7 MCP to research it
|
|
202
|
+
- If framework docs are provided (file paths or URLs): read them BEFORE writing any steps
|
|
203
|
+
|
|
204
|
+
### Minimum Length
|
|
205
|
+
- At least 300 lines — length comes from code snippets and completeness, not from prose
|
|
206
|
+
- Complex flows (3+ frameworks, 10+ classes): 500-1000 lines
|
|
207
|
+
- Under 200 lines = not enough information, add more steps/explanations
|
|
208
|
+
|
|
209
|
+
### Section Inclusion
|
|
210
|
+
- Title, File Map, Flow Diagram, Step-by-Step: ALWAYS required
|
|
211
|
+
- Framework Concepts Reference: MANDATORY if emphasis-frameworks specified; otherwise ONLY if external frameworks involved
|
|
212
|
+
- Related Documentation: ALWAYS required
|
|
213
|
+
|
|
214
|
+
### What Does NOT Belong Here
|
|
215
|
+
- Terse bullet-point references (that's systems/)
|
|
216
|
+
- Structural pattern descriptions (that's patterns/)
|
|
217
|
+
- Procedural "how to add X" recipes (that's guides/)
|
|
218
|
+
- Architecture decision rationale (that's decisions/)
|
|
219
|
+
- Story numbers, sprint context, revision history
|
|
220
|
+
- Testing instructions or test code
|
|
221
|
+
- Frontend code in a backend walkthrough (or vice versa) — scope to ONE side
|
|
222
|
+
- Speculation about future changes — document what IS, not what might be
|
|
223
|
+
- Filler phrases: "Let's look at", "Now we'll examine", "As mentioned above", "It's worth noting"
|
|
224
|
+
|
|
225
|
+
</guidelines>
|
|
226
|
+
|
|
227
|
+
<evolution>
|
|
228
|
+
|
|
229
|
+
This is a LIVING document — updated when the flow it describes changes.
|
|
230
|
+
|
|
231
|
+
**Update triggers:**
|
|
232
|
+
- New step added to the flow
|
|
233
|
+
- Step removed from the flow
|
|
234
|
+
- Step logic changed significantly
|
|
235
|
+
- Framework/library upgraded, APIs changed
|
|
236
|
+
- Code snippets no longer match codebase
|
|
237
|
+
- New framework concept introduced
|
|
238
|
+
|
|
239
|
+
**NOT an update trigger:**
|
|
240
|
+
- Bug fixes that don't change flow structure
|
|
241
|
+
- Internal refactoring within a single step
|
|
242
|
+
- New feature using a DIFFERENT flow (create a new walkthrough)
|
|
243
|
+
- Style/formatting changes to the code
|
|
244
|
+
|
|
245
|
+
**Update rules:**
|
|
246
|
+
- UPDATE code snippets to match current codebase — stale snippets are worse than no docs
|
|
247
|
+
- ADD new steps when the flow gains a stage
|
|
248
|
+
- REMOVE steps that no longer exist
|
|
249
|
+
- UPDATE framework info boxes when APIs change
|
|
250
|
+
- UPDATE mermaid diagram to reflect current flow
|
|
251
|
+
- Document must always reflect CURRENT code state, not history
|
|
252
|
+
|
|
253
|
+
</evolution>
|
|
254
|
+
|
|
255
|
+
</walkthrough>
|