Event Model

You are helping the user define the core event model for their product using pure event modeling (event storming). This establish…

joemphilips updated 3mo ago
Claude CodeGeneric
View source ↗
# Event Model

You are helping the user define the core event model for their product using **pure event modeling (event storming)**. This establishes the "what happens" in the system — the domain events and their flows, following the DCB (Domain Context Blocks) approach where there are no aggregates or entities, only events.

## Step 1: Check Prerequisites

First, verify that the product overview and roadmap exist:

1. Read `/product/product-overview.md` to understand what the product does
2. Read `/product/product-roadmap.md` to understand the planned sections

If either file is missing, let the user know:

"Before defining your event model, you'll need to establish your product vision. Please run `/product-vision` first, then `/product-roadmap` to define your sections."

Stop here if prerequisites are missing.

## Step 2: Gather Initial Input

Review the product overview and roadmap, then present your initial analysis:

"Based on your product vision and roadmap, I can see you're building **[Product Name]** with sections for [list sections].

Let me help you define the core event model using event storming — the main "events" (things that happen) in your system.

Looking at your product, here are some domain events I'm seeing:

- **[Event 1]** — [Brief description of what happens, when it happens]
- **[Event 2]** — [Brief description based on sections]
- **[Event 3]** — [Brief description]

In DCB/event sourcing, we model everything as events (things that happened), not entities. Each event represents a state change in your system.

Does this capture the main things that happen in your app? What would you add, remove, or change?"

Wait for their response before proceeding.

## Step 3: Refine Events

Use the AskUserQuestion tool to clarify:

- "Are there any other key events in your system that represent important state changes?"
- "For [Event], what data does it contain? (Don't need every field, just the key ones)"
- "What triggers this event? What happens after it?"
- "How do these events flow together?"

Keep the conversation focused on:
- **Event names** — What are the main domain events? (past tense, like "MarketCreated", "BetPlaced", "OutcomeResolved")
- **Plain-language descriptions** — What does each event represent?
- **Event flows** — How do events trigger other events or relate to each other?
- **Event data** — What key information does each event carry?

**Important:**
- Events are named in past tense (e.g., "UserRegistered", "OrderPlaced", "PaymentProcessed")
- We're modeling what HAPPENED, not what exists
- No entities or aggregates - just events and their flows
- Keep it minimal and conceptual - detailed schemas come later

## Step 4: Present Draft and Refine

Once you have enough information, present a draft:

"Here's your event model:

**Domain Events:**

- **[Event1]** — [Description of what happened and what data it contains]
- **[Event2]** — [Description]

**Event Flows:**

- When [Event1] occurs, it triggers [Event2]
- [Event3] happens in response to [Event4]
- [Event5] and [Event6] represent a complete business process

Does this look right? Any adjustments?"

Iterate until the user is satisfied.

## Step 5: Create the File

Once approved, create the file at `/product/event-model/event-model.md` with this format:

```markdown
# Event Model

## Domain Events

### [EventName]
[Plain-language description of what this event represents, when it occurs, and what key data it contains.]

### [AnotherEvent]
[Plain-language description.]

[Add more events as needed]

## Event Flows

- When [Event1] occurs, it triggers [Event2]
- [Event3] happens in response to [Event4]
- [Event5] completes the [business process] flow
[Add more flows as needed]

Important: Keep descriptions minimal — focus on what each event represents and what happened, not every field it contains. Leave room for the implementation agent to extend the model.

Step 6: Confirm Completion

Let the user know:

"I've created your event model at /product/event-model/event-model.md.

Events defined:

  • [List events]

Event Flows:

  • [List key flows]

This provides a shared vocabulary of domain events that will be used when generating sample data for your sections. When you run /sample-data, it will reference this model to ensure consistency.

Next step: Run /design-tokens to choose your color palette and typography."

Important Notes

  • Keep the event model minimal — event names, descriptions, and flows
  • Do NOT define detailed schemas, field types, or validation rules
  • Use plain language that a non-technical person could understand
  • Events should be named in past tense (what HAPPENED)
  • Event flows should describe how events trigger or relate to each other
  • In DCB/event sourcing, there are NO aggregates or entities - only events
  • The implementation agent will extend this with additional fields as needed
  • Event names should be in PascalCase past tense (UserRegistered, MarketCreated, BetPlaced)

Maintain Event Model?

Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.

[Event Model on getagentictools](https://getagentictools.com/loops/joemphilips-event-model?ref=badge)