Skip to content
Automation
Skill

/home-assistant-manager

Manage Home Assistant configuration safely and fast — edit and deploy YAML (automations, blueprints, scripts, scenes, templates, MQTT), validate with ha core check, deploy via git or rapid scp, reload-vs-restart correctly, verify changes from logs, traces and entity state, and

From plugin
home-assistant-manager
7731 skill
Install
$ npx -y skills add komal-SkyNET/claude-skill-homeassistant --skill home-assistant-manager --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/home-assistant-manager

Context preview

The summary Claude sees to decide when to auto-load this skill.

Manage Home Assistant configuration safely and fast — edit and deploy YAML (automations, blueprints, scripts, scenes, templates, MQTT), validate with ha core check, deploy via git or rapid scp, reload-vs-restart correctly, verify changes from logs, traces and entity state, and

SKILL.md

home-assistant-manager.SKILL.md
name: home-assistant-manager
description: Manage Home Assistant configuration safely and fast — edit and deploy YAML (automations, blueprints, scripts, scenes, templates, MQTT), validate with ha core check, deploy via git or rapid scp, reload-vs-restart correctly, verify changes from logs, traces and entity state, and build Lovelace dashboards. Use for any Home Assistant config, automation, template, or dashboard work over SSH/hass-cli/MCP.

Home Assistant Manager

Operate a remote Home Assistant instance precisely: make a change, get it live, prove it worked. Optimize for the fewest safe round-trips.

Assumptions

  • The repo you're editing **is** the HA `/config` dir, git-connected to the instance.

Edits aren't live until pulled on the instance.

  • `root@homeassistant.local` in examples is a placeholder. Resolve the real user/host once

(project CLAUDE.md, `~/.ssh/config`, or ask) and if it isn't recorded in the project CLAUDE.md yet, add it so future sessions skip this step.

  • Access via one or more of: `hass-cli` (REST), SSH `ha`, or an MCP server (see below).
  • Only edit `.yaml`/`.yml`/`.md`. Never read/write `.env` or `secrets.yaml`; use `!secret`.

Remote access — pick the right tool

  • **SSH `ha`** — always works, needs no local env. Use for `ha core check|restart|logs|info`.
  • **`hass-cli`** (REST) — state/service calls, but needs `HASS_SERVER`/`HASS_TOKEN` in the

shell *before* the session starts. If they're unset, hass-cli falls back to the wrong host (localhost) and errors — don't retry, check `[ -n "$HASS_TOKEN" ]` once, then use SSH or MCP instead.

  • **MCP** (preferred when available) — first-class tools for live state/control, no env

juggling. Official `mcp_server` integration (HA core ≥2025.2) or community `ha-mcp` (richer, 80+ tools). Use it instead of shelling out when present.

The deploy pipeline (the one canonical flow)

Changes are not live until step 4. 1. Edit YAML locally. 2. Validate: `ssh root@homeassistant.local "ha core check"` (slow, ~30-60s — see "when to skip" below). 3. Commit + push: `git add … && git commit -m "…" && git push`. 4. **Make it live:** `ssh root@homeassistant.local "cd /config && git pull"`. 5. Apply: **reload** if possible, else **restart** (table below). 6. Verify (next section).

**Rapid iteration:** skip git and `scp` straight to the instance, then reload — good for dashboards and tight test loops. Commit to git only once stable. `scp automations.yaml root@homeassistant.local:/config/` → reload.

**When to skip `ha core check`:** it parses the whole config and is slow. For an isolated YAML edit you're confident in, a domain reload surfaces errors faster and the logs tell you immediately. Always run it before a *restart* or for `configuration.yaml` changes.

Reload vs restart

| Change | Action | |--------|--------| | automations, scripts, scenes, groups, template entities, themes | **reload** the domain (`hass-cli service call automation.reload`, etc.) | | `configuration.yaml` core, new integrations, platform sensors (min/max), MQTT sensor/binary_sensor platforms, dashboard registry (`lovelace_dashboards`) | **restart** (`ssh … "ha core restart"`, ~30s) |

Prefer reload. Never restart without a passing `ha core check`. Before risky changes (core `configuration.yaml` surgery, removing an integration), snapshot first — it's cheap: `ssh root@homeassistant.local "ha backups new --name pre-<change>"`.

Verify — don't assume it worked

1. Reload/restart the right domain. 2. For automations, **trigger manually** for instant feedback: `hass-cli service call automation.trigger --arguments entity_id=automation.<id>` (or call the service via MCP). This **bypasses `conditions` by default** — it proves the actions, not the gate. To test conditions too, pass `skip_condition: false` or exercise the real trigger, then read the automation's trace in the UI. 3. Read the logs filtered to your change: `ssh root@homeassistant.local "ha core logs | grep -iE '<name>|error' | tail -20"`. Good: `Running automation actions`, `Executing step …`. Bad: `Invalid data for call_service`, `TypeError`, `Template variable warning`, `Error executing script`. 4. Confirm the real outcome: device/sensor state (`hass-cli state get <entity>`), or ask the user for notification-type actions. 5. On error: fix → re-pull/scp → reload → re-check. Loop until clean.

Automations — write modern syntax

HA 2024.10 renamed the keys; legacy syntax still works but don't emit it in new code: top-level `triggers:/conditions:/actions:` (plural), `trigger:` not `platform:` inside a trigger, `action:` not `service:` for calls. Every automation gets a stable `id:` (traces and UI editing need it) plus an `alias`.

**Full automation reference** (syntax table, `mode:` behavior, blueprints, trace debugging, pitfalls) → read [`reference/automations.md`](reference/automations.md) when writing or debugging automations.

Templates — the precision rules

  • Always coerce types before comparing: `states('sensor.x') | int(0) < 7`. Bare states are

strings; `'5' < 7` raises `TypeError`. Provide a default (`int(0)`) so startup `None` doesn't error.

  • Test in **Developer Tools → Template** before committing.
  • `state_attr(...)` returns `None` if the entity/attr is missing — guard it.

Conventions

  • Surgical edits; preserve comments; 2-space indent.
  • Validate before restart; prefer reload; verify from logs.
  • Use context7 MCP for current HA docs before non-trivial or unfamiliar config.

Dashboards

Lovelace dashboards live in `.storage/lovelace.*` (JSON). UI edits show on a browser refresh; **direct file edits (scp/git) may not appear until a `ha core restart`** — HA caches the lovelace store in memory. Adding a *new* dashboard to `.storage/lovelace_dashboards` also needs a restart. `scp` + refresh is the fast loop; validate JSON first: `python3 -m json.tool .storage/lovelace.x > /dev/null`. After deploying, **validate the UI visually in t

Read more
Ships withhome-assistant-manager

Expert-level Home Assistant configuration management with efficient deployment workflows, remote CLI access, automation verification, and comprehensive Lovelace dashboard development.

Get the whole plugin
Stats
773
Stars
44
Forks
Maintained
Maintenance
MIT
License
1mo ago
Last commit
8mo ago
Created

Repo: komal-SkyNET/claude-skill-homeassistant