Turn a data model into an entity-relationship (ER) diagram. Use when asked to design a schema, model data, show how tables/entities relate, or diagram a database. Produces a ready-to-render Mermaid ER diagram (renders live, exportable as PNG/SVG) plus key attributes, cardinality, and design notes.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add mohitagw15856/pm-claude-skills --skill entity-relationship-diagram --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Entity Relationship Diagram?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/mohitagw15856-entity-relationship-diagram)More formats (shields.io, HTML) on the badges page.
---
name: entity-relationship-diagram
description: "Turn a data model into an entity-relationship (ER) diagram. Use when asked to design a schema, model data, show how tables/entities relate, or diagram a database. Produces a ready-to-render Mermaid ER diagram (renders live, exportable as PNG/SVG) plus key attributes, cardinality, and design notes."
homepage: https://mohitagw15856.github.io/pm-claude-skills/skill/entity-relationship-diagram.html
metadata:
{
"openclaw": { "emoji": "🖼" }
}
---
# Entity-Relationship Diagram Skill
Before you write a migration, it pays to see the data model: the entities, their key fields, and how they
relate (one-to-many, many-to-many). This skill turns a described domain into a clean **Mermaid ER diagram**
with proper cardinality notation and the attributes that matter.
## Required Inputs
Ask for these only if they aren't already provided:
- **The entities** — the core objects/tables (User, Order, Product…).
- **Relationships** — how they relate, and the cardinality (a user *has many* orders, an order *has many* line items).
- **Key attributes** — the important fields per entity (especially keys); full column lists aren't required.
- **The domain** — what the system does, so the model is realistic.
## Output Format
### [Domain] — data model
One line on the scope of the model.
```mermaid
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
PRODUCT ||--o{ LINE_ITEM : "appears in"
USER {
uuid id PK
string email
string name
}
ORDER {
uuid id PK
uuid user_id FK
datetime created_at
string status
}
LINE_ITEM {
uuid id PK
uuid order_id FK
uuid product_id FK
int qty
}
PRODUCT {
uuid id PK
string name
decimal price
}
```
**Cardinality key** — `||--o{` = one-to-many, `}o--o{` = many-to-many, `||--||` = one-to-one.
**Design notes** — normalization choices, where a join table is needed, indexes worth adding, anything deferred.
## Mermaid Rules (so it renders)
- Start with `erDiagram`. Relationship line: `A ||--o{ B : label`.
- Crow's-foot cardinality: `||` (exactly one), `o{` (zero-or-many), `|{` (one-or-many), `o|` (zero-or-one).
- Attribute blocks: `ENTITY { type name PK }` — mark keys with `PK` / `FK`.
- Entity names are usually UPPER_SNAKE; quote relationship labels that contain spaces.
## Quality Checks
- [ ] Every relationship has explicit, correct cardinality (not just a plain line)
- [ ] Primary and foreign keys are marked (PK/FK)
- [ ] Many-to-many relationships are resolved with a join entity where appropriate
- [ ] Attribute types are sensible for the domain
- [ ] The Mermaid block renders without edits
## Anti-Patterns
- [ ] Do not draw relationships without cardinality — "related" isn't a data model
- [ ] Do not leave many-to-many unresolved when a join table is the right call
- [ ] Do not dump every conceivable column — show the keys and the attributes that matter
- [ ] Do not omit foreign keys — they're how the relationships are actually enforced
- [ ] Do not break Mermaid with unquoted spaced labels
## Based On
Data modeling (entity-relationship modeling, crow's-foot notation, normalization), expressed as renderable Mermaid.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!