@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
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Elaborating Scenarios — Worked Examples
|
|
2
|
+
|
|
3
|
+
Full worked Given-When-Then examples for each scenario category, all drawn from one Order/Payment domain so the shapes are easy to compare. The main SKILL.md keeps one compact example per category — this file has the complete set.
|
|
4
|
+
|
|
5
|
+
## 1. Command Scenarios (Given-When-Then)
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Feature: Order Creation
|
|
9
|
+
|
|
10
|
+
Scenario: Create order successfully
|
|
11
|
+
Given a customer with ID "cust-123"
|
|
12
|
+
And products exist with IDs ["prod-1", "prod-2"]
|
|
13
|
+
And customer has valid shipping address
|
|
14
|
+
When the customer creates an order with items:
|
|
15
|
+
| productId | quantity | unitPrice |
|
|
16
|
+
| prod-1 | 2 | 50.00 |
|
|
17
|
+
| prod-2 | 1 | 30.00 |
|
|
18
|
+
Then the order should be created with status "Draft"
|
|
19
|
+
And the total should be calculated as 130.00
|
|
20
|
+
And an "OrderCreated" event is produced with:
|
|
21
|
+
| field | value |
|
|
22
|
+
| orderId | {uuid} |
|
|
23
|
+
| customerId | cust-123 |
|
|
24
|
+
| items | [...] |
|
|
25
|
+
| total | 130.00 |
|
|
26
|
+
| status | Draft |
|
|
27
|
+
|
|
28
|
+
Scenario: Reject order with invalid customer
|
|
29
|
+
Given a customer ID "invalid-cust"
|
|
30
|
+
And no customer exists with that ID
|
|
31
|
+
When the customer tries to create an order
|
|
32
|
+
Then the command should be rejected
|
|
33
|
+
And the rejection reason is "Customer not found"
|
|
34
|
+
And no event is produced
|
|
35
|
+
|
|
36
|
+
Scenario: Reject order with empty items
|
|
37
|
+
Given a customer with ID "cust-123"
|
|
38
|
+
And an empty items list []
|
|
39
|
+
When the customer tries to create an order
|
|
40
|
+
Then the command should be rejected
|
|
41
|
+
And the rejection reason is "Order must contain items"
|
|
42
|
+
And no event is produced
|
|
43
|
+
|
|
44
|
+
Scenario: Reject order with invalid address
|
|
45
|
+
Given a customer with ID "cust-123"
|
|
46
|
+
And an incomplete shipping address (missing city)
|
|
47
|
+
When the customer tries to create an order
|
|
48
|
+
Then the command should be rejected
|
|
49
|
+
And the rejection reason is "Invalid shipping address"
|
|
50
|
+
And no event is produced
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 2. Command Scenarios — State Validation
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Feature: Order Confirmation
|
|
57
|
+
|
|
58
|
+
Scenario: Confirm order in Draft state
|
|
59
|
+
Given an order "order-456" in Draft state
|
|
60
|
+
And OrderCreated event exists
|
|
61
|
+
And no OrderConfirmed event exists
|
|
62
|
+
When the customer confirms the order with payment method "card"
|
|
63
|
+
Then the order should be confirmed
|
|
64
|
+
And an "OrderConfirmed" event is produced with:
|
|
65
|
+
| field | value |
|
|
66
|
+
| orderId | order-456 |
|
|
67
|
+
| paymentMethod | card |
|
|
68
|
+
| confirmedAt | {timestamp} |
|
|
69
|
+
|
|
70
|
+
Scenario: Reject confirming already-confirmed order
|
|
71
|
+
Given an order "order-456" in Confirmed state
|
|
72
|
+
And OrderConfirmed event already exists
|
|
73
|
+
When the customer tries to confirm the order again
|
|
74
|
+
Then the command should be rejected
|
|
75
|
+
And the rejection reason is "Order already confirmed"
|
|
76
|
+
And no OrderConfirmed event is produced
|
|
77
|
+
|
|
78
|
+
Scenario: Reject confirming cancelled order
|
|
79
|
+
Given an order "order-456" in Cancelled state
|
|
80
|
+
And OrderCancelled event exists
|
|
81
|
+
When the customer tries to confirm the order
|
|
82
|
+
Then the command should be rejected
|
|
83
|
+
And the rejection reason is "Cannot confirm cancelled order"
|
|
84
|
+
And no event is produced
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 3. View Scenarios (Given-When-Then)
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Feature: Order Status View
|
|
91
|
+
|
|
92
|
+
Scenario: Display order after creation
|
|
93
|
+
Given an OrderCreated event with:
|
|
94
|
+
| field | value |
|
|
95
|
+
| orderId | order-789 |
|
|
96
|
+
| customerId | cust-123 |
|
|
97
|
+
| items | [{...}] |
|
|
98
|
+
| total | 150.00 |
|
|
99
|
+
When the OrderStatusView processes this event
|
|
100
|
+
Then the view should display:
|
|
101
|
+
| field | value |
|
|
102
|
+
| Order ID | order-789 |
|
|
103
|
+
| Status | Draft |
|
|
104
|
+
| Total | $150.00 |
|
|
105
|
+
| Items | 3 products |
|
|
106
|
+
| Created | {date} |
|
|
107
|
+
|
|
108
|
+
Scenario: Update status after confirmation
|
|
109
|
+
Given an OrderCreated event already processed
|
|
110
|
+
And OrderStatusView showing status "Draft"
|
|
111
|
+
When an OrderConfirmed event is received with:
|
|
112
|
+
| field | value |
|
|
113
|
+
| orderId | order-789 |
|
|
114
|
+
| confirmedAt | 2024-12-31T10:00:00Z |
|
|
115
|
+
Then the view should update to display:
|
|
116
|
+
| field | value |
|
|
117
|
+
| Status | Confirmed |
|
|
118
|
+
| Confirmed Date | 12/31/2024 10:00 AM |
|
|
119
|
+
|
|
120
|
+
Scenario: Accumulate payment information
|
|
121
|
+
Given OrderConfirmed event processed (status=Confirmed)
|
|
122
|
+
When a PaymentAuthorized event arrives with:
|
|
123
|
+
| field | value |
|
|
124
|
+
| orderId | order-789 |
|
|
125
|
+
| paymentId | pay-123 |
|
|
126
|
+
| authCode | AUTH-456 |
|
|
127
|
+
Then the view should accumulate:
|
|
128
|
+
| field | value |
|
|
129
|
+
| Payment ID | pay-123 |
|
|
130
|
+
| Auth Code | AUTH-456 |
|
|
131
|
+
| Payment Status | Authorized |
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## 3b. List-type Read Model Scenarios
|
|
135
|
+
|
|
136
|
+
Expected rows and empty-list intent when the THEN readmodel is a list (`listElement: true`):
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
Feature: Product Catalog
|
|
140
|
+
|
|
141
|
+
Scenario: Products list shows all created products
|
|
142
|
+
Given a ProductCreated event with name "Shoes", index "0", family_id "22222..."
|
|
143
|
+
And a ProductCreated event with name "Clothing", index "1", family_id "33333..."
|
|
144
|
+
When the ProductList view processes these events
|
|
145
|
+
Then the list should contain:
|
|
146
|
+
| name | index | family_id |
|
|
147
|
+
| Shoes | 0 | 22222... |
|
|
148
|
+
| Clothing | 1 | 33333... |
|
|
149
|
+
|
|
150
|
+
Scenario: Products list is empty after last item is deleted
|
|
151
|
+
Given a ProductDeleted event for the last remaining item
|
|
152
|
+
When the ProductList view processes this event
|
|
153
|
+
Then the list should be empty
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 4. Error Path Scenarios
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
Feature: Payment Authorization Failure
|
|
160
|
+
|
|
161
|
+
Scenario: Handle declined payment
|
|
162
|
+
Given an order "order-001" in Confirmed state
|
|
163
|
+
And customer initiates payment
|
|
164
|
+
When the payment gateway declines the card
|
|
165
|
+
Then a PaymentFailed event is produced with:
|
|
166
|
+
| field | value |
|
|
167
|
+
| orderId | order-001 |
|
|
168
|
+
| reason | Card declined |
|
|
169
|
+
| timestamp | {now} |
|
|
170
|
+
|
|
171
|
+
Scenario: Update order view on payment failure
|
|
172
|
+
Given OrderStatusView shows status "Confirmed"
|
|
173
|
+
When PaymentFailed event arrives for order-001
|
|
174
|
+
Then the view should update:
|
|
175
|
+
| field | value |
|
|
176
|
+
| Payment Status | Failed |
|
|
177
|
+
| Failure Reason | Card declined |
|
|
178
|
+
| Retry Available | Yes |
|
|
179
|
+
|
|
180
|
+
Scenario: Allow retry after payment failure
|
|
181
|
+
Given a PaymentFailed event exists
|
|
182
|
+
And order status is still "Confirmed"
|
|
183
|
+
When customer retries payment
|
|
184
|
+
Then the new AuthorizePayment command is accepted
|
|
185
|
+
And can produce new PaymentAuthorized event
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## 5. Compensation Scenarios
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
Feature: Order Cancellation
|
|
192
|
+
|
|
193
|
+
Scenario: Cancel order in Draft state
|
|
194
|
+
Given an order "order-555" in Draft state
|
|
195
|
+
And only OrderCreated event exists
|
|
196
|
+
When customer cancels the order with reason "Changed mind"
|
|
197
|
+
Then an OrderCancelled event is produced with:
|
|
198
|
+
| field | value |
|
|
199
|
+
| orderId | order-555 |
|
|
200
|
+
| reason | Changed mind |
|
|
201
|
+
| cancelledAt | {timestamp} |
|
|
202
|
+
|
|
203
|
+
Scenario: Cannot cancel completed order
|
|
204
|
+
Given an order "order-555" in Delivered state
|
|
205
|
+
And DeliveryConfirmed event exists
|
|
206
|
+
When customer tries to cancel
|
|
207
|
+
Then the command should be rejected
|
|
208
|
+
And the rejection reason is "Cannot cancel delivered order"
|
|
209
|
+
|
|
210
|
+
Scenario: Trigger compensation on cancellation
|
|
211
|
+
Given an order in Confirmed state
|
|
212
|
+
And PaymentAuthorized event exists
|
|
213
|
+
When OrderCancelled event is produced
|
|
214
|
+
Then a RefundPayment command should be automatically triggered
|
|
215
|
+
And RefundInitiated event should follow
|
|
216
|
+
```
|