← ClaudeAtlas

scheduled-job-runnerlisted

Use when a scheduled job silently does nothing, reports success after failing, or needs to move onto a common runner. Ships a tested execution adapter that pins the interpreter, enforces timeouts, records every run with a real exit code, and locks its ledger. Prevents the failure where cron picks an interpreter by file extension and the job dies on a missing import nobody sees.
TechNickAI/hermes-skills · ★ 0 · Data & Documents · score 76
Install: claude install-skill TechNickAI/hermes-skills
# Scheduled Job Runner ## When to use Creating, fixing, migrating, or reviewing ANY scheduled job on the fleet — Hermes cron `script:` jobs, `no_agent` watchdogs, shell wrappers around Python, or a job that is noisy, silently failing, delivering nowhere, overlapping itself, or missing dependencies. Trigger phrases: "this job is noisy", "the cron failed silently", "job output went to the wrong place", "wrap this script for cron", "why did this job not run", "add a scheduled job", "should this use uv". ## Overview One execution adapter for every scheduled job. Hermes cron remains the **scheduler**; `jobrun.py` is the **runner** the job's `script:` field points at. It exists because scheduled jobs tend to each re-implement the same handful of concerns, badly and inconsistently, once a setup grows past a few of them. **Do not build another scheduler.** Do not adopt `cronic` — it exits 0 after a child failure, which blinds the Hermes failure alert. ### Install the runner first The runner ships with this skill at `scripts/jobrun.py`. Nothing installs it for you -- copy it to where your scheduler will find it, then prove it works before wiring a single job to it: ```bash mkdir -p "$HERMES_HOME/scripts" cp scripts/jobrun.py "$HERMES_HOME/scripts/jobrun.py" chmod +x "$HERMES_HOME/scripts/jobrun.py" python3 "$HERMES_HOME/scripts/jobrun.py" --selftest # 26 checks, real processes ``` The self-test spawns real processes and asserts real exit codes; it is the gate, not a smoke