Delegate independent tasks to specialized agents working concurrently with isolated context.
Event Modeling Skill
event-modeling
Adam Dymitruk's Event Modeling methodology with swimlanes
SKILL.md
Full skill instructions
Event Modeling Skill
When to Use This Skill
Use this skill when:
- Event Modeling tasks - Working on adam dymitruk's event modeling methodology with swimlanes
- Planning or design - Need guidance on Event Modeling approaches
- Best practices - Want to follow established patterns and standards
Overview
Create Event Models using Adam Dymitruk's visual methodology for designing event-driven systems.
MANDATORY: Documentation-First Approach
Before creating Event Models:
- Invoke
docs-managementskill for Event Modeling patterns - Verify methodology via MCP servers (perplexity, eventmodeling.org)
- Base guidance on Adam Dymitruk's original methodology
Event Modeling Fundamentals
Event Modeling Structure:
TIME FLOWS LEFT TO RIGHT ───────────────────────────────────────────►
┌─────────────────────────────────────────────────────────────────────┐
│ BLUE: UI / Commands / External Triggers │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Screen/ │ │ Button │ │ API │ │
│ │ Wireframe│ │ Click │ │ Call │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
├──────┼─────────────┼─────────────┼──────────────────────────────────┤
│ ▼ ▼ ▼ │
│ ORANGE: Domain Events (State Changes) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ OrderPlaced │ │ OrderPaid │ │ OrderShipped │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
├──────┼─────────────────┼───────────────┼────────────────────────────┤
│ ▼ ▼ ▼ │
│ GREEN: Read Models / Projections │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Order List │ │ Payment │ │ Shipping │ │
│ │ View │ │ Status │ │ Dashboard │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
Four Types of Specifications
1. Commands (Blue Lane - Top)
Commands: User intentions that may cause state changes
CHARACTERISTICS:
- Represent user actions or external triggers
- May succeed or fail (validation)
- Produce one or more events on success
- Include wireframes/mockups for UI commands
EXAMPLES:
┌─────────────────────────────┐
│ PlaceOrder │
├─────────────────────────────┤
│ • Customer ID │
│ • Items: [ProductId, Qty] │
│ • Shipping Address │
│ • Payment Method │
└─────────────────────────────┘
2. Events (Orange Lane - Middle)
Events: Facts that have happened (past tense, immutable)
CHARACTERISTICS:
- Past tense naming (OrderPlaced, not PlaceOrder)
- Immutable once recorded
- Capture what happened and when
- Single source of truth
NAMING CONVENTION:
✓ OrderPlaced
✓ PaymentReceived
✓ ShipmentDispatched
✗ PlaceOrder (command, not event)
✗ OrderUpdate (too vague)
EXAMPLE:
┌─────────────────────────────┐
│ OrderPlaced │
├─────────────────────────────┤
│ • OrderId: guid │
│ • CustomerId: guid │
│ • Items: [...] │
│ • PlacedAt: timestamp │
│ • TotalAmount: decimal │
└─────────────────────────────┘
3. Read Models (Green Lane - Bottom)
Read Models: Projections optimized for queries
CHARACTERISTICS:
- Built from events
- Optimized for specific query patterns
- Can be rebuilt from event stream
- Eventually consistent
TYPES:
- List views (showing multiple items)
- Detail views (single item details)
- Dashboards (aggregations)
- Search indexes
EXAMPLE:
┌─────────────────────────────┐
│ OrderSummaryView │
├─────────────────────────────┤
│ • OrderId │
│ • CustomerName │
│ • Status (derived) │
│ • ItemCount │
│ • TotalAmount │
│ • LastUpdated │
└─────────────────────────────┘
4. Automations (Policies/Reactions)
Automations: Processes triggered by events
CHARACTERISTICS:
- React to events automatically
- May produce commands or integrate external systems
- Represent business policies
- Handle async processing
NOTATION:
┌─────────────────────────────┐
│ ⚡ PaymentReceivedPolicy │
├─────────────────────────────┤
│ WHEN: PaymentReceived │
│ THEN: InitiateShipment │
└─────────────────────────────┘
Event Modeling Process
Step 1: Brain Dump Events
Brainstorm all domain events (orange stickies):
1. Gather stakeholders
2. Ask: "What happens in this process?"
3. Write events in past tense
4. Don't worry about order yet
5. Include all significant state changes
Example Output:
- OrderPlaced
- OrderConfirmed
- PaymentReceived
- PaymentFailed
- InventoryReserved
- ShipmentCreated
- ShipmentDispatched
- OrderDelivered
Step 2: Arrange Timeline
Organize events chronologically:
1. Find the "happy path" events
2. Arrange left to right
3. Group related events vertically
4. Identify parallel flows
5. Note temporal dependencies
Timeline:
OrderPlaced → OrderConfirmed → PaymentReceived → InventoryReserved → ShipmentCreated → ShipmentDispatched → OrderDelivered
│
└→ PaymentFailed → OrderCancelled
Step 3: Add Commands (Blue)
What triggers each event?
For each event, ask:
- What user action caused this?
- What external system triggered it?
- Is there a UI screen involved?
Add commands above events they produce:
[PlaceOrder] → OrderPlaced
[ProcessPayment] → PaymentReceived
[DispatchShipment] → ShipmentDispatched
Step 4: Add Read Models (Green)
What information is needed for each command?
For each command, ask:
- What data does the user need to see?
- What validation data is required?
- What views enable this action?
Add read models below events that populate them:
OrderPlaced → [OrderConfirmationView]
ShipmentDispatched → [TrackingDashboard]
Step 5: Identify Automations
What happens automatically?
Look for:
- Events that trigger other events
- Integration with external systems
- Time-based rules
- Business policies
Example:
PaymentReceived → ⚡ ReserveInventoryPolicy → InventoryReserved
Event Model Template
# Event Model: [Process Name]
## Overview
[What this process accomplishes]
## Actors
- [User type 1]
- [User type 2]
- [External system]
## Event Model Diagram
```text
TIME ──────────────────────────────────────────────────────────────►
COMMANDS (Blue)
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Cmd 1 │ │ Cmd 2 │ │ Cmd 3 │ │ Cmd 4 │
└────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘
│ │ │ │
▼ ▼ ▼ ▼
EVENTS (Orange)
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Event1 │───►│ Event2 │───►│ Event3 │───►│ Event4 │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
│ │ │ │
▼ ▼ ▼ ▼
READ MODELS (Green)
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ View 1 │ │ View 2 │ │ View 3 │ │ View 4 │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
Commands Detail
| Command | Input | Produces Events | Read Model Needed |
|---|---|---|---|
| [Name] | [Data] | [Events] | [View] |
Events Detail
| Event | Data | Triggered By | Updates |
|---|---|---|---|
| [Name] | [Fields] | [Command/Automation] | [Read Models] |
Read Models Detail
| Read Model | Purpose | Updated By Events |
|---|---|---|
| [Name] | [Query it answers] | [Events list] |
Automations
| Automation | Trigger Event | Action | Produces |
|---|---|---|---|
| [Name] | [Event] | [What it does] | [Events/Side effects] |
Patterns and Guidelines
Given/When/Then Specifications
Each slice can be expressed as:
GIVEN: [Read Model State / Context]
WHEN: [Command is executed]
THEN: [Events are produced]
AND: [Read Models are updated]
Example:
GIVEN: Cart exists with items
WHEN: PlaceOrder command executed
THEN: OrderPlaced event recorded
AND: OrderSummaryView updated
AND: InventoryReservationRequested event triggered
Slices (Vertical Features)
A slice includes everything for one feature:
┌─────────────────────────────┐
│ SLICE 1 │
│ ┌─────────────────────┐ │
│ │ Command: PlaceOrder │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ Event: OrderPlaced │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ View: OrderSummary │ │
│ └─────────────────────┘ │
└─────────────────────────────┘
Each slice is independently implementable and testable.
Blue Print (Implementation Guide)
Event Model becomes implementation blueprint:
1. Commands → API Endpoints / UI Components
2. Events → Event Store Schema
3. Read Models → Database Tables / Views
4. Automations → Event Handlers / Policies
Each slice maps directly to code.
Workflow
When creating Event Models:
- Define Scope: What process are we modeling?
- Brain Dump Events: List all state changes
- Arrange Timeline: Order events chronologically
- Add Commands: What triggers each event?
- Add Read Models: What data supports each command?
- Identify Automations: What happens automatically?
- Validate with Stakeholders: Does this match reality?
- Define Slices: Group into implementable features
References
For detailed guidance:
Last Updated: 2025-12-26
More Other skills
brand-guidelines
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
theme-factory
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
internal-comms
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Fundamental design principles for writing maintainable, testable Python code.
responsive-design
Modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first strategies.
Generate Playwright tests from scenarios using interactive browser exploration and validation.
Automated website exploration and test case generation using Playwright.
Modern React state management with Redux Toolkit, Zustand, Jotai, and React Query for every state category.
gdpr-data-handling
GDPR-compliant data handling with consent management, data subject rights, and privacy controls.
Python error handling patterns including input validation, exception hierarchies, and partial failure handling. Use when implementing validation logic, designing exception strategies, handling batch processing failures, or building robust APIs.
refactor-plan
Detailed multi-file refactor planning with safety checks and rollback guidance.
