@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.
Files changed (71) hide show
  1. package/package.json +1 -1
  2. package/shared/skills/learn-eventmodelers-api/SKILL.md +22 -13
  3. package/stacks/modeling-kit/templates/.claude/skills/add-next-slice/SKILL.md +2 -23
  4. package/stacks/modeling-kit/templates/.claude/skills/add-next-slice/references/api-fallback.md +11 -0
  5. package/stacks/modeling-kit/templates/.claude/skills/analyze-existing-model/SKILL.md +6 -57
  6. package/stacks/modeling-kit/templates/.claude/skills/analyze-existing-model/references/api-fallback.md +68 -0
  7. package/stacks/modeling-kit/templates/.claude/skills/attributes/SKILL.md +4 -61
  8. package/stacks/modeling-kit/templates/.claude/skills/attributes/references/api-fallback.md +39 -0
  9. package/stacks/modeling-kit/templates/.claude/skills/discover-storyboard/SKILL.md +9 -53
  10. package/stacks/modeling-kit/templates/.claude/skills/discover-storyboard/references/api-fallback.md +63 -0
  11. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-applying-conways-law/SKILL.md +12 -380
  12. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-applying-conways-law/references/examples.md +329 -0
  13. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-brainstorming-events/SKILL.md +45 -290
  14. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-brainstorming-events/references/api-fallback.md +97 -0
  15. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-brainstorming-events/references/examples.md +35 -0
  16. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-checking-completeness/SKILL.md +15 -410
  17. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-checking-completeness/references/api-fallback.md +22 -0
  18. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-checking-completeness/references/examples.md +397 -0
  19. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-core-rules/SKILL.md +182 -0
  20. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-designing-automation-chains/SKILL.md +148 -0
  21. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-designing-automation-chains/references/api-fallback.md +21 -0
  22. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-designing-event-models/SKILL.md +48 -448
  23. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-designing-event-models/references/examples.md +167 -0
  24. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-elaborating-scenarios/SKILL.md +31 -380
  25. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-elaborating-scenarios/references/api-fallback.md +31 -0
  26. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-elaborating-scenarios/references/examples.md +216 -0
  27. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-inputs/SKILL.md +33 -393
  28. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-inputs/references/api-fallback.md +79 -0
  29. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-inputs/references/examples.md +282 -0
  30. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-outputs/SKILL.md +54 -454
  31. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-outputs/references/api-fallback.md +67 -0
  32. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-identifying-outputs/references/examples.md +273 -0
  33. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-interview-protocol/SKILL.md +31 -0
  34. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-optimizing-stream-design/SKILL.md +37 -184
  35. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-optimizing-stream-design/references/domain-patterns.md +58 -99
  36. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-optimizing-stream-design/references/patterns.md +82 -163
  37. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-orchestrating-event-modeling/SKILL.md +86 -78
  38. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-orchestrating-event-modeling/references/api-fallback.md +51 -0
  39. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-plotting-events/SKILL.md +5 -5
  40. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-plotting-events/references/api-fallback.md +10 -0
  41. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-slicing-event-models/SKILL.md +22 -51
  42. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-slicing-event-models/references/api-fallback.md +41 -0
  43. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-slicing-event-models/references/examples.md +12 -9
  44. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-slicing-event-models/references/patterns.md +1 -10
  45. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-storyboarding-events/SKILL.md +29 -382
  46. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-storyboarding-events/references/api-fallback.md +77 -0
  47. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-storyboarding-events/references/examples.md +271 -0
  48. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-translating-external-events/SKILL.md +12 -349
  49. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-translating-external-events/references/examples.md +306 -0
  50. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-validating-event-models/SKILL.md +69 -107
  51. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-validating-event-models/references/api-fallback.md +14 -0
  52. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-validating-event-models-checklist/SKILL.md +75 -160
  53. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-validating-event-models-checklist/references/api-fallback.md +14 -0
  54. package/stacks/modeling-kit/templates/.claude/skills/examples/SKILL.md +3 -110
  55. package/stacks/modeling-kit/templates/.claude/skills/examples/references/api-fallback.md +118 -0
  56. package/stacks/modeling-kit/templates/.claude/skills/handle-comment/SKILL.md +5 -25
  57. package/stacks/modeling-kit/templates/.claude/skills/handle-comment/references/api-fallback.md +35 -0
  58. package/stacks/modeling-kit/templates/.claude/skills/html-screen/SKILL.md +9 -44
  59. package/stacks/modeling-kit/templates/.claude/skills/html-screen/references/api-fallback.md +51 -0
  60. package/stacks/modeling-kit/templates/.claude/skills/place-element/SKILL.md +34 -180
  61. package/stacks/modeling-kit/templates/.claude/skills/place-element/references/api-fallback.md +203 -0
  62. package/stacks/modeling-kit/templates/.claude/skills/storyboard/SKILL.md +14 -81
  63. package/stacks/modeling-kit/templates/.claude/skills/storyboard/references/api-fallback.md +74 -0
  64. package/stacks/modeling-kit/templates/.claude/skills/storyboard-screen/SKILL.md +4 -45
  65. package/stacks/modeling-kit/templates/.claude/skills/storyboard-screen/references/api-fallback.md +44 -0
  66. package/stacks/modeling-kit/templates/.claude/skills/timeline/SKILL.md +19 -88
  67. package/stacks/modeling-kit/templates/.claude/skills/timeline/references/api-fallback.md +91 -0
  68. package/stacks/modeling-kit/templates/.claude/skills/update-prompt-status/SKILL.md +1 -9
  69. package/stacks/modeling-kit/templates/.claude/skills/update-prompt-status/references/api-fallback.md +14 -0
  70. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-integrating-legacy-systems/SKILL.md +0 -674
  71. package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-optimizing-stream-design/references/snapshotting.md +0 -204
@@ -10,6 +10,8 @@ allowed-tools:
10
10
 
11
11
  > **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.
12
12
 
13
+ 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.
14
+
13
15
  Prefer `mcp__eventmodelers__*` tools when available (registered by the `connect` skill) — the curl blocks below are the fallback for sessions without MCP connected.
14
16
 
15
17
  ## Board Context
@@ -23,16 +25,7 @@ mcp__eventmodelers__get_nodes { "boardId": "<BOARD_ID>", "type": "COMMAND" }
23
25
  mcp__eventmodelers__get_nodes { "boardId": "<BOARD_ID>", "type": "READMODEL" }
24
26
  ```
25
27
 
26
- **Fallback (no MCP):**
27
- ```bash
28
- # All nodes (events, commands, read models, screens)
29
- curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
30
- "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes?type=EVENT"
31
- curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
32
- "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes?type=COMMAND"
33
- curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
34
- "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes?type=READMODEL"
35
- ```
28
+ **Fallback (no MCP):** see `references/api-fallback.md` — "Board Context".
36
29
 
37
30
  Use these results as the source of truth for the completeness check.
38
31
 
@@ -48,115 +41,13 @@ After the analysis, use the `handle-comment` skill to post findings on relevant
48
41
  Perform comprehensive completeness check:
49
42
 
50
43
  ### 1. Field Origin & Destination Matrix
51
- For every field in every event, verify source and use:
52
-
53
- ```text
54
- Event: OrderCreated
55
-
56
- Field: orderId
57
- Origin: Generated by system (UUID)
58
- Destinations:
59
- OrderConfirmed event (references)
60
- OrderStatusView (displays)
61
- OrderListView (displays)
62
- OrderShipped event (references)
63
- Status: Complete
64
-
65
- Field: customerId
66
- Origin: CreateOrder command (from UI)
67
- Destinations:
68
- OrderStatusView (displays)
69
- OrderListView (displays)
70
- Inventory System (knows who ordered)
71
- Status: Complete
72
-
73
- Field: items[]
74
- Origin: CreateOrder command (user selects)
75
- Destinations:
76
- OrderStatusView (displays)
77
- Inventory System (what to reserve)
78
- Fulfillment System (what to ship)
79
- Status: Complete
80
-
81
- Field: total
82
- Origin: Calculated from items[] and unit prices
83
- Destinations:
84
- OrderStatusView (displays)
85
- OrderListView (displays)
86
- PaymentSystem (amount to charge)
87
- Accounting (for reconciliation)
88
- Status: Complete
89
-
90
- Field: shippingAddress
91
- Origin: CreateOrder command (user enters)
92
- Destinations:
93
- OrderStatusView (displays)
94
- Fulfillment System (where to ship)
95
- Carrier (delivery address)
96
- Status: Complete
97
-
98
- Field: createdAt
99
- Origin: System timestamp when event created
100
- Destinations:
101
- OrderStatusView (displays)
102
- OrderListView (displays)
103
- Metrics (average order age)
104
- Status: Complete
105
- ```
44
+ For every field in every event, verify its origin (a command, a calculation, or the system) and every destination that consumes it (other events, read models, external systems), marking each field's status as complete or a gap. A full worked example (Order domain) is in `references/examples.md`.
106
45
 
107
46
  ### 2. Check All Commands
108
- Verify every command input is captured:
109
-
110
- ```text
111
- Command: CreateOrder
112
- Input: customerId, items[], shippingAddress
113
- customerId → OrderCreated.customerId
114
- items[] → OrderCreated.items
115
- shippingAddress → OrderCreated.shippingAddress
116
- Status: All inputs captured
117
-
118
- Command: ConfirmOrder
119
- Input: orderId, paymentMethod
120
- orderId → OrderConfirmed.orderId (implicit)
121
- paymentMethod → OrderConfirmed.paymentMethod
122
- Status: All inputs captured
123
-
124
- Command: AuthorizePayment
125
- Input: orderId, paymentId, authCode
126
- orderId → PaymentAuthorized.orderId (implicit)
127
- paymentId → PaymentAuthorized.paymentId
128
- authCode → PaymentAuthorized.authCode
129
- Status: All inputs captured
130
- ```
47
+ Verify every command input is captured somewhere in the resulting event, whether directly or implicitly. A full worked example is in `references/examples.md`.
131
48
 
132
49
  ### 3. Check All Read Models
133
- Verify read models have all needed data:
134
-
135
- ```text
136
- ReadModel: OrderStatusView
137
- Needs to display:
138
- orderId ← OrderCreated
139
- customerId ← OrderCreated
140
- status ← OrderConfirmed, PaymentAuthorized, etc.
141
- items ← OrderCreated
142
- total ← OrderCreated
143
- createdAt ← OrderCreated
144
- confirmedAt ← OrderConfirmed
145
- paymentId ← PaymentAuthorized
146
- paymentMethod ← OrderConfirmed
147
- shipmentId ← OrderShipped
148
- trackingNumber ← OrderShipped
149
- Status: All fields sourced
150
-
151
- ReadModel: OrderListView
152
- Needs to display:
153
- orderId ← OrderCreated
154
- customerId ← OrderCreated
155
- total ← OrderCreated
156
- status ← OrderConfirmed, OrderCancelled, etc.
157
- createdAt ← OrderCreated
158
- Status: All fields sourced
159
- ```
50
+ Verify every field a read model displays is sourced from a connected event. A full worked example is in `references/examples.md`.
160
51
 
161
52
  ### 4. Check Slice Coverage
162
53
 
@@ -171,322 +62,40 @@ Or, to get the full SLICE_BORDER nodes (with `columnId`) the same way as the cur
171
62
  mcp__eventmodelers__get_nodes { "boardId": "<BOARD_ID>", "type": "SLICE_BORDER" }
172
63
  ```
173
64
 
174
- **Fallback (no MCP):**
175
- ```bash
176
- curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
177
- "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes?type=SLICE_BORDER"
178
- ```
179
-
180
- Cross-reference each COMMAND/READMODEL node's column against the `columnId` of the SLICE_BORDER nodes:
181
-
182
- ```text
183
- Column: CreateOrder (COMMAND)
184
- Slice defined? Yes — "Place Order"
185
- Status: Covered
186
-
187
- Column: OrderStatusView (READMODEL)
188
- Slice defined? No
189
- Status: Missing slice — flag as gap
65
+ **Fallback (no MCP):** see `references/api-fallback.md` — "4. Check Slice Coverage".
190
66
 
191
- Column: ConfirmOrder (COMMAND, linkedTo set copy of the original in another column)
192
- Slice defined? N/A — linked copy, exempt
193
- Status: Skip
194
- ```
67
+ Cross-reference each COMMAND/READMODEL node's column against the `columnId` of the SLICE_BORDER nodes, flagging any column with no matching slice as a gap (skipping linked copies, which are exempt). A full worked example is in `references/examples.md`.
195
68
 
196
69
  ### 5. Check Event Stream Completeness
197
70
  Verify no "missing" events:
198
71
 
199
- ```text
200
- Scenario: Order from creation to delivery
201
-
202
- Timeline:
203
- 1. OrderCreated (from CreateOrder command)
204
- 2. OrderConfirmed (from ConfirmOrder command)
205
- 3. PaymentAuthorized (from AuthorizePayment processor command)
206
- 4. InventoryReserved (from ReserveInventory processor command)
207
- 5. OrderShipped (from CreateShipment processor command)
208
- 6. DeliveryConfirmed (from MarkDelivered processor command)
209
-
210
- Missing events? None identified
211
-
212
- Alternative paths:
213
- - OrderCancelled (can happen after OrderCreated or OrderConfirmed)
214
- - PaymentFailed (can happen during PaymentAuthorized)
215
- - RefundInitiated (can happen after PaymentFailed or OrderCancelled)
216
-
217
- Status: All paths covered
218
- ```
72
+ Walk the full timeline scenario end-to-end (creation through terminal state) checking for missing events, and separately verify that alternative/branch paths (cancellations, failures, compensations) are also represented. A full worked example is in `references/examples.md`.
219
73
 
220
74
  ### 6. Check System Boundaries
221
75
  Verify each system owns events:
222
76
 
223
- ```text
224
- Order System
225
- Events: OrderCreated, OrderConfirmed, OrderCancelled
226
- Processor: None (triggers other systems)
227
- Status: Clean ownership
228
-
229
- Payment System
230
- Events: PaymentAuthorized, PaymentFailed, PaymentRefunded
231
- Processor: PaymentAuthorizer (listens to OrderConfirmed)
232
- Status: Clean ownership
233
-
234
- Inventory System
235
- Events: InventoryReserved, InventoryReleased
236
- Processor: InventoryReserver (listens to PaymentAuthorized)
237
- Status: Clean ownership
238
-
239
- Fulfillment System
240
- Events: OrderShipped, DeliveryConfirmed
241
- Processor: ShipmentCreator (listens to InventoryReserved)
242
- Status: Clean ownership
243
-
244
- Notification System
245
- Events: None (no persistence, info-only)
246
- Processor: Notifier (listens to all events)
247
- Status: Cross-cutting concern
248
- ```
77
+ For each system/bounded context, verify it owns a coherent, non-overlapping set of events, and that any processor it runs only reacts to events it's entitled to. A full worked example is in `references/examples.md`.
249
78
 
250
79
  ### 7. Define Workflow Step Contracts
251
80
  Each workflow step is a contract between the previous step and the next. Document preconditions and postconditions:
252
81
 
253
- ```text
254
- Workflow Step 1: CreateOrder (Step Owns: Order Creation)
255
-
256
- Preconditions (what must exist before this step):
257
- - Customer must exist
258
- - Products must exist in catalog
259
- - User must be authenticated
260
-
261
- Postconditions (what exists after this step):
262
- - OrderCreated event exists
263
- - Event contains: orderId, customerId, items, total, shippingAddress, createdAt
264
-
265
- Contract: Any system can assume if these postconditions are true,
266
- the order has been properly created through this step.
267
-
268
- --- Workflow Step 2: ConfirmOrder (Step Owns: Order Confirmation)
269
-
270
- Preconditions (depends on Step 1 postcondition):
271
- - OrderCreated event must exist ( from Step 1 contract)
272
- - Customer must select payment method
273
-
274
- Postconditions (what exists after this step):
275
- - OrderConfirmed event exists
276
- - Event contains: orderId, paymentMethod, confirmedAt
277
-
278
- Contract: Any system can assume if these postconditions are true,
279
- the order has been properly confirmed.
82
+ Treat each workflow step as a contract: document its preconditions (what must already be true, usually the previous step's postcondition) and its postconditions (what event now exists and which fields it carries), so a later step — or a different team — can build against the contract without waiting on the implementation. A full worked example (a three-step Order contract chain) is in `references/examples.md`.
280
83
 
281
- --- Workflow Step 3: AuthorizePayment (Step Owns: Payment Authorization)
282
-
283
- Preconditions (depends on Step 2 postcondition):
284
- - OrderConfirmed event must exist ( from Step 2 contract)
285
- - Payment method must be valid
286
-
287
- Postconditions (what exists after this step):
288
- - PaymentAuthorized event exists
289
- - Event contains: paymentId, authCode, amount
290
-
291
- Contract: Once this postcondition is true, next steps can proceed
292
- without re-checking payment (trust the contract).
293
- ```
294
-
295
- **Why Contracts Matter for Parallel Development**:
296
- ```text
297
- Team A: Works on CreateOrder (Step 1)
298
- → Knows postcondition: OrderCreated with specific fields
299
- → Knows other teams depend on this
300
-
301
- Team B: Works on ConfirmOrder (Step 2)
302
- → Can start immediately, doesn't wait for Step 1 implementation
303
- → Just needs to know: "I expect OrderCreated event with these fields"
304
- → Writes tests that mock the OrderCreated event
305
- → When Step 1 is done, tests pass immediately
306
-
307
- Team C: Works on AuthorizePayment (Step 3)
308
- → Can start immediately
309
- → Expects: OrderConfirmed event with these fields
310
- → When Step 2 is done, tests pass immediately
311
-
312
- Result: 3 teams working in parallel instead of waiting sequentially!
313
- ```
84
+ **Why contracts matter for parallel development**: a team can start building the next step immediately against the previous step's postcondition (mocking the event it depends on), instead of waiting for that step's implementation to finish. See `eventmodeling-orchestrating-event-modeling`'s linked `project-planning-with-event-modeling.md` reference for the fully worked example and the resulting flat cost curve.
314
85
 
315
86
  ### 8. Check Field Traceability
316
87
  Matrix of all fields origin → destination:
317
88
 
318
- ```markdown
319
- | Field | Event | Command | Read Model | Processor |
320
- |-------|-------|---------|-----------|-----------|
321
- | orderId | OrderCreated | - | All views | All |
322
- | customerId | OrderCreated | CreateOrder | OrderStatusView | - |
323
- | items | OrderCreated | CreateOrder | List/Status views | Inventory |
324
- | total | OrderCreated | - | List/Status views | - |
325
- | paymentId | PaymentAuthorized | AuthorizePayment | StatusView | Inventory |
326
- | shipmentId | OrderShipped | CreateShipment | StatusView | Notification |
327
- | trackingNumber | OrderShipped | - | TrackingView | Notification |
328
-
329
- Status: All fields traceable
330
- ```
89
+ Build a matrix of every field crossing Event / Command / Read Model / Processor, confirming each field's presence is accounted for across the whole model. A full worked example is in `references/examples.md`.
331
90
 
332
91
  ### 9. Identify Gaps
333
92
  Document any missing pieces:
334
93
 
335
- ```text
336
- Analysis: Are there any missing fields?
337
- - Estimated delivery date?
338
- → Need to add to OrderShipped event
339
- → Can be calculated from carrier
340
- → Add to ShipmentTrackingView
341
-
342
- - Cancellation reason?
343
- → Already in OrderCancelled event
344
-
345
- - Payment failure reason?
346
- → Already in PaymentFailed event
347
-
348
- - Refund status?
349
- → Need to track in RefundInitiated event
350
- → Add to PaymentStatusView
351
-
352
- Actions taken:
353
- Add estimatedDelivery to OrderShipped
354
- Add refundStatus to PaymentStatusView
355
- Add refundInitiatedAt to OrderStatusView
356
- ```
94
+ For each candidate gap, check whether the data already exists elsewhere in the model before treating it as missing, and record which gaps were fixed versus which remain outstanding. A full worked example is in `references/examples.md`.
357
95
 
358
96
  ## Output Format
359
97
 
360
- Present as:
361
-
362
- ```markdown
363
- # Completeness Check: [Domain Name]
364
-
365
- ## Workflow Step Contracts
366
-
367
- ### Step 1: CreateOrder
368
-
369
- **Preconditions**:
370
- - Customer exists in system
371
- - Products exist in catalog
372
-
373
- **Postconditions**:
374
- - OrderCreated event exists with fields: [list]
375
-
376
- **Teams that depend on this contract**: [All downstream teams]
377
-
378
- ---
379
-
380
- ### Step 2: ConfirmOrder
381
-
382
- **Preconditions** (depends on Step 1):
383
- - OrderCreated event exists
384
-
385
- **Postconditions**:
386
- - OrderConfirmed event exists with fields: [list]
387
-
388
- --- [Continue for each workflow step]
389
-
390
- ---
391
-
392
- ## Field Traceability Matrix
393
-
394
- ### Events
395
-
396
- | Event | Field | Origin | Destinations | Status |
397
- |-------|-------|--------|-------------|--------|
398
- | OrderCreated | orderId | System | ConfirmOrder, Views | |
399
- | OrderCreated | customerId | CreateOrder | All views | |
400
- | OrderCreated | items | CreateOrder | Inventory, Views | |
401
- | OrderCreated | total | Calculated | Views, Payment | |
402
- | OrderConfirmed | paymentId | AuthorizePayment | Views, Accounting | |
403
- | OrderShipped | trackingNumber | Carrier | TrackingView | |
404
-
405
- ---
406
-
407
- ## System Ownership Verification
408
-
409
- ### Order System
410
- - Events owned: OrderCreated, OrderConfirmed, OrderCancelled
411
- - Completeness: All order lifecycle events present
412
-
413
- ### Payment System
414
- - Events owned: PaymentAuthorized, PaymentFailed, PaymentRefunded
415
- - Completeness: All payment states covered
416
-
417
- ---
418
-
419
- ## Command → Event Verification
420
-
421
- | Command | Input | Event | Captured |
422
- |---------|-------|-------|----------|
423
- | CreateOrder | customerId, items, address | OrderCreated | |
424
- | ConfirmOrder | paymentMethod | OrderConfirmed | |
425
- | AuthorizePayment | paymentId, authCode | PaymentAuthorized | |
426
-
427
- ---
428
-
429
- ## Slice Coverage
430
-
431
- | Column | Node | Has Slice? | Status |
432
- |--------|------|-----------|--------|
433
- | 1 | CreateOrder (COMMAND) | Yes — "Place Order" | |
434
- | 2 | OrderStatusView (READMODEL) | No | Missing slice |
435
- | 3 | ConfirmOrder (COMMAND, linked copy) | N/A | Exempt (linkedTo set) |
436
-
437
- ---
438
-
439
- ## Read Model Coverage
440
-
441
- ### OrderStatusView
442
- - All relevant event data included
443
- - All user display needs met
444
- - All processor decision fields present
445
-
446
- ### OrderListView
447
- - Summary fields captured
448
- - Filtering/sorting fields present
449
- - Linked to OrderStatusView for details
450
-
451
- ---
452
-
453
- ## Gap Analysis
454
-
455
- ### Issues Found
456
- 1. Estimated delivery date missing
457
- - Fix: Add to OrderShipped event
458
- - Type: DateTime (ISO 8601)
459
- - Source: Calculated from carrier API
460
- - Status: Will add in next iteration
461
-
462
- 2. Refund tracking incomplete
463
- - Fix: Add RefundInitiated event timestamp
464
- - Fix: Add refund status to PaymentStatusView
465
- - Status: Will add in next iteration
466
-
467
- ### No Critical Gaps
468
- - All events properly sourced
469
- - All command inputs captured
470
- - All read models have data
471
- - Event flow complete
472
- - System boundaries clear
473
-
474
- ---
475
-
476
- ## Readiness Assessment
477
-
478
- **Overall Completeness**: 95%
479
-
480
- **Blockers**: None
481
-
482
- **Ready for Code Generation**: YES
483
-
484
- **Minor Improvements**:
485
- - Add estimated delivery date (non-blocking)
486
- - Enhance refund tracking (non-blocking)
487
-
488
- **Recommendation**: Proceed to code generation phase.
489
- ```
98
+ Older versions of this skill wrote the completeness check as a markdown report rather than posting comments on board nodes — that legacy template is kept in `references/examples.md` for reference only; the actual output mechanism is the `handle-comment`-based comment posting described in "Board Context" above.
490
99
 
491
100
  ## Quality Checklist
492
101
 
@@ -548,10 +157,6 @@ The model is **complete** when:
548
157
  | **False duplicate** | Two nodes share a title | Check `data.linkedTo` on both before reporting — a linked copy is intentional, not a gap |
549
158
  | **Missing slice** | COMMAND/READMODEL column with no SLICE_BORDER | Define a slice for that column (unless it's a linked copy) |
550
159
 
551
- ## Reference Documentation
552
-
553
- - **[Security Analysis with Event Modeling](references/security-analysis-with-event-modeling.md)** — How to use the field traceability matrix and data flow visibility from this step to conduct a systematic security review: identifying trust boundaries, privilege escalation paths, and data exposure risks across the event model.
554
-
555
160
  ## Next Steps
556
161
 
557
162
  If completeness check passes:
@@ -0,0 +1,22 @@
1
+ # Checking Completeness — curl Fallback Calls
2
+
3
+ Only needed when MCP is not connected. Every call below has an MCP equivalent in the main SKILL.md — always prefer that.
4
+
5
+ ## Board Context
6
+
7
+ ```bash
8
+ # All nodes (events, commands, read models, screens)
9
+ curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
10
+ "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes?type=EVENT"
11
+ curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
12
+ "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes?type=COMMAND"
13
+ curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
14
+ "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes?type=READMODEL"
15
+ ```
16
+
17
+ ## 4. Check Slice Coverage
18
+
19
+ ```bash
20
+ curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
21
+ "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes?type=SLICE_BORDER"
22
+ ```