data-processing
Skill1 starsChanged 7 months agoMITView on GitHub
Use when working with structured data files (CSV, JSON, YAML, TOML, Parquet) — querying, transforming, filtering, aggregating, or converting between formats
1 other project uses a version of this.
Adopted by
Most recently taken up by
- z-waterking/claude-skillstheir own version, first seen Apr 4, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- z-waterking/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- api-testingSkill
- ci-automationSkill
- python-toolingSkill
- security-scanningSkill
- web-crawlingSkill
- web-researchSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 145
Prefer DuckDB over Python/pandas for ad-hoc SQL queries on files — single command, no script, handles large files
- Very specific: line 146
Prefer jq over Python json module for one-off JSON transforms — single pipeline vs.
- Very specific: line 147
Prefer xsv over awk/cut for CSV operations — correct CSV parsing, handles quoted fields and escapes
- Very specific: line 148
Prefer miller over awk for format-aware record transformations — understands CSV/JSON headers natively
- Distinctive: line 149
Prefer yq over custom parsers for config file reads — handles YAML, TOML, XML with consistent syntax
≈ “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.
Files
Data Processing
When to Use
- Querying, filtering, or transforming JSON files
- Reading or converting YAML, TOML, or XML config files
- Analyzing, aggregating, or joining CSV/TSV/Parquet files
- Running SQL queries against local data files without a database server
- Converting between data formats (JSON to YAML, CSV to JSON, etc.)
- Exploring deeply nested JSON structures
Tools
| Tool | Purpose | Structured output |
| jq | Query and transform JSON | Native JSON |
| yq | Query and transform YAML, TOML, XML | -o json for JSON output |
| gron | Flatten JSON into greppable path.to.key = value lines | --ungron to reverse back to JSON |
| miller (mlr) | Transform CSV/JSON/TSV records with awk-like verbs | --json for JSON output |
| xsv | Fast CSV slicing, searching, joining, statistics | CSV native (pipe to xsv table for display) |
| DuckDB | SQL queries on CSV, JSON, Parquet files | -json flag for JSON output |
Patterns
JSON: Filter array elements by field value
jq '.items[] | select(.status == "active")' data.jsonJSON: Extract specific fields from array
jq '[.users[] | {name: .name, email: .email}]' data.jsonJSON: Count items grouped by field
jq '[.events[] | .type] | group_by(.) | map({type: .[0], count: length})' data.jsonYAML: Read a nested value
yq '.spec.containers[0].image' deployment.yamlYAML: Convert entire file to JSON
yq -o json config.yamlTOML: Read a value
yq -p toml '.database.host' config.tomlJSON: Explore unknown structure by grepping paths
gron data.json | grep -i "error"CSV: Column statistics (min, max, mean, stddev)
xsv stats data.csv | xsv tableCSV: Search rows matching a pattern in a column
xsv search -s status "active" data.csvCSV: Select specific columns
xsv select name,email,created_at users.csvCSV: Sort by column
xsv sort -s revenue -R sales.csvSQL: Query a CSV file
duckdb -c "SELECT department, COUNT(*) as cnt, AVG(salary) as avg_sal FROM 'employees.csv' GROUP BY department ORDER BY avg_sal DESC"SQL: Query a JSON file
duckdb -c "SELECT * FROM read_json_auto('events.json') WHERE type = 'error' LIMIT 20"SQL: Query Parquet files
duckdb -c "SELECT * FROM 'data/*.parquet' WHERE created_at > '2026-01-01'"CSV/JSON: Transform records with miller
mlr --csv filter '$revenue > 1000' then sort-by -nr revenue sales.csvFormat conversion: CSV to JSON
mlr --icsv --ojson cat data.csvPipelines
YAML config → JSON → SQL query
yq -o json config.yaml | duckdb -c "SELECT key, value FROM read_json_auto('/dev/stdin') WHERE env = 'production'"Each stage: yq converts YAML to JSON, DuckDB runs SQL on the JSON stream.
Grep nested JSON paths → reconstruct matching subset
gron large.json | grep "\.errors\[" | gron --ungronEach stage: gron flattens JSON to paths, grep filters, ungron reconstructs valid JSON from matches.
CSV filter → aggregate with SQL
xsv search -s region "EU" sales.csv | duckdb -c "SELECT product, SUM(revenue) as total FROM read_csv_auto('/dev/stdin') GROUP BY product ORDER BY total DESC"Each stage: xsv filters rows by region, DuckDB aggregates the filtered stream.
Join two CSV files with SQL
duckdb -c "SELECT u.name, u.email, o.total, o.date FROM 'users.csv' u JOIN 'orders.csv' o ON u.id = o.user_id ORDER BY o.date DESC"Multi-format pipeline: JSON → CSV → stats
jq -r '.records[] | [.name, .score] | @csv' data.json | xsv statsEach stage: jq extracts fields to CSV format, xsv computes statistics.
Prefer Over
- Prefer DuckDB over Python/pandas for ad-hoc SQL queries on files — single command, no script, handles large files
- Prefer jq over Python
jsonmodule for one-off JSON transforms — single pipeline vs. multi-line script - Prefer xsv over
awk/cutfor CSV operations — correct CSV parsing, handles quoted fields and escapes - Prefer miller over
awkfor format-aware record transformations — understands CSV/JSON headers natively - Prefer yq over custom parsers for config file reads — handles YAML, TOML, XML with consistent syntax
Do NOT Use When
- Data is already in a running database — query the database directly
- File is under 10 lines — just use the Read tool and process in-context
- Task requires complex multi-step logic with conditionals — write a Python script instead
- JSON is simple enough to read by eye — use the Read tool, don't over-engineer
- Working with binary or non-structured data formats
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
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.

