# Tidal Playlist

> Manage Tidal playlists — list, create, rename, delete, add or remove albums and tracks. Use when the user wants to work with playlists.

- Skill: `majiayu000/tidal-playlist` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/tidal-playlist`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/tidal-playlist/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/tidal-playlist

---


# Tidal Playlist

Manage Tidal playlists: list, create, rename, delete, and add or remove content.

## Commands

### playlist list
- **Usage**: `tidal-cli --json playlist list`
- **Arguments**: none
- **Output**: `[{id, name, num_tracks}]`

### playlist create
- **Usage**: `tidal-cli --json playlist create --name "<name>" [--desc "<description>"]`
- **Arguments**: `--name` (required), `--desc` (optional)
- **Output**: `{id, name, description}`

### playlist rename
- **Usage**: `tidal-cli --json playlist rename --playlist-id <id> --name "<new_name>"`
- **Arguments**: `--playlist-id` (required), `--name` (required)
- **Output**: `{status, id, old_name, new_name}`

### playlist delete
- **Usage**: `tidal-cli --json playlist delete --playlist-id <id>`
- **Arguments**: `--playlist-id` (required)
- **Output**: `{status, id, name}`

### playlist add-album
- **Usage**: `tidal-cli --json playlist add-album --playlist-id <id> --album-id <id>`
- **Arguments**: `--playlist-id` (required), `--album-id` (required)
- **Output**: `{status, tracks_added, album, playlist}`

### playlist add-track
- **Usage**: `tidal-cli --json playlist add-track --playlist-id <id> --track-id <id>`
- **Arguments**: `--playlist-id` (required), `--track-id` (required)
- **Output**: `{status, track, playlist}`

### playlist remove-track
- **Usage**: `tidal-cli --json playlist remove-track --playlist-id <id> --track-id <id>`
- **Arguments**: `--playlist-id` (required), `--track-id` (required)
- **Output**: `{status, track, playlist}`

## Instructions

1. Parse `$ARGUMENTS` to determine the operation (first word) and its parameters:
   - `list` — no additional arguments needed
   - `create` — extract `--name` and optionally `--desc` from arguments
   - `rename` — extract `--playlist-id` and `--name`
   - `delete` — extract `--playlist-id`
   - `add-album` — extract `--playlist-id` and `--album-id`
   - `add-track` — extract `--playlist-id` and `--track-id`
   - `remove-track` — extract `--playlist-id` and `--track-id`
   - If no operation given, show usage: `/tidal-playlist <list|create|rename|delete|add-album|add-track|remove-track> [options]`

2. Run the appropriate command and parse JSON output:
   - **list** → format as table with columns `ID`, `Name`, `Tracks`
   - **create** → confirm: "Playlist created: **<name>** (ID: `<id>`)"
   - **rename** → confirm: "Playlist renamed: **<old_name>** → **<new_name>**"
   - **delete** → confirm: "Playlist **<name>** (ID: `<id>`) deleted."
   - **add-album** → confirm: "<tracks_added> track(s) from album **<album>** added to playlist **<playlist>**."
   - **add-track** → confirm: "Track **<track>** added to playlist **<playlist>**."
   - **remove-track** → confirm: "Track **<track>** removed from playlist **<playlist>**."

3. If required arguments are missing for an operation, show a usage hint specific to that operation.

## Error Handling

- If exit code is non-zero, read stderr:
  - `"Error: Not authenticated"` → "You need to authenticate first. Run `/tidal-auth` to log in."
  - `"Error: Playlist not found"` → "Playlist not found (ID: `<id>`). Use `/tidal-playlist list` to see your playlists."
  - `"Error: Track not found in playlist"` → "Track (ID: `<id>`) is not in this playlist."
  - `"Error: Playlist name cannot be empty"` → "Please provide a non-empty playlist name."
  - `"Error: Unable to connect to Tidal"` → "Network error: unable to reach Tidal. Check your internet connection."
  - Any other error → display the raw error message with label "Error:"

