Help us improve
Share bugs, ideas, or general feedback.
From sonos-cli-plugin
Control Sonos speakers from the CLI using the `sonos` command. Translates natural language requests into sonos CLI commands for playback, volume, grouping, queue management, and music search. Use this skill whenever the user mentions Sonos, asks to play music on a speaker, control volume on a room, group or ungroup speakers, manage their Sonos queue, or references speaker names like "Kitchen" or "TV". Trigger phrases: "play X on Sonos", "turn up the kitchen speaker", "pause Sonos", "what's playing on Sonos", "group my speakers", "play my Sonos favorites", "Sonos volume", "skip track on Sonos", "add to Sonos queue".
npx claudepluginhub conorluddy/skills --plugin sonos-cli-pluginHow this skill is triggered — by the user, by Claude, or both
Slash command
/sonos-cli-plugin:sonos-cliThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Control Philips Hue lights via the `sonos` CLI command-line interface installed at `/opt/homebrew/bin/sonos` (v0.1.1+).
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
Control Philips Hue lights via the sonos CLI command-line interface installed at /opt/homebrew/bin/sonos (v0.1.1+).
Two speakers are configured in this household:
| Speaker | IP Address | Notes |
|---|---|---|
| Kitchen | 192.168.68.61 | Primary speaker, default target |
| TV | 192.168.68.60 | Secondary speaker |
To re-discover speakers or add new ones, run:
sonos discover
If a speaker becomes unreachable, check network connectivity and re-run discover.
When the user mentions Sonos or a speaker name:
sonos <cmd> --name "<Room>" (unless a defaultRoom is configured).sonos discover or checking network status.| User Intent | CLI Command | Output |
|---|---|---|
| What's playing? | sonos status --name "<Room>" | Current track, artist, duration, playback state |
| Get volume | sonos volume get --name "<Room>" | Current volume (0–100) |
| List speakers | sonos discover | All speakers on network with IPs |
| Show queue | sonos queue list --name "<Room>" --format json | Full playlist (JSON) |
| List favorites | sonos favorites list --name "<Room>" --format json | Saved favorites (JSON) |
| User Intent | CLI Command |
|---|---|
| Play / resume | sonos play --name "<Room>" |
| Pause | sonos pause --name "<Room>" |
| Stop | sonos stop --name "<Room>" |
| Skip / next | sonos next --name "<Room>" |
| Previous track | sonos prev --name "<Room>" |
| User Intent | CLI Command |
|---|---|
| Set volume to N (0–100) | sonos volume set <N> --name "<Room>" |
| Mute | sonos mute on --name "<Room>" |
| Unmute | sonos mute off --name "<Room>" |
| Toggle mute | sonos mute toggle --name "<Room>" |
| Increase by N | sonos volume +<N> --name "<Room>" |
| Decrease by N | sonos volume -<N> --name "<Room>" |
sonos play spotify "<query>" --name "<Room>"
--category tracks|albums|playlists — filter search type (default: all)--index N — pick Nth result (0-based; default: 0 for top result)Examples:
sonos play spotify "jazz" --name "Kitchen" — play jazz mixsonos play spotify "norah jones" --category tracks --index 2 --name "Kitchen" — play 3rd track by Norah Jonessonos search spotify "<query>" --type track --open --name "<Room>"
Prefer SMAPI above unless the user explicitly says "search."
| User Intent | CLI Command |
|---|---|
| Group Kitchen + TV | sonos group join --name "Kitchen" --to "TV" |
| Ungroup / solo speaker | sonos group solo --name "<Room>" |
| Party mode (all rooms join Kitchen) | sonos group party --to "Kitchen" |
| User Intent | CLI Command |
|---|---|
| Play saved favorite | sonos favorites open "<favorite-name>" --name "<Room>" |
| Save current state as scene | sonos scene save "<scene-name>" |
| Apply a saved scene | sonos scene apply "<scene-name>" |
| User Intent | CLI Command |
|---|---|
| Clear queue | sonos queue clear --name "<Room>" |
| TV audio input | sonos tv --name "TV" |
| Play radio/stream URL | sonos play-uri <url> --name "<Room>" --radio --title "<display-name>" |
User: "Play some jazz on the kitchen"
Skill:
sonos play spotify "jazz" --name "Kitchen"Playing jazz on Kitchen speakerUser: "Turn the TV speaker up to 50"
Skill:
sonos volume set 50 --name "TV"TV volume set to 50User: "What's playing on Sonos?"
Skill:
sonos status --name "Kitchen"[Parsed output] Artist - Track Name (2:45 / 5:30) [Playing]User: "Group my speakers together"
Skill:
sonos group party --to "Kitchen"TV grouped with KitchenUser: "Pause the Sonos"
Skill:
sonos pause --name "Kitchen"PausedQueries (status, volume, queue, favorites):
--format json if availablesonos status --format json → extract track, artist, duration, playback and format as human-readable textMutations (play, pause, volume set, grouping):
--format json"Playing [title] on Kitchen" or "Volume set to 50"Errors:
"Kitchen is offline. Try 'sonos discover' to re-scan the network.""No tracks found for 'xyz'. Try a different search."Only invoke this skill when the user explicitly mentions:
Sonos, sonos (case-insensitive)Kitchen, TV, or other rooms"play music on the kitchen speaker", "turn up volume" in a Sonos contextDo NOT trigger if the user says "play music" without mentioning Sonos or a specific speaker name. This keeps the skill focused and avoids false positives.
"pause Sonos" → pauses Kitchen)sonos discover to re-scansonos play spotify) doesn't require credentials; use Web API (via sonos search spotify) only if user has Spotify API keys configured