All skills / Data and spreadsheets

CSV Profile and Sanity Check

Give it a CSV. Get a read-only profile of every column, flags and questions for the data's owner. Free, MIT-licensed.

Free, MIT licence, hosted on GitHub. Install the whole free set with npx skills add proskillpacks/skills, or copy this skill's folder.

What you give it

A CSV.

What you get

It runs a small read-only script (Python 3 standard library) and reports rows, columns, each column's type, blanks, distinct values, ranges, duplicates, mixed formats, stray spaces, case variants and outliers, then lists questions to ask the data's owner. Without code execution it profiles a pasted sample and says so.

Before and after

Taken from the skill's README.

Before: Opening a 891-row export and scrolling for a few minutes to see if it looks fine.

After (skill output, from a real test run): Test run on a public 891-row passenger CSV. It reported 19% blank in Age (177 rows) and 77% blank in Cabin, 15 zero fares, 53 high fare outliers, a Ticket column that should be read as text, trailing spaces in names and 2 blank Embarked values, named the two rows, and asked the owner eight questions, such as whether Fare is per person or per ticket. It changed nothing in the file.

See it run

Animated demo of CSV Profile and Sanity Check on a real example: the input goes in and the finished result appears. The still shows the final result.

What it does

Give it a CSV. It runs a small read-only script (Python 3 standard library) and reports rows, columns, each column's type, blanks, distinct values, ranges, duplicates, mixed formats, stray spaces, case variants and outliers, then lists questions to ask the data's owner. Without code execution it profiles a pasted sample and says so.

How it was tested

1 run on a real public CSV (Claude Sonnet) with the script.

Tested on a real example before release. The example is shown in the Before and after section above.

How we test, what we do not do, and which assistants we ran it on.

Limits

  • It reads only. It never edits, sorts or cleans the file.
  • A profile cannot tell you whether values are true or whether rows are missing.
  • Without code execution it works from the sample you paste and says so. Counts cover only that sample.
  • It does not guess what unclear columns mean. It asks.

Works with

Works in ChatGPT or any chatbot: you paste in your details and it writes the result. The chargeback kit also has Word letters you can fill in by hand, with no AI. The profile script needs Python 3 (standard library only). Without code execution it profiles a pasted sample.

For people who use AI assistants

  1. Run npx skills add proskillpacks/skills in your project and pick this skill. Or copy the csv-profile-and-sanity-check folder from GitHub (https://github.com/proskillpacks/skills/tree/main/skills/data/csv-profile-and-sanity-check).
  2. Put the csv-profile-and-sanity-check folder where your assistant looks for skills. The generic path is .agents/skills/ (or npx skills add from a folder). Tool-specific paths:
    • Claude Code: ~/.claude/skills/ (or .claude/skills/ inside one project)
    • OpenAI Codex, Gemini CLI, Cursor and others: .agents/skills/ or the skills folder their docs name
    • claude.ai: zip the skill folder yourself, then Customize, Skills, the plus button, Create skill, Upload a skill (code execution must be on in Settings, Capabilities)
    • ChatGPT or any chatbot: open the skill's prompt.md, paste it into the chat, then paste your own text or link
    • Steps for each tool, with links to its official docs: how to install Agent Skills
  3. Ask for the job in plain words, for example: "Profile this CSV before I use it: [file]. It should contain ...". The skill loads by itself.

Get it

MIT licence. Use it, change it, share it.

Related

Report a problem with this skill (GitHub, or write to kaiventura.founder@gmail.com).