Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Audit a dataset for the quality problems that silently break analysis — missingness, duplicates, outliers, type and range errors, consistency, and freshness — and produce a prioritised fix list. Use when asked to assess data quality, audit a dataset, check data before analysis, or explain why numbers look off. Produces a structured quality report across the standard dimensions, the specific issues found (with the checks to run), severity, and how to fix each.
.claude/skills/mohitagw15856-data-quality-audit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -24% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -41% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 44% | 0% |
Bad analysis usually starts with bad data nobody checked. This skill audits a dataset across the dimensions that matter, names the specific issues (and the exact check to confirm each), and prioritises fixes by how much they distort the answer.
Given a dataset description, sample rows, or a schema, produce the full audit anyway — infer the likely issues for that kind of data and give the concrete check (SQL/pandas-style) to verify each. If given actual data, ground the findings in it. Never just say "check for errors"; specify them.
Ask for (if not already provided):
Overall read (🟢 usable / 🟡 fix-first / 🔴 don't trust yet) and the one issue most likely to mislead.
| Dimension | Check | Finding | Severity | |---|---|---|---| | Completeness | nulls / missing per key column | | | | Uniqueness | duplicate rows / keys | | | | Validity | type, format, range, allowed values | | | | Consistency | cross-field & cross-table agreement | | | | Accuracy | sanity vs known totals / reality | | | | Timeliness | freshness, gaps in the time series | | |
For each real issue: what it is, the check to confirm it (a concrete query/snippet), why it matters for the intended use, and severity.
Ordered by impact-on-the-decision: what to fix first, how (drop / impute / dedupe / cast / clamp / re-source), and what to flag rather than fix.
2–3 automated checks to add so these issues get caught next time (e.g. a not-null assertion, a row-count delta alarm, an allowed-values test).
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 31,287 | 34,555 | +10% | 1 | 1 | 0% | 5,567 | 4,222 | -24% | 0 | 0 | — |
case-02 | fail→pass | 32,369 | 15,717 | -51% | 1 | 1 | 0% | 6,188 | 3,636 | -41% | 0 | 0 | — |
case-03 | fail→pass | 22,554 | 21,809 | -3% | 1 | 1 | 0% | 4,470 | 4,581 | +2% | 0 | 0 | — |
case-04 | pass→pass | 6,910 | 10,901 | +58% | 1 | 1 | 0% | 1,435 | 2,894 | +102% | 0 | 0 | — |
case-05 | pass→fail | 10,074 | 22,743 | +126% | 1 | 1 | 0% | 2,095 | 3,697 | +76% | 0 | 0 | — |
case-06 | pass→fail | 20,712 | 20,364 | -2% | 1 | 1 | 0% | 3,976 | 4,291 | +8% | 0 | 0 | — |
case-07 | pass→pass | 20,803 | 16,834 | -19% | 1 | 1 | 0% | 3,896 | 3,812 | -2% | 0 | 0 | — |
case-08 | fail→pass | 13,522 | 14,321 | +6% | 1 | 1 | 0% | 2,414 | 3,236 | +34% | 0 | 0 | — |
case-09 | fail→pass | 11,353 | 12,206 | +8% | 1 | 1 | 0% | 2,158 | 3,101 | +44% | 0 | 0 | — |
case-10 | pass→pass | 19,770 | 18,653 | -6% | 1 | 1 | 0% | 4,401 | 4,326 | -2% | 0 | 0 | — |
case-11 | pass→pass | 20,725 | 21,818 | +5% | 1 | 1 | 0% | 3,742 | 4,691 | +25% | 0 | 0 | — |
case-12 | pass→pass | 18,114 | 18,314 | +1% | 1 | 1 | 0% | 3,749 | 3,929 | +5% | 0 | 0 | — |
case-13 | fail→pass | 19,103 | 17,453 | -9% | 1 | 1 | 0% | 3,291 | 4,085 | +24% | 0 | 0 | — |
case-14 | pass→pass | 15,922 | 18,241 | +15% | 1 | 1 | 0% | 3,129 | 4,222 | +35% | 0 | 0 | — |
case-15 | pass→pass | 16,223 | 15,614 | -4% | 1 | 1 | 0% | 3,066 | 3,602 | +17% | 0 | 0 | — |
case-16 | pass→pass | 22,472 | 20,801 | -7% | 1 | 1 | 0% | 4,202 | 4,717 | +12% | 0 | 0 | — |
case-17 | pass→pass | 21,492 | 17,959 | -16% | 1 | 1 | 0% | 4,407 | 3,816 | -13% | 0 | 0 | — |
case-18 | pass→pass | 24,067 | 16,052 | -33% | 1 | 1 | 0% | 4,015 | 3,253 | -19% | 0 | 0 | — |
case-19 | pass→pass | 23,311 | 20,735 | -11% | 1 | 1 | 0% | 3,449 | 3,867 | +12% | 0 | 0 | — |
case-20 | pass→pass | 16,146 | 19,313 | +20% | 1 | 1 | 0% | 2,516 | 3,959 | +57% | 0 | 0 | — |
case-21 | pass→pass | 20,413 | 18,049 | -12% | 1 | 1 | 0% | 3,232 | 3,923 | +21% | 0 | 0 | — |
case-22 | pass→pass | 18,712 | 15,939 | -15% | 1 | 1 | 0% | 2,987 | 3,527 | +18% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +18 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.