puruto-cron
¿Qué es puruto-cron?
puruto-cron es el scheduler local de jobs asíncronos del ecosistema. Permite programar tareas que se ejecutan automáticamente, con persistencia local en SQLite y notificaciones JSONL (MVP scaffold).
Cuándo usarlo
- Backups periódicos de
puruto-data - Reportes automáticos (ej: resumen semanal de finanzas)
- Sincronización con servicios externos en horarios programados
- Alertas o notificaciones basadas en condiciones de los datos
Generarlo
python3 .claude/skills/puruto-generator/scripts/generate.py --name puruto-cronFuncionamiento
puruto-cron usa SQLite para persistir jobs y runs. El scaffold crea tablas jobs y runs.
La estructura real incluye campos como:
job_id,enabled,puruto_target,schedule,promptnext_run_at,last_run_atlease_owner,lease_expires_attimeout_sec,max_retries,retry_backoff_sec
Ciclo de vida de un job
- El job se declara en
.jobs.jsony se sincroniza conmain.py sync-jobs - El scheduler comprueba qué jobs deben ejecutarse
- Adquiere un lease/lock para evitar ejecuciones duplicadas
- Invoca al Puruto target vía
invoker.py(scaffold común, MVP) - Si falla, reintenta con backoff (hasta el límite configurado por job)
- El resultado se registra en SQLite (
runs) y se emite evento de notificación
Notificaciones locales y replicación a puruto-telegram
El scaffold escribe eventos en:
notifications/events.jsonl(local)
Y puede replicarlos al repo hermano puruto-telegram (por defecto):
../puruto-telegram/inbox/cron-events.jsonl
puruto-telegram consume ese inbox con inbox.py / inbox.py --deliver.
Skills incluidas
/init— inicializa la BD SQLite y la estructura de directorios/help— explica cómo usar el scheduler/list— lista todos los jobs configurados/status— muestra estado del scheduler (jobs, runs recientes y rutas de notificación)/logs— inspeccionanotifications/events.jsonlyruns//run-now— fuerza una ejecución puntual de un job