ddd-discover · v1.1.0 · 2026-09-29 · sha256 e3e1fa111aab0f81

ddd-discover v1.1.0A

Immutable. This exact content never changes and is served at /api/v1/blob/e3e1fa111aab0f81.

---
name: ddd-discover
description: >-
  Collaborative domain discovery via event storming, producing event streams,
  command/event candidates, hotspots, ambiguity lists, and preliminary
  context-boundary clues for downstream subdomain classification. Use when doing
  domain discovery — identifying domain events and commands, aligning core business
  flows and exception paths, or re-running discovery after bounded-context term
  conflicts. NOT for: facilitating live EventStorming workshops (formats and
  facilitation patterns are separate reference material), designing aggregate
  boundaries, or partitioning/classifying subdomains — deliverables, not facilitation.
risk: safe
source: self
tags: "[ddd, discovery, event-storming]"
date_added: "2026-05-08"
slug: ddd-discover
version: 1.1.0
displayName: ddd-discover
---

# DDD Discover

> English version: [English](SKILL.en.md)

## 使用时机

- 需要快速对齐核心业务流程与领域边界线索。
- 需求已明确(来自 `ddd-scope` 或用户直接提供),需要探索领域内部发生了什么。
- `ddd-contexts` 报告"术语冲突不可调和"时,作为回溯目标重新执行。

## 输入要求

- **必需**:业务场景描述(用户故事、PRD、工单、或 `ddd-scope` 的输出均可)。
- **可选**:关键参与方与外部系统、业务约束与非目标(来自 `ddd-scope`)。

## 流程

1. **列举事件**:以"已发生的事实"为视角,用**过去时**命名领域事件(如 OrderPlaced, PaymentReceived)。
2. **补全命令**:为每个事件补充触发它的命令、发起者、关键输入数据。
3. **排列时序**:将事件按时间线组织,识别分支、回滚、异常路径(至少覆盖 1 条主路径 + 2 条异常路径)。
4. **标注热点**:标记高频事件、强一致性点、跨系统边界、性能敏感点、合规检查点。
5. **生成歧义清单**:记录术语冲突、状态不明确、职责归属模糊的问题,标注"谁必须确认"。
6. **输出边界线索**:从事件聚类与热点分布中提取初步的能力分组与上下文边界候选。

## 输出

| 工件         | 结构要求                                                            |
| :----------- | :------------------------------------------------------------------ |
| 事件流表     | 表格:序号、事件名(过去时)、触发命令、参与者、输入/输出、异常分支 |
| 命令候选清单 | 表格:命令、发起者、期望结果、幂等性要求                            |
| 事件候选清单 | 表格:事件、关键字段、是否跨上下文、是否对外发布                    |
| 热点标注     | 列表:一致性热点、集成热点、性能热点、合规热点                      |
| 歧义清单     | 表格:歧义点、影响范围、需确认方、建议决策                          |
| 边界线索     | 列表:初步能力分组与潜在上下文边界                                  |

## 校验清单

- [ ] 事件使用过去时命名,业务可理解
- [ ] 至少覆盖 1 条主路径 + 2 条异常/回滚路径
- [ ] 热点中明确标注了跨系统边界与强一致性点
- [ ] 歧义清单中每条都标注了"谁必须确认"
- [ ] 边界线索可被 `ddd-subdomains` 直接消费

## 回溯触发

- 本 Skill 被 `ddd-contexts` 触发回溯:当 > 5 个术语存在不可调和的跨上下文冲突时,说明领域理解不足,需重新发现。

## 示例

```text
@ddd-discover
基于以下 scope 输出,帮我做领域发现:
- 问题:订单售后流程混乱
- 目标:支持退款、换货、投诉处理
- 非目标:不涉及正向下单流程
请输出事件流表、命令/事件候选、热点标注与歧义清单。
```

### 第二个示例(含产出摘录)

**前置**:`ddd-scope` 已产出范围(问题/目标/非目标),或用户直接给了一段业务描述;无既成事件清单。

**调用句**:

```text
「对工单系统做领域发现:用户提交工单 → 客服分派 → 工程师处理 → 用户评价。
重点关心超时未响应和跨部门转派的场景。」
```

**产出摘录**(事件流表节选——完整输出含全部 6 类工件):

```markdown
## 事件流表(节选)
| 序号 | 事件名 | 触发命令 | 参与者 | 异常分支 |
|------|--------|---------|--------|---------|
| 1 | TicketSubmitted | SubmitTicket | 用户 | 附件超限 → TicketRejected |
| 2 | TicketAssigned | AssignTicket | 客服主管 | 无人可派 → AssignmentEscalated |
| 3 | TicketResolved | ResolveTicket | 工程师 | 跨部门转派 → TicketTransferred |

## 热点标注
- 强一致性点:TicketAssigned(重复分派防护)
- 集成热点:TicketTransferred(跨部门 = 跨上下文边界线索)

## 歧义清单(节选)
| 歧义点 | 需确认方 |
|--------|---------|
| 「转派后 SLA 是否重置」 | 客服负责人 |
```

反例对照:只回一段「这个系统包含工单、客服、工程师……」的叙述散文、无表格无清单 → 不合格(六类工件缺一即视为未完成输出)。

## 失败出口与边界处置(可观察)

| 情形 | 可观察出口 |
|------|-----------|
| 无必需输入(用户没给业务场景、也没有 `ddd-scope` 输出) | 停下向用户要「业务场景描述(用户故事/PRD/工单任一)」;**不**凭空编造事件流 |
| 输入只有一句话(信息量不足) | 先输出「假设 + 歧义清单」并标「待确认」,继续产出初版六件套;假设不得伪装成事实 |
| 用户要求现场引导 EventStorming 工作坊 | 不在范围(description NOT for),说明后停;不冒充工作坊引导 |
| 用户直接要聚合边界或子域分类 | 指向 `ddd-aggregates` / `ddd-subdomains`,本件只产出**线索** |
| `ddd-contexts` 回溯触发时拿不到冲突清单 | 向用户索取冲突术语列表(>5 个不可调和冲突才算触发条件);列不出则不回溯 |

## 错法 → 改法

| 错法 | 改法 |
|------|------|
| 事件用现在时命名(如 SubmitOrder) | 一律过去时(OrderSubmitted)——事件是「已发生的事实」 |
| 只写主路径,不写异常分支 | 至少 1 主 + 2 异常/回滚路径(校验清单硬项) |
| 事件流水准直接当限界上下文边界 | 边界线索只是候选,交给 `ddd-subdomains` 分类后再定 |
| 歧义不标确认人,写完就丢 | 每条歧义标「谁必须确认」,否则下游无法收敛 |
| 模型自主对大改动直接跑发现 | 本件面向用户显式请求;发现结论影响领域模型,须人在环确认歧义清单 |
| 输出散文叙述代替六类工件 | 六类工件(表格/清单)齐全才算完成——结构要求见「输出」节 |