From ha-nova
Checks pending Home Assistant updates (core, OS, apps, integrations, device firmware) and installs them with safety gates via HA NOVA Relay.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ha-nova:updatesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Lifecycle:
Lifecycle:
Not in scope:
update.* entities (ha-nova:fallback)Verify relay CLI: ha-nova relay health
If this fails: ha-nova setup
File-based requests: ha-nova relay core --method <METHOD> --path <PATH> --body-file <payload-file> and ha-nova relay ws --data-file <payload-file>; --out <result-file> for large responses.
REST body: .data.body; WS body: .data (skills/ha-nova/relay-api.md → Standard Envelope).
Read supported_features before acting:
| Bit | Feature |
|---|---|
| 1 | install |
| 2 | install a specific version |
| 4 | progress reporting |
| 8 | backup before update (App/core mechanism) |
| 16 | release notes |
Never call a bitmask-backed service (install/version/backup/release-notes) the mask does not allow — name the missing capability. Skip/unskip have no bits; their only gate is auto_update (see Skip).
GET /api/states --out <result-file> for the update entities AND WS {"type":"config/entity_registry/list"} for their platform/unique_id (states alone cannot classify). Filter update.*, report grouped, pending (state: "on") first:
platform: hacs = integrations; platform: hassio splits by unique_id — home_assistant_{core,os,supervisor}_version_latest = HA stack, <addon_slug>_version_latest = App; everything else = device firmware/other. Never guess from names.
Per pending item: name, installed_version → latest_version, auto_update, skipped_version. Fleets: counts per group + pending list only — never dump 200 firmware rows.Bit 16 set: WS {"type":"update/release_notes","entity_id":"update.<id>"} → markdown in .data; summarize, never dump. Without bit 16, do not call it (it fails with not_supported) — use the entity's release_summary/release_url instead; when both are empty, say no notes are available.
ha-nova:backup (see skills/ha-nova/write-safety.md → Safety-Mechanism Availability) and say that HA restarts during the update. Surface breaking-changes sections first in the notes summary; on skipped-version jumps the notes cover only the target — link the intermediate releases via release_url."backup": true (partial App backup). Updating the NOVA Relay App restarts the relay itself — the install call may drop mid-flight; verify afterwards via ha-nova relay health.auto_update); an explicit install restarts the Supervisor — expect a brief entity dropout during the poll, no HA restart.ha-nova:service-call./api/services/update/install with {"entity_id":"update.<id>"} (+ "backup": true for App updates; for core/OS pass it ONLY when the confirmed preview explicitly included that built-in backup — the offered ha-nova:backup flow is the safety net, never an unconditional flag; + "version": "<v>" only with bit 2).in_progress/update_percentage while running; done when installed_version equals the target — for latest-version installs additionally state: off; an explicitly requested older version may legitimately leave the entity pending. For core/OS installs, connection and UPSTREAM_* errors during the poll ARE the expected restart window, not failure: keep polling every ~30 s (core up to ~15 min; OS longer — the host reboots and the relay itself is unreachable) and never route to ha-nova setup mid-update. If still in_progress after ~10 minutes (device firmware: 30+ minutes and a temporarily unavailable device are normal), say it continues in the background and how to check later. Report failure when state stays on without progress — never claim success from the call alone./api/services/update/skip with {"entity_id":"update.<id>"} — preview which version gets skipped; natural confirmation; verify by re-reading the entity (skipped_version set, state: off). Reversible. HA rejects skip/clear_skipped on auto_update: true entities — say so instead of calling./api/services/update/clear_skipped — the update shows as pending again.not_supported on release notes: expected without bit 16 — use release_url.in_progress) blocks a second install.skills/ha-nova/relay-api.md → Error Handling.Apply skills/ha-nova/output-rules.md.
Updates / StatusPlanned changeOptionsVerificationNext stepUse stable localized slot labels in this order; omit empty slots. Group counts + pending list — never raw JSON.
Preview before write: nothing is saved until the user confirms the shown preview.
Confirmation binds to the displayed preview and expires on any change to target, payload, endpoint, or scope (context skill → Active Preview Confirmation).
Pre-preview phrases ("do it", "go ahead", "implement the plan") authorize drafting and preview only — never the write itself.
Delete and destructive operations require the typed token confirm:<token> verbatim; "yes" or any natural-language reply is invalid.
Never guess entity, service, or config IDs — resolve them or ask.
Home Assistant is reached exclusively through ha-nova relay.
For any HA write this skill does not cover, STOP and invoke ha-nova:fallback first — never probe unfamiliar write endpoints.
Installs: natural confirmation per update after preview; batches need an explicitly confirmed plan.
Updates are effectively irreversible — for core/OS name the safety-backup offer before, not after.
Never install anything the user did not ask about or confirm; auto_update: true items update themselves — say so instead of installing them unprompted; an explicit, confirmed user request may still install.
Verify by re-reading the entity.
npx claudepluginhub markusleben/ha-nova --plugin ha-novaDetects pending Home Assistant updates (Core, OS, Supervisor, add-ons, HACS) via update.* entities and surfaces actionable proposals. Runs daily as a scheduled check.
Operates Home Assistant through HA NOVA (App + Relay) with local OS-backed auth, including relay health checks, self-update, and build reporting.
Builds and manages Home Assistant configurations using the hab CLI, automating tasks like dashboard edits, automation creation, backups, and ESPHome operations.