agentleFS
yourkenikeyourkenike/ciana-parrot/skills/spotify/SKILL.md

spotify

Skill1 starsChanged 9 months agoMITView on GitHub

Control Spotify playback: play, pause, skip, search tracks/albums/playlists, manage devices and queue via spogo CLI.

  • Installs packages

19 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use heartmula, shopping and 4 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • math-incSkill

    heartmula

    Set up and run HeartMuLa, the open-source music generation model family (Suno-like). Generates full songs from lyrics + tags with multilingual support.

    Also in 3 projects that use this

  • ansvisorSkill

    shopping

    Checks product pages and feed for ChatGPT Shopping (US) and Google Shopping (EU).

    Also in 3 projects that use this

  • ourinesSkill

    forget

    Delete saved knowledge from ~/.claude/learnings/ and optionally clean up knowledge graph.

    Also in 3 projects that use this

  • refly-aiSkill

    instagram

    Integrate with Instagram for social media. Use when you need to: (1) post content to Instagram, (2) manage media and insights, or (3) automate Instagram publishing workflows.

    Also in 3 projects that use this

  • tunnckoCoreSkill

    python-debugpy

    Debug Python: pdb REPL + debugpy remote (DAP).

    Also in 3 projects that use this

  • math-incSkill

    youtube-content

    Fetch YouTube video transcripts and transform them into structured content (chapters, summaries, threads, blog posts).

    Also in 3 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

21 rules. 0 are common, 5 are distinctive, and 16 are very specific to this project.

  • 0

    Common

    Most of the 18 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 16

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use the spotify bridge to control Spotify playback via spogo on the host.

    line 9
  2. Very specific:

    Use --device flag: when targeting a specific device, especially if spogo play fails with "missing device id".

    line 28
  3. Very specific:

    All commands run via host_execute(bridge="spotify", command="...").

    line 32
  4. Very specific:

    Search: spogo search track "song name" --json (or artist/album/playlist)

    line 38
  5. Very specific:

    If is_playing: false, see "Known Issues" below

    line 42
  6. Very specific:

    Always use --json to get URIs for playback.

    line 58
  7. Very specific:

    After Spotify restarts, all devices show is_active: false.

    line 86
  8. Very specific:

    Detection: After spogo play <uri>, run spogo status --json.

    line 90
  9. Very specific:

    Workaround: Never use spogo play without arguments.

    line 98
  10. Very specific:

    Run spogo device list --json to find available devices

    line 107
  11. Very specific:

    Use --device flag: spogo play <uri> --device "Emanuele's MacBook Air"

    line 108
  12. Very specific:

    If all devices are is_active: false, tell the user to open Spotify and press play once

    line 109
  13. Distinctive:

    If a Spotify command fails, follow this sequence:

    line 117
  14. Very specific:

    Run spogo auth status to check authentication

    line 119
  15. Very specific:

    If sp_dc cookie is missing/expired, run spogo auth import --browser chrome

    line 120
  16. Very specific:

    If import fails, tell the user to log out/in on open.spotify.com in Chrome, then retry

    line 121
  17. Distinctive:

    If Keychain popup blocks on host, tell user to click "Always Allow", then retry

    line 122
  18. Very specific:

    If playback returns success but nothing happens, run spogo device list --json — if all is_active: false, tell user to activate Spotify …

    line 123
  19. Distinctive:

    If rate limited (429), wait and retry on the next message

    line 124
  20. Distinctive:

    Always try via host_execute first: Only suggest manual steps if host_execute itself fails.

    line 126
  21. Distinctive:

    If Keychain popup appears, enter password and click "Always Allow"

    line 133

“Common” is measured: kept by at least 6 in 10 of the 18 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Spotify

Use the spotify bridge to control Spotify playback via spogo on the host.

When to Use

  • User asks to play, pause, skip music
  • Searching for songs, albums, artists, playlists
  • Managing playback devices or queue
  • Checking what's currently playing

When NOT to Use

  • Apple Music -> not supported
  • Sonos playback -> use sonos bridge
  • Local audio files -> not supported

Critical Rules

  1. Only run spogo commands through host_execute. Never run sleep, echo, or any non-spogo command through the spotify bridge — they will be blocked by the gateway allowlist.
  2. Always verify playback after spogo play — run spogo status --json and check that is_playing is true and the correct track is loaded. Never tell the user "it's playing" without verifying.
  3. Use --device flag when targeting a specific device, especially if spogo play fails with "missing device id".

Commands

All commands run via host_execute(bridge="spotify", command="...").

Play by Name (most common workflow)

IMPORTANT: spogo play requires a Spotify URI, not a name. Follow this exact sequence:

  1. Search: spogo search track "song name" --json (or artist/album/playlist)
  2. Extract the uri field from the first result
  3. Play: spogo play <uri>
  4. Verify: spogo status --json — check is_playing: true and correct track name
  5. If is_playing: false, see "Known Issues" below

Playback

spogo status                                   # What's playing (text)
spogo status --json                            # What's playing (JSON, use for verification)
spogo play <uri>                               # Play a specific URI
spogo play <uri> --device "MacBook Air"        # Play on a specific device
spogo pause                                    # Pause
spogo next                                     # Next track
spogo prev                                     # Previous track

Search

Always use --json to get URIs for playback.

spogo search track "bohemian rhapsody" --json
spogo search album "dark side of the moon" --json
spogo search artist "radiohead" --json
spogo search playlist "chill vibes" --json

Devices

spogo device list --json                       # List devices (use JSON to check is_active)
spogo device set "Living Room"                 # Switch device

Auth & Diagnostics

spogo auth status                              # Check if authenticated
spogo auth import --browser chrome             # Import cookies from Chrome
spogo auth import --browser safari             # Import cookies from Safari

Known Issues & Workarounds

Device not active after Spotify restart

After Spotify restarts, all devices show is_active: false. In this state:

  • spogo play <uri> returns "Playback started" but does nothing (false success)
  • Playback only works after the user manually interacts with Spotify at least once

Detection: After spogo play <uri>, run spogo status --json. If is_playing is still false or the track didn't change, the device is not active.

Workaround: Tell the user: "Spotify needs to be activated first — press play once in the Spotify app, then I can take over."

Resume (spogo play without args) returns 403

spogo play (resume) often fails with 403 Forbidden. This is a spogo/Spotify API bug.

Workaround: Never use spogo play without arguments. Instead:

  1. Get current track: spogo status --json
  2. Replay with URI: spogo play <item.uri>

"missing device id" error

Happens when no device is active and spogo can't auto-select one.

Workaround:

  1. Run spogo device list --json to find available devices
  2. Use --device flag: spogo play <uri> --device "Emanuele's MacBook Air"
  3. If all devices are is_active: false, tell the user to open Spotify and press play once

Rate limit (429)

Spotify API has rate limits. If you get a 429 error, wait a moment before retrying. Do NOT try to run sleep via host_execute — just tell the user you'll retry in a moment and try the command again on the next message.

Troubleshooting

If a Spotify command fails, follow this sequence:

  1. Run spogo auth status to check authentication
  2. If sp_dc cookie is missing/expired, run spogo auth import --browser chrome
  3. If import fails, tell the user to log out/in on open.spotify.com in Chrome, then retry
  4. If Keychain popup blocks on host, tell user to click "Always Allow", then retry
  5. If playback returns success but nothing happens, run spogo device list --json — if all is_active: false, tell user to activate Spotify manually once
  6. If rate limited (429), wait and retry on the next message

Always try via host_execute first. Only suggest manual steps if host_execute itself fails.

Setup (first time, on host)

  • Requires Spotify Premium account
  • Install: brew install steipete/tap/spogo
  • Initial auth: spogo auth import --browser chrome (or let Ciana do it)
  • If Keychain popup appears, enter password and click "Always Allow"

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.