@eventmodelers/cli 1.0.36 → 1.0.38
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/package.json +1 -1
- package/shared/skills/learn-eventmodelers-api/SKILL.md +22 -13
- package/stacks/modeling-kit/templates/.claude/skills/add-next-slice/SKILL.md +2 -23
- package/stacks/modeling-kit/templates/.claude/skills/add-next-slice/references/api-fallback.md +11 -0
- package/stacks/modeling-kit/templates/.claude/skills/analyze-existing-model/SKILL.md +6 -57
- package/stacks/modeling-kit/templates/.claude/skills/analyze-existing-model/references/api-fallback.md +68 -0
- package/stacks/modeling-kit/templates/.claude/skills/attributes/SKILL.md +4 -61
- package/stacks/modeling-kit/templates/.claude/skills/attributes/references/api-fallback.md +39 -0
- package/stacks/modeling-kit/templates/.claude/skills/discover-storyboard/SKILL.md +9 -53
- package/stacks/modeling-kit/templates/.claude/skills/discover-storyboard/references/api-fallback.md +63 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-applying-conways-law/SKILL.md +12 -380
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-applying-conways-law/references/examples.md +329 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-brainstorming-events/SKILL.md +45 -290
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-brainstorming-events/references/api-fallback.md +97 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-brainstorming-events/references/examples.md +35 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-checking-completeness/SKILL.md +15 -410
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-checking-completeness/references/api-fallback.md +22 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-checking-completeness/references/examples.md +397 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-core-rules/SKILL.md +182 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-designing-automation-chains/SKILL.md +148 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-designing-automation-chains/references/api-fallback.md +21 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-designing-event-models/SKILL.md +48 -448
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-designing-event-models/references/examples.md +167 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-elaborating-scenarios/SKILL.md +31 -380
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-elaborating-scenarios/references/api-fallback.md +31 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-elaborating-scenarios/references/examples.md +216 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-inputs/SKILL.md +33 -393
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-inputs/references/api-fallback.md +79 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-inputs/references/examples.md +282 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-outputs/SKILL.md +54 -454
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-outputs/references/api-fallback.md +67 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-outputs/references/examples.md +273 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-interview-protocol/SKILL.md +31 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-optimizing-stream-design/SKILL.md +37 -184
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-optimizing-stream-design/references/domain-patterns.md +58 -99
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-optimizing-stream-design/references/patterns.md +82 -163
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-orchestrating-event-modeling/SKILL.md +86 -78
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-orchestrating-event-modeling/references/api-fallback.md +51 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-plotting-events/SKILL.md +5 -5
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-plotting-events/references/api-fallback.md +10 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-slicing-event-models/SKILL.md +22 -51
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-slicing-event-models/references/api-fallback.md +41 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-slicing-event-models/references/examples.md +12 -9
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-slicing-event-models/references/patterns.md +1 -10
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-storyboarding-events/SKILL.md +29 -382
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-storyboarding-events/references/api-fallback.md +77 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-storyboarding-events/references/examples.md +271 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-translating-external-events/SKILL.md +12 -349
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-translating-external-events/references/examples.md +306 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-validating-event-models/SKILL.md +69 -107
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-validating-event-models/references/api-fallback.md +14 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-validating-event-models-checklist/SKILL.md +75 -160
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-validating-event-models-checklist/references/api-fallback.md +14 -0
- package/stacks/modeling-kit/templates/.claude/skills/examples/SKILL.md +3 -110
- package/stacks/modeling-kit/templates/.claude/skills/examples/references/api-fallback.md +118 -0
- package/stacks/modeling-kit/templates/.claude/skills/handle-comment/SKILL.md +5 -25
- package/stacks/modeling-kit/templates/.claude/skills/handle-comment/references/api-fallback.md +35 -0
- package/stacks/modeling-kit/templates/.claude/skills/html-screen/SKILL.md +9 -44
- package/stacks/modeling-kit/templates/.claude/skills/html-screen/references/api-fallback.md +51 -0
- package/stacks/modeling-kit/templates/.claude/skills/place-element/SKILL.md +34 -180
- package/stacks/modeling-kit/templates/.claude/skills/place-element/references/api-fallback.md +203 -0
- package/stacks/modeling-kit/templates/.claude/skills/storyboard/SKILL.md +14 -81
- package/stacks/modeling-kit/templates/.claude/skills/storyboard/references/api-fallback.md +74 -0
- package/stacks/modeling-kit/templates/.claude/skills/storyboard-screen/SKILL.md +4 -45
- package/stacks/modeling-kit/templates/.claude/skills/storyboard-screen/references/api-fallback.md +44 -0
- package/stacks/modeling-kit/templates/.claude/skills/timeline/SKILL.md +19 -88
- package/stacks/modeling-kit/templates/.claude/skills/timeline/references/api-fallback.md +91 -0
- package/stacks/modeling-kit/templates/.claude/skills/update-prompt-status/SKILL.md +1 -9
- package/stacks/modeling-kit/templates/.claude/skills/update-prompt-status/references/api-fallback.md +14 -0
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-integrating-legacy-systems/SKILL.md +0 -674
- package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-optimizing-stream-design/references/snapshotting.md +0 -204
package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-applying-conways-law/SKILL.md
CHANGED
|
@@ -11,16 +11,14 @@ allowed-tools:
|
|
|
11
11
|
|
|
12
12
|
> **Before doing anything else**, invoke the `connect` skill — if not already connected — to resolve `TOKEN`, `BOARD_ID`, `ORG_ID`, and `BASE_URL`. Do not proceed until it has completed. Consult `learn-eventmodelers-api` only if you need to look up a specific endpoint or field this file doesn't cover — don't load it eagerly.
|
|
13
13
|
|
|
14
|
+
This step applies the shared element rules in **`eventmodeling-core-rules`** — read it once per session if you haven't already; it defines what a COMMAND/EVENT/READMODEL/SCREEN/AUTOMATION is, how each is named, and the anti-patterns to reject, so this step doesn't restate them.
|
|
15
|
+
|
|
14
16
|
## Interview Phase (Optional)
|
|
15
17
|
|
|
16
18
|
**When to Interview**: Skip if the user has already specified: existing team structure, team responsibilities, and autonomous boundary preferences. Interview when team structure is unclear or organizational alignment hasn't been discussed.
|
|
17
19
|
|
|
18
|
-
**Interview Strategy**: Understand team organization and decision-making to design system boundaries that teams can own independently. Misalignment here creates bottlenecks and tight coupling later.
|
|
19
|
-
|
|
20
20
|
### Critical Questions
|
|
21
21
|
|
|
22
|
-
When team structure or boundaries are unclear:
|
|
23
|
-
|
|
24
22
|
1. **Team Structure & Ownership** (Impact: Determines how many swimlanes/systems to create)
|
|
25
23
|
- Question: "How is your organization structured? (A) Single team owns everything, (B) Separate teams by domain (payments, inventory, etc.), (C) Separate teams by function (backend, frontend, etc.)"
|
|
26
24
|
- Why it matters: Team structure directly shapes system boundaries; aligning them reduces coordination overhead
|
|
@@ -36,63 +34,7 @@ When team structure or boundaries are unclear:
|
|
|
36
34
|
- Why it matters: External systems often become separate swimlanes; knowing which ones matters for boundary design
|
|
37
35
|
- Follow-up triggers: For each integration → ask "Who owns the integration—existing team or new team?"
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
**Conditional Entry**:
|
|
42
|
-
```
|
|
43
|
-
If user has provided:
|
|
44
|
-
- Clear team structure (who owns what)
|
|
45
|
-
- AND specified desired level of autonomy
|
|
46
|
-
- AND identified external integrations
|
|
47
|
-
|
|
48
|
-
Then: Skip interview, proceed directly to swimlanes
|
|
49
|
-
|
|
50
|
-
Else: Conduct interview
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Phase 1: Organization Assessment** (Questions 1-2)
|
|
54
|
-
- Understand team structure
|
|
55
|
-
- Determine autonomy expectations
|
|
56
|
-
- Establish boundary philosophy
|
|
57
|
-
|
|
58
|
-
**Phase 2: Integration Mapping** (Question 3)
|
|
59
|
-
- Identify external systems
|
|
60
|
-
- Plan integration boundaries
|
|
61
|
-
- Finalize swimlane count
|
|
62
|
-
|
|
63
|
-
### Capturing Interview Findings
|
|
64
|
-
|
|
65
|
-
Append findings to the project's event modeling file:
|
|
66
|
-
|
|
67
|
-
**File**: `.trogonai/interviews/[project-name]/EVENTMODELING.md`
|
|
68
|
-
|
|
69
|
-
Use Write tool to add/update this section:
|
|
70
|
-
|
|
71
|
-
```markdown
|
|
72
|
-
## 6. Conway's Law (eventmodeling-applying-conways-law)
|
|
73
|
-
|
|
74
|
-
### Team Structure
|
|
75
|
-
- Team 1: [Name] - Owns [domain]
|
|
76
|
-
- Team 2: [Name] - Owns [domain]
|
|
77
|
-
- Team 3: [Name] - Owns [domain]
|
|
78
|
-
|
|
79
|
-
### Autonomy Goals
|
|
80
|
-
[High / Moderate / Low]
|
|
81
|
-
|
|
82
|
-
### Swimlanes
|
|
83
|
-
- [Swimlane 1]: [Team] owns [events]
|
|
84
|
-
- [Swimlane 2]: [Team] owns [events]
|
|
85
|
-
- [Swimlane 3]: [Team] owns [events]
|
|
86
|
-
|
|
87
|
-
### Cross-Team Communication
|
|
88
|
-
- [Team A] → [Team B] via [event]
|
|
89
|
-
- [Team B] → [Team C] via [event]
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Update Interview Trail:
|
|
93
|
-
```markdown
|
|
94
|
-
| 6 | eventmodeling-applying-conways-law | [today] | Swimlanes defined, team boundaries confirmed |
|
|
95
|
-
```
|
|
37
|
+
Follow **`eventmodeling-interview-protocol`** to run this interview and record its findings — label this step "**6. Conway's Law** (`eventmodeling-applying-conways-law`)". Findings should cover: team structure and ownership, autonomy goals, the resulting swimlanes (which team owns which events), and cross-team communication paths.
|
|
96
38
|
|
|
97
39
|
---
|
|
98
40
|
|
|
@@ -100,339 +42,29 @@ Update Interview Trail:
|
|
|
100
42
|
|
|
101
43
|
Given all events, inputs, and outputs, organize by ownership:
|
|
102
44
|
|
|
103
|
-
|
|
104
|
-
Determine what constitutes a separate system/bounded context:
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
System Boundaries:
|
|
108
|
-
|
|
45
|
+
> **This step's "swimlane" is the same boundary `eventmodeling-brainstorming-events` governs, described from the ownership angle instead of the board-mechanics angle.** That skill's Swimlane Rules restrict the board's actual `swimlane`-type lane to marking integration with another system — this step doesn't loosen that cap or add a lane per team. Under Conway's Law, "team" and "system" name the same boundary: a system this chapter's process integrates with is, by definition, owned by some other team. The diagrams below are a narrative/analysis device for documenting *who owns what* across those boundaries — not an instruction to create one board swimlane lane per team named here.
|
|
109
46
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- Events: OrderCreated, OrderConfirmed, Cancelled
|
|
113
|
-
- Owns: Order state machine
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
Payment Processing System
|
|
118
|
-
- Owns: Payment authorization and processing
|
|
119
|
-
- Events: PaymentAuthorized, PaymentFailed
|
|
120
|
-
- Owns: Payment state machine
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
Inventory System
|
|
125
|
-
- Owns: Stock levels and reservations
|
|
126
|
-
- Events: InventoryReserved, InventoryAllocated
|
|
127
|
-
- Owns: Inventory state machine
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
Fulfillment System
|
|
132
|
-
- Owns: Shipments and delivery
|
|
133
|
-
- Events: OrderShipped, DeliveryConfirmed
|
|
134
|
-
- Owns: Shipment state machine
|
|
135
|
-
|
|
136
|
-
```
|
|
47
|
+
### 1. Identify System Boundaries
|
|
48
|
+
Determine what constitutes a separate system/bounded context: for each candidate system, name what it owns, list the events it produces, and note the state machine it's responsible for. A full worked example (Order/Payment/Inventory/Fulfillment domain) is in `references/examples.md`.
|
|
137
49
|
|
|
138
50
|
### 2. Create Swimlane Diagram
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
Event Stream Timeline
|
|
143
|
-
→
|
|
144
|
-
|
|
145
|
-
Order Team OrderCreated OrderConfirmed OrderCancelled
|
|
146
|
-
|
|
147
|
-
Payment Team PaymentAuthorized PaymentFailed
|
|
148
|
-
|
|
149
|
-
Inventory Team InventoryReserved
|
|
150
|
-
|
|
151
|
-
Fulfillment Team OrderShipped DeliveryConfirmed
|
|
152
|
-
|
|
153
|
-
Each team owns their swimlane events
|
|
154
|
-
Coordination via events crossing swimlanes
|
|
155
|
-
```
|
|
51
|
+
Lay the events out on a timeline with one row per team, showing which events each team owns and where coordination crosses from one team's row into another's. A full worked example is in `references/examples.md`.
|
|
156
52
|
|
|
157
53
|
### 3. Map Team Responsibilities
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
Order Management Team
|
|
162
|
-
Commands they handle:
|
|
163
|
-
- CreateOrder
|
|
164
|
-
- ConfirmOrder
|
|
165
|
-
- CancelOrder
|
|
166
|
-
Events they produce:
|
|
167
|
-
- OrderCreated
|
|
168
|
-
- OrderConfirmed
|
|
169
|
-
- OrderCancelled
|
|
170
|
-
Read Models they maintain:
|
|
171
|
-
- OrderStatusView
|
|
172
|
-
- OrderListView
|
|
173
|
-
Systems they call:
|
|
174
|
-
- Payment System (to confirm payment)
|
|
175
|
-
- Inventory System (to check stock)
|
|
176
|
-
|
|
177
|
-
Payment Processing Team
|
|
178
|
-
Commands they handle:
|
|
179
|
-
- AuthorizePayment
|
|
180
|
-
- ProcessPayment
|
|
181
|
-
- RefundPayment
|
|
182
|
-
Events they produce:
|
|
183
|
-
- PaymentAuthorized
|
|
184
|
-
- PaymentFailed
|
|
185
|
-
- PaymentRefunded
|
|
186
|
-
Read Models they maintain:
|
|
187
|
-
- PaymentStatusView
|
|
188
|
-
- TransactionHistory
|
|
189
|
-
Systems they depend on:
|
|
190
|
-
- Payment Gateway (external)
|
|
191
|
-
- Order System (for context)
|
|
192
|
-
|
|
193
|
-
Inventory Team
|
|
194
|
-
Commands they handle:
|
|
195
|
-
- ReserveInventory
|
|
196
|
-
- ReleaseReservation
|
|
197
|
-
- AllocateStock
|
|
198
|
-
Events they produce:
|
|
199
|
-
- InventoryReserved
|
|
200
|
-
- ReservationReleased
|
|
201
|
-
- StockAllocated
|
|
202
|
-
Read Models they maintain:
|
|
203
|
-
- InventoryLevelView
|
|
204
|
-
- ReservationView
|
|
205
|
-
Systems they depend on:
|
|
206
|
-
- Order System (triggers)
|
|
207
|
-
- Warehouse System (stock source)
|
|
208
|
-
|
|
209
|
-
Fulfillment Team
|
|
210
|
-
Commands they handle:
|
|
211
|
-
- CreateShipment
|
|
212
|
-
- MarkShipped
|
|
213
|
-
- ConfirmDelivery
|
|
214
|
-
Events they produce:
|
|
215
|
-
- ShipmentCreated
|
|
216
|
-
- OrderShipped
|
|
217
|
-
- DeliveryConfirmed
|
|
218
|
-
Read Models they maintain:
|
|
219
|
-
- ShipmentTrackingView
|
|
220
|
-
- DeliveryScheduleView
|
|
221
|
-
Systems they depend on:
|
|
222
|
-
- Inventory System (items to ship)
|
|
223
|
-
- Carrier APIs (tracking)
|
|
224
|
-
```
|
|
54
|
+
For each team, define: the commands they handle, the events they produce, the read models they maintain, and the other systems they call or depend on. A full worked example (Order/Payment/Inventory/Fulfillment teams) is in `references/examples.md`.
|
|
225
55
|
|
|
226
56
|
### 4. Identify Inter-System Communication
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
```
|
|
230
|
-
Communication Patterns:
|
|
231
|
-
|
|
232
|
-
Order System → Payment System
|
|
233
|
-
Order System produces: OrderConfirmed event
|
|
234
|
-
Payment System consumes: OrderConfirmed
|
|
235
|
-
Payment System reacts: Issues AuthorizePayment command
|
|
236
|
-
Payment System produces: PaymentAuthorized event
|
|
237
|
-
|
|
238
|
-
Order System → Inventory System
|
|
239
|
-
Order System produces: PaymentAuthorized event (indirectly)
|
|
240
|
-
Inventory System consumes: PaymentAuthorized
|
|
241
|
-
Inventory System reacts: Issues ReserveInventory command
|
|
242
|
-
Inventory System produces: InventoryReserved event
|
|
243
|
-
|
|
244
|
-
Inventory System → Fulfillment System
|
|
245
|
-
Inventory System produces: InventoryReserved event
|
|
246
|
-
Fulfillment System consumes: InventoryReserved
|
|
247
|
-
Fulfillment System reacts: Issues CreateShipment command
|
|
248
|
-
Fulfillment System produces: OrderShipped event
|
|
249
|
-
```
|
|
57
|
+
For each pair of systems that interact, document the triggering event, what the consuming system does in reaction (which command it issues), and the event that results. A full worked example is in `references/examples.md`.
|
|
250
58
|
|
|
251
59
|
### 5. Define System Interfaces
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
```
|
|
255
|
-
Order System Interface
|
|
256
|
-
Commands it accepts:
|
|
257
|
-
- CreateOrder (from UI)
|
|
258
|
-
- ConfirmOrder (from UI)
|
|
259
|
-
- CancelOrder (from UI or Processors)
|
|
260
|
-
Events it produces:
|
|
261
|
-
- OrderCreated
|
|
262
|
-
- OrderConfirmed
|
|
263
|
-
- OrderCancelled
|
|
264
|
-
Read Models it provides:
|
|
265
|
-
- OrderStatusView
|
|
266
|
-
- OrderListView
|
|
267
|
-
|
|
268
|
-
Payment System Interface
|
|
269
|
-
Commands it accepts:
|
|
270
|
-
- AuthorizePayment (from Payment Processor/Order System)
|
|
271
|
-
- ProcessPayment (from Order System)
|
|
272
|
-
Events it produces:
|
|
273
|
-
- PaymentAuthorized
|
|
274
|
-
- PaymentFailed
|
|
275
|
-
- PaymentProcessed
|
|
276
|
-
|
|
277
|
-
Inventory System Interface
|
|
278
|
-
Commands it accepts:
|
|
279
|
-
- ReserveInventory (triggered by PaymentAuthorized event)
|
|
280
|
-
Events it produces:
|
|
281
|
-
- InventoryReserved
|
|
282
|
-
- InventoryFailed
|
|
283
|
-
```
|
|
60
|
+
For each system, list the commands it accepts (and from where — UI, another system, a processor) and the events/read models it produces or provides to others. A full worked example is in `references/examples.md`.
|
|
284
61
|
|
|
285
62
|
### 6. Identify Processors vs Systems
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
```
|
|
289
|
-
Processors (autonomous automation):
|
|
290
|
-
|
|
291
|
-
1. PaymentProcessor
|
|
292
|
-
Triggered by: OrderConfirmed event
|
|
293
|
-
Logic: Calls external payment gateway
|
|
294
|
-
Produces: AuthorizePayment command
|
|
295
|
-
Lives in: Payment System
|
|
296
|
-
|
|
297
|
-
2. InventoryProcessor
|
|
298
|
-
Triggered by: PaymentAuthorized event
|
|
299
|
-
Logic: Checks stock, reserves inventory
|
|
300
|
-
Produces: ReserveInventory command
|
|
301
|
-
Lives in: Inventory System
|
|
302
|
-
|
|
303
|
-
3. FulfillmentProcessor
|
|
304
|
-
Triggered by: InventoryReserved event
|
|
305
|
-
Logic: Creates shipment records
|
|
306
|
-
Produces: CreateShipment command
|
|
307
|
-
Lives in: Fulfillment System
|
|
308
|
-
|
|
309
|
-
4. NotificationProcessor
|
|
310
|
-
Triggered by: OrderCreated, OrderConfirmed, OrderShipped events
|
|
311
|
-
Logic: Sends emails/SMS
|
|
312
|
-
Produces: No commands (info-only)
|
|
313
|
-
Lives in: Notification System (cross-cutting)
|
|
314
|
-
```
|
|
63
|
+
For each autonomous processor/automation, document what triggers it, its logic, the command(s) it produces, and which system it lives in. A full worked example (Payment/Inventory/Fulfillment/Notification processors) is in `references/examples.md`.
|
|
315
64
|
|
|
316
65
|
## Output Format
|
|
317
66
|
|
|
318
|
-
Present as:
|
|
319
|
-
|
|
320
|
-
```markdown
|
|
321
|
-
# System Organization: [Domain Name]
|
|
322
|
-
|
|
323
|
-
## System Boundaries
|
|
324
|
-
|
|
325
|
-
### System: Order Management
|
|
326
|
-
- **Team**: Order Team
|
|
327
|
-
- **Responsibilities**: Create, confirm, cancel orders
|
|
328
|
-
- **Commands**: CreateOrder, ConfirmOrder, CancelOrder
|
|
329
|
-
- **Events Produced**: OrderCreated, OrderConfirmed, OrderCancelled
|
|
330
|
-
- **Events Consumed**: PaymentAuthorized, InventoryReserved (for state updates)
|
|
331
|
-
- **Read Models**: OrderStatusView, OrderListView
|
|
332
|
-
- **Scope**: One stream type (Order)
|
|
333
|
-
|
|
334
|
-
### System: Payment Processing
|
|
335
|
-
- **Team**: Payment Team
|
|
336
|
-
- **Responsibilities**: Authorize and process payments
|
|
337
|
-
- **Commands**: AuthorizePayment, ProcessPayment, RefundPayment
|
|
338
|
-
- **Events Produced**: PaymentAuthorized, PaymentFailed, PaymentRefunded
|
|
339
|
-
- **Events Consumed**: OrderConfirmed (from Order System)
|
|
340
|
-
- **Read Models**: PaymentStatusView, TransactionHistory
|
|
341
|
-
- **Dependencies**: External payment gateway
|
|
342
|
-
- **Scope**: One stream type (Payment)
|
|
343
|
-
|
|
344
|
-
### System: Inventory Management
|
|
345
|
-
- **Team**: Inventory Team
|
|
346
|
-
- **Responsibilities**: Stock management and reservations
|
|
347
|
-
- **Commands**: ReserveInventory, ReleaseReservation, AllocateStock
|
|
348
|
-
- **Events Produced**: InventoryReserved, ReservationReleased, StockAllocated
|
|
349
|
-
- **Events Consumed**: PaymentAuthorized (from Payment System)
|
|
350
|
-
- **Read Models**: InventoryLevelView, ReservationView
|
|
351
|
-
- **Dependencies**: Warehouse system
|
|
352
|
-
- **Scope**: One stream type (InventoryReservation)
|
|
353
|
-
|
|
354
|
-
[Continue for each system]
|
|
355
|
-
|
|
356
|
-
---
|
|
357
|
-
|
|
358
|
-
## Event Flow Across System Boundaries
|
|
359
|
-
|
|
360
|
-
### Flow: Order → Payment → Inventory → Fulfillment
|
|
361
|
-
|
|
362
|
-
```
|
|
363
|
-
Time →
|
|
364
|
-
|
|
365
|
-
Order System
|
|
366
|
-
OrderCreated →
|
|
367
|
-
OrderConfirmed →
|
|
368
|
-
(triggers)
|
|
369
|
-
Payment System
|
|
370
|
-
PaymentAuthorized →
|
|
371
|
-
(triggers)
|
|
372
|
-
Inventory System
|
|
373
|
-
InventoryReserved →
|
|
374
|
-
(triggers)
|
|
375
|
-
Fulfillment System
|
|
376
|
-
OrderShipped
|
|
377
|
-
DeliveryConfirmed
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
## Team Responsibilities Matrix
|
|
383
|
-
|
|
384
|
-
| Team | Creates Commands | Produces Events | Owns Read Models |
|
|
385
|
-
|------|-----------------|-----------------|------------------|
|
|
386
|
-
| Order | CreateOrder, ConfirmOrder | OrderCreated, OrderConfirmed | OrderStatusView |
|
|
387
|
-
| Payment | AuthorizePayment | PaymentAuthorized | PaymentStatusView |
|
|
388
|
-
| Inventory | ReserveInventory | InventoryReserved | InventoryLevelView |
|
|
389
|
-
| Fulfillment | CreateShipment | OrderShipped | ShipmentTrackingView |
|
|
390
|
-
|
|
391
|
-
---
|
|
392
|
-
|
|
393
|
-
## Inter-System Communication
|
|
394
|
-
|
|
395
|
-
### Order → Payment
|
|
396
|
-
- Trigger: OrderConfirmed event
|
|
397
|
-
- Action: Payment System listens via Processor
|
|
398
|
-
- Result: AuthorizePayment command issued
|
|
399
|
-
|
|
400
|
-
### Payment → Inventory
|
|
401
|
-
- Trigger: PaymentAuthorized event
|
|
402
|
-
- Action: Inventory System listens via Processor
|
|
403
|
-
- Result: ReserveInventory command issued
|
|
404
|
-
|
|
405
|
-
[Document all communication patterns]
|
|
406
|
-
|
|
407
|
-
---
|
|
408
|
-
|
|
409
|
-
## Dependencies
|
|
410
|
-
|
|
411
|
-
### External Systems
|
|
412
|
-
|
|
413
|
-
| System | Owns | Called By | Purpose |
|
|
414
|
-
|--------|------|-----------|---------|
|
|
415
|
-
| Payment Gateway | Payment provider | Payment System | Authorization |
|
|
416
|
-
| Warehouse | Inventory source | Inventory System | Stock info |
|
|
417
|
-
| Carrier API | Shipping | Fulfillment System | Tracking |
|
|
418
|
-
|
|
419
|
-
---
|
|
420
|
-
|
|
421
|
-
## Independent Development
|
|
422
|
-
|
|
423
|
-
Each system can:
|
|
424
|
-
- Develop independently
|
|
425
|
-
- Use different tech stacks
|
|
426
|
-
- Scale independently
|
|
427
|
-
- Deploy independently
|
|
428
|
-
- Own their events
|
|
429
|
-
- Maintain their read models
|
|
430
|
-
|
|
431
|
-
Coordination via:
|
|
432
|
-
- Events (async messaging)
|
|
433
|
-
- Processors (listen and react)
|
|
434
|
-
- Read models (shared views)
|
|
435
|
-
```
|
|
67
|
+
Present the analysis as a markdown document titled "System Organization: [Domain Name]" with these sections: **System Boundaries** (one entry per system, giving its owning team, responsibilities, commands, events produced/consumed, read models, dependencies, and scope); **Event Flow Across System Boundaries** (a time-ordered diagram showing which system's events trigger the next system downstream); a **Team Responsibilities Matrix** (one row per team: commands, events, read models); **Inter-System Communication** (one entry per system pair: triggering event, reacting system/action, resulting command); a **Dependencies** table of external systems (what they're called for); and a closing **Independent Development** note on how the boundaries let each team build, scale, and deploy independently, coordinating only via events, processors, and shared read models. A full worked example of this document (Order/Payment/Inventory/Fulfillment domain) is in `references/examples.md`.
|
|
436
68
|
|
|
437
69
|
## Quality Checklist
|
|
438
70
|
|