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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user