/ha-automation-diff
Report which Home Assistant automations were added, removed, edited, enabled, or disabled since the last snapshot — change memory across sessions, including UI edits that bypass this plugin. Read-only. Use when the operator asks "what changed", "what moved since last time", or
Claude Code
$ npx -y skills add gtapps/hermitd --skill ha-automation-diff --agent claude-code
Codex
$ npx skills add gtapps/hermitd --skill ha-automation-diff -a codex -y
Cursor
$ npx skills add gtapps/hermitd --skill ha-automation-diff -a cursor -y
Gemini CLI
$ npx skills add gtapps/hermitd --skill ha-automation-diff -a gemini-cli -y
GitHub Copilot
$ npx skills add gtapps/hermitd --skill ha-automation-diff -a github-copilot -y
OpenCode
$ npx skills add gtapps/hermitd --skill ha-automation-diff -a opencode -y
Windsurf
$ npx skills add gtapps/hermitd --skill ha-automation-diff -a windsurf -y
SKILL.md
ha-automation-diff.SKILL.mdname: ha-automation-diff
description: Report which Home Assistant automations were added, removed, edited, enabled, or disabled since the last snapshot — change memory across sessions, including UI edits that bypass this plugin. Read-only. Use when the operator asks "what changed", "what moved since last time", or to explain a regression.
allowed-tools:
- Bash
- Read
HA Automation Diff
Purpose
`ha-safety-audit` catches POLICY drift at a point in time. This skill catches CHANGE drift: which automations were added, removed, edited, enabled, or disabled since the last snapshot — including edits made directly in the HA UI that bypass `ha-build-automation`. It gives the hermit a memory of "what moved" between sessions, which is what explains regressions and keeps the estate legible.
It is read-only against Home Assistant: it enumerates automations, hashes each stored config, and diffs against the previous snapshot.
Steps
1. Run `${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha automation-diff`. 2. The command writes a JSON snapshot to `.hermit/raw/snapshot-ha-automations-latest.json` (the baseline for the next run) and a markdown findings artifact under `.hermit/raw/audit-ha-automation-diff-*`, and prints one JSON object: `date`, `tracked`, `changes` (each `change`, `name`, `id`, in display order) and the `untracked` count, or `{"status":"baseline","reason":"no_prior_snapshot","date","tracked"}` on the first run. 3. Render the findings block below from it.
Output contract
One line per `changes` entry; leave out the `Untracked` line when `untracked` is 0:
ha-automation-diff findings — YYYY-MM-DD
Changes since last snapshot: K
- added: <name> (`<id>`)
- removed: <name> (`<id>`)
- edited: <name> (`<id>`)
- disabled: <name> (`<id>`)
- enabled: <name> (`<id>`)
Untracked (YAML-packaged, config not diffable): M
First run (`status` is `baseline`): `Baseline established. (<tracked> automations tracked)` under the header.
No changes (`changes` is empty): `No changes since last snapshot. (<tracked> automations tracked)` in place of the `Changes since last snapshot` and change lines.
Failure modes
- HA unreachable or erroring: the CLI prints `{"error":"ha_unreachable:<detail>"}` or `{"error":"ha_http_<status>:<detail>"}` and exits 1. Treat either as "skipped, cannot diff"; do not retry automatically.
- YAML-packaged automations have no numeric id and are not REST-retrievable, so their config is not diffable. They are counted under "Untracked" rather than silently dropped — the diff is honest about what it does not cover.
Read more
name: ha-automation-diff description: Report which Home Assistant automations were added, removed, edited, enabled, or disabled since the last snapshot — change memory across sessions, including UI edits that bypass this plugin. Read-only. Use when the operator asks "what changed", "what moved since last time", or to explain a regression. allowed-tools: - Bash - Read
HA Automation Diff
Purpose
`ha-safety-audit` catches POLICY drift at a point in time. This skill catches CHANGE drift: which automations were added, removed, edited, enabled, or disabled since the last snapshot — including edits made directly in the HA UI that bypass `ha-build-automation`. It gives the hermit a memory of "what moved" between sessions, which is what explains regressions and keeps the estate legible.
It is read-only against Home Assistant: it enumerates automations, hashes each stored config, and diffs against the previous snapshot.
Steps
1. Run `${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha automation-diff`. 2. The command writes a JSON snapshot to `.hermit/raw/snapshot-ha-automations-latest.json` (the baseline for the next run) and a markdown findings artifact under `.hermit/raw/audit-ha-automation-diff-*`, and prints one JSON object: `date`, `tracked`, `changes` (each `change`, `name`, `id`, in display order) and the `untracked` count, or `{"status":"baseline","reason":"no_prior_snapshot","date","tracked"}` on the first run. 3. Render the findings block below from it.
Output contract
One line per `changes` entry; leave out the `Untracked` line when `untracked` is 0:
ha-automation-diff findings — YYYY-MM-DD Changes since last snapshot: K - added: <name> (`<id>`) - removed: <name> (`<id>`) - edited: <name> (`<id>`) - disabled: <name> (`<id>`) - enabled: <name> (`<id>`) Untracked (YAML-packaged, config not diffable): M
First run (`status` is `baseline`): `Baseline established. (<tracked> automations tracked)` under the header.
No changes (`changes` is empty): `No changes since last snapshot. (<tracked> automations tracked)` in place of the `Changes since last snapshot` and change lines.
Failure modes
- HA unreachable or erroring: the CLI prints `{"error":"ha_unreachable:<detail>"}` or `{"error":"ha_http_<status>:<detail>"}` and exits 1. Treat either as "skipped, cannot diff"; do not retry automatically.
- YAML-packaged automations have no numeric id and are not REST-retrievable, so their config is not diffable. They are counted under "Untracked" rather than silently dropped — the diff is honest about what it does not cover.
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.
Other skills on hermitd.
More skills from other plugins.
browser-use
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
Questions about ha-automation-diff.
- Which coding agents can use ha-automation-diff?
- ha-automation-diff 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.

