Guidance for Home Assistant configurations. Use when writing automations, dashboards, or service calls for HA.
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
Fetch official docs for current syntax - HA evolves rapidly:
target: + data:, not entity_id: at rootid and explicit mode!secret, never hardcodedClaude may generate deprecated patterns. Use modern syntax:
# Wrong: deprecated
service: homeassistant.turn_on
entity_id: light.porch
# Right: modern
service: light.turn_on
target:
entity_id: light.porch
Automations need id and mode:
automation:
- id: porch_light_sunset
alias: "Porch light at sunset"
mode: single # or restart, queued, parallel
trigger:
- platform: sun
event: sunset
action:
- service: light.turn_on
target:
entity_id: light.porch
Unreliable devices need guards:
action:
- choose:
- conditions:
- condition: template
value_template: >
{{ states('light.unreliable_bulb') not in ['unavailable', 'unknown'] }}
sequence:
- service: light.turn_on
target:
entity_id: light.unreliable_bulb
State triggers fire on every change. Use thresholds or debounce:
# Threshold: only fires when crossing
trigger:
- platform: numeric_state
entity_id: sensor.temperature
above: 75
# Debounce: must stay in state
trigger:
- platform: state
entity_id: sensor.temperature
for:
minutes: 5
Use templates for dynamic content:
# Bad
message: "Front door opened"
# Good
message: "Front door opened at {{ now().strftime('%I:%M %p') }}"