Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Video outpainting on RunComfy via the `runcomfy` CLI — extend the spatial canvas of a video, change aspect ratio (9:16 vertical to 16:9 horizontal or vice versa), add environment beyond the original frame while preserving the central action. Routes prompt-shaped spatial extension through Wan 2-7 edit-video and points the agent at dedicated ComfyUI outpaint workflows when seam quality matters for hero delivery. Triggers on "video outpaint", "video outpainting", "extend video canvas", "expand vide
.claude/skills/aiskillstore-video-outpainting/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 163% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 198% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 157% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 134% | 0% |
Extend a video's spatial canvas — uncrop vertically or horizontally, change aspect ratio while preserving the central action. This skill routes spatial extension through Wan 2-7 edit-video for prompt-shaped canvas changes, and points the agent at dedicated ComfyUI outpaint workflows when hero-grade seam quality matters.
runcomfy.com · Wan 2-7 edit-video · CLI docs
bash# 1. Install (see runcomfy-cli skill for details) npm i -g @runcomfy/cli # or: npx -y @runcomfy/cli --version # 2. Sign in runcomfy login # or in CI: export RUNCOMFY_TOKEN=<token> # 3. Spatially extend a video (closest CLI-reachable approach) runcomfy run wan-ai/wan-2-7/edit-video \ --input '{"video_url": "...", "prompt": "...extend canvas..."}' \ --output-dir ./out
CLI deep dive: runcomfy-cli skill.
Wan 2-7 Edit-Video — wan-ai/wan-2-7/edit-video (default) > Prompt-driven video edit; accepts spatial extension language ("extend the canvas to 16:9 by adding matching environment on the left and right"). Wide enough quality for social and most internal uses. > Pick for: aspect-ratio swap (vertical ↔ horizontal), social-cuts, uncrop where seam quality is acceptable. > Avoid for: hero ad delivery with strict seam-quality requirements — use a ComfyUI outpainting workflow.
For broader video edit see video-edit.
Model: wan-ai/wan-2-7/edit-video Catalog: Wan 2-7 edit-video
Aspect-ratio swap (9:16 vertical → 16:9 horizontal):
bashruncomfy run wan-ai/wan-2-7/edit-video \ --input '{ "video_url": "https://your-cdn.example/vertical-clip.mp4", "prompt": "Extend the canvas to 16:9 horizontal by adding matching environment on the left and right sides. Continue the existing background style, lighting, and camera distance throughout the clip. Preserve the original action and subject framing in the center." }' \ --output-dir ./out
"Extend the canvas to 16:9", "Extend downward to show more ground", "Add environment on the left and right by ~30% each"."Preserve the original action and subject framing in the center" — without this Wan may restyle the central content.The endpoint above handles aspect-ratio swap well for most uses. For spatial frame expansion with strict temporal consistency, seam handling, and motion-aware fill, RunComfy hosts dedicated ComfyUI workflows:
| Workflow | What | |---|---| | LTX 2-3 outpainting in ComfyUI — spatial frame expansion | Dedicated video outpainting workflow using LTX 2-3 | | Browse comfyui-workflows for "outpaint" | Additional video outpainting graphs from the community |
These are GUI workflows, not CLI endpoints. The CLI can't reach them — open them in the RunComfy ComfyUI cloud.
image-outpainting.video-extend.video-inpainting.wan-models collection| code | meaning | |---|---| | 0 | success | | 64 | bad CLI args | | 65 | bad input JSON / schema mismatch | | 69 | upstream 5xx | | 75 | retryable: timeout / 429 | | 77 | not signed in or token rejected |
Full reference: docs.runcomfy.com/cli/troubleshooting.
The skill picks Wan 2-7 Edit-Video for prompt-shaped canvas extension and invokes runcomfy run with the outpaint-shaped JSON body. The CLI POSTs to the Model API, polls request status, and downloads the result into --output-dir.
npm i -g @runcomfy/cli or npx -y @runcomfy/cli. Agents must not pipe an arbitrary remote install script into a shell on the user's behalf.runcomfy login writes the API token to ~/.config/runcomfy/token.json with mode 0600. Set RUNCOMFY_TOKEN env var in CI / containers.--input. The CLI does not shell-expand prompt content. No shell-injection surface.model-api.runcomfy.net and *.runcomfy.net / *.runcomfy.com. No telemetry.Bash(runcomfy *) only.runcomfy-cli — the underlying CLIvideo-edit — full video-edit routervideo-extend — extending temporally (more frames)video-inpainting — mask-driven internal region editsimage-outpainting — outpainting still images| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 5,830 | 3,657 | -37% | 1 | 1 | 0% | 1,189 | 3,125 | +163% | 0 | 0 | — |
case-02 | fail→pass | 17,387 | 5,191 | -70% | 1 | 1 | 0% | 2,880 | 3,408 | +18% | 0 | 0 | — |
case-03 | fail→pass | 6,103 | 3,334 | -45% | 1 | 1 | 0% | 1,040 | 3,101 | +198% | 0 | 0 | — |
case-04 | pass→pass | 11,038 | 4,465 | -60% | 1 | 1 | 0% | 1,967 | 3,189 | +62% | 0 | 0 | — |
case-05 | pass→pass | 10,908 | 4,024 | -63% | 1 | 1 | 0% | 1,845 | 3,009 | +63% | 0 | 0 | — |
case-06 | pass→pass | 10,226 | 3,540 | -65% | 1 | 1 | 0% | 1,688 | 2,974 | +76% | 0 | 0 | — |
case-11 | fail→pass | 17,601 | 2,868 | -84% | 1 | 1 | 0% | 1,107 | 2,840 | +157% | 0 | 0 | — |
case-07 | fail→pass | 6,942 | 1,922 | -72% | 1 | 1 | 0% | 1,122 | 2,621 | +134% | 0 | 0 | — |
case-08 | fail→pass | 14,009 | 4,334 | -69% | 1 | 1 | 0% | 2,442 | 3,276 | +34% | 0 | 0 | — |
case-09 | fail→pass | 10,071 | 1,442 | -86% | 1 | 1 | 0% | 1,814 | 2,614 | +44% | 0 | 0 | — |
case-10 | pass→pass | 12,394 | 3,220 | -74% | 1 | 1 | 0% | 2,136 | 2,896 | +36% | 0 | 0 | — |
case-12 | pass→pass | 9,307 | 2,430 | -74% | 1 | 1 | 0% | 1,595 | 2,730 | +71% | 0 | 0 | — |
case-13 | pass→pass | 8,859 | 2,793 | -68% | 1 | 1 | 0% | 1,487 | 2,892 | +94% | 0 | 0 | — |
case-14 | pass→pass | 14,288 | 7,373 | -48% | 1 | 1 | 0% | 2,420 | 3,582 | +48% | 0 | 0 | — |
case-15 | pass→pass | 12,273 | 7,402 | -40% | 1 | 1 | 0% | 2,086 | 3,677 | +76% | 0 | 0 | — |
case-16 | fail→pass | 10,237 | 1,999 | -80% | 1 | 1 | 0% | 1,810 | 2,680 | +48% | 0 | 0 | — |
case-17 | fail→pass | 12,375 | 1,223 | -90% | 1 | 1 | 0% | 2,057 | 2,556 | +24% | 0 | 0 | — |
case-18 | fail→pass | 10,816 | 2,142 | -80% | 1 | 1 | 0% | 1,720 | 2,690 | +56% | 0 | 0 | — |
case-19 | pass→pass | 5,759 | 3,825 | -34% | 1 | 1 | 0% | 1,080 | 3,070 | +184% | 0 | 0 | — |
case-20 | pass→pass | 4,037 | 1,493 | -63% | 1 | 1 | 0% | 765 | 2,541 | +232% | 0 | 0 | — |
case-21 | fail→pass | 9,506 | 3,602 | -62% | 1 | 1 | 0% | 1,643 | 2,971 | +81% | 0 | 0 | — |
case-22 | fail→pass | 15,887 | 2,016 | -87% | 1 | 1 | 0% | 2,547 | 2,730 | +7% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.