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
+144 -62
View File
@@ -1,84 +1,166 @@
---
name: daily-report
description: >
Genera y envia un reporte diario con el estado de servicios, metricas clave
y eventos relevantes. Usa esta skill cuando el usuario pida un resumen del
dia, estado general de los sistemas, o un reporte periodico. Tambien puede
activarse automaticamente via schedule.
Genera y envia un reporte diario con metricas de servicios, estado de salud,
incidentes recientes y tareas pendientes. Puede enviarse via Matrix a un room
especifico o guardarse como archivo.
---
# Reporte diario
# Daily Report Skill
## Prerequisitos
Esta skill genera reportes diarios automaticos consolidando informacion de multiples fuentes.
- Tool `ssh_command` para consultar estado de servicios
- Tool `http_get` para health checks
- Tool `matrix_send` para enviar el reporte a una room
## Proposito
## Flujo
- Proveer visibilidad diaria del estado de servicios
- Consolidar metricas de diferentes fuentes
- Alertar sobre anomalias o degradacion
- Tracking de incidentes y resoluciones
### 1. Recopilar datos
## Fuentes de datos
Ejecutar en paralelo cuando sea posible:
El reporte puede incluir datos de:
- Estado de servicios (via SSH + systemctl)
- Metricas HTTP (via health endpoints)
- Analisis de logs (via log-analyzer skill)
- Uso de recursos (CPU, memoria, disco via SSH)
- Incidentes recientes (desde base de datos o API)
**Estado de servicios:**
```bash
ssh_command: "systemctl list-units --type=service --state=running --no-pager | grep -E '<servicios>'"
ssh_command: "systemctl list-units --type=service --state=failed --no-pager"
```
**Uso de recursos:**
```bash
ssh_command: "df -h / | tail -1"
ssh_command: "free -h | grep Mem"
ssh_command: "uptime"
```
**Errores recientes:**
```bash
ssh_command: "journalctl --priority=err --since '24 hours ago' --no-pager | wc -l"
ssh_command: "journalctl --priority=err --since '24 hours ago' --no-pager | tail -10"
```
**Health checks HTTP:**
```
http_get: "<url>/health" para cada servicio con endpoint
```
### 2. Formatear reporte
Generar markdown con:
## Estructura del reporte
```markdown
## Reporte diario — <fecha>
# Daily Report - <date>
### Estado de servicios
| Servicio | Estado | Uptime |
|----------|--------|--------|
| servicio-1 | OK | 5d 3h |
| servicio-2 | FAILED | - |
## Services Status
### Recursos
- **Disco**: 45% usado (55GB libres)
- **Memoria**: 3.2GB / 8GB (40%)
- **Load average**: 0.5, 0.3, 0.2
| Service | Host | Status | Uptime |
|---------|------|--------|--------|
| myapp | prod-01 | running | 15d 3h |
| worker | prod-02 | running | 2d 8h |
### Errores (ultimas 24h)
- Total: 15 errores
- Mas frecuente: "connection timeout" (8 veces)
## Health Metrics
### Alertas
- servicio-2 esta caido desde las 14:30
- Disco al 85% en /var/log (limpiar)
- Total requests: <N>
- Error rate: <percentage>%
- Avg response time: <N>ms
- P99 latency: <N>ms
## Incidents
- [RESOLVED] Database connection timeout - 14:30 - Fixed by restarting pool
- [OPEN] High memory usage on worker - Since 18:00
## Warnings
- Service X disk usage: 85%
- Service Y error rate: 3.2% (threshold: 2%)
## System Resources
| Host | CPU | Memory | Disk |
|------|-----|--------|------|
| prod-01 | 45% | 62% | 71% |
| prod-02 | 23% | 48% | 55% |
## Recommendations
- Investigate memory leak in worker service
- Plan disk cleanup on prod-01
---
Generated by <agent-name> at <timestamp>
```
### 3. Enviar
## Proceso de generacion
Enviar el reporte formateado a la room configurada o a la room donde fue solicitado.
### 1. Recopilar datos de servicios
## Personalizacion
Para cada servicio configurado:
```bash
systemctl status <service> --no-pager
```
El reporte puede adaptarse segun:
- Lista de servicios a monitorear (del config del agente)
- Servidores a consultar (de ssh.allowed_targets)
- Umbrales de alerta (disco > 80%, memoria > 90%, etc.)
Extrae: estado, uptime, ultimos logs
### 2. Verificar health endpoints
Si el servicio expone /health o /metrics:
```bash
http_get http://<host>:<port>/health
```
### 3. Analizar logs recientes
Usa `log-analyzer` skill para cada servicio:
- Ultimas 24h de logs
- Conteo de errores/warnings
- Errores criticos
### 4. Obtener metricas de sistema
```bash
# CPU y memoria
top -bn1 | head -20
# Disco
df -h
```
### 5. Consolidar y formatear
- Genera el markdown del reporte
- Aplica template si existe (templates/daily-report.md)
- Incluye timestamp y firma del agente
### 6. Enviar reporte
Opciones:
- Enviar a Matrix room (via send_message)
- Guardar como archivo (via file_write)
- Enviar via email (si hay tool de email)
## Configuracion
El agente debe tener configurado:
- Lista de servicios a monitorear
- Hosts donde corren
- Health endpoints (opcional)
- Destination room o file path para el reporte
Ejemplo de config (en el agent config YAML):
```yaml
daily_report:
services:
- name: myapp
host: prod-01
health_url: http://localhost:8080/health
- name: worker
host: prod-02
destination:
type: matrix
room_id: "!reportroom:matrix.org"
schedule: "0 9 * * *" # 9am diario
```
## Parametros
Parametros opcionales al ejecutar manualmente:
- `date`: fecha del reporte (default: today)
- `services`: lista de servicios a incluir (default: todos configurados)
- `destination`: override del destino (room_id o file_path)
- `include_recommendations`: true/false (default: true)
## Ejemplo de uso
Usuario: "Genera el reporte diario"
Agente:
1. skill_search("daily report")
2. skill_load("daily-report")
3. Recopilar datos de todos los servicios configurados
4. Generar markdown del reporte
5. Enviar al room configurado o mostrar al usuario
## Automatizacion
Esta skill esta disenada para ejecutarse via cron. Ver `crons/daily-report/` para la configuracion de la automatizacion.