Event Storming
Concept of the skill
Use when discovering a domain through events, commands, actors, policies, aggregates, read models, external systems, and temporal workflows before implementation.
Coverage
Discover domain behavior through temporal events and decisions. Covers domain events, commands, actors, policies, aggregates, read models, external systems, hotspots, timelines, invariants, and handoff into bounded-context, state-machine, data, and API design.
Philosophy of the skill
Event storming starts from "what happened" because events expose real business flow faster than nouns do. Noun-first modeling often freezes premature assumptions. Event-first modeling reveals time, causality, policy, and exceptions.
Do not confuse domain events with technical notifications. "OrderPlaced" is business meaning. "WebhookReceived" is transport detail.
Method
- List domain events in past tense.
- Place them on a timeline.
- Add commands that cause events.
- Add actors and external systems that issue commands or receive outcomes.
- Add policies: "when event X happens, if condition Y, then command Z."
- Identify aggregates that enforce invariants.
- Mark hotspots, missing decisions, temporal ambiguity, and unclear ownership.
- Hand off to bounded-context, state-machine, data, or API design only after the flow is coherent.
Verification
Do NOT Use When
| Use instead |
When |
webhook-integration |
You are implementing provider webhooks, signatures, retries, and deduplication. |
event-contract-design |
You already selected the event and need schema, envelope, topic, compatibility, replay, or fixtures. |
state-machine-modeling |
You already know the lifecycle and need formal states, transitions, and guards. |
entity-relationship-modeling |
You need tables, keys, indexes, constraints, or data lifecycle. |
api-design |
You need endpoint, request, response, and status-code design. |
1---2name: event-storming-23description: Use when discovering a domain through events, commands, actors, policies, aggregates, read models, external systems, and temporal workflows before implementation. Do NOT use for event schema/topic contracts (use `event-contract-design`), webhook handler implementation (use `webhook-integration`), generic state transition modeling (use `state-machine-modeling`), or persistence schema design (use `entity-relationship-modeling`).4license: MIT5---6# Event Storming78## Concept of the skill910Use when discovering a domain through events, commands, actors, policies, aggregates, read models, external systems, and temporal workflows before implementation.1112## Coverage1314Discover domain behavior through temporal events and decisions. Covers domain events, commands, actors, policies, aggregates, read models, external systems, hotspots, timelines, invariants, and handoff into bounded-context, state-machine, data, and API design.1516## Philosophy of the skill17Event storming starts from "what happened" because events expose real business flow faster than nouns do. Noun-first modeling often freezes premature assumptions. Event-first modeling reveals time, causality, policy, and exceptions.1819Do not confuse domain events with technical notifications. "OrderPlaced" is business meaning. "WebhookReceived" is transport detail.2021## Method22231. List domain events in past tense.242. Place them on a timeline.253. Add commands that cause events.264. Add actors and external systems that issue commands or receive outcomes.275. Add policies: "when event X happens, if condition Y, then command Z."286. Identify aggregates that enforce invariants.297. Mark hotspots, missing decisions, temporal ambiguity, and unclear ownership.308. Hand off to bounded-context, state-machine, data, or API design only after the flow is coherent.3132## Verification3334- [ ] Events are named in past tense and carry business meaning35- [ ] Commands are imperative and have actors or policies36- [ ] Policies are explicit condition-action rules37- [ ] Aggregates are tied to invariants, not guessed from nouns38- [ ] External systems and transport details are separated from domain events39- [ ] Hotspots and unanswered questions are recorded40- [ ] The timeline can replay a real scenario end to end4142## Do NOT Use When4344| Use instead | When |45|---|---|46| `webhook-integration` | You are implementing provider webhooks, signatures, retries, and deduplication. |47| `event-contract-design` | You already selected the event and need schema, envelope, topic, compatibility, replay, or fixtures. |48| `state-machine-modeling` | You already know the lifecycle and need formal states, transitions, and guards. |49| `entity-relationship-modeling` | You need tables, keys, indexes, constraints, or data lifecycle. |50| `api-design` | You need endpoint, request, response, and status-code design. |