103 Common Data Model
What this skill is for
Section titled “What this skill is for”103-common-data-model produces the conceptual data model: every entity the application works with, what it carries, how it relates to other entities, and what rules constrain it. This document is written at the domain level — it is not a database schema, not an ORM model, not a state management design. It is the shared vocabulary for data that backend, frontend, and feature design all use.
Output path: .specflow/docs/D03-common-data-model.md
When to use it
Section titled “When to use it”- When the team needs a shared language for data before backend or frontend work begins
- When entities, relationships, or business rules are implicit or disputed
- On existing projects where the data model has never been written at the domain level
- Before
104-backend-architecture, which needs entities to specify how the API handles them
When NOT to use it
Section titled “When NOT to use it”- When the data model is trivial (one or two obvious entities with no complex relationships)
- When an accurate, current domain model already exists in the project documentation
- When the project is purely frontend with no meaningful data model to document
What it produces
Section titled “What it produces”.specflow/docs/D03-common-data-model.mdcovering:- Every domain entity with its purpose, primary attributes, and type information
- Relationships between entities with cardinality and direction
- Lifecycle states for entities that move through meaningful states
- Business rules that constrain data at the domain level
- Sensitive data annotations (PII, financial, compliance-relevant)
- Distinction between first-class domain entities and supporting concepts (value objects, lookups)
Required inputs
Section titled “Required inputs”- Core domain entities — the main concepts the application works with
- Entity relationships — how they relate, with cardinality
- Key attributes — what each entity carries, required vs. optional
- Business rules — domain-level constraints regardless of implementation
- Sensitive data — which attributes contain PII, financial, or compliance-sensitive information
Common prompts
Section titled “Common prompts”Prompt
Run 103-common-data-model. The core entities are Project, Expense, Receipt, Approver, and Budget. Prompt
Run 103 and use @explore to find any existing model or schema definitions first. What usually comes next
Section titled “What usually comes next”104-backend-architecture — specify how the API serves these entities, or 105-frontend-architecture if the backend is already established.
Practical guidance
Section titled “Practical guidance”- Write in terms a product manager and an engineer can both read and agree on. Avoid implementation language.
- Note storage boundaries as entity properties (e.g., “client-only, never persisted”), not as a way to reorganize the document.
- If the project has an existing codebase, use
@exploreto find current model or schema definitions before writing — this prevents D03 from contradicting what already exists. - Revisit D03 when new entities are introduced or business rules change. Downstream documents depend on it being current.
Common mistakes
Section titled “Common mistakes”- Writing a database schema instead of a domain model
- Omitting business rules because they seem obvious
- Defining entities without specifying their relationships to each other
- Treating this as a one-time artifact rather than a living reference