关于 event-storming
面向探索业务流程与系统边界团队的 Event Storming 模拟工作坊 skill,支持快速、引导式和五种角色模拟模式。它生成结构化事件目录,并归纳限界上下文候选。
主要功能
- 01提供三种工作坊模式
- 02完整模式含五种利益相关者角色
- 03引导式工作坊分六个阶段
- 04映射事件、命令和参与者
- 05识别限界上下文与问题点
- 06生成结构化事件目录
适用场景
- 01发现新项目中的领域事件
- 02梳理流程中的命令与参与者
- 03分析代码库中的限界上下文
- 04准备或模拟团队工作坊
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ melodic-software/ claude-code-plugins --skill event-storming安装后在 Claude Code 中输入/event-storming确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/bounded-context-discovery.mdpersona-prompts.mdsticky-note-types.mdworkshop-facilitation.mdreferences/templates/event-storm-output.md详细介绍
事件风暴
交互式工作坊配置
使用 AskUserQuestion 配置事件风暴会议:
# 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"
根据这些回答选择合适的工作坊模式,并调整分析深度。
何时使用此技能
在以下情况下使用此技能:
- 发现业务流程中的领域事件
- 识别系统中的命令和参与者
- 找到限界上下文的边界
- 模拟多方利益相关者参与的事件风暴工作坊
- 为实际的事件风暴主持工作做好准备
- 分析现有代码库中的领域事件
关键词: 事件风暴、领域事件、命令、参与者、限界上下文、聚合、领域发现、工作坊模拟、多角色、DDD
什么是事件风暴?
事件风暴是一种基于工作坊的协作式领域发现方法。参与者使用便签来梳理:
- 事件(橙色)- 领域中发生的事情
- 命令(蓝色)- 触发事件的操作
- 参与者(黄色)- 发出命令的人
- 聚合(黄色)- 处理命令的业务实体
- 读模型(绿色)- 决策所需的信息
- 策略(紫色)- 业务规则和响应
- 外部系统(粉色)- 外部集成
- 热点(红色/粉色)- 存在困惑或冲突的领域
工作坊模式
此技能支持三种运行模式:
| 模式 | 说明 | Token 成本 | 使用场景 |
|---|---|---|---|
full-simulation | 5 个角色并行讨论,分 6 个阶段 | ~15K tokens | 全面发现 |
quick | 单次分析,不使用角色 | ~3K tokens | 快速了解领域 |
guided | 与用户交互,按需调用角色 | 不定 | 用户希望掌控流程 |
模式选择指南
在以下情况下使用 full-simulation:
- 启动新项目或重大功能
- 需要全面发现领域
- 多种视角很有价值
- 与全面性相比,时间并非首要考量
在以下情况下使用 quick:
- 需要快速了解领域
- Token 预算有限
- 领域相对简单
- 之后会进一步完善
在以下情况下使用 guided:
- 希望主导流程
- 有具体问题
- 希望调用特定角色
- 更倾向于交互式探索
多角色模拟
full-simulation 模式使用 5 个专用 Agent 来模拟不同利益相关者的视角:
| 角色 Agent | 职责 | 视角 | 贡献 |
|---|---|---|---|
domain-expert | 领域专家 | 深厚的业务知识 | 领域事件、业务规则、边缘情况 |
developer-persona | 技术实现 | 系统约束 | 技术事件、集成点 |
business-analyst | 流程与需求 | 流程 | 命令、参与者、验收标准 |
product-owner | 产品愿景 | 用户价值 | 优先级、MVP 范围、用户故事 |
devils-advocate | 挑战者 | 发现缺漏 | 热点、缺失的场景、矛盾 |
6 个工作坊阶段(完整模拟)
阶段 1:自由探索
所有角色独立构思事件。不设约束,也不排序。
编排:
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}")
阶段 2:时间线排序
综合事件并按时间顺序排列,创建时间线。
阶段 3:发现命令
识别触发各个事件的操作,并将命令映射到事件。
阶段 4:识别参与者
梳理发出各个命令的主体,并定义角色和系统。
阶段 5:发现限界上下文
对相关事件/命令进行分组,并识别自然边界。
阶段 6:解决热点
由质疑者提出挑战,并解决冲突和缺漏。
详细阶段指南: 参见 references/workshop-facilitation.md
便签颜色约定
| 颜色 | 表示 | 示例 |
|---|---|---|
| 🟧 橙色 | 领域事件 | "Order Placed", "Payment Received" |
| 🟦 蓝色 | 命令 | "Place Order", "Process Payment" |
| 🟨 黄色(小) | 参与者 | "Customer", "Admin", "System" |
| 🟨 黄色(大) | 聚合 | "Order", "Customer", "Product" |
| 🟩 绿色 | 读模型 | "Order Summary", "Product Catalog" |
| 🟪 紫色 | 策略 | "When order placed, reserve inventory" |
| 🟫 粉色 | 外部系统 | "Payment Gateway", "Email Service" |
| ❗ 红色/粉色 | 热点 | 容易产生困惑或冲突的区域 |
详细约定: 请参阅 references/sticky-note-types.md
编排模式
由于 Claude Code 子 Agent 无法启动其他子 Agent,因此由主对话负责编排:
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
快速开始
完整模拟模式
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
快速模式
Give me a quick event storm overview for a subscription billing system.
Focus on the core happy path events.
引导模式
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.
输出格式
事件风暴会议会生成结构化的事件目录:
# 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]
完整模板: 请参阅 references/templates/event-storm-output.md
与其他技能集成
事件风暴可与以下内容衔接:
- domain-storytelling - 故事为事件发现提供素材
- modular-architecture - 限界上下文成为模块
- fitness-functions - 模块隔离测试
- adr-management - 记录限界上下文决策
工作流:
Domain Storytelling → Event Storming → Modular Architecture
(understand "what") (design "how") (implement "where")
最佳实践
- 从事件开始 - 事件是事实,命令则有讨论空间
- 使用过去时 - 使用“Order Placed”,而非“Place Order”
- 探索边界 - 事件有助于找出模块边界
- 接纳混乱 - 初步头脑风暴应该杂乱无章
- 追踪来源 - 了解每条见解来自哪个视角
- 解决热点 - 不要让冲突悬而未决
参考资料
references/workshop-facilitation.md- 阶段编排与时间安排references/persona-prompts.md- 各种角色的提示词模板references/sticky-note-types.md- 颜色约定与用法references/bounded-context-discovery.md- 上下文识别模式references/templates/event-storm-output.md- 含来源信息的输出格式
面向用户的界面
用户直接调用此技能时,它会运行一场由 AI 模拟的事件风暴研讨会。
执行工作流
- 解析参数 - 提取领域描述和模式。如果未提供描述,请询问用户要对哪个领域进行事件风暴。默认模式为
guided。 - 根据模式执行:
- Full:并行启动 5 个角色 Agent(domain-expert、developer、business-analyst、product-owner、devils-advocate)。综合输出并追踪来源,合并事件目录,识别热点,并归入限界上下文候选项。
- Quick:通过单次分析识别领域事件、命令、参与者以及潜在的限界上下文边界。
- Guided:开展交互式 6 阶段研讨会(混乱探索、时间线排序、命令发现、参与者识别、限界上下文发现、热点解决)。
- 生成输出 - 生成包含领域事件、命令、限界上下文候选项和热点的事件目录。
- 保存结果 - 保存到
docs/event-storming/[domain-name]-[date].md(或自定义--dir)。 - 建议后续步骤 - 对于不明确的流程,建议使用领域故事讲述;对于集成策略,建议进行上下文映射;对于关键决策,建议记录 ADR。
版本历史
- v1.0.0 (2025-12-22):首次发布
- 使用 5 个 Agent 进行多角色模拟
- 提供三种研讨会模式(full、quick、guided)
- 采用 6 阶段研讨会结构
- 追踪见解的来源
- 与 domain-storytelling 和 modular-architecture 集成
最后更新
日期: 2025-12-22 模型: claude-opus-4-5-20251101