# CSV Summary

> Use when the user hands over a CSV or spreadsheet export and wants to know what is in it — column types, missing values, ranges, and the most common values.

- Skill: `cuga-project/csv-summary` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add cuga-project/csv-summary`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cuga-project/csv-summary/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: cuga-project (https://skillmd.com/u/cuga-project)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cuga-project/csv-summary

---


# Summarize a CSV

Profiles a CSV so you can describe it before analysing it: per column, how many
rows are filled, whether the values are numeric or text, and either min/max/mean
or the most frequent values.

Standard library only — nothing to install.

## Steps

1. Confirm the file path with the user if you are not certain of it.
2. Run the companion script:

   ```bash
   python /workspace/skills/csv-summary/scripts/summarize.py <path-to-csv>
   ```

   Useful flags: `--delimiter ';'` for European exports, `--json` when you want to
   post-process the result, `--max-rows N` to profile only the first N rows of a
   very large file.

3. Report the findings in prose, not as a dump of the script output. Lead with
   what the file *is* (one row per what?), then call out anything that will matter
   for the next step: columns with missing values, a column that looks numeric but
   is stored as text, a categorical column with only a handful of distinct values.

4. If the script reports a column as `text` that the user expects to be numeric,
   say so explicitly — it usually means stray units, thousands separators, or a
   placeholder like `N/A`.

## Notes

- The script never modifies the input file.
- A column counts as numeric only when *every* non-empty value parses as a number,
  so a single `N/A` flips a column to text. That is deliberate: it surfaces dirty
  data instead of silently ignoring it.

