home / skills / melodic-software / claude-code-plugins / event-storming

npx playbooks add skill melodic-software/claude-code-plugins --skill event-storming

Review the files below or copy the command above to add this skill to your agents.

Files (6)
SKILL.md
9.7 KB
---
name: event-storming
description: AI-simulated event storming workshop with multi-persona support. Use when discovering domain events, commands, actors, and bounded contexts. Supports three modes - full-simulation (5 persona agents debate), quick (single-pass analysis), and guided (interactive with user). Orchestrates persona agents and synthesizes results.
allowed-tools: Read, Write, Glob, Grep, Skill, Task, AskUserQuestion
---

# Event Storming

## Interactive Workshop Configuration

Use AskUserQuestion to configure the event storming session:

```yaml
# Question 1: Workshop Mode (MCP: Event Storming methodology)
question: "Which event storming mode do you need?"
header: "Mode"
options:
  - label: "Full Simulation (Recommended)"
    description: "All 5 personas debate in parallel, 6 phases (~15K tokens)"
  - label: "Quick"
    description: "Single analysis pass, no personas (~3K tokens)"
  - label: "Guided"
    description: "Interactive with user, personas on-demand"
  - label: "Codebase Analysis"
    description: "Discover events from existing code structure"

# Question 2: Domain Scope (MCP: DDD bounded context patterns)
question: "How complex is the domain you're exploring?"
header: "Scope"
options:
  - label: "Single Bounded Context"
    description: "One domain area, focused discovery"
  - label: "Multiple Contexts"
    description: "Identify 2-5 bounded context boundaries"
  - label: "Enterprise Domain"
    description: "Comprehensive cross-domain mapping"
  - label: "Unknown"
    description: "Help me determine scope first"
```

Use these responses to select the appropriate workshop mode and calibrate depth of analysis.

## When to Use This Skill

Use this skill when you need to:

- Discover domain events for a business process
- Identify commands and actors in a system
- Find bounded context boundaries
- Simulate a multi-stakeholder event storming workshop
- Prepare for actual event storming facilitation
- Analyze an existing codebase for domain events

**Keywords:** event storming, domain events, commands, actors, bounded contexts, aggregates, domain discovery, workshop simulation, multi-persona, DDD

## What is Event Storming?

Event Storming is a workshop-based method for collaborative domain discovery. Participants use sticky notes to map out:

- **Events** (Orange) - Things that happen in the domain
- **Commands** (Blue) - Actions that trigger events
- **Actors** (Yellow) - Who issues commands
- **Aggregates** (Yellow) - Business entities that handle commands
- **Read Models** (Green) - Information needed for decisions
- **Policies** (Purple) - Business rules and reactions
- **External Systems** (Pink) - Outside integrations
- **Hot Spots** (Red/Pink) - Areas of confusion or conflict

## Workshop Modes

This skill supports three modes of operation:

| Mode | Description | Token Cost | Use Case |
| --- | --- | --- | --- |
| `full-simulation` | All 5 personas debate in parallel, 6 phases | ~15K tokens | Comprehensive discovery |
| `quick` | Single analysis pass, no personas | ~3K tokens | Quick domain overview |
| `guided` | Interactive with user, personas on-demand | Variable | User wants control |

### Mode Selection Guide

**Use `full-simulation` when:**

- Starting a new project or major feature
- You need comprehensive domain discovery
- Multiple perspectives are valuable
- Time is less critical than thoroughness

**Use `quick` when:**

- You need a fast domain overview
- Token budget is constrained
- Domain is relatively simple
- You'll refine later

**Use `guided` when:**

- You want to drive the process
- You have specific questions
- You want to invoke specific personas
- Interactive exploration is preferred

## Multi-Persona Simulation

The full-simulation mode uses 5 specialized agents to simulate different stakeholder perspectives:

| Persona Agent | Role | Perspective | Contributions |
| --- | --- | --- | --- |
| `domain-expert` | Subject Matter Expert | Deep business knowledge | Domain events, business rules, edge cases |
| `developer-persona` | Technical Implementation | System constraints | Technical events, integration points |
| `business-analyst` | Process & Requirements | Process flow | Commands, actors, acceptance criteria |
| `product-owner` | Product Vision | User value | Priorities, MVP scope, user stories |
| `devils-advocate` | Challenger | Identify gaps | Hot spots, missing scenarios, contradictions |

## 6 Workshop Phases (Full Simulation)

### Phase 1: Chaotic Exploration

All personas brainstorm events independently. No constraints, no ordering.

**Orchestration:**

```markdown
Launch 5 parallel Task agents:
- Task(event-storming-persona domain-expert, "Identify all domain events for: {domain}")
- Task(event-storming-persona developer, "Identify technical events for: {domain}")
- Task(event-storming-persona business-analyst, "Identify commands and actors for: {domain}")
- Task(event-storming-persona product-owner, "Prioritize and identify MVP scope for: {domain}")
- Task(event-storming-persona devils-advocate, "Challenge and identify gaps for: {domain}")
```

### Phase 2: Timeline Ordering

Synthesize and order events chronologically. Create the timeline.

### Phase 3: Command Discovery

Identify what triggers each event. Map commands to events.

### Phase 4: Actor Identification

Map who issues each command. Define roles and systems.

### Phase 5: Bounded Context Discovery

Group related events/commands. Identify natural boundaries.

### Phase 6: Hot Spot Resolution

Devil's advocate challenges. Resolve conflicts and gaps.

**Detailed phase guidance:** See `references/workshop-facilitation.md`

## Sticky Note Color Convention

| Color | Represents | Example |
| --- | --- | --- |
| 🟧 Orange | Domain Event | "Order Placed", "Payment Received" |
| 🟦 Blue | Command | "Place Order", "Process Payment" |
| 🟨 Yellow (small) | Actor | "Customer", "Admin", "System" |
| 🟨 Yellow (large) | Aggregate | "Order", "Customer", "Product" |
| 🟩 Green | Read Model | "Order Summary", "Product Catalog" |
| 🟪 Purple | Policy | "When order placed, reserve inventory" |
| 🟫 Pink | External System | "Payment Gateway", "Email Service" |
| ❗ Red/Pink | Hot Spot | Areas of confusion or conflict |

**Detailed conventions:** See `references/sticky-note-types.md`

## Orchestration Pattern

Since Claude Code subagents cannot spawn other subagents, the main conversation orchestrates:

```text
Main Conversation
    ↓
Invokes event-storming skill
    ↓
Skill guides parallel Task tool calls:
    ├── Task(event-storming-persona domain-expert, prompt)
    ├── Task(event-storming-persona developer, prompt)
    ├── Task(event-storming-persona business-analyst, prompt)
    ├── Task(event-storming-persona product-owner, prompt)
    └── Task(event-storming-persona devils-advocate, prompt)
    ↓
Skill synthesizes results with provenance tracking
    ↓
Outputs event catalog with [persona] attribution
```

## Quick Start

### Full Simulation Mode

```markdown
I want to run a full event storming simulation for an e-commerce order management system.

Please:
1. Launch all 5 persona agents in parallel
2. Have them analyze the domain
3. Synthesize their findings
4. Identify bounded contexts
5. Resolve any hot spots
```

### Quick Mode

```markdown
Give me a quick event storm overview for a subscription billing system.
Focus on the core happy path events.
```

### Guided Mode

```markdown
Let's do a guided event storming session for a hospital appointment system.
Start with the patient booking journey and I'll guide from there.
```

## Output Format

The event storming session produces a structured event catalog:

```markdown
# Event Storm: [Domain Name]

## Event Catalog

### [Bounded Context Name]

**Events:**
- [Event Name] [Domain Expert] - [Description]
- [Event Name] [Developer] - [Description]

**Commands:**
- [Command Name] → [Event Name] [Business Analyst]

**Actors:**
- [Actor Name]: [Commands they can issue]

**Aggregates:**
- [Aggregate Name]: [Events it produces]

**Policies:**
- [Policy Name]: [Trigger] → [Action]

## Bounded Contexts Identified

1. [Context Name]
   - Core Domain / Supporting / Generic
   - [Events in this context]

## Hot Spots

- [Issue] - [Resolution or TODO]
```

**Full template:** See `references/templates/event-storm-output.md`

## Integration with Other Skills

Event storming connects with:

- **domain-storytelling** - Stories feed into event discovery
- **modular-architecture** - Bounded contexts become modules
- **fitness-functions** - Module isolation tests
- **adr-management** - Document bounded context decisions

**Workflow:**

```text
Domain Storytelling → Event Storming → Modular Architecture
(understand "what")   (design "how")   (implement "where")
```

## Best Practices

1. **Start with events** - Events are facts, commands are debatable
2. **Use past tense** - "Order Placed" not "Place Order"
3. **Explore boundaries** - Events help find module boundaries
4. **Embrace chaos** - Initial brainstorming should be messy
5. **Track provenance** - Know which perspective each insight came from
6. **Resolve hot spots** - Don't leave conflicts unaddressed

## References

- `references/workshop-facilitation.md` - Phase orchestration and timing
- `references/persona-prompts.md` - Prompt templates for each persona
- `references/sticky-note-types.md` - Color conventions and usage
- `references/bounded-context-discovery.md` - Context identification patterns
- `references/templates/event-storm-output.md` - Output format with provenance

## Version History

- **v1.0.0** (2025-12-22): Initial release
  - Multi-persona simulation with 5 agents
  - Three workshop modes (full, quick, guided)
  - 6-phase workshop structure
  - Provenance tracking for insights
  - Integration with domain-storytelling and modular-architecture

---

## Last Updated

**Date:** 2025-12-22
**Model:** claude-opus-4-5-20251101