# Cron Scheduler > Gestión de horarios con escalonamiento, horas silenciosas y override de despertar; valida horarios, evita colisiones y bloquea envíos durante las horas silenciosas. Fuente: https://skillsagentes.com/skills/garrytan/gbrain/cron-scheduler Markdown: https://skillsagentes.com/skills/garrytan/gbrain/cron-scheduler.md Repositorio: https://github.com/garrytan/gbrain Autor: garrytan Licencia: MIT Actualizado: hace 2 meses Coste de contexto: 38 tok instalada, 1k tok al activarse, 1k tok con todos los archivos del bundle Bundle: 1 archivo, 4 KB Permisos que pide: search, get_page, put_page ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add garrytan/gbrain --skill cron-scheduler --agent claude-code # Cursor npx -y skills add garrytan/gbrain --skill cron-scheduler --agent cursor # Codex npx -y skills add garrytan/gbrain --skill cron-scheduler --agent codex # Gemini CLI npx -y skills add garrytan/gbrain --skill cron-scheduler --agent gemini # Windsurf npx -y skills add garrytan/gbrain --skill cron-scheduler --agent windsurf # Cline npx -y skills add garrytan/gbrain --skill cron-scheduler --agent cline ``` ## Qué hace - Valida horarios cron para evitar colisiones usando franjas de 5 minutos - Gestiona horas silenciosas (11 PM-8 AM) con override si el usuario está activo - Exige prompts de trabajo cortos que referencian skills/{name}/SKILL.md - Garantiza idempotencia para que los jobs puedan ejecutarse dos veces sin duplicar efectos - Guarda resultados como reports en reports/{job-name}/{YYYY-MM-DD-HHMM}.md ## Cuándo usarla - Programar un nuevo job - Configurar cron - Definir horas silenciosas - Consultar qué jobs están corriendo ## Qué la activa - "Programa un job cron para sincronizar cada 5 minutos" - "Configura las horas silenciosas de este job" - "Qué jobs están corriendo ahora mismo" - "Registra este trabajo con el scheduler evitando colisiones" ## Antes de instalar - Requiere un scheduler host (OpenClaw cron, Railway cron, crontab o gestor de procesos) y, para GBrain, los skills de convención referenciados. ## Archivos - SKILL.md — 4 KB ## SKILL.md Reproducido tal cual desde garrytan/gbrain bajo MIT. Esta sección es el documento original y está en inglés. # Cron Scheduler > **Convention:** See `skills/conventions/test-before-bulk.md` — test every cron job on 3-5 items first. ## Contract This skill guarantees: - Schedule staggering: max 1 job per 5-minute slot, no collisions - Quiet hours gating: timezone-aware, with user-awake override - Thin job prompts: jobs say "Read skills/X/SKILL.md and run it" (no inline 3000-word prompts) - Idempotency: jobs can run twice without duplicate side effects - Results saved as reports: `reports/{job-name}/{YYYY-MM-DD-HHMM}.md` ## Phases 1. **Define job.** Name, schedule (cron expression), skill to run, timeout. 2. **Validate schedule.** Check no collision with existing jobs (5-minute offset rule). - Slots: :05, :10, :15, :20, :25, :30, :35, :40, :45, :50 - If collision detected, suggest the next available slot 3. **Check quiet hours.** Default: 11 PM - 8 AM local time. - Override: user-awake flag (if user is active, quiet hours suspended) - During quiet hours: save output to held queue - Morning contact releases the backlog 4. **Register with host scheduler.** OpenClaw cron, Railway cron, crontab, or process manager. **Each registered entry should execute via Minions, not `agentTurn`.** See `skills/conventions/cron-via-minions.md` for the rewrite pattern (PGLite uses `--follow`, Postgres uses fire-and-forget + `--idempotency-key` on the cycle slot). GBrain's v0.11.0 migration auto-rewrites entries for built-in handlers; host-specific handlers need a code-level registration per `docs/guides/plugin-handlers.md`. 5. **Write thin prompt.** Job prompt is one line: "Read skills/{name}/SKILL.md and run it." ## Idempotency Requirement Every cron job MUST be idempotent: - Running the same job twice produces the same result (no duplicate pages, no duplicate timeline entries) - Use checkpoint state files to track progress and resume interrupted runs - Check for existing output before creating new output ## Output Format Job configuration saved. Report: "Job '{name}' scheduled at {cron expression}. Next run: {time}." ## Multi-source brains: use `sync --all`, not per-source entries When the brain has 2+ active sources (anything `gbrain sources list` shows with a non-null `local_path` that isn't archived), use one consolidated cron line instead of N per-source entries. **Preferred (multi-source)**: ```cron */5 * * * * gbrain sync --all --parallel 4 --workers 4 --skip-failed ``` This replaces N per-source lines AND auto-picks-up future sources without a crontab edit. Concurrency budget: `parallel × workers × 2 ≈ 32` connections during the wave (each per-file worker opens its own 2-connection pool). Stay under your Postgres `max_connections` setting. **Avoid (legacy)**: separate `gbrain sync --source default` and `gbrain sync --source zion-brain` entries staggered by 5 minutes. They require manual deconfliction every time a new source is added, and a slow source can race a fast source on the legacy global `gbrain-sync` lock (v0.40.3.0+ uses per-source `gbrain-sync:` locks but the per-source cron pattern doesn't benefit from the parallelism that `--all --parallel` actually delivers). `gbrain doctor` surfaces the recommended line as a `sync_consolidation` check whenever it detects 2+ active sources. Paste-ready from there. ## Anti-Patterns - Scheduling jobs at the same minute (:00 for everything) - Inline 3000-word prompts in cron jobs (use skill file references) - Running cron jobs without testing on 3-5 items first - Jobs that produce different output on re-run (not idempotent) - Sending notifications during quiet hours (save to held queue instead) - Separate per-source `gbrain sync --source ` cron entries when `gbrain sync --all --parallel N --workers N` would replace them with one line that auto-picks-up future sources. ## Dónde encaja - Categoría: [Automatización](https://skillsagentes.com/categorias/automatizacion.md) — Flujos de varios pasos que se ejecutan sin supervisión. - Creador: [garrytan](https://skillsagentes.com/creators/garrytan.md) — 134 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Setup](https://skillsagentes.com/skills/garrytan/gbrain/setup.md): Configura GBrain con auto-aprovisionamiento de Supabase o PGLite, inyección en AGENTS.md y primera importación. - [Maintain](https://skillsagentes.com/skills/garrytan/gbrain/maintain.md): Chequeos de salud del brain: aplicación de back-links, auditoría de citas, validación de filing, detección de info obsoleta, páginas huérfanas y benchmarks. - [Schema Unify](https://skillsagentes.com/skills/garrytan/gbrain/schema-unify.md): Migra un brain de gbrain-base a la taxonomía de 14 tipos canónicos de gbrain-base-v2 usando gbrain onboard --check y el handler Minion unify-types. - [Retrieval Reflex](https://skillsagentes.com/skills/garrytan/gbrain/retrieval-reflex.md): Cuándo y qué recuperar: abre la página del brain de una entidad relevante antes de responder desde memoria. - [Minion Orchestrator](https://skillsagentes.com/skills/garrytan/gbrain/minion-orchestrator.md): Skill unificado de Minions para jobs deterministas de shell y orquestación de subagentes LLM: cola durable, observable y controlable, más la doctrina de ejecución durable para operaciones largas. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)