From ha-nova
Lists, reads, creates, updates, and deletes storage-backed Home Assistant dashboards, Lovelace resources, and cards via HA NOVA Relay. Safety-first: verifies storage mode before writes and always reads full config before editing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ha-nova:dashboardThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Storage dashboard work only:
Storage dashboard work only:
This skill is safety-first:
lovelace/dashboards/listmode is storageNot in scope:
If the user asks for a broad redesign instead of a concrete safe change, narrow the request first. Do not guess.
Verify relay CLI: ha-nova relay health
If this fails: ha-nova setup
Use file-based WS requests only:
ha-nova relay ws --data-file <payload-file>ha-nova relay ws --data-file <payload-file> --out <result-file>ha-nova relay ws --data-file <payload-file> --jq-file <filter-file>Relevant WS types:
lovelace/dashboards/listlovelace/dashboards/createlovelace/dashboards/updatelovelace/dashboards/deletelovelace/configlovelace/config/savelovelace/resourceslovelace/resources/createlovelace/resources/updatelovelace/resources/deleteCritical behavior:
lovelace/config/save is a full-document overwritelovelace/dashboards/list is the source of truth for dashboard_id, url_path, and modelovelace/config/delete is not the dashboard delete path for this skilllovelace/resources shows installed Lovelace resources, but that alone is not proof that a custom-card schema is safe to inventlovelace/dashboards/list.url_path, title, or current identity.dashboard_id for lovelace/dashboards/update|deleteurl_path for lovelace/config|savemode from lovelace/dashboards/listmode=storage is writable/deletable heremode is not storage, stop and explain that this skill will not write or delete ittitle, url_path, icon, require_admin, show_in_sidebar, confirm this exact preview, then call lovelace/dashboards/createlovelace/dashboards/update with dashboard_id
title, icon, show_in_sidebar, require_adminurl_path, mode, or unrelated config fields in the update payloadlovelace/resourcesres_type and urllovelace/resources/create|updateconfirm:<token>lovelace/resources/delete with resource_idlovelace/configviews — iterate (.views // [])[], never bare .views[]; same for .cards and .badgeslovelace/config/saveentity, entities, button, tile, gauge, sensor, markdown, history-graphconfirm:<token>; only discarding an unpersisted draft card is non-destructiveconfirm:<token>lovelace/dashboards/delete with dashboard_idlovelace/config with the chosen url_pathlovelace/dashboards/listlovelace/resourceslovelace/configApply skills/ha-nova/output-rules.md to all user-facing output.
For list/read:
DashboardTargetSummaryFor create/update/delete:
DashboardModePlanned changeSave status / Delete status before confirmationOptions / confirmation tokenVerificationNext stepUse stable localized slot labels in this order; omit empty slots, do not invent ad-hoc headings.
Do not dump the full dashboard JSON/YAML by default.
url_path or dashboard_id values.revert; the recovery path is Home Assistant Backups.lovelace/config/save with a partial config.lovelace/info to decide whether a dashboard is writable.lovelace/config/delete as the dashboard delete path.npx claudepluginhub markusleben/ha-nova --plugin ha-novaScans a codebase for architectural friction, presents candidates as a visual HTML report with before/after diagrams, and guides you through deepening refactors.