Help us improve
Share bugs, ideas, or general feedback.
From kjgarza-base
This skill should be used when the user wants to control smart home devices — lights, speakers, music playback, or scenes. Triggers on phrases like 'turn on the lights', 'play some jazz', 'dim the lights', 'stop the music', 'goodnight', 'movie mode', 'what's playing', or any reference to Yeelight bulbs, Google Cast speakers, or SomaFM radio.
npx claudepluginhub kjgarza/marketplace-claude --plugin kjgarza-baseHow this skill is triggered — by the user, by Claude, or both
Slash command
/kjgarza-base:home-controlhaikuThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Control Yeelight bulbs and Google Cast speakers on the local network using the `scripts/home.py` script bundled with this skill.
Configures Home Assistant Assist voice control with pipelines, custom intents, wake words, TTS/STT engines (Piper, Faster Whisper), and satellites. Use for local setups and natural voice commands.
Drives SwitchBot smart home devices via CLI: lights, locks, curtains, sensors, plugs, IR appliances. Reads policies, suggests automation rules, and manages execution plans with per-step approval.
Controls HomeKit smart home accessories like lights, doors, thermostats via HomeClaw MCP tools. Runs scenes, lists devices/rooms, queries events/status, manages automations/config, references characteristics.
Share bugs, ideas, or general feedback.
Control Yeelight bulbs and Google Cast speakers on the local network using the scripts/home.py script bundled with this skill.
All commands output JSON. Always run from the skill's scripts directory (the base directory is provided above as "Base directory for this skill"):
cd <base-directory>/scripts
python3 home.py discover [--timeout 5]
python3 home.py status [--cached]
python3 home.py lights --device NAME --action {on,off,toggle,brightness,ct} [--value N]
--device: fuzzy name match or all-lightsbrightness: value 1-100ct: color temperature 1700-6500K (lower=warm, higher=cool)python3 home.py cast --device NAME --action {play,stop,pause,volume,status} [--url URL] [--stream GENRE] [--volume N]
--device: fuzzy name match, all-speakers, or a specific group/speaker name--stream: genre keyword (jazz, ambient, metal, electronic, etc.) — maps to SomaFM AAC streams--url: direct audio URL (overrides --stream). Must be HTTP (not HTTPS) for Cast compatibility.--volume: 0-100| Name | Type | Notes |
|---|---|---|
| Kitchen speaker | Google Home Mini | Individual speaker |
| Living Room speaker | Google Nest Mini | Individual speaker |
| Master Room speaker old | Google Home Mini | Individual speaker |
| Living Room TV 2 | Chromecast | TV, may not play audio-only |
| Motz | Cast Group | Multi-room group — preferred for "play everywhere" |
| SoundedX | Cast Group | Multi-room group |
For "play on all speakers" or "play everywhere", use --device all-speakers. This targets speaker groups (Motz, SoundedX) rather than individual devices. Playing on individual Cast speakers sequentially is unreliable; groups handle sync natively.
For single-room playback, target the specific speaker by name (e.g., --device kitchen).
references/somafm-channels.md, pick the closest matching channel, and play it immediately. Mention which channel was chosen. Fallback priority: match by subgenre, then by mood/energy, then by era.python3 home.py ... and read JSON output.When the user says one of these, execute the corresponding commands:
"goodnight" / "bedtime":
lights --device all-lights --action offcast --device all-speakers --action stop"movie mode" / "movie time":
lights --device all-lights --action brightness --value 15lights --device all-lights --action ct --value 2700"reading mode":
lights --device all-lights --action brightness --value 80lights --device all-lights --action ct --value 4000"focus" / "work mode":
lights --device all-lights --action brightness --value 100lights --device all-lights --action ct --value 5000cast --device all-speakers --action stop"relax" / "chill":
lights --device all-lights --action brightness --value 40lights --device all-lights --action ct --value 2700cast --device all-speakers --action play --stream ambientSee references/somafm-channels.md for the full list. Common mappings:
| Genre keyword | Channel |
|---|---|
| jazz, spy, lounge | Secret Agent |
| ambient, chill | Groove Salad |
| metal, heavy | Metal |
| electronic, electronica | cliqhop |
| folk | Folk Forward |
| 80s | Underground 80s |
| country, americana | Boot Liquor |
| space | Space Station |
| drone | Drone Zone |
If a genre is not directly mapped, autonomously pick the closest channel from references/somafm-channels.md and play it. Never ask the user to choose — just pick the best fit and mention what was selected.
discover to re-scan.bash <base-directory>/scripts/setup.sh--timeout 10discover to force a fresh scan (bypasses the 30-min cache).