Communitygithub.com

JantonioFC/skillsbank

Uso experto de jq para consultas, filtrado, transformación de JSON e integración en pipelines. Patrones prácticos para flujos de shell reales.

¿Qué es skillsbank?

Esta habilidad proporciona conocimiento experto sobre la herramienta de línea de comandos `jq`, el estándar para consultar y transformar JSON. Cubre desde la selección básica de campos hasta patrones avanzados como filtrado con `select`, mapeo y transformación de estructuras, agregación con `add` y `reduce`, interpolación de cadenas y formateo a CSV/TSV, manipulación de claves y rutas, condicionales y manejo de errores, e integración práctica en pipelines de shell con comandos como `curl`, `kubectl`, `gh` o `aws`. Es útil para desarrolladores y administradores de sistemas que trabajan con APIs, herramientas CLI o archivos de registro que producen JSON. La habilidad se apoya en el archivo SKILL.md que contiene ejemplos listos para copiar y pegar, así como mejores prácticas y advertencias sobre seguridad y errores comunes. Está diseñada para agentes de IA como Claude Code, Cursor o Codex, y se recomienda su uso cuando el usuario necesita analizar o transformar JSON, ya sea en scripts bash o en la terminal interactiva.

Compatible con✓Claude Code~Codex CLI✓Cursor✓Gemini CLI
npx skills add https://github.com/JantonioFC/skillsbank/tree/HEAD/skills/jq

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

jq — Consulta y Transformación de JSON

Descripción General

jq es la herramienta CLI estándar para consultar y remodelar JSON. Esta habilidad cubre el uso práctico y experto: filtrado de datos profundamente anidados, transformación de estructuras, agregación de valores, y composición de jq en pipelines de shell. Todos los ejemplos están listos para copiar y pegar en flujos de trabajo reales.

Cuándo Usar Esta Habilidad

  • Úsala al procesar JSON de APIs, herramientas CLI (AWS, GitHub, kubectl, docker) o archivos de registro
  • Úsala al transformar estructuras JSON (renombrar claves, aplanar arreglos, agrupar registros)
  • Úsala cuando el usuario necesite jq dentro de un script bash o una línea de comando
  • Úsala al explicar qué hace una expresión compleja de jq

Cómo Funciona

jq toma una expresión de filtro y la aplica a la entrada JSON. Los filtros se componen con pipes (|), y jq maneja nativamente arreglos, objetos, cadenas, números, booleanos y null.

Selección Básica

# Extraer un campo
echo '{"name":"alice","age":30}' | jq '.name'
# "alice"

# Acceso anidado
echo '{"user":{"email":"[email protected]"}}' | jq '.user.email'

# Índice de arreglo
echo '[10, 20, 30]' | jq '.[1]'
# 20

# Rebanada de arreglo
echo '[1,2,3,4,5]' | jq '.[2:4]'
# [3, 4]

# Todos los elementos de un arreglo
echo '[{"id":1},{"id":2}]' | jq '.[]'

Filtrado con select

# Conservar solo elementos que coinciden
echo '[{"role":"admin"},{"role":"user"},{"role":"admin"}]' \
  | jq '[.[] | select(.role == "admin")]'

# Comparación numérica
curl -s https://api.github.com/repos/owner/repo/issues \
  | jq '[.[] | select(.comments > 5)]'

# Comprobar que un campo existe y no es nulo
jq '[.[] | select(.email != null)]'

# Combinar condiciones
jq '[.[] | select(.active == true and .score >= 80)]'

Mapeo y Transformación

# Extraer un campo de cada elemento del arreglo
echo '[{"name":"alice","age":30},{"name":"bob","age":25}]' \
  | jq '[.[] | .name]'
# ["alice", "bob"]

# Abreviatura: map()
jq 'map(.name)'

# Construir un nuevo objeto por elemento
jq '[.[] | {user: .name, years: .age}]'

# Añadir un campo calculado
jq '[.[] | . + {senior: (.age > 28)}]'

# Renombrar claves
jq '[.[] | {username: .name, email_address: .email}]'

Agregación y Reduce

# Sumar todos los valores
echo '[1, 2, 3, 4, 5]' | jq 'add'
# 15

# Sumar un campo entre objetos
jq '[.[].price] | add'

# Contar elementos
jq 'length'

# Máximo / mínimo
jq 'max_by(.score)'
jq 'min_by(.created_at)'

# reduce: acumulador personalizado
echo '[1,2,3,4,5]' | jq 'reduce .[] as $x (0; . + $x)'
# 15

# Agrupar por campo
jq 'group_by(.department)'

# Contar por grupo
jq 'group_by(.status) | map({status: .[0].status, count: length})'

Interpolación de Cadenas y Formateo

# Interpolación de cadenas
jq -r '.[] | "\(.name) tiene \(.age) años"'

# Formatear como CSV (sin encabezado)
jq -r '.[] | [.name, .age, .email] | @csv'

# Formatear como TSV
jq -r '.[] | [.name, .score] | @tsv'

# Codificar URL de un valor
jq -r '.query | @uri'

# Codificar en Base64
jq -r '.data | @base64'

Trabajar con Claves y Rutas

# Listar todas las claves de nivel superior
jq 'keys'

# Comprobar si existe una clave
jq 'has("email")'

# Eliminar una clave
jq 'del(.password)'

# Eliminar claves anidadas de cada elemento
jq '[.[] | del(.internal_id, .raw_payload)]'

# Descenso recursivo: encontrar todos los valores de una clave en cualquier parte del árbol
jq '.. | .id? // empty'

# Obtener todas las rutas de hojas
jq '[paths(scalars)]'

Condicionales y Manejo de Errores

# if-then-else
jq 'if .score >= 90 then "A" elif .score >= 80 then "B" else "C" end'

# Operador alternativo: usar valor por defecto si es nulo o falso
jq '.nickname // .name'

# try-catch: omitir errores en lugar de detenerse
jq '[.[] | try .nested.value catch null]'

# Suprimir salida nula con // empty
jq '.[] | .optional_field // empty'

Integración Práctica con Shell

# Leer desde un archivo
jq '.users' data.json

# Salida compacta (sin espacios) para seguir canalizando
jq -c '.[]' records.json | while IFS= read -r record; do
  echo "Procesando: $record"
done

# Pasar una variable de shell a jq
STATUS="active"
jq --arg s "$STATUS" '[.[] | select(.status == $s)]'

# Pasar un número
jq --argjson threshold 42 '[.[] | select(.value > $threshold)]'

# Juntar múltiples líneas JSON en un arreglo
jq -s '.' records.ndjson

# Múltiples archivos: juntar todos en un solo arreglo
jq -s 'add' file1.json file2.json

# Pipeline seguro contra nulos desde un comando
kubectl get pods -o json | jq '.items[] | {name: .metadata.name, status: .status.phase}'

# GitHub CLI: extraer números de PR
gh pr list --json number,title | jq -r '.[] | "\(.number)\t\(.title)"'

# AWS CLI: listar IDs de instancias en ejecución
aws ec2 describe-instances \
  | jq -r '.Reservations[].Instances[] | select(.State.Name=="running") | .InstanceId'

# Docker: mostrar nombres e imágenes de contenedores
docker inspect $(docker ps -q) | jq -r '.[] | "\(.Name)\t\(.Config.Image)"'

Patrones Avanzados

# Transponer un objeto de arreglos a un arreglo de objetos
# Entrada: {"names":["a","b"],"scores":[10,20]}
jq '[.names, .scores] | transpose | map({name: .[0], score: .[1]})'

# Aplanar un nivel
jq 'flatten(1)'

# Único por campo
jq 'unique_by(.email)'

# Ordenar, deduplicar y reindexar
jq '[.[] | .name] | unique | sort'

# walk: aplicar transformación a cada nodo recursivamente
jq 'walk(if type == "string" then ascii_downcase else . end)'

# env: leer variables de entorno dentro de jq
export API_KEY=secret
jq -n 'env.API_KEY'

Mejores Prácticas

  • Siempre usa -r (salida raw) al pasar resultados de jq a variables de shell u otros comandos para eliminar las comillas JSON
  • Usa --arg / --argjson para inyectar variables de shell de forma segura — nunca interpoles variables de shell directamente en las cadenas de filtro
  • Prefiere map(f) sobre [.[] | f] para mayor legibilidad
  • Usa -c (compacto) para pipelines JSON delimitados por nueva línea; omítelo para depuración legible por humanos
  • Prueba los filtros interactivamente con jq -n y entrada literal antes de incrustarlos en scripts
  • Usa empty para eliminar elementos no deseados en lugar de filtrar a null

Notas de Seguridad y Seguridad

  • jq es de solo lectura por diseño — no puede escribir archivos ni ejecutar comandos
  • Evita incrustar valores de campos JSON no confiables directamente en comandos de shell; siempre cita o usa --arg

Errores Comunes

  • Problema: jq genera null en lugar del valor esperado Solución: Verifica errores tipográficos en los nombres de las claves; usa keys para inspeccionar los nombres reales de los campos. Recuerda que JSON distingue mayúsculas y minúsculas.

  • Problema: Los números aparecen entre comillas como cadenas en la salida Solución: Usa --argjson en lugar de --arg al inyectar valores numéricos.

  • Problema: El filtro funciona en la terminal pero falla en un script Solución: Asegúrate de que la cadena del filtro use comillas simples en el shell para evitar la expansión de variables. Ejemplo: jq '.field' no jq ".field".

  • Problema: add devuelve null en un arreglo vacío Solución: Usa add // 0 o add // "" para proporcionar un valor predeterminado.

  • Problema: La transmisión de archivos grandes es lenta Solución: Usa jq --stream o cambia a jstream/gron para archivos muy grandes.

Habilidades Relacionadas

  • @bash-pro — Envolver llamadas jq en scripts shell robustos
  • @bash-linux — Patrones generales de pipelines shell
  • @github-automation — Usar jq con la salida JSON de GitHub CLI

Limitaciones

  • Usa esta habilidad solo cuando la tarea coincida claramente con el alcance descrito anteriormente.
  • No trates la salida como un sustituto de la validación, pruebas o revisión de expertos específica del entorno.
  • Detente y pide aclaraciones si faltan entradas requeridas, permisos, límites de seguridad o criterios de éxito.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

JantonioFC/skillsbank

AI-powered image editing with style transfer and object removal

JantonioFC/skillsbank

Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support.

JantonioFC/skillsbank

Analise e auditoria de editais de leilao judicial e extrajudicial. Riscos ocultos, clausulas perigosas, debitos, ocupante e classificacao da oportunidade.

JantonioFC/skillsbank

Embed Photopea in web apps using photopea.js. Covers embedding, file I/O, scripting, exporting, layers, text, filters, and the full Photoshop-compatible API.

JantonioFC/skillsbank

Best practices for Remotion - Video creation in React

JantonioFC/skillsbank

Generate walkthrough videos from Stitch projects using Remotion with smooth transitions, zooming, and text overlays

JantonioFC/skillsbank

Seek and analyze video content using Memories.ai Large Visual Memory Model for persistent video intelligence

JantonioFC/skillsbank

Writes complete, structured landing pages optimized for SEO ranking, AEO citation, and visitor conversion. Activate when the user wants to write or generate a landing page for a product, service, or offer.

JantonioFC/skillsbank

Video and audio perception, indexing, and editing. Ingest files/URLs/live streams, build visual/spoken indexes, search with timestamps, edit timelines, add overlays/subtitles, generate media, and create real-time alerts.

JantonioFC/skillsbank

Upload, stream, search, edit, transcribe, and generate AI video and audio using the VideoDB SDK.

JantonioFC/skillsbank

Skill for discovering and researching autonomous AI agents, tools, and ecosystems using the AgentFolio directory.

JantonioFC/skillsbank

Expert in building portfolios that actually land jobs and clients - not just showing work, but creating memorable experiences. Covers developer portfolios, designer portfolios, creative portfolios, and portfolios that convert visitors into opportunities.

JantonioFC/skillsbank

Tool lifecycle UI components for React/Next.js from ui.inference.sh. Display tool calls: pending, progress, approval required, results. Capabilities: tool status, progress indicators, approval flows, results display. Use for: showing agent tool calls, human-in-the-loop approvals, tool output. Triggers: tool ui, tool calls, tool status, tool approval, tool results, agent tools, mcp tools ui, function calling ui, tool lifecycle, tool pending

JantonioFC/skillsbank

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

JantonioFC/skillsbank

When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' 'audience targeting,' 'Google Ads,' 'Facebook ads,'...

JantonioFC/skillsbank

Create AI avatar and talking head videos with OmniHuman, Fabric, PixVerse via inference.sh CLI. Models: OmniHuman 1.5, OmniHuman 1.0, Fabric 1.0, PixVerse Lipsync. Capabilities: audio-driven avatars, lipsync videos, talking head generation, virtual presenters. Use for: AI presenters, expla...

JantonioFC/skillsbank

Create AI marketing videos for ads, promos, product launches, and brand content. Models: Veo, Seedance, Wan, FLUX for visuals, Kokoro for voiceover. Types: product demos, testimonials, explainers, social ads, brand videos. Use for: Facebook ads, YouTube ads, product launches, brand awarene...

JantonioFC/skillsbank

Generate AI videos with Google Veo, Seedance, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 1.5 Pro, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, lipsync, avatar animation, video upscaling, fole...

JantonioFC/skillsbank

Production-ready CI/CD configurations for Playwright — GitHub Actions, GitLab CI, CircleCI, Azure DevOps, Jenkins, Docker, parallel sharding, reporting, code coverage, and global setup/teardown.

JantonioFC/skillsbank

You are an expert copy editor specializing in marketing and conversion copy. Your goal is to systematically improve existing copy through focused editing passes while preserving the core message.

Skills relacionados