Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

music-curator

A scheduled Claude agent that curates Dance Dance Revolution music for Preston.

Every other day it:

  1. Reads local DDR/StepMania play data (song library + play counts / recent plays).
  2. Updates favorites.json with songs it infers Preston likes.
  3. Writes a fresh "remix" batch to remix/YYYY-MM-DD.md — a mix of English and Asian songs, chosen from official DDR song catalogs online and from songs already installed locally.

No downloading of music. The agent only produces song lists. It never downloads audio, simfile packs with bundled audio, or any copyrighted media.

Setup (Windows machine)

Open PowerShell as Administrator and run:

# 1. Get the code (install git first via `winget install Git.Git` if needed)
git clone https://github.com/pseay-imbue/ddr-picker.git C:\ddr-picker
cd C:\ddr-picker

# 2. Create the token file (outside the repo — never committed).
#    Generate a token with `claude setup-token` on any machine where
#    you're logged in to Claude Code, then:
mkdir "$env:USERPROFILE\.music-curator" -Force
notepad "$env:USERPROFILE\.music-curator\claude.env"
#    ...and paste one line:  CLAUDE_CODE_OAUTH_TOKEN=<your token>
#    Optional extra line if your DDR install is somewhere unusual:
#    DDR_DATA_DIR=C:\path\to\your\game

# 3. Install deps + register the schedule (Tue & Thu, 9:00 AM)
Set-ExecutionPolicy -Scope Process Bypass
.\setup.ps1

# 4. Do a first run right now to verify everything works
.\run-agent.ps1

setup.ps1 installs Node.js (via winget) and Claude Code if missing, then registers a Windows Scheduled Task named MusicCuratorAgent that runs run-agent.ps1 every Tuesday and Thursday at 9:00 AM.

After the first run, check:

  • state\ddr-install.json — did it detect your DDR app correctly?
  • remix\ — today's batch (markdown + json)
  • your game's Courses\Remix\ folder — the in-game course
  • logs\ — full agent transcript if anything looks off

How a run works

run-agent.ps1 loads the OAuth token from the env file, then runs Claude Code headless (claude -p) with the instructions in prompts/curator.md. Tool permissions are scoped by .claude/settings.json. Results are committed to this repo locally (favorites.json, remix/); logs go to logs/ (gitignored).

Alternative: mngr

If the machine has WSL with mngr installed, you can instead schedule via mngr's cron support:

mngr schedule add --name music-curator --command create \
  --args "--type headless_claude --project /path/to/music-curator --message-file prompts/curator.md --env-file ~/.music-curator/claude.env" \
  --schedule "0 9 */2 * *" --provider local

The native Task Scheduler path above is the default because it assumes nothing is pre-installed.

DDR app detection & in-game playlists

Before each run, scripts/detect-ddr.ps1 scans for the installed DDR app (ITGmania, StepMania 5, Project OutFox — or a DDR_DATA_DIR override from the env file), records it in state/ddr-install.json, and installs only the matching version-specific skill from skills/templates/ into .claude/skills/ddr-integration/. So the agent always works against the app that's actually installed.

The agent emits a structured remix/YYYY-MM-DD.json, and after each run scripts/publish-course.js deterministically generates a course file (Courses\Remix\Remix-YYYY-MM-DD.crs) in the game directory, so the batch appears inside the game under Course mode. Only songs verified to exist under the game's Songs\ folder go into the course; discoveries not installed locally stay in the markdown list. Remixes (and their in-game courses) older than 2 weeks are pruned automatically, so with the Tue/Thu schedule there are always at most 4. If no app is detected, the run still produces the markdown remix list and flags the gap.

The batch is published on two in-game surfaces:

  • A course (Courses\Remix\Remix-YYYY-MM-DD.crs) — visible in Course mode on StepMania 5 / Project OutFox.
  • A song-wheel pack (Songs\Remix YYYY-MM-DD\) made of NTFS directory junctions to the installed song folders — no audio is copied, and it appears in the song wheel in every theme, including ITGmania's Simply Love (which has no Course mode).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages