Data

Data Cleaner /data-cleaner

Deduplicate, normalize, and validate messy CSVs and tables.

Version2.0.0
AuthorTablestakes
CategoryData
Installs15,200
Updated2026-08-14
LicenseApache-2.0
$ askill install data-cleaner@2.0.0

About this skill

Data Cleaner is the skill you call before the analysis, not after it embarrasses you. Hand it a messy CSV — inconsistent dates, duplicate rows, 'N/A' in five spellings, phone numbers in seven formats — and get back a clean dataset plus a report of everything it changed.

It profiles first and asks questions later: type inference, uniqueness checks, and anomaly flags come before any mutation, so you see the mess before it's fixed. Every transformation is logged row-by-row, which means the cleaning is auditable — critical when the data feeds a model or a report someone signs.

It chains beautifully: clean with Data Cleaner, then hand the result to SQL Whisperer for analysis without worrying about garbage-in.

Inputs

  • dataset · string
    Path to CSV/TSV/Parquet file.
  • rules · string
    Optional custom cleaning rules in YAML.
  • dry_run · boolean
    Report only, change nothing. Default: false.

Outputs

  • clean_path · string
    Path to the cleaned dataset.
  • change_report · string
    Row-by-row log of transformations.
  • profile · string
    Pre-clean data profile: types, nulls, anomalies.

Permissions

Deny-by-default: the skill can only use what it declares.

fs:readfs:write

Manifest

{
  "spec": "agentskills.io/v1",
  "name": "data-cleaner",
  "version": "2.0.0",
  "description": "Profiles a messy dataset, then deduplicates, normalizes formats, validates types, and returns a clean dataset plus a full report of every change.",
  "inputs": {
    "dataset": {"type": "string", "description": "Path to CSV/TSV/Parquet file.", "required": true},
    "rules": {"type": "string", "description": "Optional custom cleaning rules in YAML.", "required": false},
    "dry_run": {"type": "boolean", "description": "Report only, change nothing. Default: false.", "required": false}
  },
  "outputs": {
    "clean_path": {"type": "string", "description": "Path to the cleaned dataset."},
    "change_report": {"type": "string", "description": "Row-by-row log of transformations."},
    "profile": {"type": "string", "description": "Pre-clean data profile: types, nulls, anomalies."}
  },
  "permissions": ["fs:read", "fs:write"],
  "author": "Tablestakes",
  "category": "Data"
}

Changelog

v2.0.0 · 2026-08-14

New change-report format with row-level diffs. Breaking: profile output schema changed.

v1.9.0 · 2026-06-02

Parquet input support and fuzzy-duplicate detection.

v1.8.3 · 2026-04-19

Fixed date inference on ambiguous DD/MM vs MM/DD formats.