es-kick-off-discovery
Clarify raw user ideas through Event Storming concepts, producing a structured ES markdown as input for the formulation stage.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Clarify raw user ideas through Event Storming concepts, producing a structured ES markdown as input for the formulation stage.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Orchestrate the formulation stage — manage knowledge map, route between concerns, and coordinate incremental updates to produce feature files, API spec, and entity model.
Coordinate requirement changes (add/modify/delete) across all spec artifacts by analyzing impact and delegating to existing prompts.
Mechanically map completed feature files to an OpenAPI 3.0 specification.
Identify features (Commands / Queries) from user ideas and clarify behavioral rules using Spec by Example with the 4-Rules-Pattern. Produces complete Gherkin feature files.
Extract and consolidate entities, fields, types, constraints, and relationships from completed feature files and API spec into a formal DBML data model.
| name | es-kick-off-discovery |
| description | Clarify raw user ideas through Event Storming concepts, producing a structured ES markdown as input for the formulation stage. |
| args | {"SPECS_ROOT_DIR":"spec","ES_SPEC_PATH":"${SPECS_ROOT_DIR}/es.md","MAX_QUESTIONS_PER_ROUND":10,"MAX_ES_ITEMS":20,"DFS_BANDWIDTH":1} |
| input | User idea (raw text) |
| output | ${ES_SPEC_PATH} |
本流程使用以下 Event Storming 元素:
Actor 對系統執行的操作,改變系統狀態。對應規格化階段的 Feature(Command 類型)。每個 Command 包含一段 Description,從三個面向描述:
實際觸發 Command 或查詢 Read Model 的人或系統。判定方式:想像這個 Command / Read Model 最終會實作為一支 API,誰會是呼叫這支 API 的那一方? 那個角色就是 Actor。
Actor 查詢系統當前狀態的介面,不改變狀態。對應規格化階段的 Feature(Query 類型)。Actor 根據查詢結果,決定下一步要執行什麼 Command。每個 Read Model 同樣包含 Description(What / Why / When)。
系統維護的內聚狀態體(通常持久化於資料庫)。Actor 執行 Command 以更新 Aggregate 狀態,透過 Read Model 查詢 Aggregate 狀態。
Command 或 Read Model 的約束條件,分為四類:
Rules 以自然語言描述,不需寫成 Gherkin 格式。Gherkin 的形式化由規格化階段負責。
Command 之間的嚴格執行順序約束。僅當某個 Command 必須在另一個 Command 之後才能執行時才標記。若執行順序為可選,則不列入。
${SPECS_ROOT_DIR})。${ES_SPEC_PATH}(若存在),將已有項目標記為 clear。核心原則:以 DFS 方式深入澄清,每次同時處理最多 ${DFS_BANDWIDTH} 個 Command / Read Model,全部完成後再取下一批。不做跨批次的 BFS 掃描。
clear 後,才取下一批。每個項目的澄清順序:
a. 描述性屬性提案(見「描述性屬性提案原則」)— AI 根據上下文主動提案 Actor、Description(What / Why / When)、Predecessors,用戶確認或糾正。僅在 AI 真的不確定時才轉為提問。
b. 參數(Command)/ 回傳欄位(Read Model)— 以提問方式澄清。
c. Rules — 依四類規則逐一澄清(前置狀態 → 前置參數 → 後置回應/狀態)。以提問方式澄清。
d. Aggregate — 根據以上已澄清的 Description、參數、Rules,推導此操作影響/查詢的 Aggregate 及其屬性(提議 → 用戶確認)。此為最後一步,因為需要先收集足夠資料才能準確推導。${ES_SPEC_PATH},展示更新內容,與用戶確認。Aggregate 是每個 Command / Read Model 澄清流程的最後一步。 必須先完成 Description、Predecessors、參數、Rules 的澄清,收集足夠資料後,才推導 Aggregate:
描述性屬性(Actor、Description、Predecessors)由 AI 根據用戶的 idea 上下文主動提案,不佔用提問額度。 提案後用戶確認或糾正即可,讓提問集中在參數與規則等核心屬性上。
對每個 Command / Read Model,AI 在深入澄清前先展示提案:
【<CommandName> — 描述性屬性提案】
- Actor: <根據 idea 推斷的 Actor>
- Description:
- What: <這個 Command 做什麼>
- Why: <為什麼需要這個 Command>
- When: <Actor 在什麼情境下觸發>
- Predecessors: <推斷的前置步驟,無則標示「無」>
以上是否正確?如有需要修改的部分請指出,否則我們進入參數與規則的澄清。
判定規則:
每次澄清遵循以下循環:
${ES_SPEC_PATH}(僅更新與該回答相關的部分)。y → 進入下一題。n → 詢問如何調整,修正後重新確認。每回合最多 ${MAX_QUESTIONS_PER_ROUND} 題。達到上限時暫停,展示當前進度摘要,用戶可選擇繼續下一回合。
Question(計入上限):為了推進新的知識地圖項目而提出的主要提問。每題針對一個新的 missing 或 partial 項目。計數器僅在切換至新的知識地圖項目時遞增。
Sub-question(不計入上限):仍在解決同一個知識地圖項目的所有互動,包含:
n 後的修正循環判定原則:若問題仍在解決同一個知識地圖項目,則為 Sub-question。切換至新項目時才計為下一題 Question。
探索過程中,Commands + Read Models 的總數不得超過 ${MAX_ES_ITEMS} 個。此限制確保後續的規格化階段(Formulation)能有效處理所有項目。
多選題:
Q: <問題描述>
- A) <選項>
- B) <選項>
- C) <選項>
- D) 其他(請說明)
簡答:
Q: <問題描述>(請提供簡短答案,10 字內)
${ES_SPEC_PATH} 格式# Event Storming: <系統名稱>
## Actors
- **<ActorName>** [人|系統]: <說明>
## Aggregates
### <AggregateName>
> <說明>
| 屬性 | 說明 |
|------|------|
| <field> | <description> |
## Commands
### <CommandName>
- **Actor**: <ActorName>
- **Aggregate**: <AggregateName>
- **Predecessors**: <Command1>, <Command2>(僅限嚴格順序約束,無則標示「無」)
- **參數**: <param1>, <param2>, ...
- **Description**:
- What: <這個 Command 做什麼>
- Why: <為什麼需要這個 Command>
- When: <Actor 在什麼情境下觸發>
#### Rules
- 前置(狀態):
- <原子規則 1>
- <原子規則 2>
- 前置(參數):
- <原子規則 1>
- 後置(狀態):
- <原子規則 1>
## Read Models
### <ReadModelName>
- **Actor**: <ActorName>
- **Aggregates**: <Agg1>, <Agg2>
- **回傳欄位**: <field1>, <field2>, ...
- **Description**:
- What: <這個 Read Model 查詢什麼>
- Why: <為什麼需要這個查詢>
- When: <Actor 在什麼情境下查詢>
#### Rules
- 前置(狀態):
- <原子規則 1>
- 前置(參數):
- <原子規則 1>
- 後置(回應):
- <原子規則 1>
尚未澄清的欄位使用 (待澄清) 標記。已確認無內容的欄位標示 無。
### 結帳
- **Actor**: 用戶
- **Aggregate**: 訂單
- **Predecessors**: 加入購物車
- **參數**: (待澄清)
- **Description**:
- What: 用戶將購物車中的商品結算為訂單
- Why: (待澄清)
- When: (待澄清)
#### Rules
- 前置(狀態):
- 購物車不可為空
- 前置(參數):
- (待澄清)
- 後置(狀態):
- (待澄清)
當所有 (待澄清) 皆被填入具體內容或標示為 無,該項目視為完成。
知識地圖僅供內部推理使用,不輸出給用戶。
## Knowledge Map
### Actors
- <ActorName>: clear | missing
### Aggregates(從 Commands / Read Models 推導,不獨立澄清)
- <AggregateName>: clear | partial | missing
- 屬性: clear | partial | missing
### Commands
- <CommandName>: clear | partial | missing
- Actor: clear | missing
- Aggregate: clear | missing
- 參數: clear | partial | missing
- Predecessors: clear | missing
- Description: clear | partial | missing
- 前置(狀態): clear | partial | missing
- 前置(參數): clear | partial | missing
- 後置(狀態): clear | partial | missing
### Read Models
- <ReadModelName>: clear | partial | missing
- Actor: clear | missing
- Aggregates: clear | partial | missing
- 回傳欄位: clear | partial | missing
- Description: clear | partial | missing
- 前置(狀態): clear | partial | missing
- 前置(參數): clear | partial | missing
- 後置(回應): clear | partial | missing
missing → partial → clearclear,該項目整體標記為 clear。Raw Idea
│
├─ 1. 識別 Actors(快速確認)
│
├─ 2. 初始分析 — 列出 Commands / Read Models 清單(不深入)
│
└─ 3. 分批深入 — 每批最多 ${DFS_BANDWIDTH} 個項目,完成後再取下一批:
│
├─ Command ──────────────────────────────────────────
│ ├─> 描述性屬性提案(AI 主動提案,用戶確認/糾正)
│ │ ├─ Actor
│ │ ├─ Description(What / Why / When)
│ │ └─ Predecessors
│ ├─> 參數(提問澄清)
│ ├─> Rules(提問澄清)
│ │ ├─> 前置(狀態)
│ │ ├─> 前置(參數)
│ │ └─> 後置(狀態)
│ └─> Aggregate(最後:從以上資料推導,提議 → 用戶確認)
│ → 此 Command = clear ✓ → 進入下一個項目
│
└─ Read Model ──────────────────────────────────────
├─> 描述性屬性提案(AI 主動提案,用戶確認/糾正)
│ ├─ Actor
│ ├─ Description(What / Why / When)
│ └─ Predecessors(若適用)
├─> 回傳欄位(提問澄清)
├─> Rules(提問澄清)
│ ├─> 前置(狀態)
│ ├─> 前置(參數)
│ └─> 後置(回應)
└─> Aggregate(最後:從以上資料推導,提議 → 用戶確認)
→ 此 Read Model = clear ✓ → 進入下一個項目
從您的 idea 中識別出以下項目:
【Actors】
- <ActorName>(人|系統)
【Commands】(共 N 個)
- <CommandName> — Actor: <name>
【Read Models】(共 M 個)
- <ReadModelName> — Actor: <name>
將以每批 ${DFS_BANDWIDTH} 個的節奏,逐批深入澄清每個項目的完整細節。
確認後開始?(y/n)
當用戶帶入新 idea 擴充已完成的系統:
${ES_SPEC_PATH},將已有項目標記為 clear。missing。${ES_SPEC_PATH}。嚴格遵守用戶提供的資訊,不添加、不假設、不推測任何未明確說明的內容。 所有內容必須源自用戶的 idea 或澄清回答。
當知識地圖所有項目皆為 clear(${ES_SPEC_PATH} 中無 (待澄清) 標記):
事件風暴探索已完成:
- ${ES_SPEC_PATH}(X 個 Actor, Y 個 Command, Z 個 Read Model, W 個 Aggregate)
可進入規格化階段(Formulation),或提出新的 idea 進行增量更新。