plugins/home-assistant-dev/skills/ha-yaml-automations/SKILL.md
Home Assistant YAML automations — triggers, conditions, and actions. Use when writing or fixing an automation, choosing a trigger type, or structuring automation logic.
npx skillsauth add l3digitalnet/claude-code-plugins ha-yaml-automationsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
true / falsedomain.entity_name (lowercase, underscores)automation:
- id: "unique_automation_id"
alias: "Descriptive Name"
description: "What this does"
mode: single # single | restart | queued | parallel
trigger:
- trigger: state
entity_id: binary_sensor.front_door
to: "on"
condition:
- condition: time
after: "08:00:00"
before: "22:00:00"
action:
- action: light.turn_on
target:
entity_id: light.hallway
data:
brightness_pct: 100
# State
- trigger: state
entity_id: sensor.temperature
above: 25
# Time
- trigger: time
at: "07:30:00"
# Sun
- trigger: sun
event: sunset
offset: "-00:30:00"
# Template
- trigger: template
value_template: "{{ states('sensor.power') | float > 1000 }}"
# Webhook
- trigger: webhook
webhook_id: "my_unique_webhook_id"
allowed_methods: [POST]
# State
- condition: state
entity_id: alarm_control_panel.home
state: "armed_away"
# Numeric
- condition: numeric_state
entity_id: sensor.temperature
above: 20
below: 30
# Time
- condition: time
after: "08:00:00"
before: "23:00:00"
weekday: [mon, tue, wed, thu, fri]
# Template
- condition: template
value_template: "{{ is_state('person.john', 'home') }}"
# AND/OR
- condition: and
conditions:
- condition: state
entity_id: input_boolean.guest_mode
state: "off"
- condition: state
entity_id: binary_sensor.motion
state: "on"
# Service call
- action: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 80
# Delay
- delay:
seconds: 30
# Wait for trigger
- wait_for_trigger:
- trigger: state
entity_id: binary_sensor.motion
to: "off"
timeout:
minutes: 5
continue_on_timeout: true
# Choose (if/else)
- choose:
- conditions:
- condition: state
entity_id: input_select.mode
state: "away"
sequence:
- action: climate.set_temperature
target:
entity_id: climate.thermostat
data:
temperature: 18
default:
- action: notify.mobile_app
data:
message: "Unknown mode"
# Repeat
- repeat:
count: 3
sequence:
- action: light.toggle
target:
entity_id: light.alert
- delay:
seconds: 1
action: not service: (modern syntax)trigger: as type key (not platform:)alias and descriptiontarget: for entity/area/device targeting"{{ states('sensor.x') }}"ha-scriptsha-blueprintsha-device-triggersdevelopment
Use when you're stuck or missing current information mid-task - the same command/API/approach failed twice, an error looks like a changed or deprecated API, or you need the current version of something, a fact from after your training cutoff, or to verify something you cannot confirm from the code in context. Starts with a cheap inline lookup and only escalates to a full research sweep if that fails. Do not use for routine pre-emptive checks before ordinary library work - for deliberate research, use /qdev:research.
documentation
Update Outline wiki documentation with implementation-level details from the current session by dispatching the up-docs-propagate-wiki sub-agent. This skill should be used when the user runs /up-docs:wiki.
documentation
Update repository documentation (README.md, docs/, CLAUDE.md) based on session changes by dispatching the up-docs-propagate-repo sub-agent. This skill should be used when the user runs /up-docs:repo.
documentation
Update Notion pages with strategic and organizational context from the current session by dispatching the up-docs-propagate-notion sub-agent. This skill should be used when the user runs /up-docs:notion.