# Ymc Playback

> YMC Playback

- Skill: `involvex/ymc-playback` (Agent Skill)
- Install (CLI): `npx skillmds@latest add involvex/ymc-playback`
- Raw SKILL.md: https://api.skillmd.com/api/skills/involvex/ymc-playback/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: involvex (https://skillmd.com/u/involvex)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/involvex/ymc-playback

---

# YMC Playback

Prefer local files when available, then YouTube URLs via mpv IPC.

## Local vs remote

- `resolveTrackPlayUrl()` in `source/utils/local-track.ts` returns `{ url, source: 'local' | 'youtube' }`.
- Index: `~/.youtube-music-cli/downloads-index.json` keyed by `videoId`.
- Config: `preferLocalPlayback` (default `true`).
- `PlayerService.play` uses `classifyPlayMedia()` — absolute paths and `file:` URLs pass through; bare ids become watch URLs.

## Call sites

- Ink: `source/stores/player.store.tsx`
- Immersive: `resolveImmersiveTrackPlayUrl` in `source/immersive/state/queue-state.ts`
- CLI: `source/cli.tsx`
- Web: `WebServerManager.playTrackMedia`

## mpv notes

- Idle spawn + IPC `loadfile` (no URL on CLI args).
- Shared stall/EOF policy: `source/services/player/mpv-event-policy.ts`.
- mpv 0.41+: `--slang=en` not `--sub-lang=en`.

