Skip to content

dw plugin: MiniMax H3 and LTX-2.5 composition skills (Part 4, package B) - #55

Merged
dkackman merged 16 commits into
masterfrom
dw-plugin
Sep 8, 2026
Merged

dw plugin: MiniMax H3 and LTX-2.5 composition skills (Part 4, package B)#55
dkackman merged 16 commits into
masterfrom
dw-plugin

Conversation

@dkackman

@dkackman dkackman commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Part 4 of docs/proposals/agent-catalog-legibility.md, package B: model-specific knowledge packaged as a Claude Code plugin in this repo, one composition skill per model family. Spec: docs/superpowers/specs/2026-09-07-dw-plugin-skills-design.md. Everything is data (a marketplace manifest, a plugin manifest, two SKILL.md files, tests); the one engine change is the download_output message below.

The plugin

  • .claude-plugin/marketplace.json at the root and plugins/dw/ beneath it, so the install is two commands the README shows: /plugin marketplace add dkackman/diffusers-workflow, /plugin install dw@diffusers-workflow. The plugin version is the engine's; scripts/release.sh bumps it and a test holds them equal.
  • plugins/dw/skills/minimax-h3/SKILL.md: the shape decision over the family's templates (shot, sequence, audio), the rules that bite (17n+5 frames at 24 fps, the canvas limits, the LoRA/step coupling, Ref2VA input limits, no negative prompt), the cost quote with a fallback for templates that carry none, and the run-and-judge loop. Prompt format is not transcribed: the skill points at MiniMax's h3-prompt-writing skill and its two guides.
  • plugins/dw/skills/ltx-2.5/SKILL.md: same outline for LTX-2.5 (the three-move distilled flow, 32-multiple sizes, 8k+1 frames, the latent handoff, the DFR fps note), with the trained caption spec quoted from LTX2_5_T2V_DEFAULT_SYSTEM_PROMPT and held equal to the diffusers constant by test.
  • tests/test_plugin_skills.py pins every number a skill states to the diffusers module that enforces it, resolves every catalog name a skill mentions, and caps each skill at 12 KB.

The cold drill

Recorded in the proposal under "Plugin drill, 2026-09-08": a fresh session with the plugin, and one without, both given "a short multi-shot video with cuts between the shots" against lem. The skill fired on the bare prompt, chose templates/minimax/storyboard, wrote a Ref2VA Context-IR prompt, quoted cost and asked before an 11.6-minute run, and inspected the result. The control found the same template but ran unasked with no cost statement and then failed trying to download the file to the wrong machine. Both wrote the vendor's prompt format, because the storyboard template's default prompt is itself a Context-IR example.

Two things the drill caught, fixed here: the H3 skill said the reference-conditioned templates run 20 steps without a LoRA, but four of them keep the turbo LoRA at nine (now named and pinned); and storyboard.json had no cost (now the control run's 10.1 warm minutes). One engine fix from the same drill: download_output over dw.serve --mcp failed with an unwrapped PermissionError on a client-side path, surfaced as an anonymous tool error; an OSError now becomes a DwApiError that says the write happens on the server and names the client-side ways to see the file.

After the drill: the 30-second follow-up and Music 3

A 30-second request in the same session showed that the H3 skill never said what does not carry between generations. It now states that nothing does except a reference (no latent memory, no extension mode), gives the chain-or-cut rule, and says how a cuts piece gets one score and one voice; the README's cuts section says the same. Seven bundled prompts wrote a silent music field as None. where the guides' literal is N/A; fixed and held by test.

MiniMax Music 3 then went through the onboarding lifecycle: a vendor audit (docs/proposals/audits/2026-09-08-minimax-music3-audit.md) confirmed the ceiling rule and the 44.1 kHz output against three primary sources and found four small errors, all fixed (a stale trim-task path in music.json, music-video's 21-second ceiling over 20.7 seconds of slices, an invented "guillotine" mechanism in the README, and a text_encoder component in the quantization docs that Music 3 does not have). plugins/dw/skills/minimax-music3/SKILL.md covers a song, an instrumental, a score under a cut and the music video, with the caps, window, guider and output rate pinned to the diffusers modular pipeline, and defers captions to MiniMax's music-caption-rewriter skill, which the repo had never mentioned. Its cold drill is still to run.

Scoring that cut from the failed run's files turned up one more engine gap, fixed here: the audio tasks refused a video file's path (File extension not allowed: .mp4) though a finished cut's soundtrack is exactly what a scoring pass mixes under, and pair_audio could not take a path at all. load_audio now takes a video's muxed track, so every audio task accepts it, and pair_audio loads a path; a survey of the rest of the audio and video tasks found the frame-consuming ones already fine. A documentation review against the whole range (seventeen findings, all applied) rides along.

Full suite: 3225 passed.

🤖 Generated with Claude Code

dkackman and others added 16 commits September 7, 2026 21:06
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… spec

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The generative-upscale and extend-clip bullets read as if the templates took a
user's clip; neither has a video input - each generates its own first pass.
Say what to do on a non-CUDA server, and separate the 24 fps the templates
generate at from the 60 fps ceiling on a conditioning frame rate.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The plugin and control sessions are recorded in the proposal. The drill caught
the H3 skill saying the reference-conditioned templates run 20 steps without a
LoRA when four of them keep the turbo LoRA at nine; the sentence names them and
the test pins both groups. storyboard.json carries the control run's cost.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A cold agent over dw.serve --mcp handed the tool a path on its own machine;
the server's PermissionError surfaced as an anonymous tool error and the retry
without a destination left a copy in the server's cwd. An OSError now becomes
a DwApiError that names the server as the writer and the client-side ways to
see the file.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…cuts piece

From the 30-second follow-up to the drill: the skill now states that nothing
carries between generations except a reference, gives the chain-or-cut
decision rule, and says how a cuts piece gets one score and one voice; the
README's cuts section says the same. Seven bundled prompts wrote a silent
music field as None. where the guides' literal is N/A; a test holds the literal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Audit saved under docs/proposals/audits. Four corrections it found: music.json
named a trim task that does not exist, music-video's 21-second ceiling barely
covered 20.7 seconds of slices, the README asserted a guillotine mechanism no
source describes (the model stops early), and the quantization docs showed a
text_encoder component Music3 does not have. The skill pins the caps, window,
guider, frame rate and 44.1 kHz output to the diffusers modular pipeline and
defers the caption format to MiniMax's music-caption-rewriter skill.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
From a documentation review against 721a4bc^..dw-plugin: music-video's four
shot prompts still wrote the silent music field as None (now N/A); RELEASING
said the release commit touched one file when release.sh commits two; a
broken link to docs/proposals/workspaces.md; the marketplace description
named two families; the legibility proposal called Part 4 open in three
places its own ledger closes; the minimax README coupled every example to the
turbo LoRA; WORKFLOW_GUIDE named a deleted file; CLAUDE.md and MCP.md now
mention the plugin, MCP.md the download_output error, RECIPES_24GB Music 3,
and the minimax README the Ref2VA input limits.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Scoring the six-shot lighthouse cut failed with "File extension not allowed:
.mp4" because load_audio only read audio files, though the cut an earlier run
wrote is exactly what a scoring pass mixes under; pair_audio could not take a
path for its track at all. load_audio now takes a video's muxed track (a
silent video is an error, not silence), which reaches every audio task through
_waveform_and_rate, and pair_audio loads a path. The frame-consuming tasks were
already fine: the engine loads any argument named video from a path, and the
concat, dissolve and stabilize tasks load paths with their audio themselves.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@dkackman
dkackman merged commit 4ace771 into master Sep 8, 2026
9 checks passed
@dkackman
dkackman deleted the dw-plugin branch September 8, 2026 06:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant