summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-24 21:07:46 +0300
committerPaul Buetow <paul@buetow.org>2026-05-24 21:07:46 +0300
commitb48ef4c3104b746e045e351eff1a50a68de1c609 (patch)
treeefb58c387c2f4d2ef40aa03742f2603bb228d114
parent8eb4c58043eaffad13f09e5eb69d884a1b073657 (diff)
update prompts
-rw-r--r--prompts/skills/creating-cd-mixes/SKILL.md106
1 files changed, 106 insertions, 0 deletions
diff --git a/prompts/skills/creating-cd-mixes/SKILL.md b/prompts/skills/creating-cd-mixes/SKILL.md
new file mode 100644
index 0000000..c89047e
--- /dev/null
+++ b/prompts/skills/creating-cd-mixes/SKILL.md
@@ -0,0 +1,106 @@
+---
+name: creating-cd-mixes
+description: "Builds themed audio-CD mixes from FLAC files in the local music library. Picks tracks from the user's chosen genres/folders, shuffles, deduplicates, and packs them into N discs that fit a 74-min or 80-min CD-R/RW; copies FLACs to ~/Desktop/Music and writes a .txt tracklist per disc. Use when the user asks to burn/create/prepare audio CDs, CD-R, CD-RW, mix CDs, or compile FLACs for a CD player. Triggers on: burn CD, mix CD, audio CD, CD-R, CD-RW, compile FLACs for CD."
+---
+
+# Creating CD mixes
+
+Prepare FLAC playlists shaped for a physical audio CD: pick a theme, gather
+candidate tracks from the music library, shuffle, and pack into N discs that
+will fit a real CD-R/RW when burned as an **audio CD** (the burning tool
+transcodes FLAC → PCM).
+
+## Defaults for this user
+
+- Music root: `/data/nfs/k3svolumes/navidrome/music`
+- Output: `~/Desktop/Music`
+- Disc size: ask if not specified
+ - **74-min** CD-R/RW → use `max_seconds: 4380` (73:00, ~1 min headroom)
+ - **80-min** CD-R/RW → use `max_seconds: 4700` (78:20, ~1:40 headroom)
+
+Always leave headroom (60-100 s); burners reject overflowing tracks.
+
+## Workflow
+
+1. **Clarify** with the user, only if missing:
+ - theme / genre (e.g. focus, deep house, lounge, classical, soundtrack)
+ - number of discs (default 3 if the user says "a few")
+ - disc length (74 vs 80 min)
+2. **Survey the library**: list candidate FLAC source folders under the music
+ root that match the theme. Use `find ... -iname "*.flac"` and `grep -i`
+ with terms drawn from the theme. Confirm the picks with the user when the
+ match is loose.
+3. **Build a config** (see *Config schema* below). Prefer many small folders
+ over one giant one so the shuffle feels varied.
+4. **Run the packer**: pipe the JSON into `scripts/build_cds.py`. It writes
+ `CD<N>-Mix/` folders plus `CD<N>-Mix.txt` summaries.
+5. **Verify**: each disc's reported `Total time` must be ≤ the chosen limit.
+ List the output dir and show a tracklist excerpt back to the user.
+6. **Clean up** any earlier output directories before re-running so the user
+ does not end up with stale CDs.
+
+## Config schema
+
+```json
+{
+ "music_root": "/data/nfs/k3svolumes/navidrome/music",
+ "dest": "/home/paul/Desktop/Music",
+ "title": "Focus / House Mix",
+ "num_cds": 3,
+ "max_seconds": 4380,
+ "seed": 42,
+ "source_dirs": [
+ "Miscellaneous/Compilations/Deep House Study Mix_ Electronic Music for Studying, Concentration",
+ "Miscellaneous/Compilations/Chill House Cafe Playlist",
+ "Miscellaneous/Polo & Pan/Cyclorama"
+ ],
+ "extra_files": [
+ "Miscellaneous/David Guetta, Marten Hørger/The Freaks/01 The Freaks (Edit).flac"
+ ]
+}
+```
+
+- `source_dirs` are folders **relative to** `music_root`; every `*.flac`
+ directly inside (non-recursive) is a candidate.
+- `extra_files` add single tracks outside those folders.
+- Tracks are deduplicated by lowercase title (after stripping a leading
+ `"NN "` track-number prefix), so the same song appearing in two
+ compilations only lands on one disc.
+
+## Running the packer
+
+```bash
+python3 scripts/build_cds.py --config /tmp/mix.json
+# or:
+echo "$JSON" | python3 scripts/build_cds.py
+```
+
+Requires `ffprobe` (ffmpeg) on PATH for duration probing.
+
+Output per disc:
+
+```
+~/Desktop/Music/CD1-Mix/
+ 01 - Track Title.flac
+ 02 - ...
+~/Desktop/Music/CD1-Mix.txt # tracklist + total time
+```
+
+## Burning
+
+The user burns these as **audio CDs** with their preferred tool
+(`brasero`, `k3b`, `xfburn`, etc.). The tool transcodes FLAC → 16-bit
+44.1 kHz PCM automatically; the duration limit is what matters, not the
+FLAC file size.
+
+## Gotchas
+
+- Audio-CD capacity is **time**, not bytes — never use folder size to
+ decide what fits.
+- Always re-check with `ffprobe` after picking tracks; tag-reported lengths
+ can be wrong.
+- The packer is greedy (places each shuffled track on the least-filled
+ disc that still fits). It may leave a few long tracks unplaced; rerun
+ with a different `seed` or fewer/more candidate folders if needed.
+- Remove the previous `CD*-Mix` folders and `CD*.txt` files before each
+ fresh run.