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,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
|
+
<<interface>>
|
|
37
|
+
+method() ReturnType
|
|
38
|
+
}
|
|
39
|
+
class AbstractBase {
|
|
40
|
+
<<abstract>>
|
|
41
|
+
+templateMethod()
|
|
42
|
+
#factoryMethod()* ReturnType
|
|
43
|
+
}
|
|
44
|
+
IContract <|.. AbstractBase
|
|
45
|
+
AbstractBase <|-- ConcreteA
|
|
46
|
+
AbstractBase <|-- 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>
|
|
@@ -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>
|
|
@@ -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>
|