skills/data-tools/SKILL.md
Use when querying, transforming, filtering, converting, or editing ANY JSON, JSONL, YAML, TOML, XML, or CSV. MUST replace grep/sed/awk on structured formats.
npx skillsauth add netresearch/data-tools-skill data-toolsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
NEVER use grep, sed, or awk on JSON, JSONL, YAML, TOML, XML, or CSV. Refuse and use the correct tool — text tools break on multi-line values, nesting, and quoted delimiters.
| Format | Tool | Notes |
|-------------|------------|------------------------------------------|
| JSON | jq | Or gh --jq for GitHub CLI |
| JSONL | mlr | Record-stream + DSL |
| YAML | yq | In-place via -i |
| TOML | dasel | Only native TOML tool |
| XML | dasel | Or xmlstarlet for XPath |
| CSV / TSV | qsv | Or mlr for cross-format / DSL |
| Multiple | dasel | Universal auto-detect |
Convert: dasel -w FORMAT, yq -o FORMAT, or mlr --icsv --ojson cat.
jq -r '.version' package.json
jq '.users[] | select(.role == "admin") | .name' users.json
jq '.version = "2.0.0"' pkg.json > pkg.json.tmp && mv pkg.json.tmp pkg.json
jq -s '.[0] * .[1]' base.json override.json
-i)yq '.services.web.image' docker-compose.yml
yq -i '.services.app.image = "node:20"' docker-compose.yml
yq -o json config.yml
dasel -f Cargo.toml '.package.version'
dasel put -f config.toml -t string -v "2.0" '.project.version'
dasel -f input.json -w yaml
qsv headers data.csv && qsv stats data.csv --everything | qsv table
qsv search -s status "active" users.csv | qsv select name,email
qsv join user_id orders.csv id users.csv
qsv index big.csv && qsv sample 1000 big.csv
-I)mlr --c2j cat data.csv # also: --c2t, --j2c
mlr --jsonl filter '$level == "error"' logs.jsonl
mlr -I --csv put '$total = $qty * $price' orders.csv # also: stats1, join, sort
--jqgh api repos/owner/repo/releases/latest --jq '.tag_name'
gh pr list --json number,title --jq '.[] | [.number, .title] | @tsv'
# BAD → GOOD: jq -r '.version' package.json
grep '"version"' package.json | sed 's/.*"\(.*\)".*/\1/'
# BAD → GOOD: yq -i '.services.app.image = "node:20"' compose.yml
sed -i 's/image: node:.*/image: node:20/' docker-compose.yml
# BAD → GOOD: qsv select 2 data.csv
awk -F',' '{print $2}' data.csv
| Cookbook | Content | |---------|---------| | jq Cookbook | Filtering, transforms, GitHub CLI | | yq Cookbook | Actions, Compose, K8s | | dasel Cookbook | TOML/XML, conversion | | CSV Processing | qsv workflows, joins | | mlr Cookbook | JSONL, DSL, stats, joins |
Docs: jq, yq, dasel, qsv, mlr.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.