Paddle Build
PaddlePaddle/Paddle
A skill your agent uses when needing to compile, rebuild, or install Paddle from source after code changes.
Maps every HOT-Step CPP feature to its route file, service, UI folder, and engine subsystem, including port topology and the browser-to-engine request path.
$ npx skills add scragnog/HOT-Step-CPP --skill project-map -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install scragnog/HOT-Step-CPP project-map --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/scragnog/HOT-Step-CPP.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/project-map .claude/skills/project-map && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "project-map" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/project-map into .claude/skills/project-map/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-map", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/project-mapType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add scragnog/HOT-Step-CPP --skill project-map -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install scragnog/HOT-Step-CPP project-map --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scragnog/HOT-Step-CPP.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/project-map .agents/skills/project-map && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "project-map" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/project-map into .agents/skills/project-map/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-map", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add scragnog/HOT-Step-CPP --skill project-map -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install scragnog/HOT-Step-CPP project-map --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scragnog/HOT-Step-CPP.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/project-map .cursor/skills/project-map && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "project-map" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/project-map into .cursor/skills/project-map/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-map", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/scragnog/HOT-Step-CPP.git --path .claude/skills/project-map--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add scragnog/HOT-Step-CPP --skill project-map -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install scragnog/HOT-Step-CPP project-map --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scragnog/HOT-Step-CPP.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/project-map .gemini/skills/project-map && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "project-map" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/project-map into .gemini/skills/project-map/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-map", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install scragnog/HOT-Step-CPP project-mapInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add scragnog/HOT-Step-CPP --skill project-map -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/scragnog/HOT-Step-CPP.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/project-map .github/skills/project-map && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "project-map" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/project-map into .github/skills/project-map/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-map", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add scragnog/HOT-Step-CPP --skill project-map -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install scragnog/HOT-Step-CPP project-map --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scragnog/HOT-Step-CPP.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/project-map .opencode/skills/project-map && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "project-map" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/project-map into .opencode/skills/project-map/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-map", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
project-mapMaps every HOT-Step CPP feature to its route file, service, UI folder, and engine subsystem, including port topology and the browser-to-engine request path.
Project Map is an agent skill from scragnog/HOT-Step-CPP. Maps every HOT-Step CPP feature to its route file, service, UI folder, and engine subsystem, including port topology and the browser-to-engine request path. Use when you need to find where a feature or bug lives, which tier owns a symptom, or how a request flows through the system.
Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `reference.md`).
It sits in AI & LLM Engineering. It works with C++ and CUDA. The repository describes itself as: Turn dials. Summon bangers! NOW WITH MORE C++! Local AI music generation powered by GGML. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 91e92a8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxgittsxcmakenpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, git and npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Project Map loads about 5.4k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 2,043 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
- Config comes from `.env` at repo root, auto-bootstrapped from `.env.example` (`config.ts:20-30`). Settings UI can only| Settings (.env editor) | `/api/settings` | settings.ts | config.ts `reloadEnvConfig` | settings/ | — |NOT repo-root `data/`.** `DATA_DIR` in `.env` resolves relative to `server/` (`config.ts:192`: `path.resolve(__dirname,AE_CHUNK` / `ACESTEPCPP_VAE_OVERLAP` in `.env` |Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from scragnog/HOT-Step-CPP at commit 91e92a8, republished under its MIT licence (© scragnog). 2,043 words, ~5,414 tokens.
.claude/skills/project-map/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.HOT-Step CPP is a desktop app for local AI music generation (caption + lyrics in, stereo 48 kHz audio out). It is a heavily-extended fork of acestep.cpp, a C++/GGML port of ACE-Step 1.5. Three tiers:
engine/. Pipeline: LM (Qwen3 language model that emits audio_codes) → DiT (Diffusion Transformer, the flow-matching synth stage) → VAE (decodes latents to audio).server/src/. Orchestrates the engine, owns SQLite and files, serves the UI.ui/src/. One component folder per "studio" (feature area)..\dev-rebuild.bat at repo root, NEVER engine\build.cmd directly, under any circumstances. WHY: you cannot reliably tell whether the app is running; the Node server auto-respawns ace-server.exe on crash (server/src/index.ts:284-308); killing the engine mid-run causes an infinite respawn + file-lock loop that blocks the build. dev-rebuild.bat POSTs /api/shutdown, waits for the process (force-kills at 10 s), then builds. It does NOT relaunch — restart it yourself with .\dev.bat (detached) and work at http://localhost:3000. LAUNCH.bat is the end-user prod path; agents do not run it. Recompile immediately after editing any engine/src/ or engine/tools/ file.cmake --build . --clean-first unless the GGML/CUDA layer itself changed. WHY: CUDA kernel recompilation takes 20+ minutes. For stale .obj issues delete only engine\build\acestep-core.dir\ and engine\build\Release\acestep-core.lib.engine/tools/hot-step-server.cpp, NOT engine/tools/ace-server.cpp. WHY: upstream ace-server.cpp is kept as reference and is NOT compiled — the ace-server binary is built from hot-step-server.cpp (engine/CMakeLists.txt:416-419). Edits to ace-server.cpp silently do nothing.npm run build during dev. Type-check with npx tsc --noEmit (run in server\ and ui\). Only build before user testing.master, no branches. Never git add -A or git add -f (re-adds gitignored .agents/, checkpoints/, node_modules/). Stage explicit paths. Push requires explicit user approval. Commit locally often. Any pushed v* tag triggers a full multi-platform CI release build — use a -CI-Test suffix for throwaway tags.powershell -File engine\verify-hooks.ps1. The pipeline-synth-ops.cpp hook loss is SILENT — it compiles but all solvers/schedulers/guidance go dead.engines field enforces <25.; not && (unless pwsh 7 chaining). Windows 11 environment.dev.bat (agents — run detached, app at http://localhost:3000)
(LAUNCH.bat = end-user prod launcher; agents don't use it)
└─ Node server server/src/index.ts → Express :3001 (host 0.0.0.0, config.ts:186-187)
├─ serves prebuilt ui/dist/ with SPA fallback (index.ts:123-140)
├─ /api/* routes → SQLite server/data/hotstep.db
├─ /audio → server/data/audio/, /references → server/data/references/ (index.ts:98-121)
└─ spawns child: ace-server.exe (C++ engine) on 127.0.0.1:8085 (config.ts:102-103)
Dev mode adds Vite on :3000 (HMR); vite.config.ts proxies /api, /audio, /references → 127.0.0.1:3001.
tsx watch auto-restarts the Node server on server-code changes.index.ts:166-213: --models --host --port, plus conditional --adapters, --keep-loaded, --noise-profile, --draft-lm (deliberately disabled by default — config.ts:117-122), --vae-chunk, --vae-overlap.index.ts:284-308): abnormal exit → restart after 3 s; ≥3 crashes in 30 s → give up, engine marked not-ready ("check logs for missing DLLs").index.ts:318 onward)..env at repo root, auto-bootstrapped from .env.example (config.ts:20-30). Settings UI can only edit whitelisted EXPOSED_ENV_KEYS (config.ts:265-286); keys in RESTART_REQUIRED_KEYS (config.ts:289-294) never hot-apply; the rest hot-reload via reloadEnvConfig() (config.ts:300).Key term: AceRequest — the JSON request object sent to the engine, typed at server/src/services/aceClient.ts:38-151 (caption/lyrics/bpm/seed, LM sampling params, DiT params like inference_steps/guidance_scale/scheduler, model routing, adapter fields, plugin_params, streaming fields). aceReq in code = the instance of this object for the current job.
ui/src/components/create/CreatePanel.tsx + ui/src/stores/globalParamsStore.ts (Zustand store holding all generation params) → ui/src/services/api.ts (thin fetch wrapper, base /api) → POST /api/generate.server/src/routes/generate.ts (~1550 lines). Jobs live in an in-memory jobs Map (generate.ts:79) with a serial queue. Inside runGeneration (generate.ts:173):translateParams (services/generation/translateParams.ts) converts UI params → AceRequest.aceClient.submitLm (generate.ts:303); results cached by seed+params in services/generation/lmCache.ts.generate.ts:312-328): server-only fields (adapter_runtime_quant, rebase, plugin_params, …) — the "sideband" = params the Node server adds that are not part of the C++ LM struct — do NOT survive the /lm round trip. Synth requests are rebuilt from the original aceReq plus only the LM-generated fields (audio_codes, caption, lyrics, bpm, duration, keyscale, timesignature). Never whitelist-echo the LM response.generate.ts:449-478, services/generation/sourceAudio.ts, sourceLatentCache.ts).aceClient.submitSynth or submitSynthMultipart when binary latents/audio are attached (generate.ts:823-826).generate.ts:940+, services/whisperTranscribe.ts); auto-trim silence (generate.ts:1057-1094, services/autoTrim.ts).runPostProcessingChain (services/generation/postProcessing.ts:70), fixed order: quality-check(unmastered) → PP-VAE re-encode → Spectral Lifter → Vocal Naturalizer → gain offset → VST chain → Mastering → LUFS normalize → quality-check(mastered) (postProcessing.ts:105-309).services/aceClient.ts wraps every engine endpoint. The engine is single-threaded httplib — during DiT/VAE/adapter compute it cannot answer HTTP at all. Timeouts are deliberately generous: 15 s quick / 30 s poll / 300 s result fetch (aceClient.ts:17-19). A "hung" health check mid-generation is normal.GET /api/generate/status/:id; live log lines via routes/logs.ts (pushLog/subscribeLines, logs.ts:34,49).pollUntilDone (generate.ts:102-140): no progress for 2 min → cancel + fail as stalled; wall-clock timeout clamped 5–120 min, default 45.POST /lm or /synth returns a job id; poll GET /job?id=; fetch result via POST /job. Node job ids ≠ engine job ids (mapped by the aceJobId field, generate.ts:47).Engine HTTP endpoints (engine/tools/hot-step-server.cpp:2704-3535): POST /lm /synth /understand /vae /warm /job /models/unload /pp-vae-reencode /supersep/separate /supersep/recombine /spectral-lifter; GET /health /props /logs /jobs /job /plugins /vram /models/loaded /supersep/progress /supersep/result /supersep/serve / (embedded webui).
API mounts are all registered in server/src/index.ts:72-95. Route files in server/src/routes/, services in server/src/services/, UI folders in ui/src/components/.
| Feature / Studio | API mount | Route file | Key service(s) | UI folder / file | Engine piece |
|---|---|---|---|---|---|
| Create (main generation) | /api/generate | generate.ts | generation/*, aceClient, autoTrim, latentFormat, whisperTranscribe | create/ + global-bar/ | /lm /synth → pipeline-lm.cpp, pipeline-synth*.cpp |
| Insta-Gen (genre-first quick gen) | /api/inspire | inspire.ts | lireek/llmService (LLM lyrics) | insta-gen/ (ui/src/services/inspireApi.ts) | via generate queue |
| Lyric Studio ("Lireek") | /api/lireek | lireek.ts | lireek/{llmService, geniusService, profilerService, prompts, slopDetector, exportService, llm/} | lyric-studio/ (ui/src/services/lireekApi.ts) | none (external LLMs) |
| Song library | /api/songs | songs.ts | audioCrop, disco-analyzer, whisperTranscribe | library/, player/, details/ | — |
| Models dropdown | /api/models | models.ts | aceClient (GET /props) | global-bar/ModelsDropdown.tsx | model-registry.h, model-store.cpp |
| Model Manager (downloads) | /api/model-manager | modelManager.ts | modelDownloadService.ts + server/src/data/model-registry.json | model-manager/ | — |
| Adapters (LoRA/LoKr fine-tunes) | /api/adapters | adapters.ts | generation/adapterSections.ts | create/AdaptersAccordion.tsx, global-bar/AdaptersDropdown.tsx | adapter-merge.h, adapter-runtime.h, adapter-cancel.h |
| Stem Studio (separation) | /api/stem-studio | stemStudio.ts (2 modes: extract = DiT per-track /synth; supersep = ONNX NN, stemStudio.ts:1-8) | aceClient, audioConvert | stem-studio/ (ui/src/services/stemStudioApi.ts) | supersep.cpp, supersep-stft.h; /supersep/* |
| SuperSep raw proxy | /api/supersep | supersep.ts | — | shared/StemMixer.tsx (ui/src/services/supersepApi.ts) | /supersep/* |
| Stem Builder (layering) | uses stem/gen APIs | — | — | stem-builder/ | — |
| Repaint Studio | /api/generate (task_type) | generate.ts | generation/sourceAudio.ts | repaint-studio/ | sampler-repaint.h |
| Song Builder | /api/builder | songBuilder.ts | — | song-builder/ | seed-latent path, generate.ts:470-478 |
| Cover Studio (audio covers) | /api/generate + /api/analyze | generate.ts, analyze.ts | generation/sourceAudio.ts, audioMetadata, disco-analyzer | cover-studio/ | cover fields in request.h |
| Cover Art (images) | /api/cover-art | coverArt.ts | coverArt/{coverArtService, coverArtDownloader, promptBuilder} | library/CoverArtPromptModal.tsx, global-bar/CoverArtDropdown.tsx | external sd-cli (not the music engine) |
| Mastering | /api/mastering | mastering.ts | generation/postProcessing.ts | create/MasteringSection.tsx, global-bar/MasteringDropdown.tsx | mastering.h, tools/mastering.cpp |
| VST3 chain + monitor | /api/vst | vst.ts | spawns vst-host.exe (config.ts:234-250) | global-bar/VstChainDropdown.tsx, ui/src/stores/vstChainStore.ts | tools/vst-host.cpp |
| Lua plugins (solvers etc.) | /api/plugins | plugins.ts | aceClient (GET /plugins) | global-bar/PluginControls.tsx, ui/src/hooks/usePluginRegistry.ts | lua-plugin.h, lua-plugin-registry.h, hot-step-sampler.h |
| Assistant (in-app help chat) | /api/assistant | assistant.ts | server/src/data/assistant-knowledge.md, lireek/llmService | assistant/ (ui/src/services/assistantApi.ts) | — |
| Settings (.env editor) | /api/settings | settings.ts | config.ts reloadEnvConfig | settings/ | — |
| Seeds manager | /api/seeds | seeds.ts | — | global-bar/SeedManagerDrawer.tsx (component name unverified — check global-bar/) | — |
| Uploads (audio/latent/cover) | /api/upload | upload.ts | latentFormat.ts | shared/LatentImport.tsx (unverified) | — |
| Downloads / export | /api/download | download.ts | audioConvert.ts (ffmpeg) | player/, library/ | tools/mp3-codec.cpp |
| Logs / VRAM / terminal | /api/logs (/, /vram, /models-loaded, /models-unload — logs.ts:56-133) | logs.ts | logger.ts | terminal/, shared/VramIndicator.tsx (unverified) | /vram, /models/loaded |
| Health / lifecycle | /api/health, /api/shutdown | health.ts, shutdown.ts | engineState.ts (at server/src/engineState.ts, NOT services/) | — | /health |
| Auth (local single-user) | /api/auth | auth.ts | db/database.ts | — | — |
| Analyze (BPM/key of upload) | /api/analyze | analyze.ts | Essentia binary (config.ts:180-182), audioMetadata | cover-studio/ | /understand (pipeline-understand.cpp) |
UI views (ui/src/App.tsx:99-114): default create, plus insta-gen, lyric-studio, cover-studio, stem-studio, stem-builder, song-builder, repaint, library, settings; overlay panels for assistant and terminal. Zustand stores in ui/src/stores/: globalParamsStore, playbackStore, audioGenQueueStore, streamingStore, vstChainStore, abCompareStore, discoStore.
Engine source map: full per-subsystem table in reference.md. Fast rules: LM phase → engine/src/pipeline-lm.cpp / qwen3-lm.h; DiT synth → pipeline-synth*.cpp / dit.h; all solver/scheduler/guidance routing → hot-step-sampler.h (upstream dit-sampler.h is bypassed); adapters → adapter-merge.h / adapter-runtime.h; VAE → vae.h / vae-ort.h; HTTP server → engine/tools/hot-step-server.cpp.
Plugins: solvers (21) / schedulers (9) / guidance (7) are hot-loadable Lua files in engine/plugins/{solvers,schedulers,guidance}/; the registry also scans repo-root plugins/ as a project overlay (engine/src/lua-plugin-registry.h:35-50), which holds postprocess/ (md_audio_tiled). Drop a .lua in the right subdir → appears in UI next launch, no C++ rebuild. Adding a solver/scheduler/guidance = write a Lua plugin, never edit dit-sampler.h. Guide: docs/dev/plugins-authoring.md. Native headers in engine/src/solvers|schedulers|guidance/ are legacy — new work goes in Lua.
server/data/, NOT repo-root data/. DATA_DIR in .env resolves relative to server/ (config.ts:192: path.resolve(__dirname, '..', DATA_DIR)). A stale legacy data/ directory exists at repo root with a plausible-looking but outdated hotstep.db — do not trust it, and do not delete it without asking.server/data/hotstep.db (better-sqlite3). Tables (server/src/db/database.ts:39-191): users, songs, playlists, playlist_songs, artists, lyrics_sets, profiles, generations, settings, album_presets, audio_generations, builder_projects, builder_sections. Lireek tables are unified into hotstep.db (index.ts:20) — config.lireek.dbPath pointing at lireek.db (config.ts:225-227) is vestigial; don't trust it.server/data/): audio/ (outputs), references/ (mastering refs), stems/<jobId>/, vst/{states,chain.json}, lyrics/ (exports). Never delete generated audio outputs or experiment artifacts on your own judgment — the user verifies results by ear; ask first.logs/YYYY-MM-DD_HH-MM-SS/{ace_engine.log, node_console.log, generations/gen_<uuid>_<task>.log}. Newest folder = current session. Generation failure → matching gen_*.log first, then cross-ref the other two..\dev.bat # The launcher agents use: Vite :3000 HMR + Node :3001 tsx watch; run detached, check http://localhost:3000
.\LAUNCH.bat # Prod launcher for end users — agents never run it
.\dev-rebuild.bat # C++ rebuild: graceful shutdown -> wait -> build (then relaunch yourself)
npx tsc --noEmit -p server # Type-check server, from repo root (do NOT npm run build in dev)
npx tsc --noEmit -p ui # Type-check UI, from repo root
# Stale .obj without the 20-min CUDA recompile:
Remove-Item -Recurse -Force engine\build\acestep-core.dir; Remove-Item -Force engine\build\Release\acestep-core.lib
powershell -File engine\verify-hooks.ps1 # After any upstream sync| Symptom | Cause | Fix / first file |
|---|---|---|
[ace-server] Restarting in 3 seconds... (crash N/3) then giving up | Missing DLL next to ace-server.exe or bad model | logs/<newest>/ace_engine.log; respawn logic index.ts:284-308 |
| Solver/scheduler/guidance UI options silently do nothing | Upstream sync overwrote the hot-step-sampler.h include in engine/src/pipeline-synth-ops.cpp:9. Compiles fine — silent. | Run engine\verify-hooks.ps1; restore the include |
| Compile error in model-store.h / dit.h after sync | Lost hot-step-params.h include (model-store.h:53) or adapter-merge.h+adapter-runtime.h (dit.h:11,13) | Restore includes; verify-hooks.ps1 confirms |
| Generation stuck ~2 min then fails "stalled" | pollUntilDone stall watchdog (generate.ts:107,128) | Check gen_*.log for last engine phase; adapter_precompute ~17 s LoKr cold-start is normal |
/api/health or engine health flaky mid-generation | Engine is single-threaded httplib; can't answer during compute (aceClient.ts:6-8) | Not a bug unless it persists after the job ends |
| Synth params vanish after LM phase (adapter/solver settings ignored) | Sideband fields don't survive the /lm round trip | Rebuild synth req from original aceReq + LM fields only (generate.ts:312-328) |
| Infinite ace-server respawn + file locks during rebuild | You ran engine\build.cmd with the app up | Use .\dev-rebuild.bat |
| npm install fails / weird dep errors | Node outside 20 to 24, or native addon ABI mismatch | Use Node 24 and install matching dependencies |
| Vulkan pinned-memory alloc failure in VAE | VAE chunk too large | Tune ACESTEPCPP_VAE_CHUNK / ACESTEPCPP_VAE_OVERLAP in .env |
| First-launch hang "Downloading CUDA runtime" | Portable CUDA DLL bootstrap (index.ts:318+) | Wait or go offline → engine starts CPU-only |
| Accidental CI release build | Pushed a v* tag | Use -CI-Test suffix for throwaways; see docs/dev/releasing.md |
ace-server.exe builds from engine/tools/hot-step-server.cpp; upstream ace-server.cpp is uncompiled reference (engine/CMakeLists.txt:416-419).AceRequest fields never survive the /lm round trip; synth requests must be rebuilt from the original request + LM output fields only, never echoed back (generate.ts:312-328).ee041e1. The adapter_section_isolation field still exists in AceRequest (aceClient.ts:97). Do NOT re-attempt without a design that preserves cross-section musical coherence — naive per-section attention masking is known to break continuity.config.ts:117-122): GGML per-call overhead (~10 ms) negates the speedup.--keep-loaded is spawn-time (restart required); flips the engine ModelStore to EVICT_NEVER so the ~17 s LoKr precompute happens once. Separate per-request ?keep_loaded=1 co-resident toggle also exists (config.ts:124-132). Default OFF (VRAM trade-off).lmCache.ts): changing only synth params reuses cached codes; changing seed re-runs the LM.rebase_source/rebase_beta fields exist (aceClient.ts:112-113) implementing β·(S−T) toward the adapter's training base; efficacy unproven. Non-turbo XL bases still fail despite ~99% weight identity (basin sensitivity, not drift). When multiple adapters are stacked, the basin re-base applies once per STACK, never once per adapter (issue #72; regression class fixed in 168dcb5).*.obj, test_trtllm_*, nul) — untracked experiment leftovers. Do NOT delete them without asking; they may be the user's test artifacts.AceRequest field catalogue, data/config details.FEATURES.md — full feature catalogue (100+). engine/docs/ARCHITECTURE.md — engine internals, CLI, request JSON. docs/dev/plugins-authoring.md — Lua plugin authoring. docs/dev/releasing.md — release runbook. server/src/data/assistant-knowledge.md — in-app assistant KB.docs/plans/ is gitignored (local-only) — internal design/investigation docs (perf, adapters, upstream-sync-workflow.md); may be absent on a fresh clone.© scragnog, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .claude/skills/project-map of scragnog/HOT-Step-CPP.
Open the folder on GitHubat commit 91e92a8
Project Map next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Project Map this skillscragnog/HOT-Step-CPP | 171 | — | ~5.4k | Automated safety check: Notes | MIT | |
| Paddle BuildPaddlePaddle/Paddle | 24k | — | ~1k | Automated safety check: Pass | Apache-2.0 | |
| Fastllm Triton Opsztxz16/fastllm | 5.1k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Ako4allTongmingLAIC/AKO4ALL | 369 | — | ~4k | Automated safety check: Pass | MIT | |
| Cuda Cpp Kernelvipshop/cache-dit | 1.3k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Paddle Op DevPaddlePaddle/Paddle | 24k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 |
PaddlePaddle/Paddle
A skill your agent uses when needing to compile, rebuild, or install Paddle from source after code changes.
ztxz16/fastllm
Guide for adding Triton-backed CUDA operators to FastLLM. An agent skill from ztxz16/fastllm.
TongmingLAIC/AKO4ALL
Drive an agentic loop that iteratively optimizes a GPU kernel for maximum speedup.
vipshop/cache-dit
A skill your agent uses when writing, debugging, porting, reviewing, or optimizing CUDA C++ or PTX kernels; investigating CUDA Runtime or Driver API behavior; profiling kernels with Nsight Systems…
PaddlePaddle/Paddle
PaddlePaddle (飞桨) C++ 算子开发指南。提供从 YAML 配置、InferMeta 函数、Kernel 实现、Python API 封装、单元测试到编译验证的完整算子开发流程指导。在以下场景使用此 skill:(1) 为 Paddle 框架新增 C++ 算子 (2) 修改或调试已有 Paddle 算子 (3) 编写算子的 YAML…
matlab/agent-skills-playground
Deploy AI models to embedded hardware using MathWorks tools (MATLAB, Simulink, Embedded Coder).
scragnog/HOT-Step-CPP
The standard way to run a listening test in HOT-Step - a local HTML score sheet next to the renders where Rob plays each track, scores it 1-5 on named criteria, and the page charts the two score…
scragnog/HOT-Step-CPP
Explains where HOT-Step generation time goes (LM/DiT/VAE), how the TensorRT paths activate, how to benchmark from logs, and which knobs trade quality for speed.
scragnog/HOT-Step-CPP
Maps HOT-Step's native MiniMax-Music3 backend — engine port modules, endpoints, server/UI integration, parity/fixture infrastructure, and the hard-won trap list.
scragnog/HOT-Step-CPP
The validated recipe for training MiniMax-Music3 planner-LM style adapters (artist/album clones) with ace-train mm3-lm-train and the Training Studio.
scragnog/HOT-Step-CPP
Runbook for cutting and publishing a HOT-Step CPP release via a v git tag that triggers the multi-platform CI build and drafts a GitHub Release.
scragnog/HOT-Step-CPP
Safely pulls upstream acestep.cpp changes into the HOT-Step engine fork without destroying its integration hooks.
Categories
Maps every HOT-Step CPP feature to its route file, service, UI folder, and engine subsystem, including port topology and the browser-to-engine request path. Project Map is an agent skill from scragnog/HOT-Step-CPP. Maps every HOT-Step CPP feature to its route file, service, UI folder, and engine subsystem, including port topology and the browser-to-engine request path.
Project Map fits situations like: you need to find where a feature; which tier owns a symptom; how a request flows through the system.
Run `npx skills add scragnog/HOT-Step-CPP --skill project-map -a claude-code`. Or copy the skill folder (.claude/skills/project-map in scragnog/HOT-Step-CPP) into .claude/skills/project-map in your project. Claude Code loads it when a task matches its description.
Run `npx skills add scragnog/HOT-Step-CPP --skill project-map -a codex`. Or copy the skill folder (.claude/skills/project-map in scragnog/HOT-Step-CPP) into .agents/skills/project-map in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add scragnog/HOT-Step-CPP --skill project-map -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/project-map, .gemini/skills/project-map, .github/skills/project-map and .opencode/skills/project-map in your project.
Going by SKILL.md and its folder, Project Map needs the command-line tools its instructions call (npx, git, tsx, cmake and npm). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, git and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Project Map is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.4k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Project Map: Paddle Build (PaddlePaddle/Paddle, 24k stars), Fastllm Triton Ops (ztxz16/fastllm, 5.1k stars), Ako4all (TongmingLAIC/AKO4ALL, 369 stars) and Cuda Cpp Kernel (vipshop/cache-dit, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
scragnog (a GitHub user) maintains it in scragnog/HOT-Step-CPP, which has 171 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 7, 2026.
Source: scragnog/HOT-Step-CPP on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.