Skills jq-json-processor
Process, filter, and transform JSON data using jq - the lightweight and flexible command-line JSON processor.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/arnarsson/jq-json-processor" ~/.claude/skills/openclaw-skills-jq-json-processor && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/arnarsson/jq-json-processor" ~/.openclaw/skills/openclaw-skills-jq-json-processor && rm -rf "$T"
manifest:
skills/arnarsson/jq-json-processor/SKILL.mdsource content
jq JSON Processor
Process, filter, and transform JSON data with jq.
Quick Examples
Basic filtering
# Extract a field echo '{"name":"Alice","age":30}' | jq '.name' # Output: "Alice" # Multiple fields echo '{"name":"Alice","age":30}' | jq '{name: .name, age: .age}' # Array indexing echo '[1,2,3,4,5]' | jq '.[2]' # Output: 3
Working with arrays
# Map over array echo '[{"name":"Alice"},{"name":"Bob"}]' | jq '.[].name' # Output: "Alice" "Bob" # Filter array echo '[1,2,3,4,5]' | jq 'map(select(. > 2))' # Output: [3,4,5] # Length echo '[1,2,3]' | jq 'length' # Output: 3
Common operations
# Pretty print JSON cat file.json | jq '.' # Compact output cat file.json | jq -c '.' # Raw output (no quotes) echo '{"name":"Alice"}' | jq -r '.name' # Output: Alice # Sort keys echo '{"z":1,"a":2}' | jq -S '.'
Advanced filtering
# Select with conditions jq '[.[] | select(.age > 25)]' people.json # Group by jq 'group_by(.category)' items.json # Reduce echo '[1,2,3,4,5]' | jq 'reduce .[] as $item (0; . + $item)' # Output: 15
Working with files
# Read from file jq '.users[0].name' users.json # Multiple files jq -s '.[0] * .[1]' file1.json file2.json # Modify and save jq '.version = "2.0"' package.json > package.json.tmp && mv package.json.tmp package.json
Common Use Cases
Extract specific fields from API response:
curl -s https://api.github.com/users/octocat | jq '{name: .name, repos: .public_repos, followers: .followers}'
Convert CSV-like data:
jq -r '.[] | [.name, .email, .age] | @csv' users.json
Debug API responses:
curl -s https://api.example.com/data | jq '.'
Tips
- Use
for raw string output (removes quotes)-r - Use
for compact output (single line)-c - Use
to sort object keys-S - Use
to pass variables--arg name value - Pipe multiple jq operations:
jq '.a' | jq '.b'
Documentation
Full manual: https://jqlang.github.io/jq/manual/ Interactive tutorial: https://jqplay.org/