← ClaudeAtlas

data-quality-gatelisted

Validate a dataset at the boundary before anything downstream consumes it - control totals, row counts, duplicate keys, referential integrity, period completeness, null and sign sanity, and drift against the prior run. Blocks the pipeline on failure rather than passing bad data forward. Use on every extract, load, or handoff between systems. Trigger on "data quality", "validate the extract", "check the data", "the numbers look wrong", "bad data", "did the load work", "DQ check", "sanity check the file".
Lukehle/closeloop · ★ 1 · Data & Documents · score 72
Install: claude install-skill Lukehle/closeloop
# Data quality gate A gate that warns is not a gate. **This one blocks.** The economics are one-sided: catching a bad extract at the boundary costs minutes; catching it after it has flowed into a reconciliation, a metric, a board deck, and an external commitment costs days and a credibility hit. Every check below runs *before* anything downstream reads the data. Load `tie-out` — the gate emits the same PASS/FAIL discipline, with thresholds declared in advance. --- ## The seven checks Run in this order. Order matters: a failed row count makes every later check meaningless, so stop at the first `BLOCK`. ### 1. Row count within expected bounds ``` expected: 14,000 - 16,000 (prior 3 periods: 14,882 / 15,104 / 14,655) actual: 14,882 PASS ``` Derive bounds from history, not from a guess. **A row count of zero is always a BLOCK**, never an empty period — an empty result is far more often a broken query, a permissions failure, or a wrong date filter than a genuinely quiet month. ### 2. Control total agrees to source ``` source (NetSuite AR aging report): 12,441,520.11 extract sum(amount_usd): 12,441,520.11 PASS (exact) ``` This is the check that matters most, because it catches the failures the others cannot see — truncation, a fan-out join doubling amounts, a partial load. **Exact match required.** A control total tolerance is not a tolerance, it is a decision to ship unknown differences.