APM

>Agent Skill

@j5ik2o/event-storming

skilldevelopment

Event Stormingでイベント(動詞の過去形)を中心に、コマンド・集約・リードモデルを抽出/命名/レビューする作業に使う

development
apm::install
$apm install @j5ik2o/event-storming
apm::skill.md
---
name: event-storming
description: Event Stormingでイベント(動詞の過去形)を中心に、コマンド・集約・リードモデルを抽出/命名/レビューする作業に使う
metadata:
  short-description: Event Storming支援
---

# Event Storming

## 使う場面
- 要件や仕様にイベントの説明が不足している
- イベント名の命名やイベント/リソースの区別に迷う
- Event Storming成果物(イベント/コマンド/集約/リードモデル)を整理・追記したい

## ルール(要点)
- イベントはドメインの重要な出来事で、動詞の過去形で表現する
- イベントはビジネスの重要な振る舞いを表すため、イベント中心に整理する
- 原則として **1コマンドに対して1イベント** とし、1コマンドで複数イベントを生成しない
- コマンド名の動詞とイベント名の動詞は対応させる(例: `AddCartItem``CartItemAdded`
- 動詞が異なる場合は別イベントとみなし、混同しない(例: `AppendCartItem``CartItemAdded` を割り当てない)
- 関係の表現は「R(, )」で整理する

詳細は `references/event-storming-notes.md` を参照する。

## 手順(簡潔)
1. 重要な出来事を列挙し、イベント名を過去形で確定する
2. 各イベントに対応するコマンドを逆算して決める
3. イベントを受け取る集約を決め、境界を調整する
4. クエリで必要なリードモデルを定義する
5. R(Event, Resource) / R(Event, Event) / R(Resource, Resource) を整理する
6. イベント/リソースの区別が曖昧なら判定ルールを適用する

## 出力テンプレート
```
## Event Storming の前提モデル

### イベント
- ...

### コマンド
- ...

### 集約
- ...

### リードモデル
- ...
```