Communitygithub.com

AdiPP/skills

Habilidades reutilizables para agentes de IA en formato SKILL.md

¿Qué es skills?

Este skill documenta el uso de la CLI de Yaak (`@yaakapp/cli`) como una habilidad reutilizable para agentes de IA en formato SKILL.md. Proporciona una referencia completa para controlar el cliente de API de escritorio Yaak desde la terminal, incluyendo la creación, consulta, actualización, eliminación y envío de solicitudes HTTP, así como la gestión de workspaces, folders, entornos y autenticación. El skill está diseñado para plataformas como Claude Code, Cursor y Codex, permitiendo a los agentes de IA ejecutar operaciones complejas de API management de forma programática. Incluye ejemplos prácticos de batch operations, plantillas de variables, uso de entornos para cambiar URLs según el entorno y buenas prácticas para organizar recursos por API.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add AdiPP/skills

Preguntar en tu IA favorita

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

Documentación

Habilidad para la CLI de Yaak

La CLI yaak (@yaakapp/cli) controla el cliente de escritorio de Yaak para APIs desde la terminal. Lee y escribe la misma base de datos SQLite local que la aplicación de escritorio: los cambios se reflejan instantáneamente en ambas direcciones.

Prerrequisitos

  • CLI yaak instalada: npm install -g @yaakapp/cli
  • Aplicación de escritorio Yaak (opcional pero recomendada para verificación visual)

Banderas globales

BanderaPropósito
--data-dir <DIR>Directorio de datos personalizado
-e, --environment <ID>ID de entorno para sustitución de variables
--cookie-jar <ID>ID del tarro de cookies para la ejecución de solicitudes
-v, --verboseSalida detallada (eventos, cuerpo transmitido)
--log [NIVEL]Registro de CLI (error

Árbol de comandos

yaak
├── workspace   list | show <id> | create | update <id> | delete <id> [--yes]
├── request     list [<ws-id>] | show <id> | create [<ws-id>] | update <id> | delete <id> [--yes] | send <id> | schema <type>
├── folder      list [<ws-id>] | show <id> | create -n <nombre> [<ws-id>] | update <id> | delete <id> [--yes]
├── environment list [<ws-id>] | show <id> | create | update <id> | delete <id> [--yes]
├── cookie-jar  list [<ws-id>]
├── send        <ID>                               # solicitud, carpeta o workspace
├── auth        login | logout | whoami
└── plugin      build | dev | generate | install | publish

Regla de múltiples workspaces: Cuando solo existe un workspace, [<ws-id>] es opcional. Con múltiples workspaces, DEBES pasar el ID del workspace como primer argumento posicional.

Workspaces

yaak workspace list                                    # listar todos los workspaces
yaak workspace show <ws-id>                            # JSON completo
yaak workspace create -n "Mi API"                      # crear por nombre
yaak workspace create --json '{"name":"Mi API","headers":[...]}'  # crear con configuración
yaak workspace update <ws-id> --json '{"name":"Renombrado"}'
yaak workspace delete <ws-id> --yes                    # eliminación no interactiva

Carpetas

yaak folder list [<ws-id>]                             # listar carpetas en el workspace
yaak folder show <folder-id>                           # JSON completo
yaak folder create -n "Auth" [<ws-id>]                 # crear en el workspace
yaak folder create --json '{"name":"Auth","workspaceId":"wk_..."}' [<ws-id>]
yaak folder update <folder-id> --json '{"name":"Renombrado"}'
yaak folder delete <folder-id> --yes

Solicitudes

Listar e inspeccionar

yaak request list [<ws-id>]                            # listar todas las solicitudes
yaak request show <req-id>                             # JSON completo (método, URL, cabeceras, cuerpo, etc.)

Crear

Banderas rápidas:

yaak request create [<ws-id>] -n "Obtener Usuarios" -m GET -u "https://api.example.com/users"

JSON completo:

yaak request create [<ws-id>] --json '{
  "name": "Crear Usuario",
  "method": "POST",
  "url": "https://api.example.com/users",
  "folderId": "fl_...",
  "bodyType": "application/json",
  "body": {
    "text": "{\"name\":\"test\",\"email\":\"[email protected]\"}"
  },
  "headers": [
    {"name":"Authorization","value":"Bearer token","enabled":true}
  ]
}'

Campos clave para --json:

CampoTipoNotas
namestringNombre para mostrar
methodstringGET, POST, PUT, PATCH, DELETE
urlstringURL de la solicitud
folderIdstringID de la carpeta padre
bodyTypestringapplication/json, multipart/form-data, application/x-www-form-urlencoded, text/plain, etc.
body.textstringContenido del cuerpo (convierte JSON a string para application/json)
headersarray[{name, value, enabled}]
authenticationTypestringbasic, bearer, oauth2, etc.
authenticationobjectConfiguración de autenticación según el tipo

Actualizar

yaak request update <req-id> --json '{"name":"Nombre Actualizado","url":"https://nueva-url.com"}'

Eliminar

yaak request delete <req-id> --yes

Enviar

yaak send <req-id>                                     # enviar una sola solicitud
yaak send <req-id> -v                                  # detallado (cabeceras, eventos)
yaak send <folder-id>                                  # enviar todas las solicitudes de una carpeta
yaak send <ws-id> --parallel --fail-fast               # enviar todo el workspace

Banderas de envío:

  • --parallel — ejecutar solicitudes en paralelo
  • --fail-fast — abortar al primer fallo (funciona con envíos de carpeta/workspace)
  • -e <env-id> — usar entorno para sustitución de variables
  • -v — salida detallada (muestra cabeceras de solicitud/respuesta, cuerpo transmitido)

Introspección del esquema

yaak request schema http       # Esquema JSON para solicitudes HTTP
yaak request schema grpc       # Esquema JSON para solicitudes gRPC
yaak request schema websocket  # Esquema JSON para solicitudes WebSocket

Úsalo para entender la estructura exacta del payload --json para crear/actualizar.

Entornos

yaak environment list [<ws-id>]                        # listar entornos
yaak environment show <env-id>                         # JSON completo con variables
yaak environment create [<ws-id>] -n "Producción"
yaak environment update <env-id> --json '{
  "name": "Producción",
  "variables": [
    {"name":"BASE_URL","value":"https://api.prod.com"},
    {"name":"API_KEY","value":"secreto123"}
  ]
}'
yaak environment delete <env-id> --yes

Usar entornos

Pasa -e <env-id> a cualquier comando send para la sustitución de variables:

yaak send <req-id> -e <env-id>

Sintaxis de plantilla en las solicitudes:

  • Variables: ${[ mi_variable ]}
  • Funciones: ${[ uuid() ]}, ${[ timestamp() ]}, ${[ fs.readFile('/ruta') ]}

Autenticación

yaak auth whoami                                       # verificar estado de inicio de sesión
yaak auth login                                        # iniciar sesión vía navegador
yaak auth logout                                       # cerrar sesión

Operaciones por lotes

Crear múltiples solicitudes desde un script

#!/bin/bash
WS="wk_..."
FL_AUTH="fl_..."
FL_PROD="fl_..."

# Endpoints de autenticación
yaak request create "$WS" --json '{"name":"Iniciar Sesión","method":"POST","url":"https://api.example.com/auth/login","folderId":"'"$FL_AUTH"'","bodyType":"application/json","body":{"text":"{\"username\":\"usuario\",\"password\":\"contraseña\"}"}}'
yaak request create "$WS" --json '{"name":"Mi Perfil","method":"GET","url":"https://api.example.com/auth/me","folderId":"'"$FL_AUTH"'"}'

# Endpoints CRUD
for op in "GET list /users" "POST create /users" "GET get /users/1" "PUT update /users/1" "DELETE delete /users/1"; do
  read -r method label path <<< "$op"
  yaak request create "$WS" --json '{"name":"'"${label^}"" "'${path#/}'"","method":"'"$method"'","url":"https://api.example.com'"$path"'","folderId":"'"$FL_PROD"'"}'
done

Eliminar todas las solicitudes en un workspace

yaak request list <ws-id> | awk '{print $1}' | while read id; do
  yaak request delete "$id" --yes
done

Clonar la estructura de un workspace a uno nuevo

# Crear nuevo workspace
NUEVO_WS=$(yaak workspace create -n "Copia" | awk '{print $NF}')

# Crear carpetas
yaak folder list <old-ws> | while read id nombre; do
  yaak folder create -n "$nombre" "$NUEVO_WS"
done

# Luego crear solicitudes con los nuevos IDs de carpeta

Salida JSON

Todos los comandos show y list generan JSON (o una línea por elemento para list). Envíalos a jq para filtrar:

yaak request show <req-id> | jq '.url'
yaak workspace list | jq -r '.[] | .id + " " + .name'

Patrones comunes

Organizar por recurso

Crea una carpeta por recurso de API, luego solicitudes CRUD dentro:

WS="wk_..."
FL=$(yaak folder create -n "Usuarios" "$WS" | awk '{print $NF}')

yaak request create "$WS" --json '{"name":"Listar Usuarios","method":"GET","url":"https://api.example.com/users","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Obtener Usuario","method":"GET","url":"https://api.example.com/users/1","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Crear Usuario","method":"POST","url":"https://api.example.com/users","folderId":"'"$FL"'","bodyType":"application/json","body":{"text":"{\"name\":\"nuevo usuario\"}"}}'

Cambio de URL basado en entorno

# Entorno de desarrollo
yaak environment create "$WS" -n "Dev"
yaak environment update <dev-env-id> --json '{"variables":[{"name":"BASE_URL","value":"http://localhost:3000"}]}'

# Entorno de producción
yaak environment create "$WS" -n "Prod"
yaak environment update <prod-env-id> --json '{"variables":[{"name":"BASE_URL","value":"https://api.production.com"}]}'

# Usar en la URL de la solicitud
yaak request create "$WS" --json '{"name":"Obtener Usuarios","method":"GET","url":"${[ BASE_URL ]}/users","folderId":"..."}'

# Enviar con entorno
yaak send <req-id> -e <dev-env-id>    # apunta a localhost
yaak send <req-id> -e <prod-env-id>   # apunta a producción

Valores predeterminados a nivel de workspace

Establece cabeceras/autenticación a nivel de workspace (heredadas por todas las solicitudes):

yaak workspace update "$WS" --json '{
  "headers": [
    {"name":"Content-Type","value":"application/json","enabled":true},
    {"name":"Accept","value":"application/json","enabled":true}
  ],
  "authenticationType": "bearer",
  "authentication": {"token":"${[ API_TOKEN ]}"}
}'

Consejos

  • Siempre ejecuta yaak request schema <type> antes de crear payloads complejos: el esquema muestra los nombres y tipos de campo exactos.
  • Usa --verbose en send para depurar detalles de solicitud/respuesta.
  • La CLI es idempotente para lecturas: es segura para scripts y reejecuciones.
  • La aplicación de escritorio refleja los cambios de la CLI al instante (base de datos SQLite compartida).
  • --yes omite los avisos de confirmación: esencial para eliminaciones en scripts.

Skills relacionados