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.
What this skill does
# spoti-cli
## Prerequisites
Check auth: `spoti-cli me --json`. If it fails:
1. Install: `bun add -g @crafter/spoti-cli`
2. Run `spoti-cli auth` — it prints the exact dashboard URL, redirect URI (`http://127.0.0.1:8888/callback`), and API checkbox (Web API) to use
3. Re-run with `spoti-cli auth --client-id <CLIENT_ID>` once you have the ID
The CLI walks the user through Spotify dashboard setup. Don't repeat the steps yourself — point them at `spoti-cli auth` and let them paste the output.
## Workflow
### 1. Parse Intent
Three modes:
- **Explicit**: user names artists/tracks → search directly
- **Mood/activity**: user describes vibe → read [mood-mapping.md](references/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](references/mood-mapping.md)
### 2. Find Seeds
```bash
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
```bash
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](references/mood-mapping.md).
### 4. Create Playlist
```bash
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
```bash
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.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.