From ha-nova
Manages Home Assistant backups via HA NOVA Relay: check status, create backups (including safety backups before risky changes), inspect contents, and delete old backups.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ha-nova:backupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Backup lifecycle:
Backup lifecycle:
Not in scope:
Verify relay CLI: ha-nova relay health
If this fails: ha-nova setup
File-based WS requests: ha-nova relay ws --data-file <payload-file> --out <result-file>.
WS response body: .data (skills/ha-nova/relay-api.md → Standard Envelope).
{"type":"backup/info"} → report from .data:
backups (count, newest date, sizes via agents), state (idle or in progress). Distinguish full backups (homeassistant_included) from partial add-on backups and automatic (with_automatic_settings) from manual; when the newest backup is partial, also report the newest FULL backuplast_completed_automatic_backup, next_automatic_backup — say plainly when automatic backups are NOT configured (next is null)agent_errors when non-empty (a failing backup location is silent data-loss risk)state is not idle, a backup is already running — poll instead of starting another.{"type":"backup/generate_with_automatic_settings"}.{"type":"backup/generate","name":"<name>","agent_ids":["<local-agent>"],"include_homeassistant":true,"include_database":true}:
{"type":"backup/agents/info"}: Supervised installs register hassio.local, Core installs backup.local — never hardcode"include_all_addons":true ONLY for hassio.local (Core rejects add-on options)backup/config/info shows an encryption password configured, pass it as password; never invent onebackup/info every ~10 s until state returns to idle and a new backup appears in backups; then check the new backup's failed_agent_ids, failed_addons, and failed_folders: if any is non-empty, report partial success — the backup exists but is missing those locations, add-ons, or folders — never plain success. Otherwise report name, date, size, and locations. If still running after ~5 minutes, say the backup continues in the background and how to check later.last_action_event/no new backup), report the failure — never claim success from initiation alone.Other skills name HA Backups as the recovery path (see skills/ha-nova/write-safety.md → Safety-Mechanism Availability). Proportionality rules:
{"type":"backup/details","backup_id":"<id>"} → what is included (Home Assistant, database, add-ons, folders), which locations hold it, protected (encrypted) or not.
state: idle first (one backup operation at a time). Resolve the exact backup_id from Status; show name, date, and locations in the preview — deletion removes it from ALL listed locations, irreversibly.confirm:<token> — generate a short token, display it in the Options slot, and proceed only when the user types it back exactly.{"type":"backup/delete","backup_id":"<id>"}; verify via Status that the backup is gone.generate_with_automatic_settings failing on an instance without automatic settings: expected — use the explicit fallback (Create step 4), and suggest configuring automatic backups in the HA UI.state stuck in progress across the poll window: the backup may be large — do not fire a second generate; report and offer to check later.backup_id on details/delete: re-run Status — backups can be pruned by retention settings between reads.skills/ha-nova/relay-api.md → Error Handling.Apply skills/ha-nova/output-rules.md to all output.
Backups / StatusPlanned changeSave status / Delete status before confirmationOptions / confirmation tokenVerificationNext stepUse stable localized slot labels in this order; omit empty slots. Dates are ISO timestamps with offsets — convert to the user's local time; sizes human-readable — never raw JSON.
Scans a codebase for architectural friction, presents candidates as a visual HTML report with before/after diagrams, and guides you through deepening refactors.
npx claudepluginhub markusleben/ha-nova --plugin ha-nova