Agent skill
spoti-cli
Create Spotify playlists using spoti-cli CLI. Use when: (1) user wants a playlist, (2) user says "playlist", "spotify", "music for", "songs for", (3) user describes a mood or activity implying music ("deep work", "chill", "workout"), (4) user asks for music based on their day/vault/logs. Supports vault-aware playlist generation by reading Obsidian daily logs to infer mood and context.
Install this agent skill to your Project
npx add-skill https://github.com/crafter-station/skills/tree/main/spotify/spoti-cli
SKILL.md
spoti-cli
Prerequisites
Check auth: spoti-cli me --json. If it fails, run setup:
- Install:
bun add -g spoti-cli - Create Spotify app at developer.spotify.com/dashboard/create:
- Set redirect URI to
http://127.0.0.1:8888/callback - Check Web API
- Copy the Client ID
- Set redirect URI to
- Auth:
spoti-cli auth --client-id <CLIENT_ID>
Workflow
1. Parse Intent
Three modes:
- Explicit: user names artists/tracks → search directly
- Mood/activity: user describes vibe → read mood-mapping.md
- Vault-aware: user says "based on my day" → read
02_Journal/daily/{YYYY-MM-DD}.md, extract mood signals from mood-mapping.md
2. Find Seeds
spoti-cli search "Radiohead" --type artist --limit 5 --json
spoti-cli search "Everything In Its Right Place" --type track --limit 3 --json
Extract id fields from results.
3. Get Recommendations
spoti-cli recommend --seed-artists ID1,ID2 --seed-genres ambient --energy 0.3 --valence 0.4 --limit 25 --json
Max 5 seeds total (artists + genres + tracks combined). Tunable attributes in mood-mapping.md.
4. Create Playlist
spoti-cli create "Deep Work — Mar 24" --description "Focus music" --tracks URI1,URI2,... --json
Name contextually: include mood + date. Vault-aware example: "Post-shipping Celebration — Mar 24".
5. Open in Spotify
open "spotify:playlist:{PLAYLIST_ID}" 2>/dev/null || open "https://open.spotify.com/playlist/{PLAYLIST_ID}"
Always open the playlist after creating it. Try Spotify desktop first (URI scheme), fall back to web if desktop isn't available.
6. Report
Return: playlist URL, seed logic summary, track count.
Commands
| Command | Example |
|---|---|
search |
spoti-cli search "query" --type track --limit 10 --json |
recommend |
spoti-cli recommend --seed-genres pop --energy 0.8 --limit 20 --json |
create |
spoti-cli create "Name" --tracks URIs --public --json |
playlist list |
spoti-cli playlist list --limit 10 --json |
playlist get |
spoti-cli playlist get ID --json |
playlist add |
spoti-cli playlist add ID --tracks URIs |
me |
spoti-cli me --json |
All commands support --json for structured output.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
skill-gen
Auto-generate Claude skills from documentation URLs using Firecrawl agent. Use when user wants to create a skill from docs, API references, or tool homepages. Asks up to 3 clarifying questions before deep extraction. Supports topic focus (e.g., "only auth endpoints") and outputs to local .claude/skills/ by default.
skillkit
Local-first analytics for AI agent skills. Use when user asks about skill usage, analytics, health, context budget, cost/burn rate, trigger conflicts, dead weight analysis, or wants to clean up unused skills.
intent-layer
Set up hierarchical Intent Layer (AGENTS.md files) for codebases. Use when initializing a new project, adding context infrastructure to an existing repo, user asks to set up AGENTS.md, add intent layer, make agents understand the codebase, or scaffolding AI-friendly project documentation.
setup-pre-commit
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
handoff
Compact the current conversation into a handoff document for another agent to pick up.
edit-article
Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.
Didn't find tool you were looking for?