Skip to content
Automation
Skill

/hermit-routines

Schedules routines via one native plugin monitor (zero-token skips); CronCreate fallback where Monitor is unavailable. hermitd:heartbeat-restart stays a CronCreate re-arm anchor.

From plugin
hermitd
8288 skills12 agents

Claude Code

$ npx -y skills add gtapps/hermitd --skill hermit-routines --agent claude-code

SKILL.md

hermit-routines.SKILL.md
name: hermit-routines
description: Schedules routines via one native plugin monitor (zero-token skips); CronCreate fallback where Monitor is unavailable. hermitd:heartbeat-restart stays a CronCreate re-arm anchor.

Routines

Register and manage scheduled routines. Where the Monitor tool is available, all enabled routines except `hermitd:heartbeat-restart` run from ONE native plugin monitor that decides eligibility outside the session — a skipped fire costs zero model tokens. `hermitd:heartbeat-restart` stays a CronCreate **re-arm anchor**: its skill IS `load`, so its daily fire re-arms the monitor and the anchor CronCreate — and, unless `heartbeat.enabled` is explicitly false, restores the heartbeat monitor too. The watchdog re-arms a monitor whose liveness has gone stale as a second net, on a resting session too. Where Monitor is unavailable (Bedrock/Google Cloud Agent Platform/Foundry, `DISABLE_TELEMETRY`/`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`), `load` falls back to per-routine CronCreates.

Usage

/hermitd:hermit-routines load              register/reconcile: monitor mode if available, else CronCreate diff-register
/hermitd:hermit-routines load --reset      unconditional reset: tear down + recreate everything
/hermitd:hermit-routines run <ids>          [internal] ROUTINE_DUE handler — invoked by the monitor's notification
/hermitd:hermit-routines list               list configured routines from config.json
/hermitd:hermit-routines status              show monitor/anchor state (or CronCreate registrations in fallback mode)
/hermitd:hermit-routines stop [id]           stop the monitor (or a specific fallback-mode CronCreate)
/hermitd:hermit-routines stop --all          stop everything

`list`, `status`, `stop` and the notes live in `reference.md`, beside this file in the skill's **Base directory** — `Read` it for those. `load` and `run` stay here: every always-on launch pays for them.

Plan

load

Called automatically by `hermitd-start.ts` on always-on launches. Can also be called manually to apply config changes mid-session.

1. Use the harness-substituted `${CLAUDE_PLUGIN_ROOT}` paths below. Copy absolute commands into any CronCreate-delivered prompt at registration; the plugin root is NOT a Bash env var at runtime.

**Validate the plugin scripts before proceeding.** Run `test -f "${CLAUDE_PLUGIN_ROOT}/scripts/routines.ts"` (the `arm`/`precheck`/`finish` verbs all live in it) and `test -f "${CLAUDE_PLUGIN_ROOT}/scripts/routine-monitor.sh"`. If either fails, abort `load` immediately (do not register/delete anything) and log one line: `Routine load aborted: plugin scripts not found at "${CLAUDE_PLUGIN_ROOT}". No routines registered or reset.` 2. **Ask what needs arming:**

   bun ${CLAUDE_PLUGIN_ROOT}/scripts/routines.ts arm begin .hermit ${CLAUDE_PLUGIN_ROOT} --session-id "${CLAUDE_SESSION_ID}"

It reads config, the runtime mirror and both liveness files, and prints the whole plan as one JSON object. Append ` --reset` for `load --reset` (below). Branch on `status`:

  • **`healthy`**: the monitor is registered, ticking, and current; the anchor and heartbeat legs are too. **Log that one line and stop.** Re-arming a healthy monitor is pure spend.
  • **`guest`**: log the line and stop.
  • **`restart_required`**: report that the resident must be restarted to pick up the new plugin path. Stop without arming anything.
  • **`arm`**: execute the plan in step 3. Optional keys appear only when they apply.
  • An **`error`** (`check_error:<reason>`, exit 1) means the verb could not read `config.json` or the mirror, so it planned nothing. Abort `load`: register or delete nothing, and log `Routine load aborted: arm check failed: <reason>. No routines registered.`

3. **Execute the `arm` plan.** Fetch `select:CronCreate,CronList,CronDelete` in one `ToolSearch`. Then:

  • `heartbeat` (`interval`, `first_start`): the heartbeat leg needs registration; pass `--heartbeat native` at commit. Without it the leg is current or disabled; pass `--heartbeat none`.
  • `first_transition`: `CronList`, then delete every non-anchor `[hermit-routine:*]` entry before replacing them with the native poller.
  • `monitor_skip`: no routine registration is needed; pass `none` as its commit argument.
  • `activate`: invoke that skill once via the `Skill` tool, even when both legs need registration. The host starts the two resident-guarded supervisors on dispatch.
  • Execute `delete` / `create` through the **CronCreate flow** below.

4. **Commit:**

   bun ${CLAUDE_PLUGIN_ROOT}/scripts/routines.ts arm commit .hermit ${CLAUDE_PLUGIN_ROOT} <native|none> --created "<succeeded-csv>" --heartbeat <native|none>

Use `native` for the routine leg unless `monitor_skip` was set. Append ` --reset` when `begin` got it. The verb accepts a live supervisor PID or waits up to 10 seconds for liveness, then writes runtime and the registry mirror.

  • `armed` (`scheduled`, `anchor`): log it.
  • `fallback` (`liveness_absent`): go to Step 3-F. This also covers hosts that skip native monitors because the Monitor tool is unavailable.
  • `heartbeat`: the independent heartbeat result. Log `registered`; for `dead`, report that the heartbeat will not run this session.

5. **Step 3-F, fallback** (only after `fallback`): run

   bun ${CLAUDE_PLUGIN_ROOT}/scripts/routines.ts arm begin .hermit ${CLAUDE_PLUGIN_ROOT} --fallback --session-id "${CLAUDE_SESSION_ID}"

This re-plans over the full enabled set without activation or a heartbeat leg. Execute its `delete`/`create` through the **CronCreate flow** below, then commit with `arm commit .hermit ${CLAUDE_PLUGIN_ROOT} fallback --created "<succeeded-csv>" --heartbeat none`.

**CronCreate flow** (executes the `delete`/`create` lists from any `arm begin` plan: monitor-mode anchor, fallback, or `--reset`). Report each `warnings` entry's `message` as a scheduler warning, including when all registrations are kept.

Read more
@gtapps
Ships withhermitd

Run an always-on Claude Code agent on your own machine, for you or your team. Start sessions from your chat in any project it can reach, on the model and effort you choose, and steer them through the agent or take over in the Claude app or CLI.

8288 skills12 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
82
Star history of gtapps/claude-code-hermit on GitHub, a chart by star-history.com

Other skills on hermitd.

bump-core-req

bump-core-req

Updates the minimum core version requirement for a fleet plugin in all three canonical places: `required_core_version` and…

@gtapps@gtappsInstall Skill
commit

commit

Changelog and commit — lightweight motion for day-to-day plugin dev work in the monorepo. One commit per plugin scope; CHANGELOG…

@gtapps@gtappsInstall Skill
docs-drift

docs-drift

Documentation-drift audit for the plugin monorepo. Audits either each scoped plugin's unreleased changelog claims or its latest…

@gtapps@gtappsInstall Skill
downstream-impact

downstream-impact

Explain in plain language what a fix, feature, PR, or plan will actually change for downstream hermits and the operators chatting…

@gtapps@gtappsInstall Skill
fleet-release

fleet-release

Use this skill whenever the user wants to release, ship, prep, or cut versions for two or more plugins together on the current…

@gtapps@gtappsInstall Skill
pipeline-digest

pipeline-digest

Daily release-pipeline digest with a change gate — reports which plugins are pending release, whether main's CI is green, which…

@gtapps@gtappsInstall Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n11d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about hermit-routines.

Which coding agents can use hermit-routines?
hermit-routines installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.