plugins/claude-code-homeassistant-hermit/skills/ha-snapshot-restore/SKILL.md
Capture the state of a set of Home Assistant entities (lights, covers, climate, switches) to a named artifact and restore it later via scene.apply. Use to make automation testing reversible — snapshot before a risky change, restore if it misbehaves. Restore of sensitive entities is gated by ha_safety_mode.
npx skillsauth add gtapps/claude-code-hermit ha-snapshot-restoreInstall 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.
Make changes reversible: capture an entity set's current state before testing a new automation or applying a risky change, then restore those exact states if it misbehaves. Capture is read-only; restore actuates devices in one scene.apply call.
${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha snapshot-states --name <label> [--domains light,cover,climate,switch] [--entities <id> ...]
--name labels the snapshot (default snapshot); it becomes part of the artifact filename.--domains selects which domains to capture (comma-separated; default light,cover,climate,switch).--entities captures an explicit list instead of whole domains..claude-code-hermit/raw/snapshot-ha-states-<label>-latest.json (plus a timestamped copy). Only restore-relevant attributes are stored.${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha restore-states <artifact> [--confirm]
Restore is the plugin's one direct device-actuation path, so it runs through the same ha_safety_mode policy as every other actuation:
blocked:true and a suggestion to surface it as a proposal. Non-sensitive entities (lights, climate) restore normally.--confirm. Without it, the command refuses and reports needs_confirm:true. The main session must confirm with the operator before re-running with --confirm — the CLI never prompts..claude-code-hermit/raw/audit-ha-restore-*.Capture prints { ok, name, captured, entities, report_path, message }.
Restore prints { ok, blocked, needs_confirm, applied, entities, sensitive, reason, ... }. Exit code is 0 only when ok is true.
captured: 0; restore reports an error.scene.apply; for cover position and climate setpoints the result depends on what HA's scene integration can reproduce — verify the outcome rather than assuming an exact match.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.