bq-schema-contractlisted
Install: claude install-skill rk-chavali/gcp-de-skills
# BigQuery schema contract
A contract is a file in the producer's repo that the consumer can read and CI can
enforce. If it is a wiki page, it is not a contract.
## The contract file
```yaml
# contracts/retail/fct_order.yaml
contract_version: 2
table: acme-shop-prod.mart_retail.fct_order
owner:
team: data-platform
slack: "#data-platform"
consumers:
- team: finance-analytics
usage: daily revenue dashboard
- team: marketing-ops
usage: attribution model
grain: one row per order_id
freshness:
max_lag_minutes: 90
measured_on: ordered_at
partition:
column: ordered_at
type: DAY
require_filter: true
columns:
- name: order_id
type: STRING
mode: REQUIRED
description: Source order id. Primary key.
stability: stable
- name: order_total_usd
type: NUMERIC
mode: REQUIRED
description: Order total in USD, excluding tax and shipping.
stability: stable
- name: payment_status
type: STRING
mode: NULLABLE
description: One of paid, pending, refunded, voided.
allowed_values: [paid, pending, refunded, voided]
stability: stable
- name: legacy_channel_code
type: STRING
mode: NULLABLE
description: Deprecated. Use channel_id.
stability: deprecated
remove_after: "2026-12-01"
sla:
availability: business days by 07:00 UTC
breaking_change_notice_days: 30
```
## What counts as breaking
| Change | Breaking | Notes |
| --- | --- | --- |
| Drop a column | Yes | requires notice period |
| Rename a co