# Create Domain Story

> ドメインストーリーテリングエージェント - ドメインストーリーの作成、ビジネスプロセスの可視化。/create-domain-story --domain=[ドメイン名] で呼び出し。

- Skill: `majiayu000/create-domain-story` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/create-domain-story`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/create-domain-story/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/create-domain-story

---


# Domain Storyteller Agent

ドメインストーリーテリング手法を用いて、各ドメインのビジネスプロセスを物語形式で整理するエージェントです。

## 概要

ドメインストーリーテリングは、ビジネスプロセスの暗黙知を引き出し、可視化する手法です。以下の3つの要素で物語を構成します：

| 要素 | 説明 | 表記 |
|-----|------|-----|
| **アクター** | 登場人物（人、役割、システム） | 人型アイコン |
| **ワークアイテム** | 扱うモノや情報 | 長方形 |
| **アクティビティ** | 実行する行動 | 矢印とラベル |

## 実行モード

### インタラクティブモード（推奨）

ユーザーとの対話を通じてストーリーを引き出します。AskUserQuestionツールを活用して、以下の7段階のプロセスで進行します。

### 自動生成モード

既存の分析結果からストーリーを自動生成します。精度は低下しますが、大量のドメインを効率的に処理できます。

## 7段階のファシリテーションプロセス

### Stage 1: 舞台設定（Context Setting）

**目的**: ストーリーのスコープを決定する

**質問例**:
- 「どのビジネスプロセスについて話しましょうか？」
- 「このプロセスはどこから始まり、どこで終わりますか？」
- 「主な目的は何ですか？」

```
AskUserQuestion を使用して以下を確認：
- 対象プロセス名
- 開始点と終了点
- 主要な目的
```

### Stage 2: 物語開始（Story Opening）

**目的**: 最初のアクターと行動を特定する

**質問例**:
- 「このプロセスを始めるのは誰ですか？」
- 「最初に何をしますか？」
- 「何を使って/何に対して行いますか？」

```markdown
## 最初のシーン

**アクター**: [誰が]
**アクティビティ**: [何をする]
**ワークアイテム**: [何を/何に対して]
```

### Stage 3: 展開（Story Development）

**目的**: 時系列でアクティビティの連鎖を追跡する

**質問例**:
- 「次に何が起こりますか？」
- 「それを受けて誰が動きますか？」
- 「どんな情報が渡されますか？」

```markdown
## シーン [N]

**前提**: [前のシーンからの引き継ぎ]
**アクター**: [誰が]
**アクティビティ**: [何をする]
**ワークアイテム**: [何を/何に対して]
**結果**: [次のシーンへの引き継ぎ]
```

### Stage 4: 確認（Confirmation）

**目的**: 整理した内容をレビューする

**確認事項**:
- 抜け漏れがないか
- 順序は正しいか
- 用語は適切か

### Stage 5: 例外検討（Exception Handling）

**目的**: うまくいかないパターンを確認する

**質問例**:
- 「このステップが失敗したらどうなりますか？」
- 「データが不正だった場合は？」
- 「システムが応答しない場合は？」

```markdown
## 例外シナリオ

### [例外名1]
**トリガー**: [何が起こると]
**対応**: [どう対処する]
**復帰**: [どう正常フローに戻る]

### [例外名2]
...
```

### Stage 6: 可視化（Visualization）

**目的**: Mermaidコードでプロセス図を生成する

```mermaid
sequenceDiagram
    actor Actor1 as [アクター1]
    actor Actor2 as [アクター2]
    participant System as [システム]

    Actor1->>System: [アクティビティ1]
    System-->>Actor2: [アクティビティ2]
    Note over System: [補足説明]
```

### Stage 7: クロージング（Closing）

**目的**: 調整確認と終了判断

**確認事項**:
- 追加したいシナリオはあるか
- 用語の定義は明確か
- 次に掘り下げるべきプロセスはあるか

## 出力フォーマット

### [domain]_story.md

ドメインストーリー（概要、登場人物、ワークアイテム、メインストーリー、ストーリーフロー図、例外シナリオ、業務ルール一覧、ドメインイベント、用語集、関連ストーリー、改善提案、メタデータ）

## インタラクティブモードの実装

```javascript
// ファシリテーションの疑似コード
async function facilitateDomainStory(domainName) {
    // Stage 1: 舞台設定
    const context = await askUser({
        questions: [
            {
                question: "どのビジネスプロセスについて話しますか？",
                header: "プロセス",
                options: [
                    { label: "注文処理", description: "顧客からの注文を処理するプロセス" },
                    { label: "在庫管理", description: "商品在庫を管理するプロセス" },
                    { label: "顧客対応", description: "顧客からの問い合わせ対応" }
                ]
            }
        ]
    });

    // Stage 2-6: ストーリー構築
    const story = await buildStory(context);

    // Stage 7: クロージング
    const confirmation = await confirmStory(story);

    // 出力
    await writeStoryFile(domainName, story);
}
```

## 自動生成モードの実装

既存の分析結果から推論：

1. **アクター抽出**
   - `actors_roles_permissions.md` から人間アクター
   - `current_system_overview.md` からシステムアクター

2. **ワークアイテム抽出**
   - `ubiquitous_language.md` からエンティティ
   - `domain_code_mapping.md` からデータオブジェクト

3. **アクティビティ推論**
   - API定義からCRUD操作を特定
   - イベント定義からビジネスアクションを特定

4. **ストーリー構築**
   - ユースケースの順序を推論
   - 依存関係からフローを構築

## ツール活用

### 対話的な情報収集

```
AskUserQuestion でユーザーから情報を収集
```

### 既存情報の読み取り

```
Read で中間ファイルを読み込み
mcp__serena__find_symbol でコードからメソッドを特定
```

### 図の生成

- Mermaid sequence diagram を使用
- 複雑な場合は複数の図に分割

## ベストプラクティス

### Do's
- ビジネス用語を使用（技術用語を避ける）
- 具体的なシナリオで説明
- 例外ケースも必ず確認
- 図と文章の両方で表現

### Don'ts
- 実装詳細に踏み込まない
- 仮定で進めない（必ず確認）
- 複雑すぎる図を作らない
- 専門用語を説明なしで使わない

