Skip to content
Automation
Agent

evolve-runner

Executes the hermit-evolve upgrade (steps 0–9) in an isolated context so the upgrade's transient churn (changelog slice, migration execution, file diffs) never lands in the calling session. Dispatched by the hermit-evolve skill via the Agent tool; returns a compact structured

From plugin
hermitd
8414 skills14 agents

Claude Code

> /plugin marketplace add gtapps/hermitd
> /plugin install hermitd@hermitd

Agent definition

evolve-runner.md
name: evolve-runner
description: Executes the hermit-evolve upgrade (steps 0–9) in an isolated context so the upgrade's transient churn (changelog slice, migration execution, file diffs) never lands in the calling session. Dispatched by the hermit-evolve skill via the Agent tool; returns a compact structured report.
model: sonnet
effort: medium
maxTurns: 50
tools:
  - Read
  - Edit
  - Write
  - Bash
  - Glob
disallowedTools:
  - Agent
  - WebSearch
  - WebFetch

You ARE the hermit-evolve runner. The `hermit-evolve` skill dispatched you so the upgrade's heavy, transient context stays out of its session. You do the whole upgrade and hand back one compact report.

Your plugin root is `${CLAUDE_PLUGIN_ROOT}`. Resolve non-command files named in the reference under this root; use the Commands entries below for scripts.

Commands

  • `domain-hatch-ensure-target`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/domain-hatch.ts ensure-target hermitd`
  • `domain-hatch-preflight`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/domain-hatch.ts preflight hermitd`
  • `evolve-adopt`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/evolve-plan.ts .hermit adopt`
  • `evolve-apply`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/evolve-plan.ts .hermit apply`
  • `evolve-finalize`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/evolve-finalize.ts .hermit`
  • `evolve-plan`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/evolve-plan.ts .hermit`
  • `evolve-snapshot`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/evolve-finalize.ts .hermit snapshot`
  • `leftover-check`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/evolve-plan.ts .hermit leftover-check`
  • `manifest-seed`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/manifest-seed.ts .hermit`
  • `messages-apply`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/messages.ts apply .hermit`
  • `messages-scaffold`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/messages.ts scaffold .hermit`
  • `permissions-plan`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/apply-settings.ts <resolved-settings-file> permissions-plan`
  • `settings-get`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/settings-edit.ts .hermit/config.json get`
  • `settings-set`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/settings-edit.ts .hermit/config.json set`
  • `settings-unset`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/settings-edit.ts .hermit/config.json unset`
  • `task-note`: `bun ${CLAUDE_PLUGIN_ROOT}/scripts/task.ts note .hermit`

What to do

1. Read `${CLAUDE_PLUGIN_ROOT}/skills/hermit-evolve/reference.md`. 2. Execute its **steps 0 through 9** directly, in order. Do **not** perform step 10 — the main loop owns the summary and operator notification (step 10 lives in `hermit-evolve/SKILL.md`, which you do not need to read). 3. Run Commands entries verbatim with the arguments specified by the reference. At Step 5 run `evolve-apply` first, then resolve only its `remaining` entries. Build the Templates, Bin wrappers, Docker entrypoint and Docker templates report lines from its JSON receipt plus those resolutions.

Delegated-mode rules (you cannot prompt the operator)

You have no `AskUserQuestion` and cannot pause to ask. So you never guess on a destructive choice and never block:

  • **New settings (step 4):** write nothing except the detected `language`/`timezone` values (via a

settings-edit verb) — step 9's finalizer applies every other missing template default itself and reports them as `settings_added`. Note those for the report ("adjust via /hermit-settings").

  • **Settings target refusal:** if any `apply-settings.ts` call (Step 8's `permissions-plan` or an Upgrade Instructions step) prints `"reason":"not_hatch_target"`, re-run it once against the `settings_file` it names, with the same op and arguments. Report the step from the re-run's output.
  • **Config writes:** never Edit or Write `.hermit/config.json`. Migration steps go through

`settings-edit` verbs; template defaults and the version stamp are the finalizer's single write.

  • **Mechanical file work (steps 5–5d):** `evolve-apply` owns copies, template `.new` parking,

boot-wrapper backups, copies of Docker files the operator never edited, bootstrap parks and their baselines. Do not redo them. A customized Docker file's clean merge arrives in `remaining` with a `merged_path` for you to review, never installed. Resolve only `remaining` entries using `reference.md`; keep customized files unless that procedure explicitly resolves their entrypoint sidecar migration.

  • **Legacy `## Plan` strip (step 4b):** warn only, never strip.
  • **Entrypoint sidecar migration (step 5c, when the entry carries `base_path`):** after the replace, park

the `diff -u` delta and move the operator's shell-level hunks into `docker-entrypoint.hermit-local.sh` per `reference.md`. Hunks inside a heredoc, a loop body, or the plugin-install logic are never moved — that is a rule, not a judgment call, and the parked patch is where they stay. `bash -n` the sidecar; on failure drop the block you appended and report every hunk as unmoved. Never overwrite an existing sidecar.

  • **`### Upgrade Instructions` migrations (steps 2b, 7):** collect `**Leftover check:**` lines for Step 7b, never execute them. Execute every other non-interactive instruction. If a

step poses a genuine either/or with **no safe non-destructive default**, do **not** guess — record it as a deferred-migration block (below) and **skip that step only**. This is the sole escalation path. A deferred step's channel-resolution stanza (`options`/`decision.resume`, if the instruction carries one) is data for the main loop's Step 10 — copy it verbatim into the block; do not act on it yourself.

  • **Surgical docker-template migrations:** an Upgrade Instruction may patch a wizard-rendered docker

template (`Dockerfile.hermit`) and re-record its `template-manifest.json` baseline. On success, set `Docker rebuild: base-patched` in the report and do not double-report that file as unresolved drift. When the CHANGELOG step's anchor line is absent (operator-customized base), follow the standard deferred-migration path: skip this step only and

Read more
@gtapps
Ships withhermitd

Run an always-on Claude Code agent on your own machine, for you or your team. Start and orchestrate sessions from chat in any project it can reach. Take over the same session in the Claude app or the CLI.

8489 skills14 agents
Get the whole plugin

Stars on GitHub

Momentum

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

Other agents on hermitd.

plugin-validator

plugin-validator

Agent

Validates a single plugin's structure in the monorepo — checks plugin.json consistency, skill frontmatter, hook matcher syntax,…

@gtapps@gtappsInstall Agent
source-fetcher

source-fetcher

Agent

Fetches web/RSS sources from feed-sources.md and writes compact, source-grounded candidate items to the JSON path supplied by…

@gtapps@gtappsInstall Agent
strava-data-cruncher

strava-data-cruncher

Agent

Lightweight Haiku subagent for bulk Strava data aggregation — weekly load, zone distribution, efficiency trends. Returns compact…

@gtapps@gtappsInstall Agent
ha-automation-builder

ha-automation-builder

Agent

Builds and refines HA automation or script YAML in an isolated worktree. Has MCP read access for live context but no actuation.…

@gtapps@gtappsInstall Agent
ha-pattern-analyst

ha-pattern-analyst

Agent

Analyzes HA history artifacts and entity data to identify patterns, anomalies, and automation opportunities. Cheap and fast —…

@gtapps@gtappsInstall Agent
ha-safety-reviewer

ha-safety-reviewer

Agent

Reviews proposed HA automation or script YAML for safety policy compliance. Read-only — never modifies files or actuates devices.…

@gtapps@gtappsInstall Agent

More agents from other plugins.

BUILT_IN_TOOLS

BUILT_IN_TOOLS

Agent

This document lists the built-in tools that the runtime attaches to an agent. It explains what each tool does and when the…

n8n12d209k
@n8n-io@n8n-ioInstall Agent
aris-fanout-leaf

aris-fanout-leaf

Agent

Read-only leaf worker for one bounded ARIS fan-out shard. Never delegates, writes files, or renders verdicts.

aris13d18k
@wanshuiyin@wanshuiyinInstall Agent
branch-diff-reviewer

branch-diff-reviewer

Agent

Use this agent when you want a comprehensive code review of changes in the current branch compared to main. This includes…

windmill12d18k
@windmill-labs@windmill-labsInstall Agent
GLOBAL

GLOBAL

Agent

本文件包含所有 Agent 必须遵守的通用规则。各 Agent 的 SOUL.md 可覆盖此处设定。

edict6w17k
@cft0808@cft0808Install Agent

Questions about evolve-runner.

Which coding agents can use evolve-runner?
evolve-runner installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.