Skip to content

v3.0.0 - Kit audit and restructuring, plus the Krea and MiniMax H3 skills

Choose a tag to compare

@SlavaSexton SlavaSexton released this 06 Aug 21:42
· 15 commits to master since this release

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.md into a new machine.md. The installers do this for you: on the
    first 3.0.0 run they lift the ## Your machine section out of the old SKILL.md (or GEMINI.md / QWEN.md)
    and write it to machine.md BEFORE 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 and machine.md does not travel with it. Keep your copy outside the
    plugin folder. (Inferred from the cache layout, not observed through a real marketplace update.)
  • MODELS.md is now an index, not the reference. The 68 recipe entries live in MODELS/<family>.md.
    Anything that deep-linked to a MODELS.md anchor needs repointing; the index names the file for every model.
  • The installed skill gains MODELS/, tools/ and machine.md. Nothing is removed, so an old layout keeps
    working until you reinstall.

Added

  • A dedicated minimax-h3 skill (shared/minimax-h3/, third shipped skill after comfyui and seedance).
    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.md owns 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 needs city96/ComfyUI-GGUF and 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 (the ckpt500 pair 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 with MiniMaxRemover,
    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
    including LoadImageTextDataSetFromFolder, ResolutionBucket and MakeTrainingDataset. Separately,
    nodes_gaussian_splat.py adds 8 splat nodes with new IO.Splat / IO.File3DSplatAny types, including
    RenderSplat (EWA rasterizer with a frame count, so camera moves render as sequences) and SplatToMesh.
    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. Node SpectrumApplyMiniMaxH3, category sampling/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 between UNETLoader and 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 of tail_actual_steps, history_storage=vram costs ~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, category latent/minimax_h3. It exists because stock LatentUpscaleBy
    and AddNoise break on H3's packed NestedTensor latent, which carries video and audio together. Recorded
    the full two-pass wiring (pass 1's denoised_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_refs carry per-reference latent_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_denoise ships 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-AI org holds 24 repositories, none of them 3.x, and a hub-wide search for Wan3.0 returns nothing) and
    there is no ComfyUI node, checked against comfy_api_nodes/nodes_wan.py on master rather than a local
    build, where the ten Wan API nodes are all Wan2* or version-neutral and the only "3.0" strings are a float
    in validate_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, API wan3.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 a Wan-Video org that hosts
    zero models (the real one is Wan-AI) and a Wan-skills repository that does not exist. Still real and
    still worth knowing: Wan Dancer with Apache-2.0 weights Wan-AI/Wan-Dancer-14B and the official
    video_wan_dancer template, 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 in comfy_extras/nodes_minimax_h3.py:
    MiniMaxH3ImageToVideo (one node covering T2V, I2V and first/last frame, with first_frame / last_frame
    simply left unconnected for text-to-video) and MiniMaxH3ReferenceToVideo (adds audio_vae plus the
    ref_images / ref_videos / ref_video_audios / ref_audios slots), each returning positive CONDITIONING
    and LATENT. Full wiring documented: CLIPLoader type minimax, two VAEs (video fp16 + audio fp32),
    res_multistep + simple at 25 steps, dual VAEDecode / VAEDecodeAudio into CreateVideo at 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 the H3-Regenerate-2K upscale 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 the Comfy-Org/MiniMax-H3 tree (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 in ADVANCED.md only, so an agent asked to train a LoRA would have gone to TASKS.md and found
    nothing. New docs/NODE_LIBRARY/training.md carries all 20 training and dataset nodes with I/O read from
    nodes_train.py and nodes_dataset.py, the chain drawn end to end (LoadImageTextDataSetFromFolder ->
    MakeTrainingDataset -> ResolutionBucket -> TrainLoraNode -> SaveLoRA + LossGraphNode), the
    Save/LoadTrainingDataset shortcut 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.md gains the four splat nodes it was
    missing (File3DToSplat, TransformSplat, MergeSplat, GetSplatCount) with the ordering rule that
    unaligned splats interpenetrate when merged. TASKS.md gains routes for both jobs; SKILL.md and _INDEX.md
    point at the new category. Sockets are CURATED from source, not get_node_info-confirmed, and labelled so.

  • A dedicated krea skill (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.md owns 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 shipped api_krea2_t2i and
    api_krea2_style_reference templates. 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: resolution offers only 1K, and style
    strength runs -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 official flux1_krea_dev template by expanding
    its subgraph: UNETLoader (flux1-krea-dev_fp8_scaled.safetensors) + DualCLIPLoader (clip_l +
    t5xxl_fp16, type flux) -> CLIPTextEncode -> KSampler at 20 steps, cfg 1.0, euler / simple, with
    ConditioningZeroOut as the negative, ae.safetensors on the VAE. The template carries no FluxGuidance
    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/scope and 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 upstream nova452/Rebalance-Pack (formerly ComfyUI-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
    krea org 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.py and check_updates.py are named in SKILL.md, EXAMPLE_WORKFLOWS.md and
    UPDATING.md, and an installed skill had no tools/ directory at all. The build now ships shared/tools/
    as tools/, and node_inventory.py, which the node-library index tells you to regenerate with, moved there
    too: it had been sitting in the gitignored tools/ dir, so it did not exist for anyone who cloned. Its
    hardcoded private-pack exclusion list is now read from COMFY_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.md and two MODELS/
    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 .gitignore carries /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_stats 200,
    matching the documented 30 to 60 s), then the kit's own procedure followed step by step: machine.md gave the
    template-library path, the quick index resolved 680 entries, MODELS.md routed to MODELS/image-open.md and
    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_workflow passed, enqueue_workflow ran it
    in 17.2 s, workflow_layout.py reported 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_PATH gates more MCP tools than the docs said. The kit warned about it for download_model only.
    On the live run list_output_images failed 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 empty workflows/ dir. SKILL.md routes to 22 files, so
    a fresh install left 21 of 22 routes dead: no docs/, no NODE_LIBRARY/, no workflow_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/, what tools/build_plugin.py produces), 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.md had 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) with MODELS.md kept 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 -Force on SKILL.md, and the
    machine block (paths, GPUs, launch command, local quirks) lived inside that same file. A git pull plus
    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 in machine.md, created once and never overwritten.

  • Step 1 of every task route pointed at a file nobody had located. TASKS.md opens each job by reading
    templates/_quick_index.json, and no file the agent reads named where that path is. machine.md now carries
    a Template library line for it and BOOTSTRAP.md requires filling it.

  • The 94 subgraph blueprints were absent from the lookup that is supposed to find them.
    gen_quick_index.py indexed templates/ only, so text_to_image_z_image_turbo, the blueprint TASKS.md
    names as its own example, could not be found by the method TASKS.md prescribes. 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.py now re-aims them after copying, and fails the build when a link, a
    NODE_LIBRARY/_INDEX.md entry, or a backticked script path does not resolve. The checks live inside
    build_plugin.py deliberately: .gitignore carries /tools/, so a new checker file there would be committed
    nowhere and would never run.

  • radiance.md was missing from NODE_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), described seedance as "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
    inferred marker on the audio_denoise diagnosis 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.py now discovers skills instead of listing them. It bundled seedance from a
    hardcoded block, so minimax-h3 would have been silently left out of the plugin. It now walks shared/ and
    bundles every directory containing a SKILL.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.