Mission
Act as the routing and synthesis layer for the video skills. Turn an outcome- level request into a bounded plan with explicit source assets, shot or edit dependencies, model candidates, cost signals, QA gates, and approval points. Use the smallest specialist workflow that can satisfy the request. Do not hide a multi-step production pipeline inside one vague generation call.
Use this skill for broad requests such as:
- “Turn this launch brief into a 30-second product video.”
- “Make a consistent series of social clips from this concept.”
- “Choose the right model and workflow for these references.”
- “Take this long video and give me publishable short-form options.”
For a narrow request, load the relevant specialist directly.
Establish scope
Read .video/project.md, compatible prior receipts, and selected asset
manifests when they exist. Keep current facts separate from old drafts. Then
normalize the request into:
- objective, audience, channel, language, and intended viewer action;
- duration, aspect ratio, resolution, frame rate, delivery format, and audio;
- script, beat sheet, shot list, source video, images, audio, or reference URLs;
- immutable facts such as product geometry, wording, identity, or chronology;
- creative degrees of freedom, desired variants, budget, and iteration limit;
- rights, consent, claims, accessibility, and approval owner; and
- acceptance checks and what counts as a finished deliverable.
Ask only for decisions that change the plan. Label unknown platform rules, model fields, prices, rights, and source provenance as unknown rather than silently inventing them.
Route the request
| User intent | Primary skill | Main capability |
|---|---|---|
| Broad, multi-step, or ambiguous video request | video-generation after this plan | depends on graph |
| Project context, asset inventory, or repeatable series setup | video-project-setup | none |
| New clip from a prompt or starting image | video-generation | media.generate_video |
| Script or beat sheet that needs ordered shots | storyboard-to-video | media.generate_video |
| Scripted short drama from an idea or approved script | micro-drama-video | media.generate_image / media.generate_video |
| Existing footage that needs transformation or continuation | video-editing | media.edit_video / media.extend_video |
| Approved clips need a final ordered cut | video-assembly | media.combine_video |
| Captions or subtitles are the primary deliverable | video-captioning | media.caption_video |
| Same authorized person, character, product, or world across shots | character-continuity | media.generate_video |
| Product-led commercial or launch asset | product-video-ads | media.generate_video |
| Brand-aware social video from a brief and brand files | social-video | media.generate_video |
| Cinematography and technical shot direction | cinematic-direction | media.generate_video |
| Music-led visuals or a song visualization | music-video | media.generate_music / media.generate_video |
| Topic-to-narrated video without an on-screen presenter | faceless-video | media.generate_video |
| Supplemental coverage for a script or existing edit | b-roll-generation | media.generate_video |
| Logo reveal, 3D mark treatment, or brand motion | logo-animation | media.generate_video |
| Short artistic effect or VFX transformation | video-effects | media.edit_video |
| Meme concept or short humorous video | meme-video | media.generate_video |
| Authorized adult romantic scene | consented-romantic-video | media.generate_video |
| Presenter, avatar, or UGC-style talking video | avatar-ugc | media.lipsync / media.generate_video |
| Highlights and platform-ready clips from long video | short-form-repurposing | media.clip_video |
| Driving video, first/last frames, or controlled movement | motion-control | media.generate_video |
| Upscale a selected parent for delivery | video-enhancement | media.upscale_video |
| Direct model or endpoint comparison before a render | video-model-selection | media.search_models |
| Regenerate an underperforming ad using supplied performance data | ad-creative-remake | generation/editing |
Route to an adjacent image or voice agent when the video plan needs a still reference or narration and those capabilities are available. A video job must not be blocked by a decorative still if the user supplied an adequate source.
Build a plan graph
Represent each paid or state-changing operation as a node with an owner, inputs, output contract, approval gate, and failure path. A typical graph is:
brief + project context
|
+--> source/identity/product inventory
| |
| +--> reference frame or audio preparation
| |
+--> script --> beat/shot plan --> generation/edit branches
|
+--> selected parent
|
+--> crop/caption/enhance
Lock a parent before making dependent clips. Parallelize only independent variants when the host supports it. Keep the requested order for scenes, first/last frames, reference lists, captions, and final concatenation.
Choose models and tools
- Query
media.search_modelswhen available, or inspect the current model guide and then verify the selected model's live schema. - Resolve every logical capability to the exact MCP tool or REST endpoint in the MuAPI video reference. Hosted and stdio transports do not expose identical tools.
- Compare quality, duration, aspect ratio, reference count, audio behavior, motion controls, safety constraints, latency, and cost—not just model name.
- Estimate cost for a batch when possible and state the number of variants, expected retries, and whether local upload or downstream editing adds work.
- Never assume a field from a different model family. If a selected schema does not support a requested control, offer a compatible model or revise the brief explicitly.
Execute and report
For an approved plan:
- Upload local assets and record each returned URL, role, order, and rights state. Never expose secrets in prompts or receipts.
- Submit independent jobs, retain prediction IDs, and poll with
media.check_resultor use a secure webhook. A submitted job is not a finished video. - Review outputs using video QA, including temporal stability, continuity, audio sync, captions, text, framing, product/likeness fidelity, rights, and export checks.
- Return every result in requested order with status, model, parent asset, output URL, job ID, cost signal, assumptions, and failed branches.
- Save a plan, asset manifest, receipt, or QA note only when the user or project convention permits it. Follow reports and receipts.
Approval boundaries
Generation and editing are draft-only outputs. Confirm before incurring a material batch cost when the user has supplied a budget or approval boundary. Never publish, launch an ad, contact a creator, or alter an external platform from this skill. Hand off approved outputs to the relevant publishing or ads agent.
Missing data and failure behavior
- If the brief lacks duration, ratio, source, language, or output definition, ask only when the omission changes the selected schema or deliverable.
- If rights, consent, claims, or identity authorization is unknown, stop the affected branch and report the missing approval.
- If a job fails, preserve its ID and error, return successful independent results, and propose at most one explicit retry or a schema-compatible alternative.
- Never silently drop a shot, replace a reference, substitute a model, or claim that a webhook or output exists when it was not observed.
Output contract
Return:
- normalized brief and unresolved decisions;
- routed skills and dependency graph;
- model/tool candidates, schema constraints, call count, and cost signal;
- asset roles and rights/consent state;
- QA and approval gates;
- results or a ready-to-run plan with explicit failures; and
- links to permitted local receipts and the next decision.