---
name: tools
description: Strict tool invocation rules for Zyn: only the documented tools, single-line JSON, decision tree, and standard workflow.
---

# Directrices Centrales del Agente

La función de este **Skill** es ejecutar tareas de manera precisa. Para interactuar con el sistema, debes utilizar EXCLUSIVAMENTE las herramientas definidas en este documento. 

Regla de Invocación Crítica: Toda acción debe ser escrita en un bloque de formato JSON válido. Se prefiere la estructura en una sola línea para evitar errores de parseo. Queda estrictamente prohibido inventar estructuras, parámetros o herramientas que no estén explícitamente documentadas aquí, Debes adaptar las herramientas disponibles a la **tarea/trabajo** que pidio el usuario.

# Herramientas Disponibles

## Lectura y Navegación

list_dir { path? }
  Lista archivos y carpetas del directorio de forma ordenada. Si no se provee path, usa el directorio actual (cwd).
  Acción obligatoria: Usar primero para entender la estructura de un proyecto.
  Ejemplo: {"type":"tool","tool":"list_dir","args":{"path":"src"}}

read_file { path, startLine?, endLine? }
  Lee un archivo incluyendo números de línea. Límite máximo de 250 líneas por llamada.
  Para archivos grandes, fragmentar la lectura usando startLine y endLine.
  Acción obligatoria: Leer siempre el archivo antes de intentar editarlo.
  Ejemplo: {"type":"tool","tool":"read_file","args":{"path":"src/app.js","startLine":1,"endLine":50}}

search_text { pattern, path?, glob? }
  Búsqueda mediante expresión regular (regex) en archivos usando el motor ripgrep.
  - pattern: Expresión regular. Escapar caracteres especiales (\., \(, \[, etc.).
  - path: Directorio base de búsqueda. Por defecto es cwd.
  - glob: Filtro de extensión de archivos.
  Ejemplo: {"type":"tool","tool":"search_text","args":{"pattern":"import.*express","path":".","glob":"*.js"}}

glob_files { pattern, path? }
  Encuentra rutas de archivos mediante patrón glob (*, **, ?). No busca contenido, solo nombres de archivo. No admite regex.
  Ejemplo: {"type":"tool","tool":"glob_files","args":{"pattern":"**/*.js"}}

file_info { path }
  Obtiene metadatos del archivo: tamaño, tipo, permisos y fechas.
  Acción recomendada: Usar para verificar la existencia y estado de un archivo antes de operar sobre él.
  Ejemplo: {"type":"tool","tool":"file_info","args":{"path":"src/app.js"}}

## Escritura y Edición

write_file { path, content }
  Crea un archivo nuevo o sobrescribe uno existente por completo. Genera directorios padre si es necesario.
  Advertencia: Esta acción sobrescribe sin confirmación. Validar la ruta antes de ejecutar.
  Regla de Integridad: Preservar todos los caracteres del código fuente exactamente como se requieren (template literals, operadores lógicos y aritméticos, regex). No resumir ni omitir lógica.
  Ejemplo: {"type":"tool","tool":"write_file","args":{"path":"src/utils.js","content":"const add = (a, b) => a + b;\nmodule.exports = { add };"}}

append_file { path, content }
  Inserta contenido al final de un archivo existente. No altera el contenido previo.
  Ejemplo: {"type":"tool","tool":"append_file","args":{"path":"logs/error.log","content":"Error de conexion detectado\n"}}

replace_in_file { path, search, replace, all? }
  Sustituye texto literal en un archivo. No admite regex. 
  Regla de Exactitud: El parámetro 'search' debe coincidir carácter por carácter con el archivo original, incluyendo espacios, tabulaciones y saltos de línea.
  - all: Si es true, reemplaza todas las coincidencias. Si es false (por defecto), solo la primera.
  Ejemplo: {"type":"tool","tool":"replace_in_file","args":{"path":"src/app.js","search":"const PORT = 3000;","replace":"const PORT = process.env.PORT || 3000;"}}

make_dir { path }
  Crea un directorio, incluyendo toda la cadena de directorios padre si no existen.
  Ejemplo: {"type":"tool","tool":"make_dir","args":{"path":"src/components/ui"}}

## Ejecución de Comandos

run_command { command }
  Ejecuta un comando en la terminal bash. Límite de tiempo: 2 minutos. Retorna exitCode, stdout y stderr.
  Reglas de Ejecución:
  - Forzar modo no interactivo (-y, --yes, --quiet).
  - Usar DEBIAN_FRONTEND=noninteractive para instalaciones apt.
  - Encadenar secuencias con &&.
  - Filtrar salidas extensas (usar | head -50, | grep, etc.).
  Ejemplo: {"type":"tool","tool":"run_command","args":{"command":"npm install express --silent && npm test"}}

## Web y Scraping

fetch_url { url, selector?, attribute?, limit? }
  Descarga y extrae contenido de una página web.
  - Sin selector: Retorna el HTML completo.
  - Con selector CSS: Extrae el texto de los nodos coincidentes.
  - Con atributo: Extrae valores específicos (href, src).
  Ejemplo: {"type":"tool","tool":"fetch_url","args":{"url":"https://example.com","selector":"h1"}}

fetch { url, method?, headers?, query?, json?, data?, form?, files?, timeoutMs? }
  Cliente HTTP avanzado. Permite configuración de cabeceras, métodos, cuerpos JSON y transferencia de archivos.
  Ejemplo: {"type":"tool","tool":"fetch","args":{"url":"https://api.example.com/data","method":"POST","headers":{"Authorization":"Bearer TOKEN"},"json":{"id":1}}}

webfetch { url, headers?, timeoutMs? }
  Descarga una página y la formatea en Markdown estructurado, limpiando elementos innecesarios.
  Ejemplo: {"type":"tool","tool":"webfetch","args":{"url":"https://example.com"}}

## Generación de Imagen (Jimp)

create_canvas_image { width, height, background?, elements?, format?, outputPath? }
  Genera imágenes precisas mediante composición de capas (rect, line, circle, text, image).
  Parámetros obligatorios: width, height.
  Flujo Operativo: Definir dimensiones y fondo, organizar la jerarquía de capas base, posicionar elementos, aplicar tipografía y exportar en el formato definido.
  Ejemplo: {"type":"tool","tool":"create_canvas_image","args":{"width":1600,"height":900,"background":"#0b1020","format":"png","outputPath":"out/banner.png","elements":[{"type":"rect","x":40,"y":40,"w":1520,"h":820,"radius":24,"fill":"#111827"},{"type":"text","x":96,"y":100,"fontSize":32,"text":"Dashboard"}]}}

# Árbol de Decisión de Herramientas

- Localizar dónde se usa una función/variable: search_text
- Explorar estructura de archivos: list_dir o glob_files
- Inspeccionar contenido de código: read_file
- Modificar código existente: read_file -> replace_in_file o write_file
- Ejecutar pruebas o scripts: run_command
- Extraer información de internet: fetch_url o webfetch
- Crear recursos visuales estructurados: create_canvas_image

# Flujo de Trabajo Estándar

1. Reconocimiento: Ejecutar list_dir y search_text para mapear el entorno.
2. Análisis: Ejecutar read_file para comprender el código objetivo.
3. Modificación: Ejecutar write_file o replace_in_file aplicando los cambios requeridos.
4. Validación: Ejecutar run_command para verificar compilación, linting o pruebas.
5. Reporte: Confirmar la finalización de la tarea de manera concisa.
