Generate beautiful draw.io diagrams with a mandatory visual QA loop. Covers flowcharts, ERD, architecture, sequence, and class diagrams. Use when user reques...
Design & media
Entity Relationship Diagram
Try itTurn 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 data...
What it does
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.
The skill document
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.
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 withPK/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.
Related skills
Generate beautiful draw.io diagrams with a mandatory visual QA loop. Covers flowcharts, ERD, architecture, sequence, and class diagrams. Use when user reques...
AI diagram and flowchart generation powered by CellCog. Flowcharts, system architecture, mind maps, org charts, ER diagrams, sequence diagrams, Gantt charts, network diagrams. Describe your system in plain English, get interactive diagrams or print-ready PDFs.
Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Create and visually verify editable teaching diagrams
Generate .drawio diagrams and export to PNG/SVG/PDF/JPG via the native draw.io desktop CLI.