← ClaudeAtlas

reflect-scheduled-checkslisted

Standalone routine skill for interval-triggered scheduled checks. Runs one due check, gates findings through reflection-judge + proposal-triage, applies state, and logs. Run as a daily routine — not called by reflect.
gtapps/claude-code-hermit · ★ 59 · AI & Automation · score 81
Install: claude install-skill gtapps/claude-code-hermit
# Reflect Scheduled Checks Standalone routine skill. Runs at most one due interval-triggered scheduled check per invocation, gates any findings through the normal proposal pipeline, applies state, and appends a Progress Log entry. Invoked by the `scheduled-checks` routine (daily, offset from reflect). ## What counts as a scheduled check Any skill registered in `config.scheduled_checks` that satisfies this contract: - **Idempotent** — running twice in a row is safe. - **Returns findings or nothing** — either a concrete actionable/contextual observation, or silence. - **No self-scheduling** — cadence is owned by `scheduled_checks.interval_days`. - **Short-running, read-mostly** — does not block or produce side effects on success. ## Steps ### 1. Load context Read `config.json → scheduled_checks` (filter to `enabled: true`, `trigger: "interval"`). Read `state/reflection-state.json → scheduled_checks` (per-check state: `last_run`, `last_unavailable_at`, `last_error_at`, `consecutive_empty`). ### 2. Filter due checks From the enabled interval entries, keep those where: - `last_run` is null or older than `interval_days` days, AND - `last_unavailable_at` is null or older than **4 hours** (transient cooldown — skill may have been briefly unavailable), AND - `last_error_at` is null or older than `interval_days` days (persistent back-off for true errors) ### 3. Pick one Select the entry with the oldest `last_run` (null sorts first). If none are due, skip to the Progress Log