.claude/skills/er-diagram-analysis/SKILL.md
ER図分析エージェント - 現行システムのER図を作成し、エンティティ・リレーションシップ・カーディナリティを可視化。/er-diagram-analysis [対象パス] で呼び出し。
npx skillsauth add wfukatsu/architecture-redesign-agent er-diagram-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
現行システムのデータ構造からER図を生成し、エンティティ間の関係を可視化するエージェントです。
このエージェントは以下を生成します:
重要: このスキルを実行する前に、必ず以下の項目をユーザーに確認してください。
引数で対象パスが指定されていない場合は、AskUserQuestionツールで質問してください:
{
"questions": [{
"question": "調査対象のフォルダパスを指定してください",
"header": "対象フォルダ",
"options": [
{"label": "カレントディレクトリ", "description": "現在のディレクトリ全体を調査"},
{"label": "src/", "description": "srcディレクトリを調査"},
{"label": "パス指定", "description": "カスタムパスを入力"}
],
"multiSelect": false
}]
}
デフォルト出力先: ./reports/(カレントディレクトリ配下)
{
"questions": [{
"question": "レポートの出力先ディレクトリを確認してください",
"header": "出力先",
"options": [
{"label": "./reports/ (推奨)", "description": "カレントディレクトリ配下のreportsフォルダ"},
{"label": "カスタムパス", "description": "別のパスを指定"}
],
"multiSelect": false
}]
}
推奨(/data-model-analysis の出力):
reports/01_analysis/data-model-analysis.md - エンティティ・リレーションシップ情報推奨(/db-design-analysis の出力):
reports/01_analysis/db-design-analysis.md - テーブル定義・外部キー情報注意: 前提ファイルがあれば効率的に生成できますが、なくてもコードから直接ER図を生成可能です。
結果は reports/01_analysis/ に出力します。
重要: 各ステップ完了時に即座にファイルを出力してください。
reports/01_analysis/
└── er-diagram-current.md # Step 4完了時
大規模コードベースの場合、Task toolのExploreエージェントを並列起動して効率的に情報収集できます。
詳細は .claude/skills/common/sub-agent-patterns.md の「Pattern 1: コードベース探索エージェント」を参照。
あなたはデータモデリングとER図作成の専門家エージェントです。以下の手順でER図分析を実行してください。
前提ファイルが存在する場合はそこから情報を取得。 存在しない場合はコードから直接収集:
情報源:
├── 前提ファイル(あれば優先)
│ ├── data-model-analysis.md → エンティティ一覧、関連
│ └── db-design-analysis.md → テーブル定義、外部キー
├── ORMアノテーション
│ ├── @Entity, @Table, @Column
│ ├── @OneToMany, @ManyToOne, @ManyToMany, @OneToOne
│ ├── @JoinColumn, @JoinTable
│ └── @Inheritance, @DiscriminatorColumn
├── DDL/マイグレーション
│ ├── CREATE TABLE
│ ├── FOREIGN KEY REFERENCES
│ └── ALTER TABLE ADD CONSTRAINT
└── 設計書のER図(既存があれば参考)
Serena使用例:
mcp__serena__search_for_pattern: substring_pattern="@OneToMany|@ManyToOne|@ManyToMany|@OneToOne", restrict_search_to_code_files=true
mcp__serena__search_for_pattern: substring_pattern="FOREIGN KEY|REFERENCES", restrict_search_to_code_files=false
ER図に含めるエンティティを整理:
| 属性 | 説明 | |------|------| | 主キー | PK表記 | | 外部キー | FK表記、参照先 | | 必須属性 | NOT NULL | | ユニーク属性 | UK表記 | | 型情報 | データ型(string, int, date等) |
Mermaid erDiagram 形式でER図を生成:
全体ER図:
ドメイン別ER図:
Mermaid ER図のルール:
erDiagram
ENTITY_A ||--o{ ENTITY_B : "relationship"
関連記号:
|| = exactly one
o| = zero or one
}| = one or more
}o = zero or more
属性記法:
ENTITY {
string name PK
int age
string email UK
date created_at
}
このステップ完了時に出力: reports/01_analysis/er-diagram-current.md
出力したファイルのMermaid図を検証し、エラーがあれば修正:
/fix-mermaid ./reports/01_analysis
重要な検証ポイント:
# 現行システム ER図
## 概要
| 項目 | 値 |
|------|-----|
| エンティティ数 | [N] |
| リレーションシップ数 | [N] |
| ドメイン数 | [N] |
| 生成元 | [ORM/DDL/設計書/混合] |
## 全体ER図
```mermaid
erDiagram
USER ||--o{ ORDER : "places"
USER {
string id PK
string name
string email UK
date created_at
}
ORDER ||--|{ ORDER_ITEM : "contains"
ORDER {
string id PK
string user_id FK
string status
date ordered_at
}
ORDER_ITEM }|--|| PRODUCT : "references"
ORDER_ITEM {
string id PK
string order_id FK
string product_id FK
int quantity
}
PRODUCT {
string id PK
string name
int price
string category
}
erDiagram
[ドメイン内のエンティティと関連]
境界を跨ぐ関連: | From | To | 関連 | 種別 | |------|-----|------|------| | [Entity] | [Entity] | [relationship] | [境界内/境界跨ぎ] |
[同様の構造]
| 属性名 | 型 | 制約 | 説明 | |--------|-----|------|------| | [name] | [type] | [PK/FK/UK/NOT NULL] | [description] |
関連: | 方向 | 相手 | 多重度 | 説明 | |------|------|--------|------| | → | [entity] | [1:N] | [description] |
| 関連タイプ | 数 | 割合 | 例 | |-----------|-----|------|-----| | 1:1 | [N] | [%] | [example] | | 1:N | [N] | [%] | [example] | | N:M | [N] | [%] | [example] | | 継承 | [N] | [%] | [example] |
| # | パターン | エンティティ | 影響 | 推奨 | |---|---------|------------|------|------| | 1 | [pattern] | [entities] | [impact] | [recommendation] |
| ドメイン候補 | エンティティ | 境界跨ぎ関連数 | 分割難易度 | |------------|------------|--------------|-----------| | [domain] | [entities] | [N] | [High/Medium/Low] |
## ツール活用ガイドライン
### 優先順位
1. **前提ファイル** - data-model-analysis.md, db-design-analysis.md があれば最優先で活用
2. **Serenaツール** - ORM定義のシンボリック解析
3. **Grep** - アノテーション、DDLパターン検索
4. **Read** - 個別ファイルの詳細確認
## エラーハンドリング
- **エンティティが多すぎる場合(30以上)** → 全体図は簡略化し、ドメイン別の詳細図を重視
- **ORM/DDLが見つからない場合** → APIレスポンス型やDTOから推論
- **関連の方向が不明な場合** → 双方向として記載し、要確認マークを付与
## 関連スキル
| スキル | 用途 |
|-------|------|
| `/data-model-analysis` | データモデル分析(入力) |
| `/db-design-analysis` | DB設計分析(入力) |
| `/ddd-evaluation` | DDD評価(ER図を入力として活用) |
| `/ddd-redesign` | 再設計時の現行ER図参照 |
| `/design-scalardb` | ScalarDBスキーマ設計(移行元参照) |
tools
インタラクティブワークフロー選択 - 実行したい処理を段階的に選択して実行。/workflow で呼び出し。
development
GraphDB可視化エージェント - RyuGraphデータベースの内容をMermaid/DOT/HTML形式で可視化。/visualize-graph [出力パス] で呼び出し。
tools
システム調査エージェント - コードベースの構造・技術スタック・問題点・DDD適合性を調査。/system-investigation [対象パス] で呼び出し。
databases
ScalarDBエディション選定エージェント - 対話形式で最適なScalarDBエディション(OSS/Enterprise Standard/Premium)を選定。/select-scalardb-edition で呼び出し。