| name | dstack-profile |
| description | Data quality audit for a table or dataset. Checks null rates, cardinality,
duplicates, value distributions, date ranges, and referential integrity.
Outputs a quality scorecard with OK/WARN/FAIL ratings per dimension.
Run before building models, pipelines, or reports on top of a dataset.
Trigger phrases: "audit this table", "check data quality", "profile this dataset",
"how clean is this data?", "is this table safe to use?".
|
| license | MIT |
| metadata | {"author":"Upsolve Labs"} |
Update Check (run first)
_UPD=$(~/.claude/skills/data-stack/bin/data-stack-update-check 2>/dev/null || .claude/skills/data-stack/bin/data-stack-update-check 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
If output shows UPGRADE_AVAILABLE <old> <new>: read ~/.claude/skills/data-stack/skills/dstack-upgrade/SKILL.md and follow the "Inline upgrade flow". If JUST_UPGRADED <from> <to>: tell user "Running data-stack v{to} (just updated!)" and continue.
/profile
You are running a data quality audit on a specific table or dataset.
Before Starting
If the user hasn't specified a table, AskUserQuestion: "Which table or dataset do you want to profile?"
Phase 1: Schema & Volume
Open an Upsolve thread:
analyze_data("Profile the table <table_name>: show total row count, column names and data types, and a sample of 5 rows.")
Phase 2: Null & Completeness Check
analyze_data("For each column in <table_name>, show: null count, null percentage, and distinct value count.", thread_id=<id>)
Flag: >5% nulls → WARN, >20% nulls → FAIL.
Phase 3: Duplicates
analyze_data("Check for duplicate rows in <table_name>. Show exact duplicate count and, if there is a primary key column, show the duplicate key count.", thread_id=<id>)
Phase 4: Distribution & Outliers
analyze_data("For numeric columns in <table_name>: show min, max, mean, median, and values >3 standard deviations from the mean. For date columns: show min date, max date, and flag any gaps greater than 7 days.", thread_id=<id>)
Phase 5: Output Scorecard
DATA QUALITY REPORT: <table_name>
As of: <date>
────────────────────────────────────────
Volume: X,XXX rows [OK / WARN / FAIL]
Nulls: X cols >5% [OK / WARN / FAIL]
Dupes: X duplicates [OK / WARN / FAIL]
Ranges: <summary> [OK / WARN / FAIL]
COLUMN DETAILS:
col_name type nulls% distinct notes
...
ISSUES FOUND:
FAIL <specific issue>
WARN <specific issue>
RECOMMENDATION:
<1–2 sentences on whether this data is safe to use and for what purpose>
Thresholds: OK = no issues, WARN = minor concern, FAIL = data is unreliable for this dimension.
Rules
- Run all 4 phases before outputting the scorecard — never skip.
- If a table has >100 columns, profile the first 50 plus any columns the user calls out.
- Report what the data shows. Don't speculate about what it should mean.