mirror of
https://github.com/penpot/penpot.git
synced 2026-05-25 18:03:43 +00:00
Update agent configurations: change commiter mode to all, rename engineer agent to "Penpot Engineer", and remove obsolete testing agent. Add new read-only planner agent for architecture analysis and planning. Add four new skills: bat-cat (syntax-highlighted cat clone), fd-find (fast file finder), jq-json-processor (JSON processor), and ripgrep (fast text search). Add fd-find and bat packages to devenv Dockerfile. Update .gitignore to exclude opencode package-lock and plans directory. Signed-off-by: Andrey Antukh <niwi@niwi.nz>
113 lines
2.4 KiB
Markdown
113 lines
2.4 KiB
Markdown
---
|
|
name: jq-json-processor
|
|
description: Process, filter, and transform JSON data using jq - the lightweight and flexible command-line JSON processor.
|
|
homepage: https://jqlang.github.io/jq/
|
|
metadata: {"clawdbot":{"emoji":"🔍","requires":{"bins":["jq"]},"install":[{"id":"brew","kind":"brew","formula":"jq","bins":["jq"],"label":"Install jq (brew)"},{"id":"apt","kind":"apt","package":"jq","bins":["jq"],"label":"Install jq (apt)"}]}}
|
|
---
|
|
|
|
# jq JSON Processor
|
|
|
|
Process, filter, and transform JSON data with jq.
|
|
|
|
## Quick Examples
|
|
|
|
### Basic filtering
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
curl -s https://api.github.com/users/octocat | jq '{name: .name, repos: .public_repos, followers: .followers}'
|
|
```
|
|
|
|
**Convert CSV-like data:**
|
|
```bash
|
|
jq -r '.[] | [.name, .email, .age] | @csv' users.json
|
|
```
|
|
|
|
**Debug API responses:**
|
|
```bash
|
|
curl -s https://api.example.com/data | jq '.'
|
|
```
|
|
|
|
## Tips
|
|
|
|
- Use `-r` for raw string output (removes quotes)
|
|
- Use `-c` for compact output (single line)
|
|
- Use `-S` to sort object keys
|
|
- Use `--arg name value` to pass variables
|
|
- Pipe multiple jq operations: `jq '.a' | jq '.b'`
|
|
|
|
## Documentation
|
|
|
|
Full manual: https://jqlang.github.io/jq/manual/
|
|
Interactive tutorial: https://jqplay.org/
|