CtrlK
BlogDocsLog inGet started
Tessl Logo

od-media-generation

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.

57

Quality

66%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./plugins/_official/scenarios/od-media-generation/SKILL.md
SKILL.md
Quality
Evals
Security

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-image
  • metadata.kind === 'video'media-video
  • metadata.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 rendered useCase.query after input substitution.
  • aspect — one of 1:1 / 16:9 / 9:16 / 4:3 / 3:4. Default 16:9. The contracts MediaAspect union 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:

  1. Save the binary into <cwd>/media/<timestamp>.<ext>.
  2. Call live-artifact to 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.

Repository
nexu-io/open-design
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.