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 l3digital-net/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-triggerstools
Configures Python projects to the Python Tooling SSOT Standard (uv, Ruff, BasedPyright strict, pytest+coverage, pip-audit). Use when creating projects, writing standalone scripts, configuring pyproject.toml, migrating from pip/Poetry/mypy/black/flake8, or auditing a project for conformance to the standard.
development
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 the llm-wiki knowledge base (remote LXC CT 103, /srv/workspaces/llm-wiki, over SSH) 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.