Transforming Data
ancoleman/ai-design-components
Transform raw data into analytical assets using ETL/ELT patterns, SQL (dbt), Python (pandas/polars/PySpark), and orchestration (Airflow).
Data pipeline contract enforcer. An agent skill from LeoYeAI/openclaw-master-skills.
$ npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills phy-pipeline-contract-enforcer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/phy-pipeline-contract-enforcer .claude/skills/phy-pipeline-contract-enforcer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "phy-pipeline-contract-enforcer" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/phy-pipeline-contract-enforcer into .claude/skills/phy-pipeline-contract-enforcer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phy-pipeline-contract-enforcer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/phy-pipeline-contract-enforcerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills phy-pipeline-contract-enforcer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/phy-pipeline-contract-enforcer .agents/skills/phy-pipeline-contract-enforcer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "phy-pipeline-contract-enforcer" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/phy-pipeline-contract-enforcer into .agents/skills/phy-pipeline-contract-enforcer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phy-pipeline-contract-enforcer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills phy-pipeline-contract-enforcer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/phy-pipeline-contract-enforcer .cursor/skills/phy-pipeline-contract-enforcer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "phy-pipeline-contract-enforcer" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/phy-pipeline-contract-enforcer into .cursor/skills/phy-pipeline-contract-enforcer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phy-pipeline-contract-enforcer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/phy-pipeline-contract-enforcer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills phy-pipeline-contract-enforcer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/phy-pipeline-contract-enforcer .gemini/skills/phy-pipeline-contract-enforcer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "phy-pipeline-contract-enforcer" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/phy-pipeline-contract-enforcer into .gemini/skills/phy-pipeline-contract-enforcer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phy-pipeline-contract-enforcer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills phy-pipeline-contract-enforcerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/phy-pipeline-contract-enforcer .github/skills/phy-pipeline-contract-enforcer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "phy-pipeline-contract-enforcer" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/phy-pipeline-contract-enforcer into .github/skills/phy-pipeline-contract-enforcer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phy-pipeline-contract-enforcer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills phy-pipeline-contract-enforcer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/phy-pipeline-contract-enforcer .opencode/skills/phy-pipeline-contract-enforcer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "phy-pipeline-contract-enforcer" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/phy-pipeline-contract-enforcer into .opencode/skills/phy-pipeline-contract-enforcer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phy-pipeline-contract-enforcer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
phy-pipeline-contract-enforcerData pipeline contract enforcer. An agent skill from LeoYeAI/openclaw-master-skills.
Phy Pipeline Contract Enforcer is an agent skill from LeoYeAI/openclaw-master-skills. Data pipeline contract enforcer. Define the expected schema at each pipeline stage boundary — field names, types, nullability, value ranges, business invariants — and validate actual data samples against those contracts. Catches schema drift between pipeline stages before it reaches production. Supports dbt models, Spark DataFrames, Pandas DataFrames, Kafka topics, REST API payloads, and raw CSV/JSON files. Can auto-generate a contract from a sample, validate a sample against an existing contract, detect when a…
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `_meta.json`).
It sits in Data & Analytics, covering Data pipelines and ETL, DataFrames and Event-driven systems. It works with dbt, pandas and Apache Kafka. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is Apache-2.0.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Phy Pipeline Contract Enforcer loads about 4.7k tokens when it runs. Until then it costs about 216 tokens; SKILL.md has 473 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its Apache-2.0 licence (© LeoYeAI). 473 words, ~4,717 tokens.
.claude/skills/phy-pipeline-contract-enforcer/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Data pipelines fail silently. A column goes nullable in staging. An upstream team renames a field. A new data source adds an unexpected type. By the time it surfaces in a dashboard or an alert, the corrupt data is already in production.
Paste a data sample and a contract (or generate the contract from the sample), and get an instant audit: which fields violate the contract, what the violation is, and what to fix.
Works with dbt, Spark, Pandas, Kafka, REST APIs, CSV/JSON. Zero external services. No Great Expectations config required.
# Option 1: Generate a contract from a sample file
/pipeline-contract --generate sample.json
/pipeline-contract --generate output.csv
# Option 2: Validate a sample against an existing contract
/pipeline-contract --validate sample.json --contract contracts/orders.yaml
# Option 3: Check for drift between two samples (old vs new)
/pipeline-contract --diff old-output.json new-output.json
# Option 4: From dbt schema.yml
/pipeline-contract --from-dbt models/schema.yml --validate data/orders.csv
# Option 5: Validate a Pandas/Spark DataFrame (paste the schema)
/pipeline-contract --dataframe
[paste df.dtypes or df.schema output here]
# Option 6: Full pipeline audit (multiple stage files)
/pipeline-contract --audit pipeline/
# Reads: pipeline/stage-1.json, pipeline/stage-2.json, contracts/*.yamlIdentify what kind of pipeline artifact is being validated:
# Detect file type and format
file_ext="${1##*.}"
case "$file_ext" in
json) STAGE_TYPE="json_payload" ;;
csv) STAGE_TYPE="tabular_csv" ;;
parquet) STAGE_TYPE="parquet" ;;
yaml|yml) STAGE_TYPE="contract_or_dbt" ;;
*) STAGE_TYPE="unknown" ;;
esac
# Check if it looks like dbt schema.yml
if grep -q "^models:" "$1" 2>/dev/null || grep -q "^version:" "$1" 2>/dev/null; then
STAGE_TYPE="dbt_schema"
fi
# Check if it's a Python type annotation block (DataFrame schema)
if echo "$1" | grep -qE "dtype|object|int64|float64|datetime64"; then
STAGE_TYPE="pandas_schema"
fi| Stage Type | Detection | Examples |
|---|---|---|
| JSON payload | .json extension or curly braces | REST API output, Kafka message |
| Tabular CSV | .csv extension | ETL output, export files |
| dbt schema | models: / version: key | dbt schema.yml |
| Pandas schema | dtype/int64/float64 patterns | df.dtypes output |
| Spark schema | StructType / StructField | df.printSchema() output |
| Parquet | .parquet extension | Processed pipeline files |
From any data sample, extract the implicit schema:
# For each field in the JSON object, infer:
# - field name
# - data type (string, integer, float, boolean, null, array, object)
# - nullable (does the field ever appear as null or absent?)
# - example values (first 3 distinct values)
# - cardinality hint (if < 20 distinct values across samples → likely enum)
def infer_json_schema(samples: list[dict]) -> dict:
schema = {}
for sample in samples:
for key, value in sample.items():
if key not in schema:
schema[key] = {
"type": type(value).__name__,
"nullable": False,
"examples": [],
"values_seen": set()
}
if value is None:
schema[key]["nullable"] = True
schema[key]["values_seen"].add(str(value)[:50])
if len(schema[key]["examples"]) < 3:
schema[key]["examples"].append(value)
# Detect enums: < 20 distinct values
for field in schema.values():
if len(field["values_seen"]) < 20:
field["enum_hint"] = sorted(field["values_seen"])
return schema# Get column names, types, null counts, sample values
python3 -c "
import csv, sys
from collections import defaultdict, Counter
with open('$FILE') as f:
reader = csv.DictReader(f)
rows = list(reader)
schema = defaultdict(lambda: {'types': Counter(), 'null_count': 0, 'examples': []})
for row in rows:
for col, val in row.items():
schema[col]['null_count'] += 1 if not val.strip() else 0
schema[col]['types'][type(val).__name__] += 1
if len(schema[col]['examples']) < 3:
schema[col]['examples'].append(val)
for col, info in schema.items():
null_pct = round(100 * info['null_count'] / len(rows), 1)
print(f'{col}: {dict(info[\"types\"])} | null={null_pct}% | examples={info[\"examples\"]}')
"# Extract column contracts already defined
grep -A 20 "columns:" "$FILE" | grep -E "name:|description:|tests:" | head -50A Pipeline Contract is a YAML file that defines the expected schema at a specific stage boundary:
# contracts/orders-output.yaml
contract:
name: orders-output
version: "1.0"
description: "Expected schema at the output of the orders processing stage"
stage: orders_processor
produces: downstream-billing, downstream-reporting
fields:
order_id:
type: string
nullable: false
pattern: "^ORD-[0-9]{8}$" # Regex pattern check
unique: true
customer_id:
type: string
nullable: false
order_total:
type: float
nullable: false
min: 0.01
max: 999999.99
status:
type: string
nullable: false
enum: [pending, confirmed, shipped, delivered, cancelled]
created_at:
type: datetime
nullable: false
format: "ISO 8601" # 2026-03-18T10:42:00Z
discount_code:
type: string
nullable: true # Explicitly allowed null
metadata:
type: object
nullable: true
required_keys: [source, version] # If not null, these keys must exist
invariants:
- name: "order_total matches items"
description: "order_total must equal sum of line_items[*].price"
severity: error
- name: "shipped orders have tracking"
description: "If status=shipped, tracking_number must not be null"
severity: error
- name: "discount positive"
description: "discount_amount must be 0 or positive"
severity: warning
row_count:
min: 1
max: null # No upper boundFor each field in the contract, check the sample data:
def validate_against_contract(data: list[dict], contract: dict) -> list[dict]:
violations = []
for row_num, row in enumerate(data):
for field_name, rules in contract["fields"].items():
# CHECK: Required field present
if field_name not in row and not rules.get("nullable"):
violations.append({
"row": row_num,
"field": field_name,
"violation": "MISSING_REQUIRED_FIELD",
"expected": f"field '{field_name}' must be present",
"got": "field absent"
})
continue
value = row.get(field_name)
# CHECK: Null constraint
if value is None and not rules.get("nullable"):
violations.append({
"row": row_num,
"field": field_name,
"violation": "UNEXPECTED_NULL",
"expected": "not null",
"got": "null"
})
continue
# CHECK: Type
if value is not None:
expected_type = rules.get("type")
actual_type = type(value).__name__
if not type_matches(actual_type, expected_type):
violations.append({
"row": row_num,
"field": field_name,
"violation": "TYPE_MISMATCH",
"expected": expected_type,
"got": actual_type
})
# CHECK: Enum
if "enum" in rules and value not in rules["enum"] and value is not None:
violations.append({
"row": row_num,
"field": field_name,
"violation": "INVALID_ENUM_VALUE",
"expected": f"one of {rules['enum']}",
"got": value
})
# CHECK: Range
if "min" in rules and isinstance(value, (int, float)) and value < rules["min"]:
violations.append({
"row": row_num,
"field": field_name,
"violation": "BELOW_MINIMUM",
"expected": f">= {rules['min']}",
"got": value
})
# CHECK: Pattern
import re
if "pattern" in rules and value is not None:
if not re.match(rules["pattern"], str(value)):
violations.append({
"row": row_num,
"field": field_name,
"violation": "PATTERN_MISMATCH",
"expected": rules["pattern"],
"got": value
})
return violationsWhen comparing two versions of a pipeline output:
# Extract field lists from both samples
python3 -c "
import json, sys
old = json.load(open('old-output.json'))
new = json.load(open('new-output.json'))
# Normalize to list of records
old_records = old if isinstance(old, list) else [old]
new_records = new if isinstance(new, list) else [new]
old_fields = set(old_records[0].keys()) if old_records else set()
new_fields = set(new_records[0].keys()) if new_records else set()
added = new_fields - old_fields
removed = old_fields - new_fields
common = old_fields & new_fields
print('ADDED:', sorted(added))
print('REMOVED:', sorted(removed))
# Check type changes on common fields
for field in sorted(common):
old_type = type(old_records[0].get(field)).__name__
new_type = type(new_records[0].get(field)).__name__
if old_type != new_type:
print(f'TYPE CHANGED: {field}: {old_type} -> {new_type}')
# Check nullable change
old_null = any(r.get(field) is None for r in old_records)
new_null = any(r.get(field) is None for r in new_records)
if not old_null and new_null:
print(f'BECAME NULLABLE: {field}')
if old_null and not new_null:
print(f'NOW NON-NULL: {field} (stricter)')
"## Pipeline Contract Report
Stage: orders_processor | Contract: contracts/orders-output.yaml
Sample: data/orders-2026-03-18.json (1,247 rows)
### Summary
| Category | Count | Severity |
|----------|-------|----------|
| 🔴 Type mismatch | 3 | Error — downstream will crash |
| 🔴 Unexpected null in required field | 8 | Error — violates contract |
| 🟠 Invalid enum value | 12 | Error — invalid state |
| 🟡 Pattern mismatch | 2 | Warning — format inconsistency |
| ✅ Fields passing all checks | 14 / 18 | — |
Contract status: **BROKEN** — fix before promoting to next stage
---
### 🔴 ERRORS — Pipeline Cannot Proceed Safely
**TYPE MISMATCH: `order_total` (rows 42, 118, 891)**
- Contract: `float`
- Got: `string` (`"49.99"`, `"120.00"`, `"7.50"`)
- Root cause: upstream CSV export is wrapping numbers in quotes
- Fix: Add `df['order_total'] = pd.to_numeric(df['order_total'])` before output
- Impact: Downstream billing service expects float — will throw TypeError on those 3 rows
**UNEXPECTED NULL: `customer_id` (8 rows)**
- Row indices: 15, 77, 203, 344, 502, 601, 788, 934
- Contract: `nullable: false`
- Got: `null`
- Root cause: Guest checkout orders — customer_id not assigned for non-registered users
- Options:
1. Change contract to `nullable: true` if guest checkout is intentional
2. Assign a synthetic `guest_XXXX` ID in the upstream transformer
3. Filter out guest orders before this pipeline stage
**INVALID ENUM VALUE: `status` field (12 rows)**
- Values found: `"processing"` (8 rows), `"refunded"` (4 rows)
- Contract enum: `[pending, confirmed, shipped, delivered, cancelled]`
- Root cause: New statuses added to order system without updating pipeline contract
- Fix: Update contract to add `processing` and `refunded`, or map them to existing statuses in transformer
---
### 🟡 WARNINGS
**PATTERN MISMATCH: `order_id` (2 rows)**
- Contract pattern: `^ORD-[0-9]{8}$`
- Got: `"ORD-123"` (row 88), `"ORD-9999-X"` (row 445)
- Likely test/legacy records — filter before production pipeline
---
### Drift Report (vs previous run 2026-03-17)
| Change | Field | Impact |
|--------|-------|--------|
| ➕ NEW FIELD | `refund_amount` | New field — add to contract |
| 🔄 TYPE CHANGED | `order_total` string → string (was float) | Breaking — see error above |
| 🔄 BECAME NULLABLE | `discount_code` | Was non-null, now null allowed — update contract or fix upstream |
| ➖ REMOVED FIELD | `legacy_channel` | Was in yesterday's output, missing today — check if intentional |
---
### Generated Contract (from this sample)
Based on the actual data, here is the inferred contract to use as a starting point:
```yaml
contract:
name: orders-output
version: "1.0"
stage: orders_processor
fields:
order_id:
type: string
nullable: false
pattern: "^ORD-[0-9]{8}$"
customer_id:
type: string
nullable: true # 8 nulls observed — confirm intent
order_total:
type: float
nullable: false
min: 0.01
status:
type: string
nullable: false
enum: [pending, confirmed, shipped, delivered, cancelled, processing, refunded]
created_at:
type: string # datetime — add format: ISO8601 after confirming format
nullable: false
discount_code:
type: string
nullable: true
refund_amount:
type: float
nullable: true # New field — confirm semantics1. Fix order_total string → float conversion in transformer (3 rows, crash risk)
2. Decide: guest checkout nulls → contract update or upstream fix (8 rows, silent corruption)
3. Add 'processing' and 'refunded' to status enum (12 rows, data loss risk)
4. Investigate legacy_channel removal (breaking change for downstream consumers?)
5. Update contract: add refund_amount fieldIf using dbt, add these tests to models/schema.yml:
models:
- name: orders_output
columns:
- name: order_id
tests:
- not_null
- unique
- name: customer_id
tests:
- not_null # Remove if guest checkout is valid
- name: order_total
tests:
- not_null
- name: status
tests:
- accepted_values:
values: ['pending', 'confirmed', 'shipped', 'delivered', 'cancelled']
---
## Quick Mode
Fast one-line summary for CI/CD checks:
Pipeline Contract: orders_processor → BROKEN 🔴 3 errors (type mismatch: order_total, unexpected nulls: customer_id, invalid enum: status) 🟡 2 warnings (pattern mismatch: order_id) 📈 1 new field (refund_amount) not in contract
Promote to next stage? NO — fix 3 errors first. /pipeline-contract --validate for full report with row numbers and fix instructions
---
## CI/CD Integration
Use in automated pipelines to gate stage promotion:
```bash
# In a CI step after each pipeline stage runs:
# 1. Capture the output sample
head -n 100 pipeline/stage-2-output.json > /tmp/sample.json
# 2. Ask Claude to validate
# /pipeline-contract --validate /tmp/sample.json --contract contracts/stage-2.yaml
# 3. Exit 1 if contract is BROKEN to fail the CI check
# Claude will output: CONTRACT_STATUS=BROKEN or CONTRACT_STATUS=PASSING| Tool | Approach | When to use |
|---|---|---|
| Great Expectations | Python library, full test suite | Production pipelines with engineering team |
| dbt tests | YAML tests in dbt project | dbt-specific models only |
| Soda Core | Managed service, YAML scans | Teams with budget for managed data quality |
| This skill | Agent-native, zero config | One-off audits, local dev, design-time contract authoring, cross-team communication |
This skill fills the gap before you invest in a full data quality platform: understand your data's shape, write the contract, validate it locally. When you're ready to automate at scale, the contract YAML you generate here can be translated directly to Great Expectations or dbt tests.
The classic pipeline failure mode:
Stage A outputs: { "price": "12.99" } ← string
Stage B expects: { "price": 12.99 } ← float
Stage B runs. No error thrown.
Aggregation: SUM("12.99" + "8.50") = "12.998.50" (string concat)
Dashboard shows: Revenue = $1.3M (should be $0.21M)
Discovery: 3 weeks later, in a board meeting.A contract at the Stage A → Stage B boundary would have caught this in seconds.
© LeoYeAI, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/phy-pipeline-contract-enforcer of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Phy Pipeline Contract Enforcer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Phy Pipeline Contract Enforcer this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| Transforming Dataancoleman/ai-design-components | 525 | — | ~3k | Automated safety check: Pass | MIT | |
| CSV Data Summarizercoffeefuelbump/csv-data-summarizer-claude-skill | 468 | 2 repos | ~1.4k | Automated safety check: Pass | None | |
| Verified Data Analysis with pandaspipeshub-ai/pipeshub-ai | 3.8k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Data Quality Frameworkswshobson/agents | 40k | 11 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Senior Data Engineerbenchflow-ai/skillsbench | 1.8k | — | ~5.9k | Automated safety check: Pass | MIT |
ancoleman/ai-design-components
Transform raw data into analytical assets using ETL/ELT patterns, SQL (dbt), Python (pandas/polars/PySpark), and orchestration (Airflow).
coffeefuelbump/csv-data-summarizer-claude-skill
Analyzes CSV files, generates summary stats, and plots quick visualizations using Python and pandas.
pipeshub-ai/pipeshub-ai
Loads, cleans, aggregates and joins tabular data with pandas under a verification rule: every number reported must be one that the code actually printed.
wshobson/agents
Sets up data quality checks with Great Expectations, dbt tests and data contracts, with checkpoints and pass-fail reports for pipelines.
benchflow-ai/skillsbench
World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure.
davila7/claude-code-templates
Processes tabular datasets too large for RAM with Vaex: lazy DataFrames, fast aggregations, big-data plots and ML pipelines over CSV, HDF5, Arrow and Parquet.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Works with
Categories
Data pipeline contract enforcer. An agent skill from LeoYeAI/openclaw-master-skills. Phy Pipeline Contract Enforcer is an agent skill from LeoYeAI/openclaw-master-skills. Data pipeline contract enforcer.
Phy Pipeline Contract Enforcer fits situations like: pipeline contract; validate pipeline output; pipeline schema mismatch; contract enforcement.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a claude-code`. Or copy the skill folder (skills/phy-pipeline-contract-enforcer in LeoYeAI/openclaw-master-skills) into .claude/skills/phy-pipeline-contract-enforcer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a codex`. Or copy the skill folder (skills/phy-pipeline-contract-enforcer in LeoYeAI/openclaw-master-skills) into .agents/skills/phy-pipeline-contract-enforcer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill phy-pipeline-contract-enforcer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/phy-pipeline-contract-enforcer, .gemini/skills/phy-pipeline-contract-enforcer, .github/skills/phy-pipeline-contract-enforcer and .opencode/skills/phy-pipeline-contract-enforcer in your project.
Going by SKILL.md and its folder, Phy Pipeline Contract Enforcer needs the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Phy Pipeline Contract Enforcer is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Phy Pipeline Contract Enforcer: Transforming Data (ancoleman/ai-design-components, 525 stars), CSV Data Summarizer (coffeefuelbump/csv-data-summarizer-claude-skill, 468 stars), Verified Data Analysis with pandas (pipeshub-ai/pipeshub-ai, 3.8k stars) and Data Quality Frameworks (wshobson/agents, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.