data-pipeline-quality — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited data-pipeline-quality (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Run tests in this order. Cheapest and fastest first:
| Layer | What It Catches | Examples |
|---|---|---|
| Schema tests (run first) | Structural failures | Column types, not-null, uniqueness, accepted values |
| Business rule tests | Logic errors | Cross-field validation, referential integrity, range checks |
| Integration tests (run last) | System-level drift | Cross-system reconciliation, end-to-end row counts |
Schema tests are cheap. Run them on every pipeline execution. Business rule tests are mid-tier — run them on staging and production. Integration tests are expensive — run them on a schedule (daily or pre-release).
Generic tests for reusable checks. Apply across models:
models:
- name: fct_encounters
columns:
- name: encounter_id
tests: [not_null, unique]
- name: encounter_type
tests:
- accepted_values:
values: ['inpatient', 'outpatient', 'emergency', 'observation']
- name: patient_id
tests:
- relationships:
to: ref('dim_patient')
field: patient_idCustom generic test for row count tolerance:
{% test row_count_within_tolerance(model, min_count, max_count) %}
select count(*) as row_count
from {{ model }}
having count(*) < {{ min_count }} or count(*) > {{ max_count }}
{% endtest %}Singular tests for business logic specific to one model. Use singular tests when the logic doesn't generalize.
A data contract is a product spec for your data. It defines what consumers can depend on.
contract:
name: fct_encounters
version: 2
owner: data-platform-team
sla:
freshness: "< 4 hours from source update"
completeness: ">= 99.5% of expected rows"
accuracy: ">= 99.9% match to source of record"
schema:
encounter_id: {type: bigint, nullable: false, unique: true}
patient_id: {type: bigint, nullable: false}
encounter_date: {type: date, nullable: false}Producer responsibilities: Meet the SLA, notify consumers before breaking changes, version the schema.
Consumer expectations: Query only contracted fields, respect the grain, report quality issues.
Wire quality gates into pipeline stages. When a check fails, block the pipeline and alert.
Cross-reference data-quality-assessment for the 4-stage quality model (detect → assess → respond → prevent).
CRITICAL: Never auto-heal data quality issues in production. Alert, block, investigate. Auto-fixes mask root causes and erode trust faster than stale data.
Track quality over time, not just point-in-time pass/fail:
For quality scoring methodology (the 5-dimension rubric and maturity model), see data-quality-assessment. This skill covers how to automate those checks in your pipeline.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.