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
+162 -70
View File
@@ -1,95 +1,187 @@
---
name: health-check
description: >
Verifica la salud de uno o varios servicios y servidores. Usa esta skill
cuando el usuario pregunte si algo esta funcionando, si un servicio esta
arriba, o pida un chequeo de salud general. Tambien util despues de un
deploy o un incidente.
Verifica la salud de servicios y sistemas. Valida que servicios esten corriendo,
endpoints HTTP respondan, uso de recursos este dentro de limites, y no haya
errores criticos en logs recientes.
---
# Health check de servicios
# Health Check Skill
## Prerequisitos
Esta skill realiza verificaciones de salud completas de servicios y sistemas.
- Tool `ssh_command` habilitada
- Tool `http_get` para endpoints HTTP
- Servidores en `ssh.allowed_targets`
## Proposito
## Flujo
- Verificar que servicios criticos esten corriendo
- Validar que endpoints HTTP respondan correctamente
- Detectar uso excesivo de recursos (CPU, memoria, disco)
- Identificar errores criticos en logs recientes
- Generar reporte de salud con score y recomendaciones
### 1. Determinar alcance
## Verificaciones realizadas
Inferir del contexto del usuario:
- **Servicio especifico**: checkear solo ese servicio
- **Servidor especifico**: checkear todos los servicios en ese servidor
- **General**: checkear todos los servidores y servicios conocidos
### 1. Estado de servicios (systemd)
### 2. Checks basicos por servidor
Para cada servidor:
Para cada servicio configurado:
```bash
# Conectividad
ssh_command: "echo OK"
# Uptime y load
ssh_command: "uptime"
# Disco
ssh_command: "df -h / /var /tmp 2>/dev/null | tail -n +2"
# Memoria
ssh_command: "free -m | grep -E 'Mem|Swap'"
# Procesos zombie o en estado D
ssh_command: "ps aux | awk '{if ($8 ~ /Z|D/) print}' | head -5"
systemctl is-active <service-name>
```
### 3. Checks por servicio
Estado esperado: `active`
Para cada servicio:
### 2. Health endpoints HTTP
Si el servicio expone endpoint de salud:
```bash
# Estado systemd
ssh_command: "systemctl is-active <servicio>"
# Tiempo activo
ssh_command: "systemctl show <servicio> --property=ActiveEnterTimestamp --value"
# Puertos abiertos
ssh_command: "ss -tlnp | grep <puerto>"
# Ultimos errores
ssh_command: "journalctl -u <servicio> --priority=err --since '1 hour ago' --no-pager | tail -5"
http_get http://<host>:<port>/health
```
**Health check HTTP** (si tiene endpoint):
```
http_get: "http://<host>:<puerto>/health"
Validaciones:
- Status code: 200
- Response time: < 1000ms
- Body contiene: `"status": "ok"` (o similar)
### 3. Recursos del sistema
```bash
# CPU usage
top -bn1 | grep "Cpu(s)" | awk '{print $2}'
# Memory usage
free -m | awk 'NR==2{printf "%.0f", $3*100/$2}'
# Disk usage
df -h / | awk 'NR==2{print $5}' | sed 's/%//'
```
### 4. Evaluar y reportar
Thresholds:
- CPU: warning >70%, critical >90%
- Memory: warning >80%, critical >95%
- Disk: warning >85%, critical >95%
Clasificar cada componente:
### 4. Logs recientes (ultimos 15 minutos)
| Estado | Criterio |
|--------|----------|
| OK | Servicio activo, sin errores recientes, recursos normales |
| WARNING | Servicio activo pero con errores recientes, o recursos > 80% |
| CRITICAL | Servicio caido, disco lleno, o memoria agotada |
Reportar al usuario con formato claro:
```
Health Check — <fecha hora>
[OK] servidor-1: load 0.3, disco 45%, mem 40%
[OK] servicio-a: activo (uptime 5d), 0 errores
[WARNING] servicio-b: activo, 3 errores en ultima hora
[CRITICAL] servidor-2: no responde SSH
```bash
journalctl -u <service> --since "15 minutes ago" | grep -i "error\|fatal\|panic"
```
### 5. Recomendaciones
Validacion: sin errores criticos en los ultimos 15 minutos
Si hay problemas, sugerir acciones:
- Servicio caido → "Intentar restart: `systemctl restart <servicio>`"
- Disco lleno → "Limpiar logs antiguos o expandir disco"
- Memoria alta → "Revisar procesos con mayor consumo"
- Errores frecuentes → "Revisar logs con la skill log-analyzer"
### 5. Conectividad de red (opcional)
Si el servicio depende de servicios externos:
```bash
# Test conectividad
curl -f --max-time 5 http://<dependency-host>/health
```
## Formato del reporte
```markdown
# Health Check Report - <timestamp>
## Overall Health: <HEALTHY|DEGRADED|CRITICAL>
Score: <N>/100
## Service Status
| Service | Status | Health Endpoint | Response Time |
|---------|--------|----------------|---------------|
| myapp | running | OK (200) | 45ms |
| worker | running | OK (200) | 32ms |
## System Resources
| Metric | Value | Status |
|--------|-------|--------|
| CPU Usage | 45% | OK |
| Memory Usage | 62% | OK |
| Disk Usage | 71% | OK |
## Issues Found
- None
## Warnings
- Disk usage on / approaching 75% threshold
## Recommendations
- Monitor disk usage trend
- Consider log rotation policy
---
Next check: <timestamp>
```
## Score calculation
Score total (0-100):
- Services running: 40 puntos (dividido entre servicios)
- Health endpoints OK: 30 puntos (dividido entre endpoints)
- Resources within limits: 20 puntos
- No critical errors in logs: 10 puntos
Estado general:
- HEALTHY: score >= 90
- DEGRADED: score >= 70 && < 90
- CRITICAL: score < 70
## Parametros
Parametros requeridos:
- `services`: lista de servicios a verificar (default: todos configurados)
Parametros opcionales:
- `include_resources`: verificar recursos del sistema (default: true)
- `include_logs`: verificar logs recientes (default: true)
- `log_timeframe`: ventana de logs a verificar (default: "15 minutes ago")
- `output_format`: "markdown" o "json" (default: "markdown")
## Configuracion
Ejemplo de configuracion en agent YAML:
```yaml
health_check:
services:
- name: myapp
host: localhost
health_url: http://localhost:8080/health
dependencies:
- http://db.example.com:5432
- name: worker
host: localhost
health_url: http://localhost:8081/health
thresholds:
cpu_warning: 70
cpu_critical: 90
memory_warning: 80
memory_critical: 95
disk_warning: 85
disk_critical: 95
check_interval: "5m"
```
## Ejemplo de uso
Usuario: "Verifica la salud de todos los servicios"
Agente:
1. skill_search("health check")
2. skill_load("health-check")
3. Ejecutar verificaciones en orden
4. Calcular score
5. Generar reporte
6. Enviar al usuario
## Alertas automaticas
Esta skill puede configurarse para ejecutarse periodicamente via cron y alertar solo si:
- Score < 90 (DEGRADED o CRITICAL)
- Algun servicio esta down
- Recursos exceden threshold critico
Ver `crons/health-check/` para la configuracion de automatizacion.