Help us improve
Share bugs, ideas, or general feedback.
From dj-music
This skill should be used when the user asks to build a DJ set, create a set from playlist, optimize track order, rebuild set, reorder tracks, or make a set. Covers playlist audit, GA/greedy optimization, review and iteration.
npx claudepluginhub evgenygurin/dj-music-plugin --plugin dj-musicHow this skill is triggered — by the user, by Claude, or both
Slash command
/dj-music:build-setThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guide the user through building an optimized DJ set from a playlist using the v1 polymorphic dispatcher surface (**20 tools** = 14 core dispatchers + 6 UI Prefab Apps — см. @docs/tool-catalog.md).
Applies 10 pre-set color/font themes or generates custom ones for slides, documents, reports, and HTML landing pages.
Share bugs, ideas, or general feedback.
Guide the user through building an optimized DJ set from a playlist using the v1 polymorphic dispatcher surface (20 tools = 14 core dispatchers + 6 UI Prefab Apps — см. @docs/tool-catalog.md).
Identify source playlist
entity_list(entity="playlist", fields="summary")entity_list(entity="playlist", filters={"name__icontains": "..."})entity_get(entity="playlist", id=<id>, include_relations=["tracks"])Choose template and parameters
warm_up_30, classic_60, peak_hour_60, roller_90,
progressive_120, wave_120, closing_60, full_libraryreference://templatesAudit source playlist first
local://playlists/{id}/audit — coverage, BPM/key distribution, gapsentity_create(entity="track_features", data={"track_ids": [...], "level": 2})
(handler track_features_analyze runs L1+L2 tiered pipeline → mood lands in features automatically)Build the set — two-step (optimize → persist)
entity_create(entity="set", data={"name": "...", "template_name": "peak_hour_60"})sequence_optimize(track_ids=[...], algorithm="ga", template="peak_hour_60", pinned=[...], excluded=[...])
→ returns {track_order, quality_score, algorithm, generations}.
algorithm: "auto" (default — greedy for pools ≥200, GA otherwise), "ga" (~30s for 100 tracks), or "greedy" (fast).pinned / excluded reject ids not in the pool with a typed ValidationError (v1.3.7 gate).set_version_build writes items + scores transitions):
entity_create(entity="set_version", data={"set_id": <id>, "label": "v1", "track_order": [<...from Step A>]})
extra="forbid"): only set_id, label, track_order, quality_score?, generator_run_meta? are accepted.track_ids in track_order before insert with a typed error listing the missing ids.Review the result
local://sets/{id}/review — quality overview (score, hard conflicts, weakest transitions, energy arc deviation)local://sets/{id}/summary or local://sets/{id}/fullui_set_view(set_id=<id>) renders heading + energy LineChart + DataTable + transition badges + cheatsheet card; fallback is a structured JSON payload for non-Prefab clientsui_score_pool_matrix(track_ids=[...]) for N×N visual mix-affinitytransition_score_pool(track_ids=[...], intent=<optional>) — rejects duplicate ids (v1.3.7 gate)Iterate
local://tracks/{id}/suggest_next?limit=5&energy_direction=uplocal://tracks/{track_id}/suggest_replacement/{set_id}/{position}set_version, previous versions untouchedlocal://sets/{id}/versions/compare/{a}/{b}Finalize
local://sets/{id}/cheatsheet?version=<latest>local://sets/{id}/narrative/deliver-set when happy"auto" (default), "ga", or "greedy" — passed to sequence_optimize. Without features on candidate tracks, optimizer falls back to playlist_order.pinned / excluded on sequence_optimize (NOT on entity_create(set_version) — that handler accepts only track_order). Each entity_create(set_version) produces a new immutable SetVersion.local://sets/{id}/{summary|tracks|transitions|full}; UI: ui_set_view(set_id=...).Auto-analysis: set build triggers L3 analysis for any candidate with analysis_level < 3 — no manual reanalyze needed (see @docs/reports/tiered-analysis-design-2026-03-27.md).
playlist_order fallback