How this skill is triggered — by the user, by Claude, or both
Slash command
/ha-nova:writeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Mutations only:
Mutations only:
automation, scriptcreate, update, deleteVerify Relay:
ha-nova relay health
If this fails, run onboarding: ha-nova setup.
File-based relay requests only: ha-nova relay core --method <METHOD> --path <PATH> --body-file <payload-file> for config writes, ha-nova relay ws --data-file <payload-file> for reads/reloads, --jq-file / --out for filters and large reads.
Multi-target logical changes: present the plan first per skills/ha-nova/write-safety.md → Multi-Target Changes.
skills/ha-nova/agents/resolve-agent.md.target_id, current_config, bp_status, suggested_enhancements.
entity_id -> unique_id with config/entity_registry/get; use config/entity_registry/list_for_display only for search/disambiguationcreate IDs: automations=Unix timestamp, scripts=slug.skills/ha-nova/write-safety.md): fresh/stale+simple->continue, stale+complex->block.delete):
suggested_enhancements (max 4, numbered/menu). User accepts numbers or "skip" → merge accepted into config BEFORE preview. Skip when SUGGESTED_ENHANCEMENTS: none.skills/review/checks.md → Application (family matrix + evidence boundaries). Run S/R/P/M checks analytically on the draft YAML — no relay calls (scripts: F-01..F-08; helper refs: H-01..H-08. Defer H-09/H-10 to Phase 4).
One pre-write verdict line before apply:
trigger.id into elif or refactor to choose + condition: trigger."True"/"False"; use the boolean directly or direct negation.available_energy may be current charge, not capacity; ask user to verify maximum/nominal source. Never auto-rewrite integration-specific entity IDs.
Track findings by check type for dedup in Phase 4, except R-18.search/related on the top target entities (max 3 related configs); show affected automations/scripts as advisory. Skip create/delete.skills/ha-nova/write-safety.md for the fixed shape):
ha-nova diff (prefer --out <diff-file>), print the diff output verbatim in the Changes slot — never write it yourself; state the behavioral effect in the summary sentence (write-safety → Behavior narrative). create: summary. Create/update previews show apply, show yaml, and cancel options.apply, show yaml, cancel, or any menu; ask only for the exact confirm:<token> or cancellation.confirm:<token>. Active Preview Confirmation is required; delete is the typed token, never a menu. Pre-preview consent is draft-only; payload/diff changes need preview.skills/ha-nova/agents/apply-agent.md.Fallback: If agent dispatch unavailable, execute inline.
Do NOT invoke ha-nova:review separately.
target_id (do NOT re-resolve by slug):
ha-nova relay core --method GET --path /api/config/automation/config/<target_id> --jq-file <filter-file> --out <result-file>/api/config/script/config/<target_id><filter-file>: copy skills/ha-nova/config-body-filter.jq; if unavailable (flat-copy installs), recreate exactly:
if .ok then .data.body else error("relay error: \(.error.message // "unknown")") end
reloaded: false or ran inline without reload; resolve actual entity_id by matching unique_id == <target_id>, then read /api/states/{entity_id} to confirm runtime presenceentity_id differs, report it and point to skills/ha-nova/safe-refactoring.md; do not silently assume the requested slug wonid,unique_id,created_at,modified_at,editor,enabled).trigger→triggers, action→actions, condition→conditions). Account for plural aliasing when comparing — these are not real diffs.skills/review/checks.md → Application. If they match, skip covered checks but re-run storage-sensitive R-18 subset.R-19 follows normal dedup; R-23/R-24 do too. If already shown pre-write, do not repeat unless it becomes a new category.{"type":"search/related","item_type":"entity","item_id":"<entity_id>"} via ha-nova relay ws --data-file <payload-file>; read max 3 related configs.skills/ha-nova/output-rules.md) — report only what has substance; scans still run, only empty output is suppressed:
Questions to consider, Suggestions, or Instant help post-write; never repeat an item across Findings and Advisory.ha-nova snapshot save and offer revert (see skills/ha-nova/write-safety.md). Creates → cleanup via normal HA NOVA delete flow with preview, confirm:<token>, and absence verification. Deletes → Home Assistant Backups.Apply skills/ha-nova/output-rules.md.
Previews, delete prompts, and post-write results render as the Cards defined there; the diff mechanics stay in skills/ha-nova/write-safety.md.
See skills/ha-nova/SKILL.md → Response Format.
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.
Destructive cleanup still requires confirm:<token>, even for items created earlier in the same session.
Agents must use Relay only; no MCP, no direct HA API
Every write MUST end with the Post-Write Review slot; use terminal-friendly labels where Markdown headings add noise.
get_states — use targeted registry/config readsAlways load:
skills/ha-nova/relay-api.md, skills/ha-nova/payload-schemas.md, skills/ha-nova/best-practices.md, skills/ha-nova/write-safety.mdskills/ha-nova/agents/resolve-agent.md, skills/ha-nova/agents/apply-agent.mdskills/review/checks.md (self-contained catalog + Application)On demand — read only when the trigger applies:
skills/ha-nova/automation-patterns.md — drafting new branching, timing, or flow-control logicskills/ha-nova/template-guidelines.md — the draft contains Jinja templatesskills/ha-nova/safe-refactoring.md — rename, migrate, or orphan-cleanup tasksskills/ha-nova/update-revert.md — the user asks to revert, undo, or restore a verified update (create cleanup and delete recovery stay out — see write-safety)npx claudepluginhub markusleben/ha-nova --plugin ha-novaDrafts Home Assistant automation or script YAML from a description. Validates against entity inventory and safety policy. Includes helper provisioning.
Reviews Home Assistant automations, scripts, and helpers for errors, best-practice violations, and conflicts. Handles discovery and reading internally.
Creates and manages Home Assistant automations including rules, triggers, conditions, actions, scripts, scenes, and blueprints. Covers device triggers and conditional logic.