Identify business entities, relationships, and high-level data structures from requirements and domain knowledge.
Identifies business entities and relationships from requirements by extracting nouns and mapping cardinalities. Use when analyzing requirements to create high-level data models before technical design.
/plugin marketplace add melodic-software/claude-code-plugins/plugin install data-architecture@melodic-softwareThis skill is limited to using the following tools:
Use this skill when:
Conceptual data modeling identifies the essential business entities and their relationships at a high level, independent of any specific database technology. It bridges business requirements and technical implementation.
| Aspect | Conceptual | Logical | Physical |
|---|---|---|---|
| Audience | Business stakeholders | Analysts, architects | Developers, DBAs |
| Detail | High-level entities | Attributes, keys | Columns, indexes |
| Technology | None | Database-agnostic | Platform-specific |
| Focus | What data exists | How data relates | How data is stored |
Read requirements and identify candidate entities:
Requirements: "Customers place orders for products. Each order contains
multiple items. Products belong to categories."
Candidate Entities:
- Customer
- Order
- Product
- Item (OrderItem)
- Category
Eliminate non-entities:
| Relationship Type | Description | Example |
|---|---|---|
| One-to-One (1:1) | Single instance each side | User ↔ Profile |
| One-to-Many (1:N) | One to multiple | Customer → Orders |
| Many-to-Many (M:N) | Multiple both sides | Products ↔ Categories |
Customer ─┤├─○< Order (One customer has zero or more orders)
Order ─┤├─┤< OrderItem (One order has one or more items)
Product >○─┤├─ Category (One product belongs to one category)
Notation:
┤├ = Mandatory (must exist)○ = Optional (may not exist)< or > = Many side# Conceptual Data Model: [Domain Name]
## 1. Domain Overview
[Brief description of the business domain]
## 2. Entity Catalog
### Entity: [Entity Name]
| Property | Value |
|----------|-------|
| Description | [What this entity represents] |
| Business Owner | [Who owns this data] |
| Lifecycle | [Created → Active → Archived] |
| Volume | [Expected record count] |
| Growth | [Expected growth rate] |
**Key Attributes (Business Identifiers):**
- [Natural key 1]
- [Natural key 2]
**Related Entities:**
- [Entity A] - [relationship description]
- [Entity B] - [relationship description]
## 3. Relationship Matrix
| From | To | Cardinality | Description |
|------|-----|-------------|-------------|
| Customer | Order | 1:N | Customer places orders |
| Order | OrderItem | 1:N | Order contains items |
| Product | OrderItem | 1:N | Product appears in items |
| Category | Product | 1:N | Category contains products |
## 4. Entity Relationship Diagram
```mermaid
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ ORDER_ITEM : contains
PRODUCT ||--o{ ORDER_ITEM : "appears in"
CATEGORY ||--|{ PRODUCT : contains
[Business terms and definitions - ubiquitous language]
Group entities by business capability:
┌─────────────────────┐ ┌─────────────────────┐
│ Order Context │ │ Catalog Context │
│ │ │ │
│ ┌───────────────┐ │ │ ┌───────────────┐ │
│ │ Order │ │ │ │ Product │ │
│ │ OrderItem │ │ │ │ Category │ │
│ │ Shipping │ │ │ │ Inventory │ │
│ └───────────────┘ │ │ └───────────────┘ │
└─────────────────────┘ └─────────────────────┘
↕ ↕
Customer ID Product ID
(shared reference) (shared reference)
Identify aggregate boundaries:
// Order Aggregate
public class Order // Aggregate Root
{
public OrderId Id { get; }
public CustomerId CustomerId { get; }
public List<OrderItem> Items { get; } // Owned by Order
public ShippingInfo Shipping { get; } // Value Object
// OrderItems cannot exist without Order
// Access OrderItems only through Order
}
| Concept | Entity | Value Object |
|---|---|---|
| Identity | Has unique ID | No identity |
| Equality | By ID | By value |
| Mutability | Mutable | Immutable |
| Example | Customer | Address, Money |
erDiagram
CUSTOMER {
guid id PK
string name
string email UK
}
ORDER {
guid id PK
guid customer_id FK
date order_date
string status
}
ORDER_ITEM {
guid id PK
guid order_id FK
guid product_id FK
int quantity
decimal price
}
PRODUCT {
guid id PK
string sku UK
string name
decimal price
}
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ ORDER_ITEM : contains
PRODUCT ||--o{ ORDER_ITEM : "ordered as"
Category (self-referencing)
├── Electronics
│ ├── Phones
│ │ ├── Smartphones
│ │ └── Feature Phones
│ └── Computers
└── Clothing
erDiagram
CATEGORY {
guid id PK
guid parent_id FK
string name
int level
}
CATEGORY ||--o{ CATEGORY : "parent of"
Track state changes over time:
ProductPrice (temporal)
- product_id
- price
- effective_from
- effective_to (nullable = current)
Attachment can belong to Order OR Product OR Customer:
Option 1: Separate FKs
attachment.order_id, attachment.product_id, attachment.customer_id
Option 2: Polymorphic
attachment.attachable_type, attachment.attachable_id
Inputs from:
event-storming (EA plugin) → Domain eventsOutputs to:
er-modeling skill → Logical modelschema-design skill → Physical modelThis skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.