data-contractlisted
Install: claude install-skill bakhod1r/awesome-agents
# Data Contract
The producer commits to a shape and a schedule. Consumers build against it.
Breaking it without notice is an outage, not a refactor.
## Template
```yaml
name: <dataset or event name>
owner: <team, plus a named person>
description: <what it represents in business terms>
schema:
- name: <field>
type: <type>
nullable: <bool>
classification: public | internal | confidential | pii
description: <semantics, units, allowed values>
semantics:
grain: <one row per WHAT — answer this first>
primary_key: [<fields>]
late_arrival: <how late records are handled, and the cutoff>
timezone: <explicit. Never "local".>
sla:
freshness: <max lag, and what consumers should do when breached>
availability: <target>
completeness: <expected row count range>
quality_checks: [<the checks that gate publication>]
versioning:
policy: additive-only | versioned endpoints
deprecation_notice: <period>
```
## Worked example
Two versions of one field:
**Ambiguous — three consumers will interpret it three ways:**
```yaml
- name: amount
type: decimal
description: The order amount
```
*Which* amount? Gross or net? Tax included? Which currency? Refunds negative or a separate row?
Each consumer picks an answer, and the three dashboards disagree forever.
**Unambiguous:**
```yaml
- name: amount_net_minor
type: integer
nullable: false
classification: internal
description: >
Order value excluding tax and shipping, after discounts, in the min