Agent skill

Mm3 Backend

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

MITAuto-check passedDevelopment

Install Mm3 Backend

skills CLI
$ npx skills add scragnog/HOT-Step-CPP --skill mm3-backend -a claude-code

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

GitHub CLI
$ gh skill install scragnog/HOT-Step-CPP mm3-backend --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/mm3-backend .claude/skills/mm3-backend && 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
mm3-backend
GitHub stars
174
Token cost
~4.5k tokens
SKILL.md length
2,210 words
Files
4
Skills in repo
18
Repo updated
First seen
Licence
MIT

At a glance

Maps HOT-Step's native MiniMax-Music3 backend — engine port modules, endpoints, server/UI integration, parity/fixture infrastructure, and the hard-won trap list.

  • Works in 12 steps: ComfyUI's wrapper NEGATES the DiT… → tokenizer.ggml.pre = qwen2 is misleading… → Scheduler sigmas must replicate float32… → …
  • Working on anything MM3 — engine/src/minimax/
  • SKILL.md covers Model + pipeline (25 fps…, LM sampling knobs (2026-08-25), File map and Engine endpoints (:8085 via…, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Mm3 Backend is an agent skill from 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. Use when working on anything MM3 — engine/src/minimax/, backends/minimax/, /mm3/ endpoints, the backend toggle/capability gating, MM3 model files or Model Manager entries, debugging MM3 generations, MM3 performance work, or extending MM3 features (covers, training, Lyric Studio).

Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files (for example `reference/features.md`, `reference/performance.md` and `reference/training.md`).

It sits in Development. It works with MiniMax. 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

  • Working on anything MM3 — engine/src/minimax/
  • Backends/minimax/
  • /mm3/ endpoints
  • The backend toggle/capability gating

Example prompts

  • “/mm3-backend”

Workflow steps

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

  1. ComfyUI's wrapper NEGATES the DiT output; the diffusers reference (and our port) does not.
  2. tokenizer.ggml.pre = qwen2 is misleading — the reference uses the slow Qwen2Tokenizer
  3. Scheduler sigmas must replicate float32 linspace(1, 1/30, 30) rounding — deriving
  4. AR iteration 0 is fed back but never emitted (emitted frame j = iteration j+1). A
  5. The semantic code embeds via the LM's token_embd, not depth.audio_embd.
  6. Caption hygiene: splitlines() for caption, split("\n") for lyrics — mixing them leaks
  7. Condition resample is plain nearest, not nearest-exact (differs on 199/689 positions).
  8. Never use std::normal_distribution for reproducible noise (stdlib-dependent bytes) —
  9. GGUFs live in the models/mm3/ subdir deliberately: the ACE registry scan globs only the
  10. Single-seed spectral/genre judgments are meaningless — the reference's own 11-seed spread
  11. VRAM: f16 stack ≈ 22.5 GB + KV (288 kB/position) + ~3 GB compute headroom. Engine-side
  12. The LM GGUF is not interchangeable with stock Qwen3-8B GGUFs (extended 200 k vocab,

What it can do on your machine

Read from SKILL.md and the folder at commit eeeded6. 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

    No scripts in the folder and no shell commands in SKILL.md.

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

  • Network

    Links to these hosts (documentation or services it may open):

    • huggingface.co

    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

Mm3 Backend loads about 4.5k tokens when it runs. Until then it costs about 114 tokens; SKILL.md has 2,210 words of instructions outside code blocks.

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

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 passed

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.

SKILL.md

The full file from scragnog/HOT-Step-CPP at commit eeeded6, republished under its MIT licence (© scragnog). 2,210 words, ~4,546 tokens.

Download SKILL.mdSave it as .claude/skills/mm3-backend/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
mm3-backend
description
Maps HOT-Step's native MiniMax-Music3 backend — engine port modules, endpoints, server/UI integration, parity/fixture infrastructure, and the hard-won trap list. Use when working on anything MM3 — engine/src/minimax/, backends/minimax/, /mm3/* endpoints, the backend toggle/capability gating, MM3 model files or Model Manager entries, debugging MM3 generations, MM3 performance work, or extending MM3 features (covers, training, Lyric Studio).

MiniMax-Music3 backend

Native C++/GGML port of MiniMaxAI/MiniMax-Music3, built 2026-08-13 (release day) as HOT-Step's second generation backend behind an N-backend abstraction. Status: rudimentary text2music only (caption + lyrics + duration + seed); no covers/repaint/stems/adapters/training. Output = raw 44.1 kHz stereo WAV (app norm is 48 k — post-chain steps that hardcode 48 k are skipped for MM3).

Deep docs (local, gitignored): docs/plans/multi-backend-architecture.md (architecture plan, day-0 findings, op inventory) and docs/plans/mm3-gguf-layout.md (GGUF contract + loader addendum). Caption format: the mm3-captioning skill.

Model + pipeline (25 fps frames; every module parity-proven vs the diffusers reference)

caption+lyrics → Qwen2 BPE → Global LM 8.59B (Qwen3 arch, semantic codes @ ids 151675–168058,
  EOS 151670, AR CFG 1.5 as persistent 2-row batch) → per frame: RVQ depth decoder 0.6B
  (7 acoustic codebooks) → frame_hiddens [F,8,4096] → per 200-frame window (hop 100):
  condition encoder 25M (×3.4453125 nearest resample) → flow DiT 2.4B (30 Euler steps,
  CFG 1.7, zeros-cond uncond as separate pass) → vocoder 54M (DAC-style, ×512 → 44.1 kHz)
  → overlap-crop stitch

LM sampling knobs (2026-08-25)

The AR stage's semantic draw takes the full knob set (engine fields on MM3GenRequest, wire names lm_*, UI via the minimax backend param registry keys mm3Lm*): lm_temperature, lm_top_k (0 = the checkpoint's 50), lm_top_p (nucleus over the top-k survivors), and lm_rep_penalty with the ACE LM's three modes ported (dry default / frequency / presence).

  • Time constants are 25fps-rescaled: window 320 (~12.8 s), DRY min-match 15 frames (0.6 s). Never copy ACE's 5 Hz numbers (64 / 3-6) literally.
  • DRY punishes only codes that would extend a verbatim recent cycle — the memorising-adapter loop failure — and leaves musical restatement alone. Useful range 1.05-1.15.
  • Parity is proven: at default knobs the sampler takes the exact pre-knob code path; fixed-seed renders hash bit-identical across the change (da869838…, old and new builds, identical launch). Knobs at defaults are omitted from the wire so the engine recipe stays authoritative.
  • The depth decoder's sampler is untouched on purpose: loops do not live in the per-frame acoustic codes, and perturbing its input distribution re-opens the timbre question the acoustic loss closed (training skill).
Where the knobs render: the group field (2026-08-27)

Declared knobs (capabilities().extensions) carry an optional group: 'generation' | 'lm', and each generic top-bar dropdown renders its own group — BackendGenerationDropdown and BackendLmDropdown, both on the shared schema renderer in BackendExtensionControls.tsx. An untagged knob is a Generation knob, which is where every one of them lived before groups existed, so an older manifest still renders exactly as it did.

MM3's group: 'lm' set is the six mm3Lm* sampling knobs plus the four that decide what happens to the planner's output: mm3ArSeed, mm3ReuseAr, mm3SaveArCodes, mm3PlankPath.

Two things to know before touching the LM cluster:

  • features.lm does not mean "has an LM." It means "has ACE's CoT metadata LM" — a stage that is genuinely optional. MM3 reports lm: false and still has an LM; it is just an autoregressive planner that always runs. The bar shows the LM tab on features.lm || any knob tagged group:'lm'.
  • No global on/off in MM3 mode. GlobalParamBar hangs the section's headerToggle (skipLm) only when features.lm is true. There is no MM3 render without the planner, so a switch there would be a lie.

File map

PieceWhere
Engine modulesengine/src/minimax/ — mm3-model.h (loader/residency), mm3-tokenizer.h, mm3-lm-graph.h, mm3-ar-loop.h, mm3-sample.h, mm3-depth-graph.h, mm3-cond-graph.h, mm3-dit-graph.h, mm3-vocoder-graph.h, mm3-pipeline.h (e2e + chunking), mm3-request.h (prompt assembly/hygiene), mm3-job.h (job queue + VRAM arbitration), mm3-server.h (endpoints)
Hooksone include in engine/tools/hot-step-server.cpp (+ mm3_register_routes/mm3_register_job_routes call sites); checked by engine/verify-hooks.ps1 (hooks 4/4b/4c)
Server backendserver/src/services/backends/ — types.ts (EngineBackend + capability manifest), registry.ts, ace/, minimax/{client,index,generate}.ts; routes server/src/routes/backends.ts; generation branch at top of runGeneration in routes/generate.ts
UIstores/backendStore.ts, hooks/useCapabilities.ts, global-bar/BackendToggle.tsx (hidden until ≥2 backends), shared/BackendCapabilityGate.tsx (studio guards), gating in GlobalParamBar.tsx
Models5-way split since 2026-08-14 (ported from ServeurpersoCom/minimaxmusic.cpp): models/mm3/mm3-{lm,depth,cond,dit,voc}-<quant>.gguf (archs qwen3 / mm3-{depth,cond,dit,voc}), legacy mm3-synth-* bundles still load (fill any role; split file wins per quant token). Per-role quant mixing (LM Q8_0 + DiT Q4_K_M is the headline combo); a DiT/adapter swap reloads only cond+dit+voc — LM stays warm. cond/voc are never quantised (f16 only). Hosted scragnog/MiniMax-Music3-GGUF; registry role mm3, packs rebuilt on split components in server/src/data/model-registry.json
Converterengine/tools/convert-mm3.py (safetensors→GGUF bundle; folds weight-norm; refuses pruned/int8_convrot) then engine/tools/split-mm3.py (byte-exact bundle→5-way split; idempotent; cond/voc only from native bundles)
Fixtures / parityD:\Ace-Step-Latest\mm3-weights\fixtures\ (manifest.json + raw f32 dumps + reference WAVs), seed-spread study in ..\seed-spread-2026-08-13\; venvs: .venv-convert (numpy/gguf), .venv-ref (patched diffusers @ dafe3733 — patch_venv.py --restore; capture_fixtures.py --replay rebuilds dumps without rerunning the model)

Engine endpoints (:8085 via app, standalone tests on :8086)

GET /mm3/props (files/config/loaded/limits — blocks while an MM3 generation runs; always call with ~2.5 s timeout and keep last-known-good), POST /mm3/warm / POST /mm3/unload (idempotent; unload frees weights+KV), POST /mm3/synth (production, rides the same FIFO GPU worker as ACE /synth; standard /job?id= progress/cancel/result; request contract documented in mm3-request.h/mm3-job.h), GET /mm3/job?id= (MM3-vocabulary progress, never blocks; &ar=1 returns the Plank code blob — see below), GET /mm3/stream?id= (live audio of a running job — chunked WAVs, one reader, never takes the MM3 mutex; see "Streaming player" below), POST /mm3/tokenize-check (cold-capable; 5000-token limit), plus deprecated bring-up endpoints (/mm3/voc-decode, /mm3/dit-forward, /mm3/flow-sample, /mm3/depth-frame, /mm3/cond-encode, /mm3/lm-plan, /mm3/synth-e2e) kept for parity work — they run GPU work on httplib threads; never build production paths on them.

Standalone launch gotcha: ace-server exits 0xC0000135 with zero output unless engine/trtllm-libs + engine/deps/tensorrt_libs are prepended to PATH (aceEngineProcess.ts does this; engine/server.cmd does not).

Caption echo (added 2026-08-21). POST /mm3/synth prints the caption to stderr at job creation, so it reaches the terminal, ace_engine.log and the in-app Terminal — the MM3 analogue of ACE's [LM-Phase2] CoT[0] dump, which MM3 had no equivalent of:

[MM3-Job] <id> created - 63 prompt tokens, ...
[MM3-Job] <id> caption (149 bytes in, 143 cleaned), lyrics 46 bytes:
<the cleaned caption>

It prints the cleaned caption (post mm3_clean_caption), not the raw body, because the two differ exactly where a markdown-emitting tool pasted **bold** headings or - bullets in — the drift you would otherwise only hear. MM3_LOG_PROMPT=1 swaps it for the whole assembled template (<|im_start|><|caption_start|>…<|lyrics_start|>[start]…<|audio_start|>). The Node-side [Generate] … caption=N chars line is the send-side half; a mismatch between the two counts localises a drop to the wire rather than the UI.

Natural-ending candidates (SHIPPED 2026-09-09, 00e3e7af)

POST /mm3/synth accepts require_eos: true and eos_rounds: N (1..16) with takes: K. The planner runs K takes in one batched pass (seed+t); any take that reaches max_frames without EOS is DROPPED before the flow stage; if none ended the plan repeats at seed + K (round r plans seed + r*K + t) up to eos_rounds times, then fails with "no candidate ended naturally". The job JSON's takes is the number RENDERED; takes_planned, takes_dropped, eos_rounds_used, require_eos and a per-take round are added, and take_detail is emitted whenever candidates were in play. Ignored on an interleaved stream (logged). Server: mm3RequireEnding (default on, Generation dropdown) sends takes 3, eos_rounds 4 and reads the surviving count/seeds from the completion detail. Duration on MM3 is ALWAYS auto (a requested length was a hard cap that cut endings off); the Create panel hides the control in MM3 mode. Batched take 0 is a different song from the same seed by design (check-mm3-ensemble.mjs). Knock-ons: Save Plan To Disk is dead while the toggle is on; each ended candidate costs its own flow pass.

Show full SKILL.md (1,148 more words)Show less

The trap list (each cost real debugging — do not relearn)

  1. ComfyUI's wrapper NEGATES the DiT output; the diffusers reference (and our port) does not. mm3.dit.output_negated in the GGUF records Comfy's behavior. Do not "fix" the sign.
  2. tokenizer.ggml.pre = qwen2 is misleading — the reference uses the slow Qwen2Tokenizer (single-digit regex = classic GPT-2 pre-tokenization, which bpe.h implements). Matching the KV's llama.cpp meaning ({1,3} digit grouping) breaks token parity.
  3. Scheduler sigmas must replicate float32 linspace(1, 1/30, 30) rounding — deriving i/steps is wrong in the 7th digit and it matters.
  4. AR iteration 0 is fed back but never emitted (emitted frame j = iteration j+1). A one-frame indexing slip degrades conditioning parity 49×.
  5. The semantic code embeds via the LM's token_embd, not depth.audio_embd.
  6. Caption hygiene: splitlines() for caption, split("\n") for lyrics — mixing them leaks a trailing \n into the template. Empty lyrics → we substitute [instrumental] (the reference rejects empty; this substitution is a HOT-Step decision).
  7. Condition resample is plain nearest, not nearest-exact (differs on 199/689 positions).
  8. Never use std::normal_distribution for reproducible noise (stdlib-dependent bytes) — mm3_fill_noise uses splitmix64 + Box-Muller.
  9. GGUFs live in the models/mm3/ subdir deliberately: the ACE registry scan globs only the models root (unknown-arch warnings + 17 GB header reparse per boot if placed there).
  10. Single-seed spectral/genre judgments are meaningless — the reference's own 11-seed spread spans 272× in flatness and wanders off-genre with minimal captions. Structured 3-section captions (mm3-captioning skill) are the adherence lever. Compare distributions, not takes.
  11. VRAM: f16 stack ≈ 22.5 GB + KV (288 kB/position) + ~3 GB compute headroom. Engine-side arbitration evicts idle ACE modules before MM3 warm; Node-side releaseVram() handles the reverse on backend switch and before ACE gens. ~600 MB stays in the CUDA pool after unload (returns on process exit — not a leak).
  12. The LM GGUF is not interchangeable with stock Qwen3-8B GGUFs (extended 200 k vocab, untied head) and llama.cpp alone cannot run music generation. It IS interchangeable with a depth-pruned distilled composer — see "Alternative composer LMs" below.
  13. read_wav_buf returns INTERLEAVED [T,2]; the DAV encoder wants PLANAR [L:T][R:T]. Use audio_io_read_wav_buf (audio-io.h), which de-interleaves — never the raw reader. mm3-preprocess sliced the raw reader's output as {p, p+T} and made "left" the FIRST HALF of the song with L/R alternating. Since L≈R, that duplicates every sample: an exact 2× time stretch, one octave down. Every cached target was the song in slow motion and five LoRA runs learned to generate slow motion (2026-08-15, fixed 82b2852).
  14. VERIFY PREPROCESSING BY DECODING A TARGET AND LISTENING — metadata cannot catch this class of bug. #13 survived a full day because T is PER-CHANNEL frames, so latent_frames / duration stayed at exactly 86.1328 Hz and every arithmetic check on the manifest passed. The DAV parity gate passed too (it is fed encode_ref.py's planar dump). The manifest was written by the same buggy code being checked, so it corroborated itself. One listen to a decoded target found it. POST /mm3/voc-decode?frames=N with raw f32 [128,N] returns a WAV — there is no excuse not to. Objective version of the same gate: encode a 440 Hz sine and measure what comes back (was 220.0 Hz, i.e. ratio 0.5000; correct is 440.0 Hz / 1.0000). A pure tone cannot be argued with, and it brackets which stage is at fault.
  15. Rob's ear beat every metric, twice. He called "slow motion, too deep" on the first adapter and again on the third; both times it was explained away as regression-to-the-mean (which produces a genuinely similar description) and five runs of hyperparameter tuning followed on corrupt data. When the user reports a physical symptom — speed, pitch, duration — treat it as literal and test it literally before reaching for a statistical explanation.
  16. Gate every trained adapter on ||delta||/||W|| BEFORE any ear test. Healthy LoRA merges move weights 1–5% Frobenius; at lr 5e-4 × 8k steps ours hit median 17% (max 34%) and at scale 1.0 that is a damaged model, not a strong style — jumbled inside a single 689-latent window, invariant to rank/crop/CFG (AdamW makes total movement ≈ lr×steps regardless of rank, which is why every knob "did nothing"). Measure against the ComfyUI f16 checkpoint (mm3-weights/comfy/diffusion_models/), whose keys match the export directly; target median ≤5%. SimpleTuner's reference recipe is lr 5e-5.
  17. Training crops must not straddle conditioning-rollout seams. mm3-condition builds the cache from independent 60 s segments; a crop across a seam pairs continuous audio with conditioning that jumps to an unrelated rollout mid-window — teaching "conditioning lies, smooth over it" (mean-collapse pressure). The seams were parsed and never consulted for a week (~13% of crops at 689, 27% at 1378); fixed 5117281 with reject-and-retry.
  18. Filter groups at EXPORT, never constrain them at TRAINING. Measured (runs 09/10, matched ~2.6% delta, same groups): full-set training + MLPV surgery = coherent with clear lyrics; --target mlpv trained-from-scratch = intrusions and jumble, with LESS style at matched delta. Gradient denied its natural pathway (q,k routing) emulates it destructively through the remaining groups, so "safe-group" deltas from a constrained run carry structure-entangled content the base attention cannot support. The winning recipe: train ALL sites at modest delta, then zero q,k rows + proj heads in the export (groupfilter.py pattern — q,k rows are B[0:4096] of the fused qkv; ablation-proven: q,k = structure poison, proj_in/out = seed-dependent fuzz, MLP+V+out = timbre).
  19. An MM3-only install must not kill the server at boot. The startup gates in hot-step-server.cpp (registry_scan empty → exit 1; partial ACE synth without LM → exit 1) predate MM3 and knew nothing about it: a user with only models/mm3/*.gguf got a dead engine → empty model dropdowns for BOTH backends + the MM3 "weights missing" CTA, while the Model Manager (Node disk scan, checks subdirs) said everything was installed (GitHub issue #118). Both gates now fall through when mm3_weights_present() (mm3-model.h — filename-only probe of <models> + <models>/mm3) is true; ACE handlers already degrade per-request with an empty registry. Any future boot-time hard-exit must ask "can MM3 still serve?" first.

Validation bar for MM3 changes

Forced-replay parity against the fixtures (never sampled-path comparisons — RNG can't match torch). Established floors: per-module ≥ 0.999 corr vs the bf16 dumps (the dumps' own floor, ~1.6e-2 relRMSE) or ≥ 0.9999 vs an fp32 CPU rerun of the reference module. Full-clip replay: 0.9988. If a change should be bit-neutral, prove it with the deterministic seeds.

Deeper reference (read on demand)

Everything below is out of this file to keep it cheap to load. Open the one you need:

  • reference/features.md — Feature subsystems: Sampler plugins: shared with ACE; Caption composer: plain English -> Structured Caption, no LLM; Lyric timestamps: use Whisper, not attention; Analysis tool: where the vocals sit
  • reference/performance.md — Performance, caches and streaming: Alternative composer LMs; Low step counts go THIN, not dull; MM3 Plank: the AR code cache; Streaming player: listen while it renders; MM3 AR cache: the speedup the Plank is not; Saved plans: the AR cache on disk; Performance budget
  • reference/training.md — Training and runtime adapters: Runtime LM adapters; Native LM LoRA training: ace-train mm3-lm-train; Native codes export: ace-train mm3-codes; Training: DiT yes, LM never

© 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 3 other files in .claude/skills/mm3-backend of scragnog/HOT-Step-CPP.

  • SKILL.md
  • reference/features.md
  • reference/performance.md
  • reference/training.md

Open the folder on GitHubat commit eeeded6

Compare with similar skills

Mm3 Backend 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.

Mm3 Backend compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Mm3 Backend this skillscragnog/HOT-Step-CPP174—~4.5kAutomated safety check: PassMIT
Roo Conflict Resolutionzgsm-ai/costrict4.5k—~2.3kAutomated safety check: PassApache-2.0
Code Reviewtimwuhaotian/the-pair379—~250Automated safety check: PassMIT
Release Prepfinch-xu/cc-router277—~1.5kAutomated safety check: PassMIT
PR Reviewaiskillstore/marketplace433—~616Automated safety check: PassMIT
External Model SelectionMicrock/ordinary-claude-skills404—~4.4kAutomated safety check: PassCustom licence

Similar skills

  • Roo Conflict Resolution

    zgsm-ai/costrict

    Provides comprehensive guidelines for resolving merge conflicts intelligently using git history and commit context.

    4.5k GitHub stars~2.3k tokensUpdated 11 days ago
    DevelopmentAuto-check passed
  • Code Review

    timwuhaotian/the-pair

    Comprehensive code review with security and performance checks

    379 GitHub stars~250 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Release Prep

    finch-xu/cc-router

    cc-router 发版准备一条龙:升版本号 → 根据上一个 tag 以来的提交写 release-notes/<版本/ 的中英日三份更新内容 → 校验 → 给用户审 → 本地提交「Bump version to X.Y.Z」,停在打 tag 之前。当用户说「准备发版」「发个版」「发 6.1.0」「写发版说明 / 更新内容 / release notes」「bump 版本」时必须走本…

    277 GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed
  • PR Review

    aiskillstore/marketplace

    Review pull requests for the MiniMax Skills repository. An agent skill from aiskillstore/marketplace.

    433 GitHub stars~616 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • External Model Selection

    Microck/ordinary-claude-skills

    Choose optimal external AI models for code analysis, bug investigation, and architectural decisions.

    404 GitHub stars~4.4k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Evals Context

    zgsm-ai/costrict

    Provides context about the CoStrict evals system structure in this monorepo.

    4.5k GitHub starsUsed in 1 repo~1.9k 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…

    174 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.

    174 GitHub stars~4.9k 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.

    174 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.

    174 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.

    174 GitHub stars~5k tokensUpdated yesterday
    Auto-check passed
  • Debugging Runtime

    scragnog/HOT-Step-CPP

    Diagnoses HOT-Step CPP generation failures, engine crashes, hangs, and startup problems from the logs/ session folders.

    174 GitHub stars~6k tokensUpdated yesterday
    Auto-check: notes

Works with

Categories

Questions about Mm3 Backend

What does Mm3 Backend do?

Maps HOT-Step's native MiniMax-Music3 backend — engine port modules, endpoints, server/UI integration, parity/fixture infrastructure, and the hard-won trap list. Mm3 Backend is an agent skill from 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.

When should I use Mm3 Backend?

Mm3 Backend fits situations like: working on anything MM3 — engine/src/minimax/; backends/minimax/; /mm3/ endpoints; the backend toggle/capability gating.

How do I install Mm3 Backend in Claude Code?

Run `npx skills add scragnog/HOT-Step-CPP --skill mm3-backend -a claude-code`. Or copy the skill folder (.claude/skills/mm3-backend in scragnog/HOT-Step-CPP) into .claude/skills/mm3-backend in your project. Claude Code loads it when a task matches its description.

How do I install Mm3 Backend in Codex?

Run `npx skills add scragnog/HOT-Step-CPP --skill mm3-backend -a codex`. Or copy the skill folder (.claude/skills/mm3-backend in scragnog/HOT-Step-CPP) into .agents/skills/mm3-backend in your project. Codex loads it when a task matches its description.

Can I use Mm3 Backend 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 mm3-backend -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mm3-backend, .gemini/skills/mm3-backend, .github/skills/mm3-backend and .opencode/skills/mm3-backend in your project.

What does Mm3 Backend need to run?

SKILL.md names no scripts, command-line tools or credentials: Mm3 Backend is instructions for the agent only.

Does Mm3 Backend access the network?

SKILL.md names 1 domain. As links in the text: huggingface.co. This is read from the text; nothing was executed.

Is Mm3 Backend safe to install?

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.

What licence does Mm3 Backend use?

Mm3 Backend 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 Mm3 Backend use?

About 4.5k tokens (SKILL.md is roughly 18k 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 Mm3 Backend?

Skills that share tags, products or a category with Mm3 Backend: Roo Conflict Resolution (zgsm-ai/costrict, 4.5k stars), Code Review (timwuhaotian/the-pair, 379 stars), Release Prep (finch-xu/cc-router, 277 stars) and PR Review (aiskillstore/marketplace, 433 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Mm3 Backend?

scragnog (a GitHub user) maintains it in scragnog/HOT-Step-CPP, which has 174 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 9, 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.