From claude-code-hermit
Validates post-hatch Claude Code Hermit setup: checks config.json, OPERATOR.md, plugin references, routines, scheduled checks, and state templates. Outputs PASS/WARN/FAIL report.
npx claudepluginhub gtapps/claude-code-hermit --plugin claude-code-homeassistant-hermitThis skill uses the workspace's default tool permissions.
Validate the post-hatch setup. Produces a structured report with PASS/WARN/FAIL per check.
Runs six read-only health checks on hermit installation: config validity, hooks, state integrity, cost budget, proposals, permissions. Use for diagnostics, pre-release verification, or troubleshooting.
Runs comprehensive diagnostics on Claude Code environment: plugins, settings, hooks, MCP servers. Identifies issues, supports --fix and --verbose.
Run plugin integrity checks — validates configs, scripts, skills, hooks, agents, and runs test suite.
Share bugs, ideas, or general feedback.
Validate the post-hatch setup. Produces a structured report with PASS/WARN/FAIL per check.
Track passed, warnings, failures counts. Collect output lines for the final report.
.claude-code-hermit/config.json
config.json missing or invalidconfig.json parsed${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json to get the current plugin versionconfig._hermit_versions["claude-code-hermit"] with the plugin version
version matches plugin (X.Y.Z)config version X.Y.Z != plugin X.Y.Z — run /claude-code-hermit:hermit-evolveagent_name, channels, env, heartbeat
missing required key: <key>.claude-code-hermit/OPERATOR.md exists
OPERATOR.md missing — run hatch or create manuallyOPERATOR.md is empty — fill in project context{{ placeholder patterns (NOT <!-- which are legitimate HTML comments)
OPERATOR.md contains unfilled {{ placeholdersOPERATOR.md readablescheduled_checks array from config.jsonskill field (format: /plugin:skill-name or plugin:skill-name)${CLAUDE_PLUGIN_ROOT}/../<plugin>/skills/<skill-name>/SKILL.mdscheduled_checks[N]: <id> resolvesscheduled_checks[N]: skill not found at <path> — may be installed globally (sibling directory layout is not guaranteed for marketplace installs)routines array from config.jsonid, schedule, skill, enabled): FAIL per missing keytime or days keys are present: FAIL routine "<id>" uses legacy "time"/"days" — migrate to "schedule" (5-field cron)schedule is a 5-field cron expression (space-separated, 5 fields: min hour dom month dow): FAIL if malformedskill contains : (plugin:skill-name format): FAIL with expected formatroutine "<id>" valid (<schedule>, <skill>)Template defaults: ${CLAUDE_PLUGIN_ROOT}/state-templates/ — alert-state.json.template, micro-proposals.json.template.
For each file: parse JSON. If missing or unparseable, rewrite from the corresponding template. If parseable but wrong shape, repair in place — backfill missing keys from template defaults, overwrite keys that exist with the wrong type, preserve all other existing data. Emit one WARN per file that needed repair (noting what was fixed), or PASS if valid.
.claude-code-hermit/state/alert-state.json — object with: alerts (object), self_eval (object), total_ticks (number), last_digest_date (any, presence required)
alerts: {}, self_eval: {}, total_ticks: 0, last_digest_date: null) → WARN alert-state.json repaired: <keys>.claude-code-hermit/state/micro-proposals.json — object with pending key (array)
pending key (and active key present): migrate — read active value; if non-null, set pending: [<active value>]; if null, set pending: []; remove active key → WARN micro-proposals.json migrated: active → pendingpending key (and no active key): add "pending": [] → WARN micro-proposals.json missing pending key — backfilledpending is not an array: overwrite with [] → WARN micro-proposals.json pending is not an array — reset"Smoke test — channel is working." (include agent name if configured)<channel> test message sent<channel> test message failed: <error><channel> plugin not available for testOutput each check result as exactly one line:
PASS config.json parsed and version matches plugin (0.3.4)
WARN OPERATOR.md contains unfilled {{ placeholders
WARN scheduled_checks[0]: skill not found at ../claude-code-setup/skills/claude-automation-recommender — may be installed globally
PASS routine "heartbeat-restart" valid (0 4 * * *, claude-code-hermit:heartbeat start)
PASS routine "morning" valid (0 9 * * *, claude-code-hermit:reflect)
FAIL routine "bad" uses legacy "time" field — migrate to "schedule" (5-field cron)
Summary line at end:
Smoke test: 4 passed, 1 warning, 1 failed
For each FAIL, include a remediation hint on the same line or the line after.