Repository navigation
v3.0.0 - Kit audit and restructuring, plus the Krea and MiniMax H3 skills
The largest release the kit has had: 12 commits, 78 files, +6251 / -2384 lines since 2.7.0. Two things
happened at once, and the second is the reason this is a major version.
New knowledge. Two dedicated model skills, minimax-h3 and krea, bringing the shipped count to four
alongside comfyui and seedance. With them: MiniMax H3's open weights and its three-field prompt format,
the full quant and acceleration ladder, the Spectrum accelerator, a working two-pass latent upscale, Krea's
hosted API nodes with their real price matrix, FLUX.1 Krea Dev, Krea Realtime, and the Krea 2 custom-node
ecosystem. Plus native LoRA training and gaussian splats in ComfyUI core, documented node by node and routed
from the task layer.
A full audit, which found the kit did not work for anyone but its author. A council of five advisors, then three
peer reviewers over their anonymised findings, then three adversarial reviewers on the release itself plus a
fourth that fact-checked every external claim, and finally a live end-to-end run on a real ComfyUI. The headline defect: the
documented installer copied three files, so a fresh install left 21 of SKILL.md's 22 routes dead and only
the plugin path shipped a working kit. Also found and fixed: MODELS.md had outgrown a readable file and
silently returned nothing for 57% of models; updating the kit destroyed the machine block it had just taught
you to write; step 1 of every task route pointed at a file nobody had located; the 94 blueprints were absent
from the lookup meant to find them. The build gained a gate that fails on the classes behind those, so they
cannot come back quietly.
And a set of claims this release had to walk back, each verified false against the primary source rather
than quietly edited: a Spectrum commit and tag that do not exist, an org that hosts zero models, a repository
that was never real, and a "no ComfyUI path" that a real node pack refutes. Wan 3.0 shipped hours before the
tag and its entry was rewritten the same day. Those corrections are named in place, not overwritten, because
a kit whose job is to be trusted has to show where it was wrong.
MAJOR because the install layout changed, which is this project's own stated trigger for a major bump.
Read this before updating.
Upgrading from 2.x
- Your machine block moves out of
SKILL.mdinto a newmachine.md. The installers do this for you: on the
first 3.0.0 run they lift the## Your machinesection out of the oldSKILL.md(orGEMINI.md/QWEN.md)
and write it tomachine.mdBEFORE overwriting anything. Verified by simulating a real 2.7.0 install with a
filled-in block: four facts in, four facts out. Without that step the update would have destroyed the
bootstrap one last time, which is exactly the defect this release exists to fix. - Claude Code PLUGIN users must copy the block out themselves. The plugin cache is version-keyed, so a
plugin update lands in a new directory andmachine.mddoes not travel with it. Keep your copy outside the
plugin folder. (Inferred from the cache layout, not observed through a real marketplace update.) MODELS.mdis now an index, not the reference. The 68 recipe entries live inMODELS/<family>.md.
Anything that deep-linked to aMODELS.mdanchor needs repointing; the index names the file for every model.- The installed skill gains
MODELS/,tools/andmachine.md. Nothing is removed, so an old layout keeps
working until you reinstall.
Added
-
A dedicated
minimax-h3skill (shared/minimax-h3/, third shipped skill aftercomfyuiandseedance).
SKILL.md owns the prompt format (the three named fields,<d>[Language]dialogue, the camera vocabulary, the
reference labels, a complete worked prompt end to end rather than placeholders) and a symptom-to-cause
table;reference.mdowns weights, quant ladder, the acceleration packs and their wiring. Distilled from
MiniMax's own writing guides and the node source, plus Krea's 2026-08-05 production-job taxonomy. -
The MiniMax H3 quant and acceleration ladder, verified file by file. Official Comfy-Org weights (bf16
66.3 GB, int8-convrot 34.0, pruned int8-convrot and pruned fp8-scaled 21.0 each per task family) and the
community GGUF set (Abiray/MiniMax-H3-GGUF: Q3_K 15.6 GB, Q4_0 18.6, Q4_K 19.9, Q5_0 22.8, paired Q4_K_M
text encoder 14.6 GB), with the loader caveat that GGUF needscity96/ComfyUI-GGUFand that the Turbo LoRA,
converted for the pruned safetensors layout, may not key-match a GGUF UNet at all. -
The Turbo LoRA, with its author's own caveat.
larryvrh/MiniMax-H3-Turbo-Lora, converted for ComfyUI by
drbaph(Apache-2.0): four steps instead of ~20, about a 5x cut in sampling wall-clock, in four files not
two (theckpt500pair is further-trained and is the recommended start). The original author calls it an
under-trained preview whose quality is not representative, so it is documented as a draft mode. -
kijai's
MiniMaxH3MemoryEfficientSageAttentionPatch(KJNodes, EXPERIMENTAL): a MODEL patcher that swaps a
custom SageAttention into H3 self-attention to cut peak VRAM, chaining with Spectrum which cuts step count.
This is the "kijai patch" in community R2V configs. Also records the name collision withMiniMaxRemover,
an unrelated object-removal model kijai wires in WanVideoWrapper. -
Native LoRA training and gaussian splats in ComfyUI core (
docs/ADVANCED.md). Core already had
TrainLoraNode/SaveLoRA/LossGraphNode; master now adds the missing data layer, 16 dataset nodes
includingLoadImageTextDataSetFromFolder,ResolutionBucketandMakeTrainingDataset. Separately,
nodes_gaussian_splat.pyadds 8 splat nodes with newIO.Splat/IO.File3DSplatAnytypes, including
RenderSplat(EWA rasterizer with a frame count, so camera moves render as sequences) andSplatToMesh.
Both are master-only as of 2026-08-06 and flagged as such. -
Spectrum, the first acceleration for local MiniMax H3 (
xmarre/ComfyUI-Spectrum-MiniMax-H3, GPL-3.0), read
from its node source. NodeSpectrumApplyMiniMaxH3, categorysampling/spectrum, and the important
correction to how it is being described around the community: it is a MODEL patcher, not a replacement
sampler, so it drops betweenUNETLoaderand everything downstream and the rest of the graph is untouched.
Documented with the author's own step accounting rather than a headline multiplier: over 20 steps Euler runs 13
actual + 7 forecast and RES multistep / CFG++ runs 14 actual + 6, about 35% and 30% fewer transformer calls,
while the README is explicit that wall-clock gain depends on offload, references, CFG branching and hardware.
Also the parts that bite: ancestral samplers and multi-GPU sampling deliberately fall back to native, RES keeps
its last three steps native regardless oftail_actual_steps,history_storage=vramcosts ~2.2 GiB peak for a
small and variable gain, and the version requirement that the circulating advice gets wrong:
it needs a ComfyUI newer than the v0.30.0 release, so a master build is required. Corrected 2026-08-06: an earlier draft of this entry named a Spectrum a ComfyUI build newer than the v0.30.0 release.30.0 does not contain it". That commit does not exist in the Spectrum repository (the API returns 422 for it) and v0.30.0 is a ComfyUI version, not a Spectrum tag; Spectrum's own tags run v0.1.0 to v0.1.5. The requirement is real, the two identifiers were conflated, and the author's own note that fast motion and briefly
visible detail can degrade. -
A working two-pass latent upscale for H3 (
Tr1dae/ComfyUI-MiniMaxH3_LatentUpscaler, no licence file). Node
MiniMaxH3LatentUpscaleCombined, categorylatent/minimax_h3. It exists because stockLatentUpscaleBy
andAddNoisebreak on H3's packedNestedTensorlatent, which carries video and audio together. Recorded
the full two-pass wiring (pass 1'sdenoised_output, not its plain output; a NEW guider built from the node's
returned conditioning; pass 2 with DisableNoise and the low sigmas) and the reason the conditioning must be
rebuilt:minimax_refscarry per-referencelatent_h/latent_w, and a grown canvas leaves them at the
wrong scale and RoPE row layout, which is the classic identity warp. The likely explanation for the poor
community results is in the defaults:audio_denoiseships at 1.0, a full audio re-noise, where the author
recommends 0.25 to 0.5, and the README's own advice is to run more of the schedule in pass 1 because audio
settles late. Marked inferred, not tested here. -
Community H3 performance reports from 2026-08, carried as anecdote and labelled as such: a 16 GB 4090
Laptop at 960x540 / 5 s / 20 steps in ~182 s on pruned INT8 + NVFP4, a 4080 run at 608x352 with ~9.5 GiB peak,
and repeated reports that 20 steps can drop to 15 with little visible loss. -
Wan 3.0 shipped, hours before this release, and the entry was rewritten the same day. It had been
documented as an unconfirmed rumour; Alibaba opened a public beta on 2026-08-06. The two facts that change a
ComfyUI job were verified here rather than taken from the announcement: there are no open weights (the
Wan-AIorg holds 24 repositories, none of them 3.x, and a hub-wide search forWan3.0returns nothing) and
there is no ComfyUI node, checked againstcomfy_api_nodes/nodes_wan.pyon master rather than a local
build, where the ten Wan API nodes are allWan2*or version-neutral and the only "3.0" strings are a float
invalidate_audio_duration. So the answer to "Wan 3.0 in ComfyUI" is that 2.2 is the newest you can wire.
The vendor's own launch numbers (30 s with native audio at 480p / 720p / 1080p, APIwan3.0-video
invitation-only in Beijing and Singapore, roughly $0.04 / $0.08 / $0.17 per second with the input reference
duration billed on top, so about $6.70 for a 10 s reference plus 30 s of 1080p) are recorded as REPORTED, not
verified: those pages are JavaScript apps and nothing here read them.
Two errors in the old entry are named rather than quietly overwritten: it cited aWan-Videoorg that hosts
zero models (the real one isWan-AI) and aWan-skillsrepository that does not exist. Still real and
still worth knowing: Wan Dancer with Apache-2.0 weightsWan-AI/Wan-Dancer-14Band the official
video_wan_dancertemplate, WanSong v1.0 as arXiv 2607.14749, and Wan Streamer as a live site. -
MiniMax H3 local open weights, the half the kit was missing. The MiniMax entry already covered the hosted
MinimaxHailuo03*API nodes; the open-weights release is a completely separate graph and it now has its own
block. Buildable from the two core nodes confirmed incomfy_extras/nodes_minimax_h3.py:
MiniMaxH3ImageToVideo(one node covering T2V, I2V and first/last frame, withfirst_frame/last_frame
simply left unconnected for text-to-video) andMiniMaxH3ReferenceToVideo(addsaudio_vaeplus the
ref_images/ref_videos/ref_video_audios/ref_audiosslots), each returningpositiveCONDITIONING
andLATENT. Full wiring documented:CLIPLoadertypeminimax, two VAEs (video fp16 + audio fp32),
res_multistep+simpleat 25 steps, dualVAEDecode/VAEDecodeAudiointoCreateVideoat 24 fps.
Includes the frame-count rule the templates encode and nobody writes down: the length must leave remainder 5
modulo 17 (124 frames for 5 s, 73 for 3 s), so a hand-set length can land off-grid. -
The official prompt format for H3, which is not the usual prose. From MiniMax's own
VIDEO_PROMPT_WRITING_GUIDE_{base,ref}_en.md: three named fields (integrated_multimodal_description,
overall_soundscape,non_diegetic_music), the fixed instruction line for image modes, speaker IDs(S1),
and dialogue wrapped in<d>[Language] verbatim words</d>with delivery outside the tag. That last detail
explains the widely reported "the speech comes out as gibberish": without<d>the model is never told the
exact words. Also<scenetrans>/<cutoff>for lines crossing a cut, quoted on-screen text, the fixed camera
vocabulary, and the<Subject N>/<Picture N>/<Video N>/<Audio N>reference labels for R2V. -
What is open and what is not: only H3-Base ships and it generates at 768p. The
H3-Context-IR
prompt/context refiner (which MiniMax calls critical to output quality) and theH3-Regenerate-2Kupscale pass
are hosted-only, so a local run is the base engine without the official prompt brain. Documented alongside the
exact file names and sizes read from theComfy-Org/MiniMax-H3tree (bf16 66.3 GB, int8-convrot 34.0 GB,
pruned int8-convrot and pruned fp8-scaled 21.0 GB each, per task family), the community VRAM ladder marked
as unverified field reports, and the reason it is slow (the open release ships full attention only; sparse
attention is promised later). -
A hard licence flag, quoted from the licence file. The MiniMax H3 Community License Agreement (2026-08-02)
limits all rights to an "Applicable Territory" that excludes the European Union, the United Kingdom, the
Republic of Korea and the United States of America, and section V.4 extends that to the outputs as well.
Over 20 million USD yearly revenue needs prior written authorisation, products must display "Powered by
MiniMax H3", and redistribution must carry the copyright notice. Open weights, not open source. -
The training and splat nodes now have NODE_LIBRARY entries and a task route. The previous batch shipped
them as prose inADVANCED.mdonly, so an agent asked to train a LoRA would have gone toTASKS.mdand found
nothing. Newdocs/NODE_LIBRARY/training.mdcarries all 20 training and dataset nodes with I/O read from
nodes_train.pyandnodes_dataset.py, the chain drawn end to end (LoadImageTextDataSetFromFolder->
MakeTrainingDataset->ResolutionBucket->TrainLoraNode->SaveLoRA+LossGraphNode), the
Save/LoadTrainingDatasetshortcut so iteration stops re-encoding, and the silent anti-pattern: encoding a
dataset with a VAE or CLIP the target model does not share.three-d.mdgains the four splat nodes it was
missing (File3DToSplat,TransformSplat,MergeSplat,GetSplatCount) with the ordering rule that
unaligned splats interpenetrate when merged.TASKS.mdgains routes for both jobs;SKILL.mdand_INDEX.md
point at the new category. Sockets are CURATED from source, notget_node_info-confirmed, and labelled so. -
A dedicated
kreaskill (shared/krea/, fourth shipped skill). It exists because the kit knew Krea 2's
LOCAL graph in depth and nothing else Krea makes. SKILL.md owns the fork that decides the job: the hosted API
(billed per image, capped at 1K, the only path that reads a krea.ai moodboard) against the open weights
(free, any resolution, no moodboard), plus the FLUX.1 Krea Dev graph, Krea Realtime 14B, and the Krea 2
custom-node packs.reference.mdowns full node I/O, the price matrix and measured weight sizes.MODELS.md
stays the source of truth for the local Raw / Turbo graph and now points at the skill for everything else. -
The Krea hosted API nodes, read from
comfy_api_nodes/nodes_krea.py.Krea2ImageNode(three tiers:
Medium for expressive illustration, Large for expressive photorealism, Medium Turbo for speed) and
Krea2StyleReferenceNode, which chains node to node up to a hard ceiling of 10 references and raises on
the eleventh. Wiring and widget order confirmed against the shippedapi_krea2_t2iand
api_krea2_style_referencetemplates. Price matrix from the node's own price-badge expression: 0.015 / 0.03 /
0.06 USD per image for Turbo / Medium / Large, rising with a style reference and again with a moodboard, and
a moodboard overrides rather than adds. Two traps recorded:resolutionoffers only1K, and style
strengthruns -2.0 to 2.0 where negative INVERTS the style rather than weakening it. -
FLUX.1 Krea Dev, buildable. The graph read out of the officialflux1_krea_devtemplate by expanding
its subgraph:UNETLoader(flux1-krea-dev_fp8_scaled.safetensors) +DualCLIPLoader(clip_l+
t5xxl_fp16, typeflux) ->CLIPTextEncode->KSamplerat 20 steps, cfg 1.0, euler / simple, with
ConditioningZeroOutas the negative,ae.safetensorson the VAE. The template carries noFluxGuidance
node at all, verified by string search rather than by eye. Weights measured at 11.90 GB (11.09 GiB), and the Comfy-Org
repack is ungated where the Black Forest Labs original is not. -
Krea Realtime 14B, and a negative claim this release had to walk back. Apache-2.0, distilled from Wan 2.1 14B
with Self-Forcing, 11 fps at 4 steps on a B200 by the vendor's own figure, KV Cache Recomputation and KV Cache
Attention Bias against error accumulation. The negative claim was checked the way this kit has learned to
check them: a content search across GitHub for the checkpoint filename, not a repository-name search. It
returns DiffSynth-Studio, LightX2V,daydreamlive/scopeand research forks, and no ComfyUI node. Measured
sizes decide the hardware question: the official single file is 28.58 GB (26.61 GiB) and does not fit a 24 GB card, the
community fp8 repack is 14.29 GB (13.31 GiB) and does. -
The Krea 2 ComfyUI ecosystem, filtered by adoption rather than by search rank. Three packs cover jobs the
kit had no answer for:lbouaraba/comfyui-krea2edit(over 400 stars) for identity-preserving instruction editing,
facok/comfyui-krea2-controlnet(162) for depth / canny / pose control through a Control LoRA, and
per-layer conditioning control, recorded as a genuine two-horse choice rather than a supersede: the fork
huwhitememes/comfyui-krea2-conditioning(126) RMS-renormalises Krea 2's twelve conditioning taps and argues
its upstream inflates their magnitude ~8.7x, but that upstreamnova452/Rebalance-Pack(formerlyComfyUI-ConditioningKrea2Rebalance)
carries 477 stars and is still maintained, so the fork is the minority technical case and is labelled as such.
Five more packs were found and are named
as not recommended at 0 to 2 stars, so nobody re-finds them and assumes the kit missed something. The
kreaorg on Hugging Face was listed exhaustively, which is how the nine official style LoRAs were confirmed
as already covered rather than assumed missing.
Fixed
-
Second audit pass, after checking the findings list against the repo instead of against memory: 14 of 18
were closed, four were not. Two of the four were real defects of the same class as the installer, and are
fixed here. -
Five shipped docs told the reader to run a script the shipped skill did not contain.
shared/tools/fetch_workflow.pyandcheck_updates.pyare named inSKILL.md,EXAMPLE_WORKFLOWS.mdand
UPDATING.md, and an installed skill had notools/directory at all. The build now shipsshared/tools/
astools/, andnode_inventory.py, which the node-library index tells you to regenerate with, moved there
too: it had been sitting in the gitignoredtools/dir, so it did not exist for anyone who cloned. Its
hardcoded private-pack exclusion list is now read fromCOMFY_PRIVATE_PACKS, so the shipped file carries
nobody's private pack names. -
Routes to the sibling skills hardcoded one agent's install path.
SKILL.md,TASKS.mdand twoMODELS/
files sent the reader to~/.claude/skills/<name>/. Those files ship verbatim to Codex
(~/.agents/skills/), Gemini and Qwen (~/.<agent>/extensions/comfyui), where that path does not exist.
The routes now name the skill and say it sits beside this one, which is true on all four. -
The gate learned the half it was missing. It checked that a backticked script path resolves in the REPO,
which says nothing about the artifact a user gets. It now also requires the file to be present in the shipped
skill AND tracked by git, because.gitignorecarries/tools/and a script there works for the author
while not existing for anyone else. Confirmed by control: a reference to an untracked script turns the build
red with that exact reason, and removing it turns it green again. -
The kit was verified end to end on a live ComfyUI, which is what the audit's own reviewers said nobody had
done. Server started with the launch command the kit records for this machine (30 s to/system_stats200,
matching the documented 30 to 60 s), then the kit's own procedure followed step by step:machine.mdgave the
template-library path, the quick index resolved 680 entries,MODELS.mdrouted toMODELS/image-open.mdand
the recipe read whole in one call, the graph was built to that recipe (1024x1024, 30 steps, CFG 7,
dpmpp_2m + karras, negatives, since SDXL requires them),validate_workflowpassed,enqueue_workflowran it
in 17.2 s,workflow_layout.pyreported zero overlaps, and the output was fetched and looked at rather than
assumed: 1024x1024, matching the recipe. Every layer of the kit was exercised by the path a user takes. -
COMFYUI_PATHgates more MCP tools than the docs said. The kit warned about it fordownload_modelonly.
On the live runlist_output_imagesfailed the same way, and it is the tool an agent reaches for first after
a render. SKILL.md now names the whole class and gives the configuration-free workaround: read filenames from
/history/<prompt_id>and bytes from/view, which is pure HTTP and needs no environment variable. Found by
running, not by reading. -
The documented installer shipped a skill that could not work.
agents/*/install.{ps1,sh}copied three
files (SKILL.md, MODELS.md, comfy_client.py) plus an emptyworkflows/dir. SKILL.md routes to 22 files, so
a fresh install left 21 of 22 routes dead: nodocs/, noNODE_LIBRARY/, noworkflow_layout.py(which
SKILL.md calls mandatory before saving any workflow), and none of the three sibling skills. Only the plugin
path shipped a working kit; anyone who cloned and ran the installer got a routing table pointing at nothing,
and GitHub traffic shows 543 unique cloners in the fourteen days before this was found. All eight installer
scripts now install the BUILT bundle (claude-code/skills/, whattools/build_plugin.pyproduces), so there
is one definition of what ships instead of a hand-listed subset that drifted since the scripts were written.
Verified by running the fixed copy logic into an empty directory and re-resolving every route: 1 alive before,
23 alive and 0 dead after. -
MODELS.mdhad outgrown a single readable file, and failed silently. 174 KB, 1415 lines, 68 entries, of
which 39 (57%) sat past the point where a read stops returning content. The kit's most-repeated rule, read
the model's entry BEFORE writing the prompt, therefore returned nothing for most models while looking like it
had succeeded: fail-open in reading, where truncation is indistinguishable from absence. Split by family into
MODELS/(10 files, largest 45 KB) withMODELS.mdkept as the index plus a model-to-file table. The
auto-pull rule now says explicitly that it is two reads. Entry count verified unchanged at 68, and no content
line was lost against the pre-split file. -
Updating the kit destroyed the bootstrap. The installer did
Copy-Item -ForceonSKILL.md, and the
machine block (paths, GPUs, launch command, local quirks) lived inside that same file. Agit pullplus
reinstall wiped it, which is why the author's own installed copy had drifted and lost a route rather than
being updated. Per-machine state now lives inmachine.md, created once and never overwritten. -
Step 1 of every task route pointed at a file nobody had located.
TASKS.mdopens each job by reading
templates/_quick_index.json, and no file the agent reads named where that path is.machine.mdnow carries
a Template library line for it andBOOTSTRAP.mdrequires filling it. -
The 94 subgraph blueprints were absent from the lookup that is supposed to find them.
gen_quick_index.pyindexedtemplates/only, sotext_to_image_z_image_turbo, the blueprintTASKS.md
names as its own example, could not be found by the methodTASKS.mdprescribes. The index now covers both:
verified on the real corpus at 680 entries, 586 templates plus 94 blueprints, with the named example
resolving to a file on disk. -
Six broken links shipped inside the bundle, correct in the repo and broken by the build that flattens the
tree.tools/build_plugin.pynow re-aims them after copying, and fails the build when a link, a
NODE_LIBRARY/_INDEX.mdentry, or a backticked script path does not resolve. The checks live inside
build_plugin.pydeliberately:.gitignorecarries/tools/, so a new checker file there would be committed
nowhere and would never run. -
radiance.mdwas missing fromNODE_LIBRARY/_INDEX.md, the file SKILL.md calls the entry point for any
node question. It is the reverse-engineered competitor teardown, so the one file no other kit has was the one
the index could not reach. Now listed, and the build gate fails if any category file is omitted again. -
Four docs sent the reader to
tools/gen_quick_index.py, which does not exist; the script is at
shared/tools/. Fixed, and the gate now catches this class. -
README contradicted itself and the repo. It claimed 75 recipes in two places and 68 in a third (the real
count is 68 entries across 63 named models), describedseedanceas "a second shipped skill" when four ship,
and stamped its coverage table 2026-06-25. All corrected. -
The installed layout was never explained. SKILL.md routes read
docs/X.md, while an installed skill lays
everything flat, so a reader following the path literally finds nothing. The routing list now states both
layouts up front. -
Corrected a wrong attribution before it shipped. An earlier draft said kijai had nothing for MiniMax H3.
He has no H3 weights, but he does ship the SageAttention patch above inside KJNodes. The search was done at
repository granularity and missed a node inside an existing pack. -
Council review caught four defects in the new entry, all fixed: the two-pass upscale recipe never named
SplitSigmas, so "high sigmas" and "low sigmas" had no source and the graph was not buildable; the
inferredmarker on theaudio_denoisediagnosis survived only in MODELS.md and was asserted flat in both
skill files; SKILL.md described three Autogrow reference families when the node has four, silently dropping
ref_video_audios; and the same claim carried two different dates. The routing also pointed at
~/.claude/skills/minimax-h3/, which did not exist until the skill was installed there.
Changed
-
tools/build_plugin.pynow discovers skills instead of listing them. It bundledseedancefrom a
hardcoded block, sominimax-h3would have been silently left out of the plugin. It now walksshared/and
bundles every directory containing aSKILL.md. -
Template count 583 -> 586 (the three local
video_minimax_h3_{t2v,i2v,r2v}templates, which landed
2026-08-02, after the last weekly cut). Synced across README, MODEL_INDEX, SKILL.md and all four re-rendered
banners; category counts recomputed from the manifest (Image 157, Video 152). The MODEL_INDEX MiniMax row now
reads API + local open weights instead of API only. Recipe and model counts are unchanged: this extends the
existing MiniMax family entry rather than adding a new one.