From dj-music
This skill should be used when the user asks to deliver a set, export a set, finalize a set, do a rekordbox export, sync a set to YM, or generate a cheat sheet. Covers the generated-sets bundle (MP3 + M3U8 + cheatsheet + rekordbox XML), YM playlist push and backup.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dj-music:deliver-setThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Превратить готовую set_version в исполняемый пакет. Продукт доставки — папка `generated-sets/<Set-Name>/`: пронумерованные MP3 + `playlist.m3u8` + `CHEATSHEET.md` + `rekordbox.xml`, плюс YM-плейлист и бэкап.
Превратить готовую set_version в исполняемый пакет. Продукт доставки — папка generated-sets/<Set-Name>/: пронумерованные MP3 + playlist.m3u8 + CHEATSHEET.md + rekordbox.xml, плюс YM-плейлист и бэкап.
Gate on review of the chosen version
local://sets/{id}/tracks (или entity_get(entity="set_version", id=<v>, include_relations=["items"])).local://sets/{id}/review?version=<v> — hard conflicts = стоп, чини через skill build-set.entity_list(entity="track_features", filters={"track_id__in": [...], "analysis_level__lt": 5}) — непустой результат = сначала download (шаг 2) + entity_update(track_features, id, {"level": 5}), затем пересобери set_version (L5 меняет ключи и picker-решения — иначе доставишь устаревший cheatsheet).Ensure MP3s on disk (до любых YM-push'ей — budget общий)
entity_create(entity="audio_file", data={"track_ids": [...]}) батчами 8–10; skip = строка есть И файл на диске (v1.6.2 перекачивает stale).entity_list(entity="audio_file", filters={"track_id__in": [...]}, fields=["id","track_id","file_path"]) → перевыпусти entity_create только на недостающие ids; повторяй до полного покрытия. Пути бери из этого же ответа — НЕ ls по диску.Assemble the bundle (generated-sets/<Set-Name>/)
NN. Artist - Title.mp3 (нумерация = позиция; этот формат обязателен для DB-матчинга rekordbox-экспортёра).playlist.m3u8 — #EXTINF:<sec>,Artist - Title + имя файла, в порядке сета.CHEATSHEET.md — исполняемый план, не голая таблица
local://sets/{id}/cheatsheet?version=<v> (fx_type, bars, mix_in/out points, ключи с provenance, next_transition.overall).NeuralMixTransition): DRUM_SWAP / DRUM_CUT / FADE / ECHO_OUT / VOCAL_SUSTAIN / VOCAL_CUT / HARMONIC_SUSTAIN — переноси как есть. FILTER_SWEEP в рантайме НЕ существует; встретил его в legacy-cheatsheet старого сета — мапь в DRUM_SWAP, filter-knob подавай как опциональный ручной приём.Rekordbox XML — через боевой скрипт, не руками
set -a && . ./.env && set +a && uv run python scripts/export_folder_to_rekordbox_xml.py "generated-sets/<Set-Name>" --playlist-name "<Name>"tracks_enriched == tracks_exported (обогащение BPM/key/beatgrid/cues из БД матчится по имени файла NN. Artist - Title.mp3). Меньше — чини имена файлов, не игнорируй.Push to Yandex Music (порядок — это продукт)
provider_write(provider="yandex", entity="playlist", operation="create", params={"title": "<Set Name>"}) → возьми kind из ответа.provider_write(..., operation="add_tracks", params={"playlist_id": "<kind>", "track_ids": [<ym ids в порядке сета>], "at": <текущий trackCount>}) — без at YM вставляет в позицию 0 (prepend) и рушит порядок; для свежего плейлиста at=0. YM id треков — из имён скачанных файлов ([<ym_id>].mp3); таблица track_external_ids не входит в EntityRegistry — читается только через Supabase MCP/SQL.trackCount == N, durationMs ≈ длительность сета.Backup вне /tmp и вне репо
/tmp/dj_audio/ (macOS чистит /tmp), generated-sets/ в .gitignore. Копируй бандл в ~/Music/DJ-Sets/ (и в ~/DJ_USB_BUILD/_SETS/, если идёт USB-кампания). Восстановление без бэкапа = полная перекачка под YM rate-limit.AudioFileCreate принимает track_id | track_ids (ровно один) + опциональный source (default "yandex") — ключа persistent не существует./opt/homebrew/bin/ffprobe) и локальный asyncpg-доступ (локаль/teleport; не облако).deliver_set_workflow prompt — канонический рецепт с conflict-гейтом, когда нужен интерактивный путь; ручной путь выше — когда собираешь бандл сам.npx claudepluginhub evgenygurin/dj-music-plugin --plugin dj-musicGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.