feat: skills de ejemplo y README del sistema

Agregar 4 skills de ejemplo funcionales y README del sistema:

Skills de ejemplo:
- devops/deploy-service: deploy completo con rollback
- analysis/log-analyzer: analisis de logs con metricas
- communication/daily-report: reportes diarios automaticos
- system/health-check: verificacion de salud multi-servicio

Cada skill incluye:
- SKILL.md con frontmatter YAML + instrucciones markdown
- Descripcion de parametros y proceso paso a paso
- Ejemplos de uso y consideraciones de seguridad

skills/README.md documenta:
- Diferencia entre tools (atomicas) y skills (flujos multi-paso)
- Formato de SKILL.md y carga progresiva (3 niveles)
- Categorias disponibles y uso desde agentes

Las skills son contenido declarativo, no codigo Go.
This commit is contained in:
2026-03-08 22:13:41 +00:00
parent b68ced5c23
commit 55c907a3ac
5 changed files with 567 additions and 284 deletions
+101 -48
View File
@@ -1,70 +1,123 @@
---
name: log-analyzer
description: >
Analiza logs de servicios para encontrar errores, patrones y anomalias.
Usa esta skill cuando el usuario pida revisar logs, buscar errores en un
servicio, diagnosticar problemas, o entender que paso en un periodo de tiempo.
Funciona con journalctl, archivos de log, y logs de Docker.
Analiza logs de servicios buscando patrones de errores, warnings y anomalias.
Genera un resumen estructurado con metricas, errores frecuentes y recomendaciones.
---
# Analisis de logs
# Log Analyzer Skill
## Prerequisitos
Esta skill analiza logs de servicios y genera reportes estructurados con hallazgos y recomendaciones.
- Tool `ssh_command` habilitada (para logs remotos)
- Acceso al servidor donde estan los logs
## Casos de uso
## Flujo
- Analizar logs de un servicio que esta fallando
- Buscar patrones de errores recurrentes
- Generar metricas de salud de un servicio
- Detectar anomalias en logs
### 1. Identificar fuente de logs
## Proceso de analisis
Preguntar o inferir del contexto:
- **Servicio**: nombre del servicio o contenedor
- **Periodo**: rango de tiempo a analizar (default: ultima hora)
- **Servidor**: host donde corren los logs
- **Tipo**: systemd (journalctl), archivo (/var/log/...), o Docker
### 1. Obtener los logs
### 2. Obtener logs
Opciones:
- Via SSH: `ssh_command` con `journalctl` o `tail`
- Via HTTP: `http_get` si el servicio expone logs via API
- Desde archivo local: `file_read` (si el agente tiene la tool)
Segun el tipo de fuente:
**Systemd (journalctl):**
Ejemplo con journalctl:
```bash
ssh_command: "journalctl -u <servicio> --since '<periodo>' --no-pager"
journalctl -u <service-name> --since "1 hour ago" -n 1000
```
**Archivo de log:**
```bash
ssh_command: "tail -n 500 /var/log/<servicio>/<archivo>.log"
# o con filtro de tiempo:
ssh_command: "awk '/2024-01-15 14:00/,/2024-01-15 15:00/' /var/log/<servicio>.log"
### 2. Parsear los logs
Identifica el formato de logs:
- JSON estructurado
- Formato de systemd
- Logs planos con timestamp
Extrae campos clave:
- Timestamp
- Nivel de log (ERROR, WARN, INFO, DEBUG)
- Mensaje
- Stack traces (si aplica)
### 3. Analizar patrones
Busca:
- Errores recurrentes (agrupa por mensaje similar)
- Picos de actividad (timeframes con muchos logs)
- Errores criticos (FATAL, PANIC, segfaults)
- Timeouts y connection errors
- Excepciones no manejadas
### 4. Generar metricas
Calcula:
- Total de lineas analizadas
- Conteo por nivel (ERROR, WARN, INFO)
- Top 10 errores mas frecuentes
- Timeline de errores (distribucion temporal)
- Rate de errores (errores por minuto)
### 5. Generar reporte
Formato del reporte:
```markdown
## Log Analysis Report
**Service**: <service-name>
**Period**: <start> - <end>
**Total lines**: <N>
### Metrics
- Errors: <N> (<percentage>%)
- Warnings: <N> (<percentage>%)
- Info: <N> (<percentage>%)
- Error rate: <N> errors/min
### Top Errors
1. <error-message> (<N> occurrences)
2. <error-message> (<N> occurrences)
...
### Critical Issues
- <description>
- <description>
### Recommendations
- <recommendation>
- <recommendation>
```
**Docker:**
```bash
ssh_command: "docker logs --since <periodo> <contenedor> 2>&1 | tail -500"
```
## Parametros requeridos
### 3. Analisis
- `source`: "ssh", "http", o "file"
- `service_name`: nombre del servicio (si source=ssh)
- `host`: servidor (si source=ssh)
- `log_url`: URL de logs (si source=http)
- `file_path`: ruta al archivo (si source=file)
- `timeframe`: "1 hour", "24 hours", "7 days", etc.
Buscar en los logs:
- **Errores**: lineas con ERROR, FATAL, panic, exception, traceback
- **Warnings**: lineas con WARN, warning
- **Patrones repetitivos**: errores que se repiten (agrupar por tipo)
- **Timestamps**: cuando empezaron los problemas
- **Correlaciones**: errores que ocurren juntos o en secuencia
Parametros opcionales:
- `filter`: patron regex para filtrar lineas
- `max_lines`: limite de lineas a analizar (default: 10000)
- `output_format`: "markdown" o "json"
### 4. Reporte
## Ejemplo de uso
Presentar al usuario:
1. **Resumen**: estado general (saludable / con problemas / critico)
2. **Errores encontrados**: listado agrupado por tipo con conteo
3. **Timeline**: cuando empezaron y si siguen ocurriendo
4. **Causa probable**: si se puede inferir del contexto
5. **Recomendacion**: accion sugerida (restart, fix config, escalar, etc.)
Usuario: "Analiza los logs de myapp en prod-server-01 de la ultima hora"
## Tips
- Si los logs son muy extensos, obtener primero un conteo de errores y luego los detalles de los mas frecuentes
- Usar `grep -c` para contar antes de traer lineas completas
- Para logs grandes, usar `tail` o rangos de tiempo acotados
Agente:
1. skill_search("analyze logs")
2. skill_load("log-analyzer")
3. ssh_command para obtener logs via journalctl
4. Parsear y analizar logs
5. Generar reporte markdown
6. Enviar reporte al usuario