From dj-music
This skill should be used when the user asks to expand a playlist, find similar tracks, add more tracks, discover new tracks, crate digging, import from Yandex Music, or fill gaps in a playlist. Covers seed-based discovery, import, download and analysis.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dj-music:expand-playlistThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Дискавери и импорт через v1-диспетчеры. Жёсткий порядок хвоста пайплайна: **import → download → analyze** (анализ требует скачанный audio_file).
Дискавери и импорт через v1-диспетчеры. Жёсткий порядок хвоста пайплайна: import → download → analyze (анализ требует скачанный audio_file).
Seeds → similar (лучший канал дискавери)
[<ym_id>] в именах скачанных файлов или через track_external_ids).provider_read(provider="yandex", entity="track_similar", id=<ym_track_id>) — один сильный сид даёт ~15–18 релевантных кандидатов (лейбл-соседи, ремиксы). Free-text добор: provider_search(provider="yandex", query="...", type="tracks", limit=20).Filter candidates по метаданным ответа
albums[0].genre: techno/electronics — ок; ambient/dance — глазами), длительность (5–9 мин для DJ-tools), год, лейбл (Hypnus/Affin/PoleGroup-класс — сильный сигнал стиля.)r128.i в ответе YM ≈ integrated LUFS — грубый энергетический фильтр ещё до импорта.Import (idempotent, батчем)
entity_create(entity="track", data={"external_ids": ["<ym_id>", ...], "source": "yandex", "playlist_id": <опц.>})imported (новые) / skipped (уже в базе — дедуп по (source, external_id)) / id_mapping (ym_id → local_id). Не удивляйся высокому skip-проценту: BFS-библиотека уже покрывает много окрестностей.Download — ДО анализа
entity_create(entity="audio_file", data={"track_ids": [<local ids>]}) батчами 8–10; на таймауте проверь entity_list(entity="audio_file", filters={"track_id__in": [...]}) и перевыпусти недостающие. Ключа persistent не существует.Analyze
entity_create(entity="track_features", data={"track_ids": [...], "level": 2|3}) — mood ляжет в features автоматически; L5 — только для треков, идущих в финальный сет (entity_update(..., data={"level": 5})).Verify coverage + добор до цели
entity_list(entity="track_features", filters={"track_id__in": [...]}, fields=["track_id","analysis_level","bpm","mood","energy_mean","integrated_lufs","spectral_centroid_hz"]) — и кури новичков feature-first (skill curate-library; там же NULL-ловушка L2-колонок при фильтрах).imported < цель (высокий skip — норма) — вернись к шагу 1 со следующими сидами, пока не наберёшь N новых.Для интерактивного end-to-end пути — промпты expand_playlist_workflow / crate_digging_workflow / full_pipeline (аргументы смотри в самом промпте через list_prompts, не по памяти).
track_similar может вернуть один и тот же трек в разных альбомах (сборники) — дедуп до импорта по realId.status=1 (archived) не берём в работу.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.