agentleFS
ek0212ek0212/agent-ready-repo-kit/skills/dataset-triage/SKILL.md

dataset-triage

Skill0 starsChanged 4 months agoMITView on GitHub

Run read-only first-pass checks on tabular data before analysis, joins, reports, or modeling. Use when user asks "what is in this dataset", "is this data clean", "what should I check first", or provides an unfamiliar CSV, TSV, Excel sheet, SQL/KQL result, or pandas DataFrame.

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 5 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use for row-and-column data.

    line 11
  2. Distinctive:

    Use existing loader and dependencies.

    line 26
  3. Distinctive:

    If sample lacks enough rows or classes, widen deliberately.

    line 32
  4. Distinctive:

    Run cheap full-table checks when access permits: row count, date span, missingness on critical fields, and key uniqueness.

    line 77
  5. Very specific:

    No pandas: use existing SQL/KQL/file tools and report equivalent checks.

    line 92
  6. Distinctive:

    Use direct simple sentences.

    line 108

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Find mechanical data risks before downstream work. Report evidence. Do not mutate source data.

Scope

Use for row-and-column data. Skip images, free text corpora, audio, and unstructured documents. Triage detects shape, parsing, missingness, duplicates, key, cardinality, range, and format risks. It does not prove domain correctness.

Inputs

  • Source path, query, table, or DataFrame.
  • Expected grain and row meaning, when known.
  • Expected keys, date range, units, and critical fields.
  • Safe sample limits and access constraints.

Human owner confirms business rules, valid ranges, units, and key meaning.

Workflow

Step 1: Acquire Safely

Use existing loader and dependencies. Record source, sheet/query, row filter, sample method, and load errors.

  • File: inspect extension, delimiter, encoding, sheet, header, and totals rows.
  • SQL/KQL: start with bounded recent window when timestamp exists. Avoid full-table pull.
  • In-memory frame: preserve original object; inspect copy when conversion needed.

If sample lacks enough rows or classes, widen deliberately. Never claim sample represents full table without evidence.

Step 2: Pin Structure

Report row count, column count, column names, dtypes, first rows, last rows, and index shape. Flag:

  • Empty dataset.
  • Duplicate or blank column names.
  • Header or totals row parsed as data.
  • Numbers or dates stored as text.
  • Shifted or malformed rows.

Step 3: Run Core Checks

For pandas, adapt this compact baseline:

n = len(df)
if n == 0:
    raise ValueError("dataset has no rows")

missing = df.isna().mean().sort_values(ascending=False)
duplicate_rows = int(df.duplicated().sum())
unique = df.nunique(dropna=False)
constant = unique[unique <= 1].index.tolist()
candidate_keys = [
    c for c in df.columns
    if df[c].notna().all() and df[c].nunique(dropna=False) == n
]

Then inspect:

  • Missingness by column. Highlight fully empty and critical fields.
  • Exact duplicates. Test domain-key duplicates separately when key known.
  • Constant and near-constant columns. Treat 99% dominance as review threshold, not error.
  • Candidate keys. Names such as id, key, or uuid are clues, not proof.
  • Categorical cardinality and top values.
  • Numeric min, max, quantiles, impossible signs, and unit mismatch.
  • IQR outlier candidates. Do not label outliers as bad data without domain evidence.
  • Whitespace, casing, sentinel strings, mixed formats, and numeric text.
  • Date parse success, timezone consistency, gaps, and future dates when relevant.

Step 4: Check Sample Limits

Run cheap full-table checks when access permits: row count, date span, missingness on critical fields, and key uniqueness. Keep heavy scans bounded. State checks omitted due cost or permissions.

Step 5: Report

Group findings:

  • Blocker: breaks grain, join, count, parse, or required field.
  • Cleanup: formatting or low-information issue with known fix.
  • Review: plausible anomaly needing domain owner.
  • Limit: sample, access, parser, or untested assumption.

For each finding, give evidence, downstream effect, and next check. Do not clean data unless user asks in separate step.

Fallbacks

  • No pandas: use existing SQL/KQL/file tools and report equivalent checks.
  • Large source: sample recent window plus cheap aggregate checks.
  • Unknown grain: report candidate grains; do not assert key.
  • Parse failure: stop, preserve error, propose loader change.

Verify

  • Source unchanged.
  • Sample method explicit.
  • Empty data handled.
  • Findings separate evidence from domain judgment.
  • Candidate keys tested, not guessed.
  • Report states omitted checks and limits.

Writing

Use direct simple sentences. Skip rhetorical flourishes. Avoid X-not-Y contrasts, self-answering rhetorical questions, em dashes, alliterative three-part phrases, vague inspirational pivots, unsourced claims, and unverified quotes.

Output

Return compact triage report plus commands or code used. Include blockers, cleanups, reviews, limits, and recommended next checks.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.