Marketplace
event-modeling
Adam Dymitruk's Event Modeling methodology with swimlanes
allowed_tools: Read, Glob, Grep, Write, Edit
$ Installer
git clone https://github.com/melodic-software/claude-code-plugins /tmp/claude-code-plugins && cp -r /tmp/claude-code-plugins/plugins/event-modeling/skills/event-modeling ~/.claude/skills/claude-code-plugins// tip: Run this command in your terminal to install the skill
SKILL.md
name: event-modeling description: Adam Dymitruk's Event Modeling methodology with swimlanes allowed-tools: Read, Glob, Grep, Write, Edit
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
Repository

melodic-software
Author
melodic-software/claude-code-plugins/plugins/event-modeling/skills/event-modeling
3
Stars
0
Forks
Updated3d ago
Added1w ago