Home-butler response-mode selection and worked examples for scenes, comfort, device status, energy, and confirmations.
Install
npx skillscat add tzeusy/butlers/roster-home-agents-skills-interactive-response Install via the SkillsCat registry.
Home Interactive Response Skill
Purpose
Load this skill when an interactive home message needs a deliberate response
mode or a worked scene, comfort, status, energy, health-check, setup, or
confirmation pattern.
Response Mode Selection
React: Emoji-only acknowledgment
- Use when: The action is simple and self-explanatory
- Example: User requests scene execution → React with ✅
Affirm: Brief confirmation message
- Use when: Need a short confirmation with key information
- Example: "Scene 'Movie Night' activated: lights dimmed, blinds closed."
Follow-up: Proactive question or observation
- Use when: Need more information or can offer recommendations
- Example: "I've set comfort preferences for your bedroom. Should I apply the same settings to the living room?"
Answer: Substantive response to a question
- Use when: User asked a direct question about home status or data
- Example: "Living room is at 72°F and 45% humidity, both in your comfort range. Bedroom is 70°F."
React + Reply: Combined emoji + message
- Use when: Immediate acknowledgment plus substantive feedback
- Example: React with ✅ then "Door locked. All windows closed. Security system armed."
Complete Examples
Example 1: Scene Activation (Affirm)
User message: "Activate movie night"
Actions:
ha_activate_scene(entity_id="scene.movie_night")memory_store_fact(subject="movie-night-scene", predicate="usage_pattern", content="user triggered movie night scene", permanence="standard", importance=4.0, tags=["scene", "movie-night"])notify(channel="telegram", message="Scene 'Movie Night' activated — lights dimmed to 20%, blinds closed, sound system on.", intent="reply", request_context=...)
Example 2: Comfort Query (Answer)
User message: "What's the temperature in here?"
Actions:
ha_list_entities(domain="sensor", area="living_room")to find temperature/humidity sensorsha_get_entity_state(entity_id="sensor.living_room_temperature")returns 72°Fha_get_entity_state(entity_id="sensor.living_room_humidity")returns 48%memory_recall(subject="living-room", predicate="comfort_preference")to get target rangenotify(channel="telegram", message="Living room is at 72°F and 48% humidity — both in your comfort range. Your target is 71-73°F.", intent="reply", request_context=...)
Example 3: Preference Setting (Affirm)
User message: "I like the bedroom cooler at night, around 68 degrees"
Actions:
memory_store_fact(subject="bedroom", predicate="comfort_preference", content="user prefers 68°F in bedroom at night", permanence="stable", importance=7.0, tags=["bedroom", "temperature", "comfort", "night"])ha_call_service(domain="climate", service="set_temperature", target={"area_id": "bedroom"}, data={"temperature": 68})notify(channel="telegram", message="Set bedroom night temperature to 68°F (67-69°F range). I'll adjust the thermostat tonight.", intent="reply", request_context=...)
Example 4: Device Status with Alert (Answer)
User message: "Are all the lights off?"
Actions:
ha_list_entities(domain="light")to get all light entities with current state- Parse result: living room light (on, brightness 77/255 ≈ 30%), bedroom light (off), kitchen light (off)
notify(channel="telegram", message="Living room light is still on at 30% brightness. Other lights are off. Want me to turn it off?", intent="reply", request_context=...)
Example 5: Energy Report (Answer)
User message: "What's my energy usage today?"
Actions:
ha_list_entities(domain="sensor")to find energy monitoring sensors (look for entities withenergyorkwhin the name)ha_get_statistics(statistic_ids=["sensor.energy_consumption_kwh"], start="<today 00:00 ISO>", end="<now ISO>", period="hour")to get hourly energy totalsha_get_statistics(statistic_ids=["sensor.hvac_energy", "sensor.water_heater_energy"], start="<today 00:00 ISO>", end="<now ISO>", period="day")for the per-device breakdownnotify(channel="telegram", message="Today's usage: 18 kWh. Top consumers: HVAC (40%), Water heater (25%), Kitchen appliances (15%). Usage is 8% below your weekly average.", intent="reply", request_context=...)
Example 6: Proactive Device Health Check (Follow-up)
User message: "Run the device health check"
Actions:
ha_list_entities()to survey all entities; look for any with stateunavailableorunknownha_list_entities(domain="sensor")to find battery sensors; look for names containingbatteryha_get_entity_state(entity_id="sensor.basement_sensor_battery")returns 15%memory_store_fact(subject="basement-sensor", predicate="device_issue", content="battery at 15% — critical; needs replacement soon", permanence="volatile", importance=8.0, tags=["maintenance", "urgent", "battery"])notify(channel="telegram", message="Health check complete. One device needs attention: basement sensor battery is at 15%.", intent="reply", request_context=...)
Example 7: Scene Setup (Affirm + Follow-up)
User message: "Create a bedtime scene that cools the bedroom to 68 and dims all lights"
Actions:
ha_list_entities(domain="light")to discover all light entity IDsha_call_service(domain="climate", service="set_temperature", target={"area_id": "bedroom"}, data={"temperature": 68})ha_call_service(domain="light", service="turn_on", target={"area_id": "all"}, data={"brightness_pct": 10})ha_call_service(domain="scene", service="create", data={"scene_id": "bedtime", "entities": {"climate.bedroom": {"state": "cool", "temperature": 68}, "light.living_room": {"state": "on", "brightness": 26}, "light.bedroom": {"state": "on", "brightness": 26}}})memory_store_fact(subject="bedtime-scene", predicate="scene_preference", content="user created bedtime scene with temperature 68 and dim lighting", permanence="standard", importance=6.0, tags=["scene", "bedtime", "automation"])notify(channel="telegram", message="Bedtime scene created — bedroom cooling to 68°F, all lights dimmed to 10%. Want me to schedule it for 10pm every night?", intent="reply", request_context=...)
Example 8: Destructive Action Confirmation (Follow-up)
User message: "Disable the movie night automation"
Actions:
- Instead of immediately disabling, ask for confirmation via
notify() notify(channel="telegram", message="Disable 'Movie Night' automation? React with ✅ to confirm or ❌ to cancel.", intent="reply", request_context=...)- Wait for user confirmation before calling
ha_call_service(domain="automation", service="turn_off", target={"entity_id": "automation.movie_night"})