Conan Vcpkg
mohitmishra786/low-level-dev-skills
C/C++ package manager skill covering Conan and vcpkg. An agent skill from mohitmishra786/low-level-dev-skills.
Traces the full life of a music generation request (UI form → Node job queue → engine LM → synth → SQLite song row) and every place params can silently drop, especially the LM echo sideband gotcha.
$ npx skills add scragnog/HOT-Step-CPP --skill generation-request-flow -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install scragnog/HOT-Step-CPP generation-request-flow --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/generation-request-flow .claude/skills/generation-request-flow && 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 "generation-request-flow" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/generation-request-flow into .claude/skills/generation-request-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generation-request-flow", 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/generation-request-flowType 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 generation-request-flow -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install scragnog/HOT-Step-CPP generation-request-flow --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/generation-request-flow .agents/skills/generation-request-flow && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generation-request-flow" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/generation-request-flow into .agents/skills/generation-request-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generation-request-flow", 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 generation-request-flow -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install scragnog/HOT-Step-CPP generation-request-flow --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/generation-request-flow .cursor/skills/generation-request-flow && 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 "generation-request-flow" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/generation-request-flow into .cursor/skills/generation-request-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generation-request-flow", 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/generation-request-flow--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 generation-request-flow -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install scragnog/HOT-Step-CPP generation-request-flow --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/generation-request-flow .gemini/skills/generation-request-flow && 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 "generation-request-flow" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/generation-request-flow into .gemini/skills/generation-request-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generation-request-flow", 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 generation-request-flowInstalls 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 generation-request-flow -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/generation-request-flow .github/skills/generation-request-flow && 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 "generation-request-flow" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/generation-request-flow into .github/skills/generation-request-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generation-request-flow", 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 generation-request-flow -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 generation-request-flow --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/generation-request-flow .opencode/skills/generation-request-flow && 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 "generation-request-flow" agent skill from https://github.com/scragnog/HOT-Step-CPP/tree/master/.claude/skills/generation-request-flow into .opencode/skills/generation-request-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generation-request-flow", 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.
generation-request-flowTraces the full life of a music generation request (UI form → Node job queue → engine LM → synth → SQLite song row) and every place params can silently drop, especially the LM echo sideband gotcha.
Generation Request Flow is an agent skill from scragnog/HOT-Step-CPP. Traces the full life of a music generation request (UI form → Node job queue → engine LM → synth → SQLite song row) and every place params can silently drop, especially the LM echo sideband gotcha. Use when adding/plumbing a generation parameter, debugging "param set in UI but engine uses default", touching /api/generate, translateParams, aceClient, hot-step-server.cpp request parsing, the LM/synth request rebuild, or understanding task modes (text2music/cover/repaint/lego/extract/complete), the serial job queue…
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 Media & Creative, covering Background jobs and Music and audio generation. It works with C++ and SQLite. The repository describes itself as: Turn dials. Summon bangers! NOW WITH MORE C++! Local AI music generation powered by GGML. The licence is MIT.
9 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:
npxcmakenpmgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, npm and git, 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.
Generation Request Flow loads about 5.4k tokens when it runs. Until then it costs about 143 tokens; SKILL.md has 2,269 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 found no risky patterns in SKILL.md.
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,269 words, ~5,357 tokens.
.claude/skills/generation-request-flow/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.This skill maps the end-to-end path of a generation request in HOT-Step CPP and catalogs every point where a parameter can be silently lost. Most historical bugs in this area are param-plumbing bugs: a value set in the UI never reaches the C++ sampler, and nothing errors.
Terms used below:
audio_codes for the DiT.AceRequest, server/src/services/aceClient.ts:38) sent to the C++ engine. Snake_case, produced from camelCase UI params by translateParams().AceRequest struct in the same JSON body but are parsed separately into ServerFields (engine) because they don't exist in the upstream struct.server/src/routes/generate.ts, translateParams.ts, aceClient.ts, or engine/tools/hot-step-server.cpp request handling.text2music, cover, repaint, lego, …) or the job queue/watchdogs./lm response only contains fields in the C++ AceRequest struct — every sideband field vanishes. Always rebuild as { ...aceReq, <the 7 LM output fields> }. WHY: every field-copy whitelist ever written here went stale and silently dropped params; commits 8ea519b and 168dcb5 fixed real bugs of exactly this class. Full detail in the next section.get_num lambda, not bare yyjson_get_real(). WHY: yyjson_get_real() returns 0 for JSON integers, and JavaScript serializes 2.0 as 2 — so a whole-number value silently becomes 0.0. See hot-step-server.cpp:700-705..\dev-rebuild.bat at repo root — never engine\build.cmd directly, under any circumstances (you cannot reliably tell whether the app is running; Node auto-respawns ace-server on crash → infinite respawn + file-lock loop). Never cmake --build . --clean-first (20+ min CUDA recompile).npx tsc --noEmit; do not npm run build during dev.powershell -File engine\verify-hooks.ps1. WHY: pipeline-synth-ops.cpp losing its hot-step-sampler.h include is SILENT — everything compiles but all solvers/schedulers/guidance/sideband go dead (they read g_hotstep_params, which nothing consumes anymore).master, stage explicit paths (never git add -A), push only with explicit user approval. Any pushed v* tag triggers a full multi-platform CI release build.hot-step-sampler.h (masks, encoder states, constants) must be re-uploaded EVERY step — the GGML scheduler aliases input tensor buffers as scratch space; uploading once leaves them garbage from step 2 onward (hot-step-sampler.h:591-601, re-upload sites :936, :1091). Never hoist an upload out of the step loop as an "optimization".server/data/audio/*, test outputs) based on your own judgment of quality — the user verifies results by ear.engines enforces <25.Ground truth from the departing lead engineer, verified line-by-line in code:
Server-side params (ServerFields) do not survive the /lm round trip — the engine echoes back only what it knows. When building the synth request after the LM step, rebuild it from the original aceReq plus the LM-returned fields ONLY. Never maintain a whitelist of fields to copy across — every whitelist has gone stale and silently dropped params. Commits 8ea519b and 168dcb5 fixed bugs of exactly this class.
Mechanics of why:
/lm's result body is request_to_json() serialized from the C++ AceRequest struct (hot-step-server.cpp:869, struct at engine/src/request.h:29).ServerFields (hot-step-server.cpp:557-604) — vae_model, emb_model, scheduler, guidance_mode, adapter_group_scales, adapter_mode, adapter_runtime_quant, rebase_source/rebase_beta, apg_*, stork_substeps, denoise_*, plugin_params, seed_strength, evict_lm, vae_chunk, batch_cfg, and more — are not in the C++ struct, so the LM echo cannot contain them. Copy the echo forward and they all silently drop.The correct pattern — it exists in exactly two places, keep them identical:
// generate.ts:319-328 (fresh LM) and generate.ts:237-246 (LM-cache hit)
lmResults = lmResults.map(lmOut => ({
...aceReq, // CURRENT request = every sideband field survives
audio_codes: lmOut.audio_codes, // then ONLY the 7 LM-generated fields:
caption: lmOut.caption,
lyrics: lmOut.lyrics,
bpm: lmOut.bpm,
duration: lmOut.duration,
keyscale: lmOut.keyscale,
timesignature: lmOut.timesignature,
}));The only whitelist allowed is the LM-output list (those 7 fields). The base must always be a spread of the live aceReq. If you add a new server-side param you do not touch this rebuild code — that is the whole point of the pattern.
UI form (CreatePanel + Zustand globalParamsStore)
→ GenerationParams JSON, camelCase [ui/src/types.ts:80]
→ POST /api/generate (Node :3001) [server/src/routes/generate.ts:1355]
→ in-memory job Map + strictly serial queue [generate.ts:44 statuses]
→ translateParams(): camelCase → snake_case [server/src/services/generation/translateParams.ts:11]
→ POST http://:8085/lm (unless skipped) [aceClient.ts:319; engine handle_lm hot-step-server.cpp:888]
→ REBUILD synth req: {...aceReq, 7 LM fields} [generate.ts:319-328] ← THE SIDEBAND GOTCHA
→ POST http://:8085/synth (JSON or multipart) [aceClient.ts:332 / :347; engine handle_synth :1442]
→ engine: parse_server_fields() + request_parse_json() on the SAME body [hot-step-server.cpp:606]
→ synth_worker: ServerFields → g_hotstep_params global [hot-step-server.cpp:949, copy at :1132-1194]
→ synth_batch_run: TextEnc → DiT (hot-step-sampler.h reads g_hotstep_params) → VAE → WAV/MP3
→ Node saves data/audio/<uuid>.wav|mp3 [generate.ts:840]
→ auto-trim → post-processing chain → INSERT INTO songs [generate.ts:1057-1094, :1152]Engine port 8085 is set in server/src/config.ts:102 (ACESTEPCPP_PORT). Node job statuses: pending | lm_running | synth_running | saving | succeeded | failed | cancelled (generate.ts:44).
A new param must be threaded through five layers. Missing any one = silent default.
ui/src/stores/globalParamsStore.ts (persisted per-field to localStorage under an hs-* key) and include it in getGlobalParams() (line 324). Watch the conditional gating there — many params are sent only when their mode is active (e.g. apgMomentum only when guidanceMode === 'apg', line 396). Add the field to GenerationParams in ui/src/types.ts:80. The visible controls for engine knobs live in ui/src/components/global-bar/ (GlobalParamBar.tsx, GenerationDropdown.tsx) — grep an existing knob's setter to find the right spot.server/src/services/generation/translateParams.ts. Use !== undefined guards for fields where 0/false is meaningful — a truthy guard (if (params.foo)) silently drops legitimate zeros.AceRequest interface in server/src/services/aceClient.ts:38 (this interface is the Node-side canonical superset: C++ struct fields + sideband).ServerFields (hot-step-server.cpp:557) and parse_server_fields() (:606). For floats, use the get_num lambda pattern — Golden rule 2. Note: get_num is declared mid-function at :703 — add your parse AFTER that line (e.g. next to the denoise fields at :763), or inline the is_real ? get_real : get_int ternary like rebase_beta does (:663); a parse placed above :703 fails to compile (use before declaration).g_hotstep_params in the block at hot-step-server.cpp:1132-1194 (note: this copy happens before ace_synth_load() because adapter merge reads group scales at merge time), and add the field to HotStepParams in engine/src/hot-step-params.h. Consume it in hot-step-sampler.h (or wherever)....aceReq spread carries your field automatically..\dev-rebuild.bat (C++), npx tsc --noEmit (TS). Verify arrival — but beware the [DIAG] trap: the [DIAG] /synth body (first 300 chars) line (hot-step-server.cpp:1568) truncates at 300 chars, and the body starts with caption then lyrics, so with any realistic caption your sideband field will NOT appear in the visible prefix. A field absent from the DIAG line is NOT evidence it was dropped. Reliable checks: add a temporary fprintf of your parsed value in parse_server_fields (or next to the [Server] HOT-Step params: summary at hot-step-server.cpp:1197), or log the full aceReq server-side before submitSynth. For any new UI control, ask the user to visually confirm it — do not use the browser agent for visual verification (API checks are fine).| Path | Role |
|---|---|
ui/src/stores/globalParamsStore.ts | Zustand store for all engine knobs; getGlobalParams() (:324) is the single assembly point with mode-conditional gating |
ui/src/types.ts:80 | GenerationParams — canonical camelCase UI shape (~120 fields, incl. post-processing-only fields that never reach the engine) |
ui/src/App.tsx:502 | handleGenerate — merges global params + Create-tab content, enqueues via enqueueSimpleGen |
ui/src/services/api.ts:148-153 | generateApi — POST /generate, status polling, cancel |
server/src/routes/generate.ts | The whole Node lifecycle: queue, LM phase, sideband rebuild, trigger re-injection, synth loop, watchdogs, DB insert |
server/src/services/generation/translateParams.ts | camelCase → AceRequest snake_case; pure function |
server/src/services/generation/lmCache.ts | LM output cache — stores only the 7 LM fields, keyed by LM-affecting params only (sha256/16, LRU max 20) |
server/src/services/aceClient.ts | Wire types + HTTP client to engine :8085; timeouts 15 s submit / 30 s poll / 300 s result (:17-19) |
engine/tools/hot-step-server.cpp | Engine HTTP server: handle_lm (:888), handle_synth (:1442), ServerFields (:557), parse_server_fields (:606), synth_worker (:949) |
engine/src/hot-step-params.h | HotStepParams sideband global (g_hotstep_params) read by hot-step-sampler.h inside the DiT; also AdapterGroupScales/AdapterSpec/AdapterSection |
engine/src/request.h:29 | Upstream C++ AceRequest struct — fields here DO survive the /lm echo |
server/src/config.ts:102 | Engine port (8085 default) |
yyjson_get_real() (e.g. apg_momentum :667, apg_norm_threshold :670, seed_strength :674, beat_stability, dcw_scaler, latent_shift, cfg_cutoff_ratio, cache_ratio) turn whole-number JSON values into 0.0. Only adapter_group_scales, rebase_beta, and a few others use the int-safe get_num lambda (:703).getGlobalParams() (globalParamsStore.ts:324-458) — params conditionally undefined based on mode/toggles. A stale advancedAdapters=false suppresses a persisted adapter stack (:334). If a param "never arrives," check the gate here first.if (params.bpm) / if (params.duration) / if (params.inferenceSteps) intentionally drop 0 ("LM fills it in"), but a new field copied with a truthy guard drops legitimate 0/false. Use !== undefined where 0 matters.translateParams injects it (:136-144), the LM's chain-of-thought caption replaces the whole caption, and generate.ts re-injects it (:366-403) only when triggerPlacement AND loraPath are both set; otherwise it logs a [Trigger] WARNING and skips (:399-403). Debugging "adapter trigger missing from caption" starts here.computeLmCacheKey (lmCache.ts:23-46). If you add an LM-affecting param, it MUST go into that key or stale audio codes get served for new settings. DiT/adapter params are deliberately excluded from key and value.submitSynthMultipart sends only request[0] if given an array (aceClient.ts:376).vae_model/emb_model fall back to the default with only a stderr warning, not an error; unknown rebase_source is skipped with a warning. Unknown adapter name (after absolute-path fallback) DOES fail the job.dcw_*, latent_shift/latent_rescale, custom_timesteps, infer_method exist in BOTH the C++ AceRequest struct (request.h) and ServerFields. The server sampler reads the g_hotstep_params (ServerFields) copy; keep both parse paths in sync or CLI-tool vs server behavior diverges. Also note naming: the C++ struct has vae (request.h:142, used by CLI//vae) while the server sideband uses vae_model.engine\verify-hooks.ps1.skipLm) bypass the LM entirely — anything depending on LM-filled metadata must handle 0/empty. When skipLm on non-cover: defaults filled (bpm 120, duration 120, 'C major', '4') at generate.ts:221-224.Engine task_type (request.h:109, docs in engine/docs/ARCHITECTURE.md): text2music (default), cover (FSQ roundtrip, free reinterpretation), cover-nofsq (clean latents, faithful remix), repaint (region regenerate via repainting_start/repainting_end; negative start = outpaint before), lego (new layered track; base model only), extract (stem isolation; base only), complete (fill mix around a stem; base only). LM modes: generate / inspire / format.
Discrepancy — code wins: ARCHITECTURE.md:360 says lego uses the LM, but Node's isCoverTask list ['cover','cover-nofsq','repaint','lego','extract'] (generate.ts:208) means the Node pipeline never runs the LM for lego. complete is absent from that list, so it would run the LM if submitted via /api/generate. That list is Node-side policy, not the engine's task registry.
| Symptom | Cause / where to look |
|---|---|
| Param set in UI, engine behaves as default | Sideband dropped post-LM (gotcha), UI gate (checklist #3), or whole-number float → 0 (checklist #2). Do NOT trust the 300-char [DIAG] /synth body prefix as proof of absence (procedure step 7) — add a temporary parse-site fprintf instead |
| "Generation stalled — no progress for Ns" | 2-min no-progress watchdog (generate.ts:107,:128); engine wedged |
| "Generation timed out (N min limit)" | Wall-clock watchdog, generationTimeoutMinutes clamped [5,120], default 45 (generate.ts:139) |
| "Generation failed on ace-server" | Engine job status 2 — read logs\<session>\generations\gen_<uuid>_*.log, then ace_engine.log for [Server] Adapter not found / synth load failure |
| All solvers/schedulers behave like euler after an upstream sync | Lost hot-step-sampler.h hook in pipeline-synth-ops.cpp — SILENT; run engine\verify-hooks.ps1 |
| Trigger word absent from final caption | CoT caption replaced it and re-injection gate unmet — grep gen log for [Trigger] WARNING |
| Stale LM output despite changed DiT/adapter params | Correct behavior (LM cache keys only LM params); set cacheLmCodes: false to force a fresh LM run |
| 503 "Engine not ready" on submit | Engine bootstrap unfinished (generate.ts:1355 handler checks engineReady) |
| Song Builder tracks get quieter each append | wav16 peak-renormalization — fixed by forced wav32 for builder/PP (generate.ts:549-566) |
8ea519b, 168dcb5).get_num.g_hotstep_params must be populated before ace_synth_load() because adapter merge reads group scales at merge time (comment near hot-step-server.cpp:1128).0f3bf6d → ee041e1, "broke musical continuity"), but adapter_section_isolation is still parsed (:656) and copied to g_hotstep_params (:1145) while nothing in engine/src/ consumes it. It is a dead knob — don't mistake its plumbing for a working feature, and do NOT re-implement the consumer: per-section self-attn masking breaks musical continuity across section boundaries; any retry needs a cross-section-coherence design first.shift == -1, this fork computes adaptive shift from duration + steps (hot-step-server.cpp:1244-1250). ARCHITECTURE.md's "shift 0 = auto" text describes upstream, not this fork.synth_batch_size expands per-seed variants; total clamped to DiT max 9 (hot-step-server.cpp:964-973). Node avoids engine multipart/mixed results by submitting one track per /synth call.dit.h:565-579 — rb_src = (si == 0) ? rebase_source : nullptr); one nudge per stack, never per adapter. Any plumbing change that makes rebase per-adapter is a bug (issue #72).npx tsc --noEmit # type-check server/UI (never npm run build in dev)
.\dev-rebuild.bat # the ONLY sanctioned way to rebuild C++, always
powershell -File engine\verify-hooks.ps1 # after any upstream sync
Get-ChildItem logs | Sort-Object Name -Descending | Select-Object -First 1 # newest session log folder
Invoke-RestMethod http://localhost:3000/api/generate/queue # queue health (dev app; :3001 is the prod port)
Invoke-RestMethod -Method Post http://localhost:3000/api/generate/reset-queue # unwedge the queueaceClient.ts AceRequest interface + ServerFields) is the authoritative schema.plugin_params are consumed).docs/plans/ — internal design docs (per-section masking, upstream sync workflow). Gitignored, local-only — 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/generation-request-flow of scragnog/HOT-Step-CPP.
Open the folder on GitHubat commit 91e92a8
Generation Request Flow 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 |
|---|---|---|---|---|---|---|
| Generation Request Flow this skillscragnog/HOT-Step-CPP | 171 | — | ~5.4k | Automated safety check: Pass | MIT | |
| Conan Vcpkgmohitmishra786/low-level-dev-skills | 253 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Klingai Job Monitoringjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Release Videohuytieu/COG-second-brain | 1.3k | — | ~1.7k | Automated safety check: Pass | MIT | |
| AudioCraft Audio GenerationOrchestra-Research/AI-Research-SKILLs | 13k | 9 repos | ~3.9k | Automated safety check: Pass | MIT | |
| Musictadaspetra/loop | 296 | 3 repos | ~827 | Automated safety check: Pass | MIT |
mohitmishra786/low-level-dev-skills
C/C++ package manager skill covering Conan and vcpkg. An agent skill from mohitmishra786/low-level-dev-skills.
jeremylongshore/tons-of-skills-marketplace
Track and monitor Kling AI video generation task status. An agent skill from jeremylongshore/tons-of-skills-marketplace.
huytieu/COG-second-brain
Turn a product release (the list of shipped items plus real screen recordings) into a motion recap video and one explained demo per feature, with sound effects tied to on-screen motion and a…
Orchestra-Research/AI-Research-SKILLs
Generates music from text descriptions with MusicGen and sound effects with AudioGen, using Meta's AudioCraft PyTorch library with melody and style conditioning.
tadaspetra/loop
Generate music using ElevenLabs Music API. An agent skill from tadaspetra/loop.
vectorize-io/hindsight
Draw an animated figure (boxes, arrows, moving data) as one self-contained SVG for a GitHub README, PR, issue or blog post.
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.
Traces the full life of a music generation request (UI form → Node job queue → engine LM → synth → SQLite song row) and every place params can silently drop, especially the LM echo sideband gotcha. Generation Request Flow is an agent skill from scragnog/HOT-Step-CPP. Traces the full life of a music generation request (UI form → Node job queue → engine LM → synth → SQLite song row) and every place params can silently drop, especially the LM echo sideband gotcha.
Generation Request Flow fits situations like: adding/plumbing a generation parameter; debugging param set in UI but engine uses default; touching /api/generate; translateParams.
Run `npx skills add scragnog/HOT-Step-CPP --skill generation-request-flow -a claude-code`. Or copy the skill folder (.claude/skills/generation-request-flow in scragnog/HOT-Step-CPP) into .claude/skills/generation-request-flow in your project. Claude Code loads it when a task matches its description.
Run `npx skills add scragnog/HOT-Step-CPP --skill generation-request-flow -a codex`. Or copy the skill folder (.claude/skills/generation-request-flow in scragnog/HOT-Step-CPP) into .agents/skills/generation-request-flow 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 generation-request-flow -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generation-request-flow, .gemini/skills/generation-request-flow, .github/skills/generation-request-flow and .opencode/skills/generation-request-flow in your project.
Going by SKILL.md and its folder, Generation Request Flow needs the command-line tools its instructions call (npx, cmake, npm and git). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, npm and git, 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 no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Generation Request Flow 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 21k 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 Generation Request Flow: Conan Vcpkg (mohitmishra786/low-level-dev-skills, 253 stars), Klingai Job Monitoring (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Release Video (huytieu/COG-second-brain, 1.3k stars) and AudioCraft Audio Generation (Orchestra-Research/AI-Research-SKILLs, 13k 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.