# crons/ — Catálogo de automatizaciones

Directorio central de automatizaciones nombradas para los agentes. Cada subdirectorio es una
automatización reutilizable que puede aplicarse a uno o más agentes.

## Estructura de una automatización

```
crons/<nombre>/
  schedule.yaml          # spec: descripción, cron por defecto, acción
  prompts/
    message.md           # plantilla de mensaje (send_message)
    prompt.md            # prompt para el LLM (llm_prompt)
```

## Convención de `schedule.yaml`

```yaml
# Metadata
name: nombre-de-la-automatizacion
description: "Descripción breve"

# Cron por defecto (el agente puede sobreescribir en su config.yaml)
default_cron: "0 9 * * *"

# Acción
action:
  kind: send_message          # send_message | llm_prompt
  template: prompts/message.md  # relativo a la raíz del proyecto

# Sala por defecto (opcional; el agente debe sobreescribir con output_room)
default_output_room: ""
```

> **Nota**: `template` es relativo a la **raíz del proyecto**, no a la carpeta de la automatización.
> Usa siempre la ruta completa desde la raíz: `crons/<nombre>/prompts/message.md`.

## Automatizaciones disponibles

| Nombre | Tipo | Cron por defecto | Descripción |
|--------|------|-----------------|-------------|
| `good-morning` | `send_message` | `0 9 * * *` | Saludo de buenos días |
| `daily-summary` | `llm_prompt` | `0 18 * * *` | Resumen diario del equipo |

## Scripts de gestión

```bash
# Crear nueva automatización (interactivo)
./dev-scripts/cron/new.sh

# Listar todas las automatizaciones con descripción
./dev-scripts/cron/list.sh

# Aplicar automatización a un agente (parchea config.yaml)
./dev-scripts/cron/apply.sh <nombre> <agent-id>
```

## Cómo añadir manualmente a un agente

En `agents/<id>/config.yaml`:

```yaml
schedules:
  - name: good-morning
    cron: "0 9 * * *"
    output_room: "!TUROOM:matrix-af2f3d.organic-machine.com"
    action:
      kind: send_message
      template: "crons/good-morning/prompts/message.md"
```

Ajusta `output_room` con la sala real del agente. El campo `cron` puede sobreescribir el
`default_cron` del catálogo.
