Agent skill

Project Map

by scragnog in 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.

MITAuto-check: notesAI & LLM Engineering

Install Project Map

skills CLI
$ npx skills add scragnog/HOT-Step-CPP --skill project-map -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install scragnog/HOT-Step-CPP project-map --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
project-map
GitHub stars
171
Token cost
~5.4k tokens
SKILL.md length
2,043 words
Files
2
Skills in repo
18
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 3 steps: Engine — C++17/CUDA/GGML in engine/.… → Server —… → UI — React 19/Vite/Zustand/Tailwind in…
  • You need to find where a feature
  • SKILL.md covers When to use this skill, Golden rules (hard constraints…, Process / port topology and Request path: browser → engine…, plus 6 more sections
  • Calls npx, git and tsx

What it does

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.

When your agent uses it

  • You need to find where a feature
  • Which tier owns a symptom
  • How a request flows through the system

Example prompts

  • “/project-map”

Requirements

  • Node.js

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Engine — C++17/CUDA/GGML in engine/. Pipeline: LM (Qwen3 language model that emits audio_codes) → DiT (Diffusion Transformer, the…
  2. Server — Node/TypeScript/Express/better-sqlite3 in server/src/. Orchestrates the engine, owns SQLite and files, serves the UI.
  3. UI — React 19/Vite/Zustand/Tailwind in ui/src/. One component folder per "studio" (feature area).

What it can do on your machine

Read from SKILL.md and the folder at commit 91e92a8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • npx
    • git
    • tsx
    • cmake
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~74
When it runs · the whole SKILL.md, loaded when a task matches
~5.4k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:50
    - Config comes from `.env` at repo root, auto-bootstrapped from `.env.example` (`config.ts:20-30`). Settings UI can only
  • NoteMentions a .env fileSKILL.md:96
    | Settings (.env editor) | `/api/settings` | settings.ts | config.ts `reloadEnvConfig` | settings/ | — |
  • NoteMentions a .env fileSKILL.md:113
    NOT repo-root `data/`.** `DATA_DIR` in `.env` resolves relative to `server/` (`config.ts:192`: `path.resolve(__dirname,
  • NoteMentions a .env fileSKILL.md:143
    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.

SKILL.md

The full file from scragnog/HOT-Step-CPP at commit 91e92a8, republished under its MIT licence (© scragnog). 2,043 words, ~5,414 tokens.

Download SKILL.mdSave it as .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.
name
project-map
description
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.

Project Map & Navigation — HOT-Step CPP

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:

  1. Engine — C++17/CUDA/GGML in engine/. Pipeline: LM (Qwen3 language model that emits audio_codes) → DiT (Diffusion Transformer, the flow-matching synth stage) → VAE (decodes latents to audio).
  2. Server — Node/TypeScript/Express/better-sqlite3 in server/src/. Orchestrates the engine, owns SQLite and files, serves the UI.
  3. UI — React 19/Vite/Zustand/Tailwind in ui/src/. One component folder per "studio" (feature area).

When to use this skill

  • "Where is the code for X?" / "Which file handles Y?"
  • Triaging a bug report: deciding whether the fault is UI, Node server, or C++ engine.
  • Tracing a request end-to-end (browser → Express → ace-server → audio file).
  • Onboarding to any unfamiliar feature before editing it.

Golden rules (hard constraints — each prevents expensive damage)

  1. C++ changes: rebuild with .\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.
  2. NEVER 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.
  3. Engine HTTP/API changes go in 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.
  4. Don't npm run build during dev. Type-check with npx tsc --noEmit (run in server\ and ui\). Only build before user testing.
  5. Git: all work on 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.
  6. Three fork-hook files break on upstream sync (see Failure signatures). After any sync run powershell -File engine\verify-hooks.ps1. The pipeline-synth-ops.cpp hook loss is SILENT — it compiles but all solvers/schedulers/guidance go dead.
  7. Don't visually verify UI with a browser agent — ask the human user. Browser agent is fine for API-only checks.
  8. Node 20 to 24 LTS, 24 recommended. The engines field enforces <25.
  9. PowerShell is the shell: use ; not && (unless pwsh 7 chaining). Windows 11 environment.

Process / port topology

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.
  • Engine spawn args built in 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.
  • Crash respawn limiter (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").
  • Portable-mode first launch downloads cuBLAS/cudart DLLs from HuggingFace before starting the engine (index.ts:318 onward).
  • Config comes from .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).

Request path: browser → engine (main generation)

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.

  1. UI: 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.
  2. Orchestrator: 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.
    • LM phase: aceClient.submitLm (generate.ts:303); results cached by seed+params in services/generation/lmCache.ts.
    • CRITICAL "sideband" gotcha (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.
    • Source audio/latent loading for cover/repaint/seed tasks (generate.ts:449-478, services/generation/sourceAudio.ts, sourceLatentCache.ts).
    • Per-track synth: aceClient.submitSynth or submitSynthMultipart when binary latents/audio are attached (generate.ts:823-826).
    • Optional Whisper lyric transcription (generate.ts:940+, services/whisperTranscribe.ts); auto-trim silence (generate.ts:1057-1094, services/autoTrim.ts).
    • Post-processing chain 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).
  3. Engine client: 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.
  4. Progress: UI polls GET /api/generate/status/:id; live log lines via routes/logs.ts (pushLog/subscribeLines, logs.ts:34,49).
  5. Watchdogs in pollUntilDone (generate.ts:102-140): no progress for 2 min → cancel + fail as stalled; wall-clock timeout clamped 5–120 min, default 45.
  6. Engine job model: 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).

Feature → files map (route ⇄ service ⇄ UI ⇄ engine)

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 / StudioAPI mountRoute fileKey service(s)UI folder / fileEngine piece
Create (main generation)/api/generategenerate.tsgeneration/*, aceClient, autoTrim, latentFormat, whisperTranscribecreate/ + global-bar//lm /synth → pipeline-lm.cpp, pipeline-synth*.cpp
Insta-Gen (genre-first quick gen)/api/inspireinspire.tslireek/llmService (LLM lyrics)insta-gen/ (ui/src/services/inspireApi.ts)via generate queue
Lyric Studio ("Lireek")/api/lireeklireek.tslireek/{llmService, geniusService, profilerService, prompts, slopDetector, exportService, llm/}lyric-studio/ (ui/src/services/lireekApi.ts)none (external LLMs)
Song library/api/songssongs.tsaudioCrop, disco-analyzer, whisperTranscribelibrary/, player/, details/—
Models dropdown/api/modelsmodels.tsaceClient (GET /props)global-bar/ModelsDropdown.tsxmodel-registry.h, model-store.cpp
Model Manager (downloads)/api/model-managermodelManager.tsmodelDownloadService.ts + server/src/data/model-registry.jsonmodel-manager/—
Adapters (LoRA/LoKr fine-tunes)/api/adaptersadapters.tsgeneration/adapterSections.tscreate/AdaptersAccordion.tsx, global-bar/AdaptersDropdown.tsxadapter-merge.h, adapter-runtime.h, adapter-cancel.h
Stem Studio (separation)/api/stem-studiostemStudio.ts (2 modes: extract = DiT per-track /synth; supersep = ONNX NN, stemStudio.ts:1-8)aceClient, audioConvertstem-studio/ (ui/src/services/stemStudioApi.ts)supersep.cpp, supersep-stft.h; /supersep/*
SuperSep raw proxy/api/supersepsupersep.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.tsgeneration/sourceAudio.tsrepaint-studio/sampler-repaint.h
Song Builder/api/buildersongBuilder.ts—song-builder/seed-latent path, generate.ts:470-478
Cover Studio (audio covers)/api/generate + /api/analyzegenerate.ts, analyze.tsgeneration/sourceAudio.ts, audioMetadata, disco-analyzercover-studio/cover fields in request.h
Cover Art (images)/api/cover-artcoverArt.tscoverArt/{coverArtService, coverArtDownloader, promptBuilder}library/CoverArtPromptModal.tsx, global-bar/CoverArtDropdown.tsxexternal sd-cli (not the music engine)
Mastering/api/masteringmastering.tsgeneration/postProcessing.tscreate/MasteringSection.tsx, global-bar/MasteringDropdown.tsxmastering.h, tools/mastering.cpp
VST3 chain + monitor/api/vstvst.tsspawns vst-host.exe (config.ts:234-250)global-bar/VstChainDropdown.tsx, ui/src/stores/vstChainStore.tstools/vst-host.cpp
Lua plugins (solvers etc.)/api/pluginsplugins.tsaceClient (GET /plugins)global-bar/PluginControls.tsx, ui/src/hooks/usePluginRegistry.tslua-plugin.h, lua-plugin-registry.h, hot-step-sampler.h
Assistant (in-app help chat)/api/assistantassistant.tsserver/src/data/assistant-knowledge.md, lireek/llmServiceassistant/ (ui/src/services/assistantApi.ts)—
Settings (.env editor)/api/settingssettings.tsconfig.ts reloadEnvConfigsettings/—
Seeds manager/api/seedsseeds.ts—global-bar/SeedManagerDrawer.tsx (component name unverified — check global-bar/)—
Uploads (audio/latent/cover)/api/uploadupload.tslatentFormat.tsshared/LatentImport.tsx (unverified)—
Downloads / export/api/downloaddownload.tsaudioConvert.ts (ffmpeg)player/, library/tools/mp3-codec.cpp
Logs / VRAM / terminal/api/logs (/, /vram, /models-loaded, /models-unload — logs.ts:56-133)logs.tslogger.tsterminal/, shared/VramIndicator.tsx (unverified)/vram, /models/loaded
Health / lifecycle/api/health, /api/shutdownhealth.ts, shutdown.tsengineState.ts (at server/src/engineState.ts, NOT services/)—/health
Auth (local single-user)/api/authauth.tsdb/database.ts——
Analyze (BPM/key of upload)/api/analyzeanalyze.tsEssentia binary (config.ts:180-182), audioMetadatacover-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.

Show full SKILL.md (681 more words)Show less

Data layer

  • The live data root is 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.
  • SQLite: 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.
  • Files (all under 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: 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.

Exact commands (PowerShell)

powershell
.\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

Failure signatures (symptom → cause → fix)

SymptomCauseFix / first file
[ace-server] Restarting in 3 seconds... (crash N/3) then giving upMissing DLL next to ace-server.exe or bad modellogs/<newest>/ace_engine.log; respawn logic index.ts:284-308
Solver/scheduler/guidance UI options silently do nothingUpstream 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 syncLost 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-generationEngine 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 tripRebuild synth req from original aceReq + LM fields only (generate.ts:312-328)
Infinite ace-server respawn + file locks during rebuildYou ran engine\build.cmd with the app upUse .\dev-rebuild.bat
npm install fails / weird dep errorsNode outside 20 to 24, or native addon ABI mismatchUse Node 24 and install matching dependencies
Vulkan pinned-memory alloc failure in VAEVAE chunk too largeTune 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 buildPushed a v* tagUse -CI-Test suffix for throwaways; see docs/dev/releasing.md

Institutional knowledge

  • VALIDATED — the real server binary: ace-server.exe builds from engine/tools/hot-step-server.cpp; upstream ace-server.cpp is uncompiled reference (engine/CMakeLists.txt:416-419).
  • VALIDATED — LM echo sideband: server-only 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).
  • VALIDATED — GGML clobbers input buffers in the per-section adapter-masking path, so masks must be re-uploaded every step.
  • VALIDATED (by revert) — regional self-attn isolation broke musical continuity and was reverted in commit 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.
  • VALIDATED — draft-LM speculative decoding is deliberately disabled (config.ts:117-122): GGML per-call overhead (~10 ms) negates the speedup.
  • VALIDATED — --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).
  • VALIDATED — LM results cached by seed+params (lmCache.ts): changing only synth params reuses cached codes; changing seed re-runs the LM.
  • UNVALIDATED / HYPOTHESIS — LoKr cross-base basin nudge: 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).
  • Repo root has stray build artifacts (*.obj, test_trtllm_*, nul) — untracked experiment leftovers. Do NOT delete them without asking; they may be the user's test artifacts.

Deeper reading

  • reference.md (this folder) — full engine source map, complete engine endpoint list, 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

Files

SKILL.md and 1 other file in .claude/skills/project-map of scragnog/HOT-Step-CPP.

  • SKILL.md
  • reference.md

Open the folder on GitHubat commit 91e92a8

Compare with similar skills

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.

Project Map compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Project Map this skillscragnog/HOT-Step-CPP171—~5.4kAutomated safety check: NotesMIT
Paddle BuildPaddlePaddle/Paddle24k—~1kAutomated safety check: PassApache-2.0
Fastllm Triton Opsztxz16/fastllm5.1k—~1.8kAutomated safety check: PassApache-2.0
Ako4allTongmingLAIC/AKO4ALL369—~4kAutomated safety check: PassMIT
Cuda Cpp Kernelvipshop/cache-dit1.3k—~2.3kAutomated safety check: PassApache-2.0
Paddle Op DevPaddlePaddle/Paddle24k—~1.3kAutomated safety check: PassApache-2.0

Similar skills

  • Paddle Build

    PaddlePaddle/Paddle

    A skill your agent uses when needing to compile, rebuild, or install Paddle from source after code changes.

    24k GitHub stars~1k tokensUpdated 8 days ago
    AI & LLM EngineeringAuto-check passed
  • Fastllm Triton Ops

    ztxz16/fastllm

    Guide for adding Triton-backed CUDA operators to FastLLM. An agent skill from ztxz16/fastllm.

    5.1k GitHub stars~1.8k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Ako4all

    TongmingLAIC/AKO4ALL

    Drive an agentic loop that iteratively optimizes a GPU kernel for maximum speedup.

    369 GitHub stars~4k tokensUpdated 23 days ago
    AI & LLM EngineeringAuto-check passed
  • Cuda Cpp Kernel

    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…

    1.3k GitHub stars~2.3k tokensUpdated 9 days ago
    AI & LLM EngineeringAuto-check passed
  • Paddle Op Dev

    PaddlePaddle/Paddle

    PaddlePaddle (飞桨) C++ 算子开发指南。提供从 YAML 配置、InferMeta 函数、Kernel 实现、Python API 封装、单元测试到编译验证的完整算子开发流程指导。在以下场景使用此 skill:(1) 为 Paddle 框架新增 C++ 算子 (2) 修改或调试已有 Paddle 算子 (3) 编写算子的 YAML…

    24k GitHub stars~1.3k tokensUpdated 8 days ago
    AI & LLM EngineeringAuto-check passed
  • Embedded AI Deployment

    matlab/agent-skills-playground

    Deploy AI models to embedded hardware using MathWorks tools (MATLAB, Simulink, Embedded Coder).

    181 GitHub starsUsed in 1 repo~3.4k tokens
    AI & LLM EngineeringAuto-check passed

More from scragnog/HOT-Step-CPP

All 18 skills in this repo
  • Ear Test Scoresheet

    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…

    171 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Engine Performance

    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.

    171 GitHub stars~4.9k tokensUpdated yesterday
    Auto-check passed
  • Mm3 Backend

    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.

    171 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check passed
  • Mm3 Lm Adapter Training

    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.

    171 GitHub stars~4k tokensUpdated yesterday
    Auto-check passed
  • Release Process

    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.

    171 GitHub stars~5.1k tokensUpdated yesterday
    Auto-check passed
  • Upstream Sync

    scragnog/HOT-Step-CPP

    Safely pulls upstream acestep.cpp changes into the HOT-Step engine fork without destroying its integration hooks.

    171 GitHub stars~5k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Project Map

What does Project Map do?

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.

When should I use Project Map?

Project Map fits situations like: you need to find where a feature; which tier owns a symptom; how a request flows through the system.

How do I install Project Map in Claude Code?

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.

How do I install Project Map in Codex?

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.

Can I use Project Map in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Project Map need to run?

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.

Does Project Map access the network?

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.

Is Project Map safe to install?

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.

What licence does Project Map use?

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.

How many tokens does Project Map use?

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.

What are the alternatives to Project Map?

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.

Who maintains Project Map?

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.