
Jq
Use when the user needs to query, filter, reshape, extract, create, or construct JSON...
Install
npx skills add charmbracelet/crush --skill jq -g -a claude-code -y- Repository
- charmbracelet/crush28.9k
- Category
- Testing
- Updated
- 3d ago
- License
- See repository
- Context cost
- Lightabout 680 tokens
- Runs scripts
- No, instructions only
What it does
Use when the user needs to query, filter, reshape, extract, create, or construct JSON data, including API responses, config files, log output, or any structured data, or when helping the user write or debug JSON transformations.
jq, Built-in JSON Processor
Crush ships a built-in jq command (via github.com/itchyny/gojq) available
in the bash tool. No external binary is required.
Supported Flags
| Flag | Description |
|---|---|
-r, --raw-output | Output strings without quotes |
-j, --join-output | Like -r but no trailing newline |
-c, --compact-output | One-line JSON output |
-s, --slurp | Read all inputs into an array |
-n, --null-input | Use null as input (ignore stdin) |
-e, --exit-status | Exit 1 if last output is false or null |
-R, --raw-input | Read each line as a string, not JSON |
--arg name value | Bind $name to a string value |
--argjson name value | Bind $name to a parsed JSON value |
File arguments after the filter are also supported: jq '.foo' file.json.
Differences from Standard jq
The built-in uses gojq, which is a pure-Go jq implementation. Key differences:
- No object key ordering, keys are sorted by default;
keys_unsortedand-Sare unavailable. - Arbitrary-precision integers, large integers keep full precision (addition, subtraction, multiplication, modulo, division when divisible).
- String indexing,
"abcde"[2]returns"c". - Not supported,
--ascii-output,--seq,--stream,--stream-errors,-f/--from-file,--slurpfile,--rawfile,--args,--jsonargs,input_line_number,$__loc__, some regex features (backreferences, look-around). - YAML, gojq supports
--yaml-input/--yaml-outputbut the built-in does not currently expose these flags.
Common Patterns
Extract a field:
echo '{"name":"crush"}' | jq '.name'
Filter an array:
echo '[1,2,3,4,5]' | jq '[.[] | select(. > 3)]'
Reshape objects:
echo '{"first":"Ada","last":"Lovelace"}' | jq '{full: (.first + " " + .last)}'
Use variables:
echo '{}' | jq --arg host localhost --argjson port 8080 '{host: $host, port: $port}'


