# Regla: Crear nueva skill Guia para crear una nueva skill en `skills/`. ## Prerequisitos - Entender la diferencia entre **tools** (funciones atomicas) y **skills** (flujos multi-paso) - Las skills son contenido declarativo (markdown + recursos), no codigo Go - Una skill combina tools existentes, logica condicional y conocimiento de dominio ## Proceso ### 1. Determinar categoria Elegir la categoria adecuada: - `devops/` — operaciones y deploy - `analysis/` — analisis de datos/logs - `communication/` — comunicacion y notificaciones - `coding/` — desarrollo y code review - `system/` — administracion del sistema Si ninguna aplica, crear nueva categoria. ### 2. Crear estructura de directorios ```bash mkdir -p skills///{scripts,references,templates,assets} ``` Solo crear las subcarpetas que vayas a usar. ### 3. Escribir SKILL.md Template: ```markdown --- name: skill-name description: > Descripcion clara de que hace la skill y cuando debe activarse. Esta descripcion es el mecanismo principal de triggering. Idealmente < 100 palabras. --- # Breve introduccion de la skill (1-2 parrafos). ## Casos de uso - Caso 1 - Caso 2 - Caso 3 ## Proceso de ejecucion ### 1. Paso inicial Descripcion del paso, que tools usar, ejemplos de codigo. ```bash # ejemplo de comando ssh_command host="prod-01" command="systemctl status myapp" ``` ### 2. Paso siguiente Continuar con los pasos... ## Parametros requeridos Lista de parametros que el usuario debe proporcionar: - `param1`: descripcion - `param2`: descripcion Parametros opcionales: - `opt1`: descripcion (default: valor) ## Ejemplo de uso Usuario: "Haz X" Agente: 1. skill_search("X") 2. skill_load("") 3. Ejecutar pasos... 4. Reportar resultado ## Seguridad Consideraciones de seguridad especificas para esta skill. ``` ### 4. Anadir recursos (opcional) #### Scripts (`scripts/`) Scripts ejecutables que la skill puede invocar: ```bash #!/bin/bash # scripts/deploy.sh # Descripcion del script set -euo pipefail # Validar argumentos if [ $# -lt 1 ]; then echo "Usage: $0 " exit 1 fi # Implementacion... ``` **Importante**: - Usar shebang correcto (`#!/bin/bash`, `#!/usr/bin/env python3`, etc.) - Validar argumentos - Usar `set -euo pipefail` en bash - Exit codes claros (0 = exito, != 0 = error) #### Referencias (`references/`) Documentacion extensa que el agente puede consultar bajo demanda: ```markdown # API Reference Documentacion detallada... Si > 300 lineas, agregar TOC al inicio. ``` #### Templates (`templates/`) Plantillas que la skill usa como base: ```yaml # template-report.md # Report: {{title}} Generated: {{timestamp}} ## Summary {{summary}} ... ``` ### 5. Probar la skill 1. Habilitar skills en el config de un agente de prueba: ```yaml skills: enabled: true path: "skills/" categories: [""] tools: skills: allowed_interpreters: ["bash", "sh"] ``` 2. Reiniciar el agente 3. Probar buscando la skill: `skill_search("")` 4. Cargar la skill: `skill_load("")` 5. Ejecutar el flujo completo siguiendo las instrucciones ### 6. Documentar Actualizar `skills/README.md` si: - Creas una nueva categoria - La skill introduce un patron nuevo - Hay consideraciones de seguridad especiales ## Reglas criticas - **Skills != Tools**: Las skills usan tools, no son tools - **SKILL.md < 500 lineas**: Si es mas largo, dividir en multiple skills o mover contenido a `references/` - **Description precisa**: La description en el frontmatter es critica para el matching - **Idempotencia**: Las skills deben ser seguras de ejecutar multiples veces si es posible - **Error handling**: Las instrucciones deben incluir que hacer en caso de error - **Rollback**: Si la skill hace cambios destructivos, incluir instrucciones de rollback ## Ejemplos de skills validas Ver las skills existentes en `skills/`: - `skills/devops/deploy-service/` — deploy completo con rollback - `skills/analysis/log-analyzer/` — analisis de logs con metricas - `skills/system/health-check/` — verificacion de salud multi-servicio - `skills/communication/daily-report/` — generacion de reportes ## Anti-patrones - Skill que solo ejecuta un comando SSH → usar tool `ssh_command` directamente - Skill con logica de negocio compleja → crear tool Go con tests - Skill que repite instrucciones del system prompt → innecesario - Scripts que requieren interaccion humana → las skills son automaticas