reflect-scheduled-checkslisted
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