From home-assistant
Call a Home Assistant service to control devices or trigger automations (e.g. turn lights on, lock doors, run scripts). Use when the user wants to control an entity or invoke a service.
npx claudepluginhub cameri/claude-skills --plugin home-assistantThis skill is limited to using the following tools:
<objective>
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Guides TDD-style skill creation: pressure scenarios as tests, baseline agent failures, write docs to enforce compliance, verify with RED-GREEN-REFACTOR.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
<quick_start>
/home-assistant:call-service light.turn_on entity_id=light.living_room brightness=128
/home-assistant:call-service switch.toggle entity_id=switch.fan
/home-assistant:call-service automation.trigger entity_id=automation.morning_routine
/home-assistant:call-service homeassistant.restart
</quick_start>
<context> Load credentials before every call: ```bash source ~/.claude/channels/home-assistant/.env ``` If `.env` is missing or `HA_URL`/`HA_TOKEN` are not set, tell the user to run `/home-assistant:access` first.Auth header: Authorization: Bearer $HA_TOKEN
Endpoint: POST ${HA_URL}/api/services/<domain>/<service>
Content-Type: application/json
</context>
Build the JSON body from remaining key=value pairs. Numeric values (no quotes in input) are sent as numbers; everything else as strings. If no extra args, send empty body {}.
Example — light.turn_on entity_id=light.living_room brightness=128:
http --ignore-stdin -b POST "${HA_URL%/}/api/services/light/turn_on" \
"Authorization: Bearer $HA_TOKEN" \
entity_id="light.living_room" \
brightness:=128
(Use := for numeric values in httpie, = for strings.)
Display result:
List available services — call-service list [domain=<domain>]:
http --ignore-stdin -b GET "${HA_URL%/}/api/services" \
"Authorization: Bearer $HA_TOKEN"
Display as: Domain → Service: description (if available). Filter by domain if domain= provided.
</workflow>
<common_services>
| Service | Description |
|---|---|
light.turn_on | Turn on light (optional: brightness, rgb_color, color_temp) |
light.turn_off | Turn off light |
switch.turn_on / switch.turn_off / switch.toggle | Control switches |
cover.open_cover / cover.close_cover | Garage doors, blinds |
climate.set_temperature | Set thermostat (temperature=, hvac_mode=) |
media_player.play_media | Play media |
automation.trigger | Trigger an automation |
script.turn_on | Run a script |
notify.<notifier> | Send a notification (message=) |
homeassistant.reload_all | Reload all configuration |
| </common_services> |
<success_criteria>
:= syntax)