# Sistema de Skills Sistema de skills reutilizables para agentes Matrix. Las skills son paquetes de instrucciones, scripts y recursos que amplian las capacidades de un agente mas alla de las tools de function calling. ## Diferencia entre Tools y Skills - **Tools** (`tools/`) — funciones atomicas que el LLM invoca via function calling (ssh_command, http_get, clock, etc.) - **Skills** (`skills/`) — flujos completos de trabajo multi-paso que combinan tools, logica condicional y conocimiento de dominio Ejemplo: - Tool: `ssh_command` — ejecuta un comando SSH - Skill: `deploy-service` — usa ssh_command, http_get y logica para hacer un deploy completo ## Estructura de una skill ``` skills/// ├── SKILL.md ← obligatorio (frontmatter YAML + instrucciones markdown) ├── LICENSE.txt ← opcional ├── scripts/ ← opcional, codigo ejecutable (bash, python, etc.) ├── references/ ← opcional, docs de referencia ├── templates/ ← opcional, plantillas/assets └── assets/ ← opcional, fuentes, iconos, etc. ``` ### SKILL.md — formato ```yaml --- name: skill-name description: > Descripcion clara de que hace la skill y cuando debe activarse. Esta descripcion es el mecanismo principal de triggering. --- # Instrucciones Cuerpo markdown con las instrucciones completas. Idealmente < 500 lineas. ``` ## Carga progresiva (3 niveles) El sistema carga skills de forma progresiva para optimizar el uso del contexto del LLM: 1. **Metadata** (name + description) — siempre en contexto (~100 palabras). El agente la lee para decidir si activar la skill. 2. **Cuerpo del SKILL.md** — se carga cuando la skill se activa. Instrucciones principales. 3. **Recursos bundled** (scripts/, references/, etc.) — se cargan bajo demanda. El SKILL.md indica cuando leer cada archivo. ## Carpetas opcionales | Carpeta | Proposito | |---------|-----------| | `scripts/` | Codigo ejecutable que el agente corre (bash, python). Puede ejecutarlos sin cargarlos en contexto. | | `references/` | Documentacion extensa, leida solo cuando es relevante. Si > 300 lineas, agregar TOC al inicio. | | `templates/` | Plantillas que la skill usa como base para generar outputs. | | `assets/` | Archivos estaticos (fuentes, iconos, imagenes). | ## Categorias de skills - **`devops/`** — operaciones y deploy - **`analysis/`** — analisis de datos/logs - **`communication/`** — comunicacion y notificaciones - **`coding/`** — desarrollo y code review - **`system/`** — administracion del sistema ## Uso desde agentes Los agentes pueden interactuar con skills via function calling: 1. **`skill_search`** — busca skills relevantes por query 2. **`skill_load`** — carga instrucciones completas de una skill 3. **`skill_read_resource`** — lee un recurso especifico (script, reference, template) 4. **`skill_run_script`** — ejecuta un script de la skill con argumentos ## Configuracion Las skills se configuran por agente en el YAML de configuracion: ```yaml skills: enabled: true path: "skills/" categories: ["devops", "system"] # filtro opcional ``` ## Seguridad - Los scripts de skills tienen las mismas restricciones que ssh_command - Allowlist de interpreters permitidos (bash, python3, sh) - Timeout obligatorio en ejecucion - Sin acceso directo a secretos ## Crear nuevas skills Ver `.claude/rules/create_skill.md` para la guia completa de creacion de skills.