Data model
When to use each of the 1 data model block, with a live example of every one.
The data model blocks: what each one is for, how to choose between neighbours, and a live starter example you can edit — converted at build time from the authoring skill your agent reads. Every example body is YAML; in a real doc the fence language is the block type (for example sequence … ). Schemas are strict — unknown fields are rejected. The full field contract for any block — every field, enum, and terse one-line form, generated from the schema — is npx chiltepin block <type>. See the block catalog for every block rendered on one page.
Shape: Network — entities joined by cardinality edges, no nesting
(erd).
Answers: What shape is the data at rest, and how do the entities relate?
Not this family: data in motion → dfd (flows.md) or sankey
(charts-overviews.md); classes with behavior → uml (architecture.md);
example rows the reader should scan → table (tables-data.md).
Data model
erd — entities and relations
Entity cards with columns and key markers, joined by crow's-foot edges. The
renderer centres the aggregate root (the "one" side of most relations), fans
neighbours out by relation depth, and never truncates a card.
Answers: what shape is the data at rest, and how do the entities relate?
Write columns and relations in the terse forms. Use fromCol / toCol only
when the FK cannot be inferred from ref or the column name. schema on an
entity, or groups, draws a panel around the entities that share it.
Budget: 20 entities or 60 columns per block; chiltepin check warns past that.
Split the model by domain.
erd, not uml, for data at rest; uml for classes with behaviour; dfd
for data in motion.
chiltepin checkOther ways to write it
A ```dbml or ```prisma fence, or a ```mermaid fence with
erDiagram, parses into an erd. chiltepin sync sql schema.sql --out docs/data-model.md (or sync dbml / sync prisma) converts a schema file.
The dialect subsets are in reference/mermaid.md (Input dialects).