From CLI Toolkit
Make JSON greppable by flattening it into discrete `path = value;` assignments, then reverse the transform with `gron -u`. Use this skill whenever JSON is too nested to query by eye, when you want to grep/rg for a key or value and see its full path, when jq's path syntax is unknown or awkward, or when diffing two JSON documents line-by-line. Pairs with rg (search the flattened lines) and jq (reshape afterwards). Install: winget TomHudson.gron.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cli-tools:gronThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
`gron` turns JSON into flat, line-oriented assignments so every value carries its full path.
gron turns JSON into flat, line-oriented assignments so every value carries its full path.
gron -u (ungron) rebuilds JSON from those lines. This makes rg/grep a viable JSON query
tool when you don't yet know the structure or the jq path.
/jq-json-processor) — you already know the structure and want to reshape, aggregate,
or project fields.A common flow is gron to find the path, then jq to extract it cleanly.
gron data.json # flatten to: json.foo.bar[0] = "x";
cat data.json | gron # from stdin
gron data.json | rg <pattern> # grep flattened lines for a key or value
gron data.json | rg <pattern> | gron -u # rebuild JSON from just the matched lines
curl -s <url> | gron | rg <pattern> # explore an unfamiliar API response
| Flag | Effect |
|---|---|
-u, --ungron | Reverse: reassemble JSON from gron output |
-v, --values | Print only values, not the full assignment |
-s, --stream | Treat input as a stream of one JSON object per line (JSONL) |
--no-sort | Preserve original key order (default sorts keys) |
-m, --monochrome | Disable colour (default when piped) |
Find the path to a value you can see but can't locate:
gron config.json | rg -i "timeout"
# -> json.server.http.timeout_ms = 30000;
Extract a subtree by grepping paths, then rebuild valid JSON:
gron response.json | rg '^json\.data\.users\[\d+\]\.email' | gron -u
Diff two JSON docs semantically (order-independent):
diff <(gron a.json) <(gron b.json)
| head -n N (Bash) / Select-Object -First N
(PowerShell) like any other stream before it reaches context.gron | rg | gron -u) on Windows, run via the Bash tool so
streams pass correctly (PowerShell's | passes objects, not bytes).jq projection over re-running gron for repeated extracts.npx claudepluginhub mdziadowiec/claude-toolkit-plugins --plugin cli-toolsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.