# Skill: Data

> **Atelier source:** `domains/data/` (first-principles + schema-design,
> migrations, indexing)
> **Core principles:** C1 Correctness, C4 Locality, C6 Composability
> **BA.A mapping:** web API, worker, scheduled job
> **Consumer:** read this before authoring a service with a database.

## First Principles (citizen-developer-relevant subset)

- **Schema reflects the domain, not the application.** Tables model
  real-world entities, not ORM classes.
- **Constraints are in the schema.** NOT NULL, UNIQUE, FK — the database
  enforces integrity, not the application.
- **Migration has an `up` and a `down`.** Every migration is reversible.
- **Types are domain-accurate.** UUID for IDs, TIMESTAMPTZ for timestamps,
  DECIMAL for money — not string/integer/everything.
- **No `SELECT *`; no N+1.** Explicit columns; eager-load relations.

## Agent-Checklist Triggers (§ Data)

- Schema reflects the domain (not the application)
- Constraints are in the schema (NOT NULL, UNIQUE, FK)
- Migration has an `up` and a `down`
- Types are domain-accurate (UUID, TIMESTAMPTZ, DECIMAL for money)
- No `SELECT *`; no N+1

## How Nova Uses This

Nova deploys your infrastructure (RDS, DynamoDB) but does not author your
schema. The data skill ensures the schema you bring meets production-grade
standards. The submission-readiness gate checks that your contract declares
the infrastructure; the data skill checks that the application running on
that infrastructure uses the database correctly.