Od media generation
Skill nexu-io/open-design/plugins/_official/scenarios/od-media-generation
π¨ The open-source Claude Design alternative. π₯οΈ Local-first desktop app. πΌοΈ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video β real files, HTML/PDF/PPTX/MP4 export. π€ Claude Code / Codex / Cursor / Gemini / OpenCode / Qwen & 20+ CLIs via BYOK.
npx -y skills add nexu-io/open-design --skill od-media-generationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Default reference pipeline for image, video, and audio projects β routes through media-image / media-video / media-audio atoms based on the project kind, wraps the output in a live artifact, and devloops on critique-theater until the score converges.
SKILL.md
2.8 KB, as published. Nobody here has run it
od-media-generation (scenario)
This scenario plugin is the bundled default for projects whose
metadata.kind is image, video, or audio. The web client and the
daemon both look up defaultScenarioPluginIdForKind(kind) from
@open-design/contracts and, when no other plugin is applied, bind
this scenario at project / run creation time.
Default pipeline
{
"stages": [
{ "id": "discovery", "atoms": ["discovery-question-form"] },
{ "id": "plan", "atoms": ["todo-write"] },
{ "id": "generate", "atoms": ["media-image", "media-video", "media-audio", "live-artifact"] },
{
"id": "critique", "atoms": ["critique-theater"],
"repeat": true,
"until": "critique.score>=4 || iterations>=3"
}
]
}
The generate stage lists all three media atoms even though a single
run only calls one of them. Picking the right atom is the agent's job:
metadata.kind === 'image'βmedia-imagemetadata.kind === 'video'βmedia-videometadata.kind === 'audio'βmedia-audio
If the user picks this plugin manually without a media-typed project,
prefer media-image and explain the assumption in the first reply.
Atom call shape
Every media atom takes the same kernel of inputs and returns a media
artifact reference that live-artifact can wrap:
promptβ the rendereduseCase.queryafter input substitution.aspectβ one of1:1/16:9/9:16/4:3/3:4. Default16:9. The contractsMediaAspectunion enumerates the legal values.providerβ left blank by default so the daemon picks the user's configured provider for this media kind (see Settings β Media). Only set this when the user names a provider explicitly.
After the media atom returns:
- Save the binary into
<cwd>/media/<timestamp>.<ext>. - Call
live-artifactto register a preview surface pointing at the saved file. The preview is what the user sees in the right pane.
Critique loop
critique-theater reads the artifact, scores it across the standard
five dimensions, and emits a critique.score signal. The until
clause stops the loop at score β₯ 4 or three iterations, whichever
comes first. Use the critique notes to drive the next media call's
prompt, not to re-pick the media atom.
Replace, do not extend
Enterprise editions that need a different default for media work
should ship a sibling scenario plugin and add the right mapping in
@open-design/contracts/scenario-defaults, not patch this manifest.