plugins/claude-code-hermit/skills/daily-auto-close/SKILL.md
Daily routine that closes the current session at midnight when the operator has been idle ≥10 minutes. Queues a pending close (drained by heartbeat) when the operator is currently active. Intended to fire via the `daily-auto-close` routine; safe to invoke manually.
npx skillsauth add gtapps/claude-code-hermit daily-auto-closeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Closes long-running daemon sessions on a daily cadence so cross-session learning surfaces (reflect, weekly-review, hermit-brain, hermit-evolution) have archives to work with.
The skill is invoked by the daily-auto-close routine at 0 0 * * * (local). The routine prompt is prefixed [hermit-routine:daily-auto-close] so scripts/record-operator-action.ts does not bump state/last-operator-action.json (load-bearing: this skill reads that clock to decide whether to close now or queue).
Read .claude-code-hermit/state/runtime.json (session_state).
Read .claude-code-hermit/state/last-operator-action.json (at).
Check whether .claude-code-hermit/state/pending-close.json exists.
Branch:
a. session_state not in {"in_progress", "idle"} — nothing to close.
pending-close.json exists → delete it (stale flag from a prior session that already closed). Use the Bash tool: rm -f .claude-code-hermit/state/pending-close.json.routine-metrics.jsonl (no-op events are not part of the log-routine-event.sh vocabulary: fired, skipped-waiting, started).b. session_state in {"in_progress", "idle"} AND now - last_operator_action > 10min — safe lull; close directly.
/claude-code-hermit:session-close --auto. The auto-close path archives the session and clears pending-close.json itself on archive success.c. session_state in {"in_progress", "idle"} AND now - last_operator_action ≤ 10min — operator is currently active; queue.
.claude-code-hermit/state/pending-close.json with {"queued_at":"<now ISO>","queued_by":"daily-auto-close"} (singleton; overwrite unconditionally). Use the Write tool.AUTO_CLOSE on the next tick where the operator has been idle >10 minutes.If last-operator-action.json is absent, unreadable, or has no valid at timestamp: treat as "operator has been idle indefinitely" → take branch (b) (close directly). Fail-open: it's better to close an arguably-still-active session than to leak the routine into perpetual noop.
Auto-closed S-NNN notification from /session-close --auto is the only operator-facing signal.scripts/heartbeat-precheck.ts.tools
Composes and delivers the daily fitness brief — a forward-looking morning read (readiness + today's plan) or a backward-looking evening read (today's training, or an earned-rest note, + tomorrow's setup) — in the operator's configured voice. Invoke with /claude-code-fitness-hermit:fitness-brief --morning|--evening|--slot <name>. Becomes the plugin's two daily beats — the morning Strava connectivity check and the evening activity sync, RPE binding, and Run deep-dive.
development
Renew the hermit's long-lived Claude login token over the channel, before it expires. Relays a one-time sign-in link to the operator, takes the code back, installs the new token, and restarts. Activates on messages like 'relogin', 'renew my login', 'reauth', 'the login is expiring', or when doctor's credential-expiry check flags setup-token.
development
Synthesizes the past 7 days of archived briefs into a weekly digest — top stories, emerging vs faded themes, category activity, and per-source performance built from archive frontmatter. Delivers to the operator's configured channel and archives a weekly note. Designed as a weekly routine. Invoke with /feed-hermit:weekly-digest.
development
Manage developing story arcs tracked across briefs — add, resolve, and list active arcs in compiled/story-arcs-*.md. Arc Watch keywords drive the feed-brief arc-tagging enrichment. Invoke with /feed-hermit:story-arcs add|resolve|list.