Skip to content
Automation
Skill

/ha-automation-explorer

Browse and explain the hermit's Home Assistant automations — list by topic, filter by keyword with plain-language YAML explanations, or sort by last-fired. Read-only. Use when the operator asks "what automations do I have / what does this one do / which haven't fired.

From plugin
hermitd
8489 skills14 agents

Claude Code

$ npx -y skills add gtapps/hermitd --skill ha-automation-explorer --agent claude-code

SKILL.md

ha-automation-explorer.SKILL.md
name: ha-automation-explorer
description: Browse and explain the hermit's Home Assistant automations — list by topic, filter by keyword with plain-language YAML explanations, or sort by last-fired. Read-only. Use when the operator asks "what automations do I have / what does this one do / which haven't fired."
allowed-tools:
  - Bash
  - Read
  - mcp__homeassistant__GetDateTime
  - mcp__homeassistant__llm__GetDateTime

HA Automation Explorer

Read-only. No writes, no proposals, no actuation.

Shared preamble (all modes)

1. Use the session language for all output. 2. Read `.hermit/raw/snapshot-ha-normalized-latest.json`. Check the file's `mtime` with `stat`. If missing or older than 24 hours, append this warning to all output: > "Context snapshot is stale — run `/hermitd-homeassistant:ha-refresh-context` for accurate entity data." 3. Extract `entity_index` and `silence_summary` from the snapshot. Build the automation list: all entries in `entity_index` whose key starts with `automation.`.

Mode 1 — List all automations

Invoked as `/hermitd-homeassistant:ha-automation-explorer` (no args).

1. If the automation list is empty, output: "No automations found in the context snapshot." Stop. 2. Group automations by topic, inferring from `friendly_name` (from `attributes.friendly_name`) and `entity_id`. Buckets (best-effort — no area registry exists):

  • **Security**: alarm, lock, door, gate, camera, motion, presence
  • **Comfort**: climate, temperature, heating, cooling, fan, blind, curtain, cover
  • **Presence**: arrive, leave, away, home, person
  • **Energy**: power, energy, solar, charge, saving
  • **Other**: anything that doesn't fit the above

3. Derive a one-line description from `friendly_name` for each automation. Do not fetch configs here. 4. Mark automations that appear in `silence_summary.dead_automations` with `⚠ dead (N days)`. For `never_fired: true` entries, use `⚠ never fired`. 5. Output the catalog grouped by topic:

   **Security**
   - automation.alarm_away — "Arm alarm when everyone leaves" ⚠ dead (12 days)

   **Comfort**
   - automation.morning_blinds — "Open blinds at sunrise"

Mode 2 — Explain automations matching a keyword

Invoked as `/hermitd-homeassistant:ha-automation-explorer <keyword>`.

1. Filter the automation list: keep entries where `keyword` appears (case-insensitive) in `friendly_name` or `entity_id`. 2. If no matches: output "No automations matching '<keyword>'." Stop. 3. If more than 8 matches, the keyword is too broad to explain at once. List the matching `entity_id` + `friendly_name` pairs and ask the operator to narrow the keyword. Do not fetch any configs. Stop. 4. For each match, check `attributes.id`. If null (YAML-packaged automation, not retrievable via REST), note: "Config not retrievable — automation is YAML-packaged." Skip the config fetch for that entry. 5. For each match with a numeric `id`, fetch its config:

   ${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha get-automation-config <id>

6. Explain the fetched YAML in plain language in the session language:

  • **Triggers**: what starts this automation (time, state change, event, etc.)
  • **Conditions**: any guards that must be true for it to run
  • **Actions**: what it does, step by step
  • **State**: enabled / disabled; `⚠ dead` if in `silence_summary.dead_automations`

Mode 3 — Sort by last fired

Invoked as `/hermitd-homeassistant:ha-automation-explorer --last-fired`.

1. Call `GetDateTime` for the current UTC timestamp. 2. Sort all automations by `entity_index[entity_id].attributes.last_triggered` descending (most recently fired first). Automations with null `last_triggered` go at the bottom. 3. Compute human-readable "N days ago" using the timestamp from Step 1. For null `last_triggered`: show "never fired." 4. Enrich with `silence_summary.dead_automations` to mark stale entries — do NOT call `fetch-history`. An automation is dead if it appears in `silence_summary.dead_automations` (30+ days silent while enabled, or never fired). 5. Output the sorted roster, one automation per line:

   1. automation.morning_blinds — "Open blinds at sunrise" — fired 2 days ago
   2. automation.alarm_away — "Arm alarm when everyone leaves" — fired 14 days ago ⚠ dead
   ...
   N. automation.old_routine — "Old routine" — never fired ⚠ dead

6. End with: "X automations total. Y dead or never fired."

Notes

  • This skill is the on-demand browsing view. `ha-analyze-patterns` is the scheduled, proposal-generating silence audit — it remains authoritative for surfacing dead automations via the proposal pipeline.
  • **Mode 1 and Mode 3 flag never-fired automations differently, by design.** Mode 1 reads `silence_summary.dead_automations`, which only lists a never-fired automation once it is 30+ days old — so a recently-created automation that has never fired is *not* flagged in Mode 1. Mode 3 reads `attributes.last_triggered` directly, so it shows "never fired" immediately regardless of age.
  • For deep pattern analysis, use `/hermitd-homeassistant:ha-analyze-patterns`.
  • For building new automations, use `/hermitd-homeassistant:ha-build-automation`.
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 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…

n8n12d209k
@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 ha-automation-explorer.

Which coding agents can use ha-automation-explorer?
ha-automation-explorer 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.