Agent Skills: Home Assistant Entities

|

UncategorizedID: laurigates/claude-plugins/ha-entities

Install this agent skill to your local

pnpm dlx add-skill https://github.com/laurigates/claude-plugins/tree/HEAD/home-assistant-plugin/skills/ha-entities

Skill Files

Browse the full folder contents for ha-entities.

Download Skill

Loading file tree…

home-assistant-plugin/skills/ha-entities/SKILL.md

Skill Metadata

Name
ha-entities
Description
|

Home Assistant Entities

When to Use This Skill

| Use this skill when... | Use ha-automations instead when... | |------------------------|-----------------------------------| | Understanding entity domains | Creating automation rules | | Customizing entities | Working with triggers/actions | | Creating template sensors | Writing automation conditions | | Setting up groups | Working with scripts/scenes | | Working with device classes | Handling events |

Entity ID Structure

domain.object_id

Examples:

  • light.living_room_ceiling
  • sensor.outdoor_temperature
  • binary_sensor.front_door_contact
  • switch.garden_irrigation

Common Domains

| Domain | Description | Example | |--------|-------------|---------| | light | Lighting control | light.kitchen | | switch | On/off switches | switch.outlet | | sensor | Numeric sensors | sensor.temperature | | binary_sensor | On/off sensors | binary_sensor.motion | | climate | HVAC control | climate.thermostat | | cover | Blinds, garage doors | cover.garage | | lock | Door locks | lock.front_door | | media_player | Media devices | media_player.tv | | camera | Camera feeds | camera.front_yard | | vacuum | Robot vacuums | vacuum.roomba | | fan | Fan control | fan.bedroom | | alarm_control_panel | Alarm systems | alarm_control_panel.home | | person | People tracking | person.john | | device_tracker | Device location | device_tracker.phone | | weather | Weather info | weather.home | | input_boolean | Virtual toggle | input_boolean.guest_mode | | input_number | Virtual number | input_number.target_temp | | input_select | Virtual dropdown | input_select.house_mode | | input_text | Virtual text | input_text.message | | input_datetime | Virtual date/time | input_datetime.alarm | | input_button | Virtual button | input_button.reset | | automation | Automations | automation.motion_light | | script | Scripts | script.morning_routine | | scene | Scenes | scene.movie_night | | group | Entity groups | group.all_lights | | timer | Countdown timers | timer.laundry | | counter | Counters | counter.guests | | zone | Geographic zones | zone.home | | sun | Sun position | sun.sun |

For complete device class tables (binary sensor and sensor), see REFERENCE.md.

Entity Customization

customize.yaml

# Single entity
light.living_room:
  friendly_name: "Living Room Light"
  icon: mdi:ceiling-light

# Binary sensor
binary_sensor.front_door:
  friendly_name: "Front Door"
  device_class: door

# Sensor
sensor.outdoor_temperature:
  friendly_name: "Outdoor Temperature"
  device_class: temperature
  unit_of_measurement: "°C"

Glob Customization

customize_glob:
  "light.*_ceiling":
    icon: mdi:ceiling-light

  "sensor.*_temperature":
    device_class: temperature
    unit_of_measurement: "°C"

  "binary_sensor.*_motion":
    device_class: motion

Template Sensors

template:
  - sensor:
      # Simple state
      - name: "Average Temperature"
        unit_of_measurement: "°C"
        device_class: temperature
        state: >-
          {{ ((states('sensor.living_room_temp') | float +
               states('sensor.bedroom_temp') | float +
               states('sensor.kitchen_temp') | float) / 3) | round(1) }}

      # With attributes
      - name: "Power Usage"
        unit_of_measurement: "W"
        device_class: power
        state: "{{ states('sensor.energy_meter_power') }}"
        attributes:
          cost_per_hour: >-
            {{ (states('sensor.energy_meter_power') | float * 0.15 / 1000) | round(2) }}

      # Availability
      - name: "Solar Power"
        unit_of_measurement: "W"
        device_class: power
        state: "{{ states('sensor.inverter_power') }}"
        availability: "{{ states('sensor.inverter_power') != 'unavailable' }}"

For template binary sensors, switches, buttons, numbers, groups, utility meters, counters, and timers, see REFERENCE.md.

State Attributes

Common Attributes

| Domain | Common Attributes | |--------|-------------------| | light | brightness, color_temp, rgb_color, hs_color, effect | | climate | temperature, current_temperature, hvac_action, preset_mode | | media_player | volume_level, media_title, media_artist, source | | cover | current_position, current_tilt_position | | weather | temperature, humidity, pressure, wind_speed, forecast | | person | source, latitude, longitude, gps_accuracy | | sun | elevation, azimuth, next_rising, next_setting |

Accessing Attributes

# In templates
{{ state_attr('light.living_room', 'brightness') }}
{{ state_attr('climate.thermostat', 'current_temperature') }}
{{ state_attr('sun.sun', 'elevation') }}

# In conditions
condition:
  - condition: numeric_state
    entity_id: light.living_room
    attribute: brightness
    above: 100

Quick Reference

State Functions

| Function | Description | Example | |----------|-------------|---------| | states('entity') | Get state | states('sensor.temp') | | state_attr('entity', 'attr') | Get attribute | state_attr('light.x', 'brightness') | | is_state('entity', 'value') | Check state | is_state('light.x', 'on') | | is_state_attr('entity', 'attr', 'val') | Check attribute | is_state_attr('climate.x', 'hvac_action', 'heating') | | states.domain | All entities in domain | states.light | | expand('group.x') | Expand group members | expand('group.all_lights') |

Agentic Optimizations

| Context | Command | |---------|---------| | Find entity usage | grep -r "entity_id:" config/ --include="*.yaml" | | List customizations | grep -rA2 "^[a-z_]*\\..*:" config/customize.yaml | | Find template sensors | grep -rB2 "platform: template" config/ --include="*.yaml" | | Find groups | grep -rA5 "^group:" config/ --include="*.yaml" | | List domains used | grep -roh "[a-z_]*\\." config/ --include="*.yaml" \| sort -u |