Creates entity model documents with Mermaid.js ER diagrams and attribute tables defining entities, relationships, data types, and validation rules. Use when the user asks to "create an entity model", "design a data model", "draw an ERD", "define database schema", "model entities", or mentions entity-relationship diagram, ER diagram, database design, or data modeling. Also trigger whenever the task is to produce, write, or design an entity model or data model document (e.g. docs/entity_model.md) from a requirements catalog — including phrasings like "data model design", "the team needs an entity model before development", or a request to document entities with attributes, data types, precision, and validation or cross-attribute constraints.
94
—
Does it follow best practices?
Impact
94%
1.32xAverage score across 12 eval scenarios
Passed
No findings from the security scan
The canonical home for this skill is ai-unified-process/aiup-core
Create or update the entity model at docs/entity_model.md based on docs/requirements.md.
The document contains an ER diagram and attribute tables.
# Entity Model
## Entity Relationship Diagram
```mermaid
erDiagram
ROOM_TYPE ||--o{ ROOM : "categorizes"
GUEST ||--o{ RESERVATION : "makes"One sentence describing the entity.
| Attribute | Description | Data Type | Length/Precision | Validation Rules |
|---|---|---|---|---|
| id | ... | Long | 19 | Primary Key, Sequence |
| ... | ... | ... | ... | ... |
Every entity MUST have:
### ROOM_TYPE — never ### Room Type or ## Entity: Room Type)Defines categories of rooms with shared characteristics.
| Attribute | Description | Data Type | Length/Precision | Validation Rules |
|---|---|---|---|---|
| id | Unique identifier | Long | 19 | Primary Key, Sequence |
| name | Name of the room type | String | 50 | Not Null, Unique |
| description | Detailed description | String | 500 | Optional |
| capacity | Maximum number of guests | Integer | 10 | Not Null, Min: 1, Max: 10 |
| price | Price per night in CHF | Decimal | 10,2 | Not Null, Min: 0 |
ENTITY_A ||--o{ ENTITY_B : "relationship"The Data Type column must use exactly these values — never SQL or ORM types such as VARCHAR, TEXT, CHAR, bigint, numeric, serial, smallint, UUID, Timestamp, or Enum:
| Data Type | Length/Precision | Usage |
|---|---|---|
| Long | 19 | IDs, foreign keys |
| String | varies (50-500) | Text fields |
| Integer | 10 | Whole numbers |
| Decimal | 10,2 | Currency, percentages |
| Boolean | 1 | True/false flags |
| Date | - | Date only |
| DateTime | - | Date and time |
The Length/Precision column holds the bare value (e.g. 10,2) — never a type
expression like DECIMAL(10,2).
Compose every Validation Rules cell from this vocabulary, using the exact wording — never a prose description, and never an empty cell, dash, or "N/A":
| Attribute Type | Validation Rules Value |
|---|---|
| Primary key | Primary Key, Sequence |
| Required field | Not Null |
| Unique field | Not Null, Unique |
| Foreign key | Not Null, Foreign Key (TABLE.id) |
| Optional field | Optional |
| With range | Not Null, Min: X, Max: Y |
| With values | Not Null, Values: A, B, C |
| Not Null, Format: Email |
Examples: an email attribute is Not Null, Format: Email — never "must be a valid
email address". A status attribute with a fixed set of states is
Not Null, Values: Pending, Active, Completed, Cancelled — never "must be one of
Pending, Active, Completed, Cancelled".
This table is a closed set: every Validation Rules cell is exactly one row
from it. Do not combine rows into new patterns (Not Null, Unique, Format: Email
is invalid — pick the one rule that matters most, here Not Null, Format: Email),
and never write Min: without its matching Max: (Not Null, Min: 0 alone is
invalid — use Not Null, Min: 0, Max: <upper bound> or just Not Null).
The same tables are available in references/REFERENCE.md.
If validation spans multiple columns, add after the table:
Constraints: Check-out date must be after check-in date.
### with the name in UPPERCASEc3a5da3
Canonical home
since Aug 8, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.