This skill doesn't lock you to one model — it picks the right video-edit model in the RunComfy catalog based on what the user actually wants: general restyle, motion transfer from a reference clip, or lightweight identity-stable outfit / background swap.
npx skills
add
agentspace-so/runcomfy-skills
--skill
video-edit
-g
Pick the right model for the user's intent
User intent
Model
Why
Restyle a talking-head video — preserve face / pose / lip movement
Wan 2.7 Edit-Video
Strong identity + motion preservation; supports up to 1080p
Swap product background, keep camera motion
Wan 2.7 Edit-Video
Camera motion preserved; one-direction edit honored
Replace packaging design using a reference image
Wan 2.7 Edit-Video
+
reference_image
Reference-conditioned design transfer
Apply cinematic color grade / commercial polish
Wan 2.7 Edit-Video
Good at single-direction global look changes
Transfer precise motion
from a reference video to a target character
Kling 2.6 Pro Motion Control
Designed for motion mapping with identity hold
Lip-sync motion of a target character to source video's lip movement
Kling 2.6 Pro Motion Control
Built for tight temporal coherence
Lightweight outfit / costume swap
with identity preservation
Lucy Edit Restyle
Core strength is localized identity-stable edits
Identity-stable restyle
("astronaut in desert", "warm golden-hour lighting")
Lucy Edit Restyle
Specializes in temporal consistency for restyle
Default if unspecified
Wan 2.7 Edit-Video
Most versatile, highest resolution
The agent reads this table, classifies the user's intent, and picks the matching subsection below.
Prerequisites
RunComfy CLI
—
npm i -g @runcomfy/cli
RunComfy account
—
runcomfy login
.
CI / containers
— set
RUNCOMFY_TOKEN=
.
A source video URL
— formats and limits depend on the chosen route.
Route 1: Wan 2.7 Edit-Video — default for restyle / background / packaging
Model
:
wan-ai/wan-2-7/edit-video
Schema
Field
Type
Required
Default
Notes
prompt
string
yes
—
Lead with preservation. One edit direction per call.
video
string
yes
—
MP4/MOV URL, 2–10s, ≤100MB.
reference_image
string
no
—
URL — use for direct design / appearance transfer only.
resolution
enum
no
(input)
720p
or
1080p
.
aspect_ratio
enum
no
(input)
W:H. Defaults to input.
duration
int
no
0
0
= match input;
2–10
= truncate from start.
audio_setting
enum
no
auto
auto
or
origin
(preserve source audio).
seed
int
no
—
Reproducibility.
Invoke
Background swap, identity preserved, audio kept:
runcomfy run wan-ai/wan-2-7/edit-video
\
--input
'{
"prompt": "Preserve the speaker'
\
'
's face, pose, and lip movement; change the background to a modern office with neutral lighting.",
"video": "https://.../speaker.mp4",
"audio_setting": "origin"
}'
\
--output-dir
<
absolute/path
>
Packaging swap with reference image:
runcomfy run wan-ai/wan-2-7/edit-video
\
--input
'{
"prompt": "Maintain the original framing and hand movement; replace the packaging design using the reference image.",
— outfit swap, scene relight, atmospheric restyle — and identity preservation is critical. Lighter-weight than Wan 2.7 Edit; capped at 720p.
Schema
Field
Type
Required
Default
Notes
prompt
string
yes
—
Natural-language edit instruction.
video_url
string
yes
—
MP4/MOV/WEBM/GIF.
resolution
enum
no
720p
720p
only on this tier.
Invoke
Outfit swap:
runcomfy run decart/lucy-edit/restyle
\
--input
'{
"prompt": "Change outfit to professional business attire; preserve face and motion.",
"video_url": "https://.../subject-walking.mp4"
}'
\
--output-dir
<
absolute/path
>
Atmospheric restyle:
runcomfy run decart/lucy-edit/restyle
\
--input
'{
"prompt": "Make lighting warm and golden hour; preserve face, pose, and motion.",
"video_url": "https://.../subject-portrait.mp4"
}'
\
--output-dir
<
absolute/path
>
Prompting tips
Localized change phrasing wins.
"Outfit", "lighting", "background" — pick one bucket.
Preserve identity goals
—
"preserve face and motion"
is enough; don't over-specify.
Avoid total replacement
("astronaut in space" works; "swap subject for a different person" doesn't). Lucy is built for localized style mods, not full character swap.
No aspect ratio control
— output matches input. Cropping happens server-side if you don't pre-match.
Limitations
Each route inherits its model's limits.
Wan 2.7 Edit: 2–10s, 1080p ceiling. Kling: 10s (image orientation) or 30s (video orientation). Lucy: 720p ceiling, no aspect control.
No multi-route blending.
This skill picks one model per call.
Brand-specific overrides
— if the user named a specific model, route to the corresponding brand skill (
wan-2-7
) for fuller treatment.
Exit codes
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
.
How it works
The skill picks one of Wan 2.7 Edit-Video / Kling 2.6 Pro Motion Control / Lucy Edit Restyle based on user intent and invokes
runcomfy run
with the matching JSON body. The CLI POSTs to the Model API, polls the request, fetches the result, and downloads any
.runcomfy.net
/
.runcomfy.com
URL into
--output-dir
.
Ctrl-C
cancels the remote request before exit.
Security & Privacy
Token storage
:
runcomfy login
writes the API token to
~/.config/runcomfy/token.json
with mode 0600 (owner-only read/write). Set
RUNCOMFY_TOKEN
env var to bypass the file entirely in CI / containers.
Input boundary
the user prompt is passed as a JSON string to the CLI via
--input
. The CLI does NOT shell-expand the prompt; it transmits the JSON body directly to the Model API over HTTPS. No shell injection surface from prompt content.
Third-party content
image / mask / video URLs you pass are fetched by the RunComfy model server, not by the CLI on your machine. Treat external URLs as untrusted; image-based prompt injection is a known risk for any image-edit / video-edit model.
Outbound endpoints
only
model-api.runcomfy.net
(request submission) and
*.runcomfy.net
/
*.runcomfy.com
(download whitelist for generated outputs). No telemetry, no callbacks.
Generated-file size cap
the CLI aborts any single download > 2 GiB to prevent disk-fill from a malicious or runaway model output.