/ha-apply-change
Validate and apply a generated HA automation or script YAML with safety checks and optional reload. Use after building or modifying an automation.
Claude Code
$ npx -y skills add gtapps/hermitd --skill ha-apply-change --agent claude-code
Codex
$ npx skills add gtapps/hermitd --skill ha-apply-change -a codex -y
Cursor
$ npx skills add gtapps/hermitd --skill ha-apply-change -a cursor -y
Gemini CLI
$ npx skills add gtapps/hermitd --skill ha-apply-change -a gemini-cli -y
GitHub Copilot
$ npx skills add gtapps/hermitd --skill ha-apply-change -a github-copilot -y
OpenCode
$ npx skills add gtapps/hermitd --skill ha-apply-change -a opencode -y
Windsurf
$ npx skills add gtapps/hermitd --skill ha-apply-change -a windsurf -y
SKILL.md
ha-apply-change.SKILL.mdname: ha-apply-change
description: Validate and apply a generated HA automation or script YAML with safety checks and optional reload. Use after building or modifying an automation.
allowed-tools:
- Bash
- Read
- Write
Apply HA Change
Steps
1. **Pre-check**: Run `${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha policy-check <artifact_path>` to verify safety. Read the `decision` field in the JSON output:
- `"deny"` (strict mode): stop and explain why. Create a proposal via `/hermitd:proposal-create`.
- `"ask"` (ask mode): include the sensitive entities in the preview in step 2.
- `"allow"`: proceed to step 2.
2. **Preview**: Present the artifact, policy result, affected entities, and reload domain. A changed artifact or target requires a fresh preview.
3. **Validate and apply**: Run `${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha validate-apply <artifact_path> --reload automation` (or `script`).
- This runs HA config check, **pushes the config to HA via REST**, then reloads the domain.
- The artifact must include `id:` at the top level — if missing, the CLI derives an ID from the alias or filename and warns in the output. A derived ID drifts if the alias is renamed, creating a duplicate.
4. **Post-apply**: Read `.hermit/raw/audit-ha-apply-latest.md` and branch on the JSON output:
- `{"status":"invalid","reason":"simulation_failed"}`: the artifact references missing entities or hits a blocked reason; run `ha simulate <artifact_path>` for the list and fix the YAML.
- `{"error":...}`: show it. `apply_failed:<detail>` means the config check or push failed; suggest fixing the YAML.
- `creation_ok: true` — config was pushed and verified via REST. Reload picks it up immediately.
- `creation_ok: false` + message contains "YAML mode" — HA is in YAML config mode (403). Tell the operator to place the generated YAML in their HA config directory and reload manually.
- `creation_ok: false` + other message: the push was not verified. Show the message.
- If overall successful: update your auto memory if this automation introduces a new pattern.
Safety
- The apply path only reloads `automation` and `script` domains.
- A `deny` policy verdict stops the apply; an `ask` verdict requires approval covering the sensitive entities.
- The operator must confirm before any reload happens.
Read more
name: ha-apply-change description: Validate and apply a generated HA automation or script YAML with safety checks and optional reload. Use after building or modifying an automation. allowed-tools: - Bash - Read - Write
Apply HA Change
Steps
1. **Pre-check**: Run `${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha policy-check <artifact_path>` to verify safety. Read the `decision` field in the JSON output:
- `"deny"` (strict mode): stop and explain why. Create a proposal via `/hermitd:proposal-create`.
- `"ask"` (ask mode): include the sensitive entities in the preview in step 2.
- `"allow"`: proceed to step 2.
2. **Preview**: Present the artifact, policy result, affected entities, and reload domain. A changed artifact or target requires a fresh preview.
3. **Validate and apply**: Run `${CLAUDE_PLUGIN_ROOT}/bin/ha-agent-lab ha validate-apply <artifact_path> --reload automation` (or `script`).
- This runs HA config check, **pushes the config to HA via REST**, then reloads the domain.
- The artifact must include `id:` at the top level — if missing, the CLI derives an ID from the alias or filename and warns in the output. A derived ID drifts if the alias is renamed, creating a duplicate.
4. **Post-apply**: Read `.hermit/raw/audit-ha-apply-latest.md` and branch on the JSON output:
- `{"status":"invalid","reason":"simulation_failed"}`: the artifact references missing entities or hits a blocked reason; run `ha simulate <artifact_path>` for the list and fix the YAML.
- `{"error":...}`: show it. `apply_failed:<detail>` means the config check or push failed; suggest fixing the YAML.
- `creation_ok: true` — config was pushed and verified via REST. Reload picks it up immediately.
- `creation_ok: false` + message contains "YAML mode" — HA is in YAML config mode (403). Tell the operator to place the generated YAML in their HA config directory and reload manually.
- `creation_ok: false` + other message: the push was not verified. Show the message.
- If overall successful: update your auto memory if this automation introduces a new pattern.
Safety
- The apply path only reloads `automation` and `script` domains.
- A `deny` policy verdict stops the apply; an `ask` verdict requires approval covering the sensitive entities.
- The operator must confirm before any reload happens.
Run an always-on Claude Code agent on your own machine, for you or your team. Start and orchestrate sessions from chat in any project it can reach. Take over the same session in the Claude app or the CLI.
Other skills on hermitd.
More skills from other plugins.
browser-use
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
Questions about ha-apply-change.
- Which coding agents can use ha-apply-change?
- ha-apply-change installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

