{"id":17116,"plugin_id":"plugins_6a6f9d4936ec81918b0a3b4997d36bd3","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:13:57.292Z","digest":"0e2b2686e8eea227d05c5b301e49427910deee21fece458205cd580508b17381","against":null,"payload":{"description":"Route one bounded text-to-video or image-guided video request to a current non-OpenAI OpenRouter media model, preview and authorize cost, manage the asynchronous job, validate the MP4, and quarantine it outside the repository while Codex remains in control. Use for video prompts, landing-page loops, image-to-video, reference-guided clips, or an explicit request for Empire video generation.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":193}],"name":"empire-video","skill_md_contents":"---\nname: empire-video\ndescription: Route one bounded text-to-video or image-guided video request to a current non-OpenAI OpenRouter media model, preview and authorize cost, manage the asynchronous job, validate the MP4, and quarantine it outside the repository while Codex remains in control. Use for video prompts, landing-page loops, image-to-video, reference-guided clips, or an explicit request for Empire video generation.\n---\n\n# Empire Video\n\nGenerate one video through Empire's shared asynchronous media runtime. Never let\nan external renderer write to or execute inside the repository.\n\n## Workflow\n\n1. Resolve the plugin root two directories above this `SKILL.md`, then resolve\n   the shared runtime as `$PLUGIN_ROOT/scripts/empire_media.py`. Never resolve\n   it relative to the user's current working directory.\n2. Preview a short route. Use four seconds when the user gives no duration:\n\n   ```bash\n   python3 \"$PLUGIN_ROOT/scripts/empire_media.py\" video route \"PROMPT\" \\\n     --repo \"$PWD\" --duration 4 --resolution 720p \\\n     --aspect-ratio 16:9 --no-audio\n   ```\n\n   Add only user-requested `--model`, `--duration`, `--resolution`, `--size`,\n   `--aspect-ratio`, `--audio`, `--seed`, or `--reference` options. Never\n   silently replace a pinned model.\n   When the user requests free or Absolute Zero generation, add\n   `--cost-mode free` to preview and submission. Stop if no proven zero-cost\n   route exists.\n\n   When the user asks for the longest or maximum free duration, list the live\n   video catalog first. Collect the published `supported_durations` from\n   eligible non-OpenAI models, then preview those durations from longest to\n   shortest with `--cost-mode free`. Select the first proven `$0.00` route.\n   Do not infer a duration, cross the free lane, or dispatch while searching.\n\n3. Show model and icon, supported output settings, estimate, catalog state, and\n   expected asynchronous behavior. Ask for confirmation of the exact route and\n   maximum cost unless already explicit in the current request.\n4. Submit only after approval:\n\n   ```bash\n   python3 \"$PLUGIN_ROOT/scripts/empire_media.py\" video generate \"PROMPT\" \\\n     --repo \"$PWD\" --duration 4 --resolution 720p \\\n     --aspect-ratio 16:9 --no-audio \\\n     --approve-route ROUTE_TOKEN --approve-cost USD\n   ```\n\n5. Poll or resume using the returned safe job ID:\n\n   ```bash\n   python3 \"$PLUGIN_ROOT/scripts/empire_media.py\" video status --job JOB_ID\n   python3 \"$PLUGIN_ROOT/scripts/empire_media.py\" video wait \\\n     --job JOB_ID --timeout 45\n   ```\n\n   A bounded wait may return `timed_out` with `resumable: true`. Report that\n   state and run a later `status` or another bounded wait; never hide a long\n   blocking poll inside one Codex turn.\n\n6. Present the quarantined MP4 or a clickable local-file fallback with model\n   chip, job ID, SHA-256, byte size, actual or pending cost, and provenance.\n   Promotion into the repository is a separate explicit Codex action.\n\n## Rules\n\n- OpenAI media models are excluded from both automatic and pinned Empire\n  routes. Use a native OpenAI video workflow for an explicit OpenAI request.\n- OpenRouter video generation is incompatible with enforced ZDR. Report that\n  conflict instead of weakening the user's privacy setting.\n- Never persist the prompt, reference bytes, signed URLs, or credentials in the\n  job record.\n- Never download from an arbitrary provider-returned URL. Use the authenticated\n  OpenRouter content endpoint for the validated local job ID.\n- Timeout means `resumable`, not canceled. Never submit an automatic retry.\n- A failed job without provider cost evidence remains `provider_cost_unknown`.\n- Treat `--audio` and `--no-audio` as hard requirements. If a model does not\n  publish audio-control capability, exclude it instead of claiming the option\n  will be honored.\n- Interpret natural-language requests such as “use Empire to generate a video”\n  as this workflow when the skill is enabled. Preserve every stated modality,\n  duration, aspect-ratio, audio, model, and cost constraint.\n- Never autoplay or execute downloaded content.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}