Write the columns, grain, freshness, and owner a producer and a consumer can both use. Use when the user mentions data contract, schema agreement, producer consumer contract, table contract, or asks for a data contract. Data and analytics skill by Yasir Jilani.
Scanned 9/30/2026
npx -y skills add SYasJ/claude-business-skills --skill data-contract --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Data Contract?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/syasj-data-contract)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: data-contract
description: "Write the columns, grain, freshness, and owner a producer and a consumer can both use. Use when the user mentions data contract, schema agreement, producer consumer contract, table contract, or asks for a data contract. Data and analytics skill by Yasir Jilani."
license: MIT
compatibility: Agent Skills standard. No network access, extra packages, or credentials required.
metadata:
author: Yasir Jilani
version: "1.0.0"
domain: data
---
<!-- GENERATED FILE - edits here are overwritten by scripts/generate.py.
Edit the 'data-contract' entry in source/, then run:
python3 scripts/generate.py && python3 scripts/validate.py
See CONTRIBUTING.md. -->
# Data Contract
Write the columns, grain, freshness, and owner a producer and a consumer can both use.
## When to use this skill
Use this skill when the user:
- data contract
- schema agreement
- producer consumer contract
- table contract
## When not to use this skill
- The user wants a different domain's specialist skill.
- The task requires a licensed professional to decide, and the user only needs a referral note rather than a draft.
- The request asks you to deceive, evade a control, or hide material facts.
## Professional boundary
Do not invent numbers. If a source file is missing, say so. Distinguish observation from inference. Do not re-identify private data to make a point.
## Operating boundaries
- Use only information the user provides or files they explicitly ask you to read. Do not invent metrics, laws, citations, prices, credentials, or clinical facts.
- Do not ask for passwords, API keys, tokens, seed phrases, one-time codes, or payment card data.
- Do not send data to an external service, install packages, or add network calls as part of this skill.
- Separate facts, assumptions, and recommendations. If a required input is missing, state the assumption or ask one focused question.
- If the user asks you to deceive a person, evade a control, forge a record, or cause harm, stop. Offer a legitimate alternative.
- Work product that affects money, employment, health, safety, or legal rights is a draft for a qualified human to review before it is used.
## Inputs to collect
- The table or file
- The grain
- The columns that must not be null
- The freshness the consumer needs
## Workflow
### 1. Step 1
Name the grain in one sentence.
### 2. Step 2
List required columns and which may be null.
### 3. Step 3
Write the freshness as a clock time the producer can hit.
### 4. Step 4
Name both owners.
### 5. Step 5
Say what breaks the contract.
### 6. Step 6
Do not add columns nobody produces.
## Output
Deliver a **data contract**.
- Purpose of this data contract, in two sentences.
- Facts the user supplied, listed separately from assumptions.
- The work itself, in the structure the workflow names.
- Open questions, risks, and the single next action with an owner.
- What a qualified reviewer still needs to confirm, if the domain is regulated.
## Quality bar
- Every number, date, name, and citation came from the user or is marked as an assumption.
- The artifact can be used without reading this skill again.
- Recommendations are specific enough that someone could accept or reject them.
- Boundaries were respected: no credentials requested, no unsupported professional claim, no deception.
## Example
### Scenario
Product wants active_accounts on the dashboard by 06:00. Noah's job finished at 09:30 on eight of the last ten weekdays. They need a contract both sides can sign.
### Example data
```text
table: analytics.active_accounts
grain: one row per workspace per day
required columns: workspace_id, day, active_flag
nullable: none of those three
producer: Noah Berger
consumer: Jonah Park
job finish, last 10 weekdays: 09:12 to 09:41, two runs failed
consumer ask: 06:00 local
```
### Example outcome
**Contract — analytics.active_accounts**
Grain: one row per workspace per day.
Required: workspace_id, day, active_flag. None null.
Freshness in this contract: ready by 10:00 America/Edmonton, or the dashboard shows the prior day.
Not in this contract: 06:00. The job does not finish then.
Breaks the contract: a null workspace_id, a day with two rows, or a finish after 10:00.
Owners: Noah produces. Jonah accepts the 10:00 clock or funds a faster job.
Next: both initial this by 30 September 2026. Until then the dashboard must not say 'live at 6'.
## Anti-patterns
- A contract with no grain
- Freshness the producer never agreed
- Hidden personal columns
## Related skills
- `freshness-sla`
- `metric-definition`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!