image-to-videoSAFE
Overview
An agent skill published by gencraft-labs.
cdf87f933093OBSERVED · 2026-10-14Install
Commands as the repository documents them. They are shown, not run.
npx skills add agentspace-so/runcomfy-skills --skill image-to-video -g
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: image-to-video
displayName: "Image-to-Video — Pro Pack on RunComfy"
description: >
Animate any still image on RunComfy — this skill is a smart router
that matches the user's intent to the right i2v model in the
RunComfy catalog. Picks HappyHorse 1.0 I2V (Arena #1, native audio,
identity preservation) for general animations, Wan 2.7 with
`audio_url` for custom-voiceover lip-sync, or Seedance 2.0 Pro for
multi-modal animation from image + reference video + reference
audio. Bundles each model's documented prompting patterns so the
caller gets sharper output without burning iterations on the wrong
model. Calls `runcomfy run <vendor>/<model>/image-to-video` (or
endpoint variant) through the local RunComfy CLI. Triggers on
"image to video", "image-to-video", "i2v", "animate image", "make
this move", or any explicit ask to turn a still into video.
homepage: https://www.runcomfy.com
license: MIT
---
# Image-to-Video — Pro Pack on RunComfy
[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=image-to-video) · [HappyHorse I2V](https://www.runcomfy.com/models/happyhorse/happyhorse-1-0/image-to-video?utm_source=skills.sh&utm_medium=skill&utm_campaign=image-to-video) · [Wan 2.7](https://www.runcomfy.com/models/wan-ai/wan-2-7/text-to-video?utm_source=skills.sh&utm_medium=skill&utm_campaign=image-to-video) · [Seedance 2.0 Pro](https://www.runcomfy.com/models/bytedance/seedance-v2/pro?utm_source=skills.sh&utm_medium=skill&utm_campaign=image-to-video) · [GitHub](https://github.com/agentspace-so/runcomfy-skills/tree/main/image-to-video)
**Image-to-video, intent-routed.** This skill doesn't lock you to one model — it picks the right i2v model in the RunComfy catalog based on what the user actually wants: portrait animation, custom-voiceover lip-sync, or multi-modal composition.
```bash
npx skills add agentspace-so/runcomfy-skills --skill image-to-video -g
```
## Pick the right model for the user's intent
| User intent | Model | Why |
|---|---|---|
| Animate a portrait — keep identity stable | **HappyHorse 1.0 I2V** | #1 on Artificial Analysis Arena (Elo 1392); strong facial fidelity |
| Product reveal / 360 / macro motion | **HappyHorse 1.0 I2V** | Geometry preservation + smooth camera moves |
| Native synchronized ambient audio in one pass | **HappyHorse 1.0 I2V** | In-pass audio synthesis |
| Animate **and** lip-sync to a **custom voiceover track** | **Wan 2.7 + `audio_url`** | Accepts your own MP3/WAV (3–30s, ≤15MB) and drives lip-sync to it |
| Multi-language dub variants (same image, different audio per call) | **Wan 2.7 + `audio_url`** | Same shot, swap `audio_url` per language |
| Multi-modal — image + reference video + reference audio together | **Seedance 2.0 Pro** | Up to 9 image refs, 3 video refs (2–15s each), 3 audio refs |
| Brand-consistent narrative with character ref + scene ref + voice ref | **Seedance 2.0 Pro** | Image holds identity, video holds scene, audio holds voice |
| Default if unspecified | **HappyHorse 1.0 I2V** | Best all-round quality + native audio |
The agent reads this table, classifies the user's intent, and picks the matching subsection below.
## Prerequisites
1. **RunComfy CLI** — `npm i -g @runcomfy/cli`
2. **RunComfy account** — `runcomfy login` opens a browser device-code flow.
3. **CI / containers** — set `RUNCOMFY_TOKEN=<token>`.
4. **A source image URL** — JPEG/PNG/WebP, min 300px, ≤10MB; aspect 1:2.5 to 2.5:1 (HappyHorse) — other models have similar specs.
---
## Route 1: HappyHorse 1.0 I2V — default for portrait / product / general animation
**Model**: `happyhorse/happyhorse-1-0/image-to-video` · **Arena rank**: #1 (Elo 1392)
### Schema
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `image_url` | string | yes | — | JPEG/JPG/PNG/WEBP. Min 300px. Aspect 1:2.5–2.5:1. ≤10MB. |
| `prompt` | string | yes | — | ≤5000 non-CJK or 2500 CJK chars. **Motion / camera / lighting** description. |
| `resolution` | enum | no | `1080P` | `720P` or `1080P`. |
| `duration` | int | no | 5 | 3–15 seconds. |
| `seed` | int | no | 0 | Reuse for variant comparisons. |
| `watermark` | bool | no | true | Provider watermark toggle. |
Output aspect = input aspect. No independent reframing.
### Invoke
```bash
runcomfy run happyhorse/happyhorse-1-0/image-to-video \
--input '{
"image_url": "https://.../portrait.jpg",
"prompt": "Gentle camera drift around the subject'\''s face, subtle breathing motion, identity-stable features, soft natural light."
}' \
--output-dir <absolute/path>
```
### Prompting tips
- **Lead with motion verbs**: "drift", "dolly in", "orbit", "tilt up", "reveal", "blink", "breathe". Front-load what's MOVING.
- **Don't restate the image** — the model sees it. Focus tokens on what changes.
- **Preservation goals explicit**: "identity-stable features", "packaging unchanged", "background geometry stable".
- **Lighting evolution**: "rim light intensifying", "shadows shortening as camera rises".
- **One beat per clip** — single primary motion (orbit OR dolly OR tilt OR character action).
---
## Route 2: Wan 2.7 + `audio_url` — when the user has a custom voiceover
**Model**: `wan-ai/wan-2-7/text-to-video` (NOT `/image-to-video` — Wan 2.7's t2v endpoint accepts an `audio_url` that drives lip-sync)
**Note on i2v with Wan 2.7**: Wan 2.7's primary i2v animation isn't on a dedicated endpoint here. For pure i2v (image animated by motion prompt only), prefer **HappyHorse i2v**. Use Wan 2.7 specifically when the user has a custom audio track they want lip-synced to a generated talking-head clip.
### Schema (Wan 2.7 t2v with audio)
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `prompt` | string | yes | — | Up to ~5000 chars. Describe the talking-head shot: framing, lighting, motion. |
| `audio_url` | string | yes (for lip-sync) | — | WAV/MP3, 3–30s, ≤15MB. **Drives lip-sync.** |
| `aspect_ratio` | enum | no | `16:9` | `16:9`, `9:16`,Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
cdf87f933093full audit observations/trust-audit/skill/gencraft-labs__image-to-video.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-14 | cdf87f933093 | SAFE | B | 89 | first audit |
Questions
Is image-to-video safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can image-to-video access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (cdf87f933093), read on 2026-10-14. The repository is watched, and a new audit runs when it changes — this is the first audit.