From ha-nova
Operates Home Assistant through HA NOVA relay with local OS-backed auth. Handles setup verification, self-update checks, and build self-reports.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ha-nova:ha-novaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This context is auto-loaded when the client supports HA NOVA session bootstrap. Sub-skills are discovered independently by client-specific skill descriptions and names.
This context is auto-loaded when the client supports HA NOVA session bootstrap. Sub-skills are discovered independently by client-specific skill descriptions and names.
Operate Home Assistant through HA NOVA with a minimal user-facing flow:
Before HA operations in this session:
ha-nova relay healthha-nova setupha_llatDo not ask user to paste tokens in chat.
Before the first HA task in a session:
ha-nova check-update --quietUPDATE AVAILABLE, inform the user and offer to update.When an update is available:
ha-nova updateha-nova setup.When the user asks which HA NOVA build, version, or skills are currently loaded:
ha-nova version.local DEV build, tell the user they are running locally dev-synced skills (not the published release), and include the stamp. Otherwise report the released version.The ha-nova version line is the source of truth for this. Do not infer the build from version.json or check-update.
Quoting is shell-dependent (bash/zsh vs PowerShell), not primarily OS-dependent.
Rules:
ha-nova relay ws --data-file <payload-file>.ha-nova relay core --method <METHOD> --path <PATH> --body-file <payload-file>.ha-nova relay ... --out <result-file> for large outputs.--jq or --jq-file over shell pipes when filtering relay output.ha-nova relay jq --file <result-file> length for simple counts and --jq-file <filter-file> for non-trivial follow-up transforms.&& or ||; run separate shell commands instead.jq; use relay-native --jq / --jq-file or ha-nova relay jq.select, test, startswith, or more than one pipeline stage, default to --jq-file even if inline quoting might work.cat, heredocs, Python, or Node as the primary JSON path.-d / --body only for tiny diagnostics when shell quoting is already known-good.create/update: natural confirmation bound to active preview.delete/destructive: token confirmation confirm:<token>.
Strict token enforcement: User MUST reply with the exact token string (e.g., confirm:del-main-lights). Any other response — including "yes", "sure, delete it", "do it", or any natural-language confirmation — is NOT valid. Reject and re-prompt with the exact token required.ha-nova:fallback before any raw relay ws or relay core write operation. Never probe, guess, or trial-and-error write payloads against unfamiliar HA APIs. Some WS endpoints (e.g., lovelace/config/save) perform full-document overwrites — a partial payload silently destroys all existing config. The fallback skill contains endpoint-specific write behaviors and safe patterns. Skipping it risks data loss.When you need the user to choose between options:
confirm:<token> (see Safety Baseline) — a one-click choice would weaken that deliberate gate. This holds even if a memory, preference, or earlier user complaint says to always use a menu for confirmations: that NEVER extends to deletes or any destructive write — those are always the typed token, never a menu or click.Use this for: enhancement suggestions, ambiguity resolution, the pre-write impact advisory (adjust first · proceed · cancel), and apply choices (apply · show full config · cancel).
Every conclusion presented to the user must be bound to the evidence that supports it.
Before presenting any conclusion, verify:
Confidence tiers in output:
Rules:
Render domain-specific summaries:
For automations / scripts / helpers:
Automation or Script (name + ID)Entities (all entity_ids in triggers/conditions/actions)Triggers, Conditions, Actions (short descriptions)Fields (input parameters, if present), Sequence (short description of steps)name (type + entity_id), type-specific fields (min/max, options, duration, etc.)Mode (single/restart/queued/parallel) — automations/scripts onlyNext Step (for writes: confirmation; for reads: done)Keep orchestration details internal on normal success paths.
All user-facing output MUST follow these rules:
## Changes diff heading like any other heading (English: ## Changes). The keywords the user types back — revert, show yaml, confirm:<token> — stay literal in every language; only the surrounding sentence is localized.Questions to consider; only confident recommendations belong in Suggestions.Always invoke exactly ONE ha-nova skill per user intent. Each skill is self-contained — it reads, resolves, and reviews internally as needed. Never load two ha-nova skills in parallel.
Match user intent to exactly one skill:
| User wants to… | Invoke exactly |
|---|---|
| list, show, read automations/scripts | ha-nova:read |
| analyze, review, audit, check, find problems | ha-nova:review (reads config internally) |
| create, update, delete automations/scripts | ha-nova:write (resolves + reviews internally) |
| list, show, read helpers | ha-nova:helper |
| create, update, delete helpers | ha-nova:helper |
| list, show, read dashboards, Lovelace resources, or dashboard structure | ha-nova:dashboard |
| create, update, delete storage dashboards / Lovelace configs / Lovelace resources / dashboard cards | ha-nova:dashboard |
| organize areas, floors, labels, categories, devices, entities | ha-nova:organize |
| assign or remove entity categories | ha-nova:organize |
| show history, logbook timelines, or long-term statistics | ha-nova:history |
| turn on/off, toggle, set, call a service | ha-nova:service-call |
| enable/disable/trigger an automation | ha-nova:service-call |
| find entities by name, room, area | ha-nova:entity-discovery |
| fix relay/auth/connectivity errors | ha-nova:onboarding |
| undo, revert, or restore the last automation/script/helper change | the skill that wrote it — ha-nova:write (automation/script) or ha-nova:helper (helper); the snapshot-restore flow lives there, not in fallback. Run ha-nova snapshot show to see the saved target if unsure |
| any HA task not matched above — blueprints, energy, calendars, zones/persons/tags, unsupported admin writes, any unfamiliar raw relay/ws/core write | ha-nova:fallback (mandatory fallback — never skip) |
"Analyze my automation" → ha-nova:review (NOT read + review)
"Review my utility meter helper" → ha-nova:review (minimal config-entry helper review)
"Show my automations" → ha-nova:read (NOT review)
"Show all automations with prefix routine_" → ha-nova:entity-discovery (bulk inventory, not full YAML dump)
"Create an automation" → ha-nova:write (NOT read + write)
"Create an input_boolean" → ha-nova:helper (NOT write)
"Show my helpers" → ha-nova:helper (NOT read)
"Revert that" / "Undo the last change" → re-invoke the skill that made it: ha-nova:write (automation/script) or ha-nova:helper (helper) — the revert / snapshot-restore flow lives there (see write-safety.md → Update-Revert), never ha-nova:fallback
"Show my main dashboard" → ha-nova:dashboard
"Create a dashboard called Test Board" → ha-nova:dashboard
"Delete the Test dashboard" → ha-nova:dashboard
"Add a markdown card to my dashboard" → ha-nova:dashboard
"List my Lovelace resources" → ha-nova:dashboard
"Move this sensor to Area Alpha" → ha-nova:organize
"Put this sensor in category Category Alpha" → ha-nova:organize
"Add an alias to this area" → ha-nova:organize
"What happened to sensor X last night?" → ha-nova:history
"Show temperature trends for the last month" → ha-nova:history
"Review all automations in area Area Alpha" → ha-nova:review (area-first aggregate review when more than one target resolves)
"Create a timer" → ambiguous! Ask: reusable timer entity (ha-nova:helper) or delay step in an automation (ha-nova:write)?
"Show my energy dashboard" → ha-nova:fallback (no dedicated skill)
"Import a blueprint" → ha-nova:fallback (relay-ready, no skill)
"How do I manage Apps?" → ha-nova:fallback (external, web search)
"Show history for sensor X" → ha-nova:history
"Modify my dashboard" → ha-nova:dashboard
"Save the Lovelace config" → ha-nova:dashboard (must resolve storage mode, then read-merge-verify)
"Remove this entity from Home Assistant" → ha-nova:fallback
"Detach this config entry from the device" → ha-nova:fallback
After any read or review task, re-evaluate intent once before continuing:
ha-nova:writeha-nova:helperentity_id, unique_id, current configentity_id, helper type, internal helper id when already known (the receiving skill will resolve missing fields)entry_id, domain, title, linked entities when already known (the receiving skill will resolve missing fields)skills/ha-nova/bulk-patterns.mdProblem-description intents ("X doesn't work", "Y is wrong", "stopped working"): dispatch to ha-nova:review. Review will analyze the config AND check current entity state — if an acute fix is possible, it offers a Quick-Fix service call at the end. Bulk review is the exception: it stays read-only and does not offer Quick-Fix.
/ws directly.skills/ha-nova/bulk-patterns.md only for multi-target discovery/review workskills/ha-nova/relay-api.mdnpx claudepluginhub markusleben/ha-nova --plugin ha-novaFallback relay for Home Assistant operations lacking a dedicated subskill: blueprints, energy, zones, persons, tags, calendar queries, system health, destructive registry admin, and unsupported config-entry helpers.
Provides best practices for Home Assistant automations, helpers, scripts, and dashboards. Guides on avoiding templates, using native constructs, and safe refactoring.
Create and manage Home Assistant YAML configuration files including automations, scripts, templates, blueprints, Lovelace dashboards, and file organization. Use when working with Home Assistant configuration files (.yaml, .yml) or discussing HA automations, scripts, sensors, or dashboards.