Best for
- Any time the user wants to generate a video clip — text-to-video, image-to-video, first-last-frame transition, reference-based generation, multi-shot storyboard, or generatively editing / extending an existing video (pr…
0xsline/OpenChatCut/src/agent/skills/video-gen/SKILL.md
AI video generation via Seedance 2.0, Kling, MiniMax Hailuo, and xAI Grok Imagine. Use when the user wants to generate a video clip — text-to-video, image-to-video, first/last-frame transitions, reference-guided generation, multi-shot, or generatively editing / extending an existing clip.
Decision brief
Submits one video generation job per call and returns a jobId. Job management (wait / status) belongs to trackprogress; this skill does not place videos on the timeline automatically.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/0xsline/OpenChatCut --skill "src/agent/skills/video-gen"Inspect the Agent Skill "video-gen" from https://github.com/0xsline/OpenChatCut/blob/ce56a9392ce46349c02d87ddfccc79f54e87fe10/src/agent/skills/video-gen/SKILL.md at commit ce56a9392ce46349c02d87ddfccc79f54e87fe10. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Four-step loop. For each new generation, restart from Step 1 if the user's intent has shifted.
Before writing any prompt, align on three dimensions:
See the chosen model's reference for prompt structure and param combinations (e.g., Seedance's 8-element structure and modes; Kling's prompt tips). Before submitting, check:
Submit one generation job at a time. Unless the user explicitly asked for multiple clips in parallel, do not submit the next clip until the current one completes and the user has reviewed it. Parallel submission hides problems: if the first shot has drift or wrong framing, the u…
When the user wants a next clip, a revision, or a continuation:
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 97/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 1,360 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Submits one video generation job per call and returns a jobId. Job management (wait / status) belongs to track_progress; this skill does not place videos on the timeline automatically.
Any time the user wants to generate a video clip — text-to-video, image-to-video, first-last-frame transition, reference-based generation, multi-shot storyboard, or generatively editing / extending an existing video (producing new generated footage based on a source clip; not timeline trimming).
| Model | Reference | Strengths |
|---|---|---|
seedance2 | references/seedance2.md | Default when configured. Multimodal refs, first/last, edit/extend/bridge, 2–15s, 480p/720p/1080p/4k, audio/seed/camera/watermark/last-frame/task controls. |
kling | references/kling.md | Technical camera/performance; Omni multi-shot; images ≤7 (≤4 with one feature refVideos); std/pro; 3–15s. |
hailuo | references/hailuo.md | MiniMax 海螺. T2V / I2V / first+last; 6s or 10s; 512P (Hailuo-02), 720p→768P, 1080P (6s); no multi-ref / multi-shot. |
grok-imagine-video | references/grok-imagine-video.md | xAI Grok Imagine. Text-to-video only; 1–15s; 480p/720p/1080p; audio track included. |
IMPORTANT: Before generating, READ the chosen model's reference for capabilities, input channels, modes, prompt structure, and model-specific behavior. Never invent params the reference forbids.
Respect configured vendors from the capabilities prompt (only call a model whose key is on).
model, if configured.seedance2 when Seedance is configured.kling. Else if only MiniMax is on → hailuo. Else if only xAI is on → grok-imagine-video.kling (confirm if not user-named).seedance2.hailuo with duration 6 or 10.If the required model is not configured, say so and offer: another configured video vendor, upload, or Motion Graphic — do not pretend the API exists.
Briefly tell the user what you will generate before submitting.
| Param | Values | Default |
|---|---|---|
model | seedance2, kling, hailuo, grok-imagine-video | seedance2 when available |
durationSeconds | model-specific | seedance/kling ~5; hailuo 6 or 10 (1080p → 6 only); grok 1–15 |
ratio | see model docs | 16:9 (seedance/kling/grok); ignored on hailuo |
resolution | 480p, 512p, 720p, 1080p, 4k | provider-specific; hailuo adds 512p for Hailuo-02; grok: 480p/720p/1080p |
refVideoMode | feature, base | kling only, with refVideos |
promptOptimizer / fastPretreatment | boolean | hailuo only |
generateAudio, seed, cameraFixed, watermark | controls | seedance only |
returnLastFrame, executionExpiresAfter, priority | controls | seedance only; requested last frame becomes another image asset |
name | descriptive asset name | required for good pool UX |
firstFrame | project image asset ref | optional |
lastFrame | project image asset ref | seedance / kling / hailuo (requires firstFrame; not with multi-ref on seedance) |
refImages / refVideos / refAudios | asset refs | seedance full; kling: images + 1 feature video (no audio); hailuo: none (frames / S2V subject) |
mode / shotType / multiPrompts | Kling multi-shot | kling only |
Model-specific params — see the model's reference.
firstFrame / lastFrame / refImages / refVideos / refAudios all take a project asset reference. Prefer a full UUID or short prefix from read_project; asset://<id> and same-project asset URLs returned by read_project are also accepted. Per-slot type: frame slots and refImages → image; refVideos → video; refAudios → audio.
External URLs and base64 are not accepted. If the source is a public URL, download it into the project first (download_media for video/audio, submit_image for images) and pass the resulting asset id.
Four-step loop. For each new generation, restart from Step 1 if the user's intent has shifted.
Before writing any prompt, align on three dimensions:
Duration & segments — total length, how many shots, and whether they live in one clip or several.
If the user has already stated a direction ("做一段", "in one video", "分别生成", "split into N shots", etc.), follow it — don't second-guess.
Otherwise, surface the two paths and let the user pick:
Offer the trade-off; do not pick for the user.
Content — what each clip depicts. Summarize back what you understood, segment by segment. When content is vague (e.g. "generate a video of a girl dancing"), the user typically hasn't specified one or more of:
Focus on the items that matter for this specific request and can't be safely inferred — don't turn this into a blank-filling exercise. Summarize the understood parts back to the user before proceeding.
Consistency anchors — only when multiple shots reuse a character, object, or scene: identify which anchor (reference image or video) to pin across shots. For sourcing rules, see §Visual consistency across shots below.
For each dimension, check the user's words:
See the chosen model's reference for prompt structure and param combinations (e.g., Seedance's 8-element structure and modes; Kling's prompt tips). Before submitting, check:
name is a descriptive asset name — descriptive enough for the user (and you in later turns) to recognize this asset in the project library. Avoid vague names like "Untitled" or "clip 1".Submit one generation job at a time. Unless the user explicitly asked for multiple clips in parallel, do not submit the next clip until the current one completes and the user has reviewed it. Parallel submission hides problems: if the first shot has drift or wrong framing, the user would rather redo it once than have several misaligned shots to discard.
submit_video.ratio controls the generated asset only; it does not change the project timeline canvas. If the user requested a final output aspect ratio (for example "9:16 vertical" or "16:9 landscape"), set the timeline canvas to the same ratio with manage_timelines action=update (e.g. ratio:"9:16") before placing the completed asset. If the user asked for no black bars / full-bleed, pass fit:"cover" when setting the canvas or updating/adding the visual item.track_progress tool for status/wait.When the user wants a next clip, a revision, or a continuation:
Text alone cannot reliably maintain visual identity across shots; visual references constrain output far more precisely than words.
An anchor is a reference image or video pinned across every shot that shares the same character, object, or style. Any multi-shot sequence with recurring visual elements needs an anchor — don't try to reproduce them from text.
Have reference awareness. When the user's request involves a recurring character / object / scene, think about what anchor to use before writing prompts:
When no existing asset fits and one must be generated, propose it to the user first — it shapes every downstream shot. Model-specific paths — see the chosen model's ref.
@Image1 / @Video1 in the prompt — not vague phrases like "the same car as before".track_progress with action=wait) to obtain its assetId, then pass it as the anchor reference. Do not submit dependent shots in parallel.When a project has multiple named characters with distinct attributes (e.g. Faz with fire energy, Kev with ice energy), treat each character as a separate anchor — one reference asset per character. In every prompt:
Missing either explicit attribution or negation causes cross-character attribute mixing.
Multiple characters in the same frame. For shots where multiple characters appear together (especially facing the camera), the model is prone to face-swap or body-clipping. Add strong positional + outfit anchors to each character and prefer a fixed camera for that shot:
Positional words (left / right / foreground / background) + distinctive outfit colors give the model enough signal to keep the characters apart.
If a visual-identity issue (wrong character, drift, color mismatch) persists after two text-prompt adjustments on the same shot, stop adjusting text. Text is not a substitute for an anchor. Escalate to:
Do not submit a third text-only retry on the same consistency issue.
Simple, one-off, or exploratory requests do not need anchors — generate directly.
// Text-to-video (seedance2 default)
submit_video({
model: "seedance2",
prompt: "A cat walks across a sunny windowsill",
name: "Cat on windowsill",
});
// Image-to-video with seedance2 — pass the project asset id directly; the server resolves the asset's media URL
submit_video({
model: "seedance2",
prompt: "The scene comes to life, gentle breeze rustles the curtains",
firstFrame: "abc12345",
name: "Living room animation",
});
// Kling text-to-video — only after Model Selection check
submit_video({
model: "kling",
prompt: "A sports car drifts around a wet corner",
name: "Car drift shot",
});
// MiniMax Hailuo — 6s or 10s; optional firstFrame / lastFrame (with first)
submit_video({
model: "hailuo",
prompt: "A ceramic cup steams on a wooden table, soft morning light [Push in]",
durationSeconds: 6,
resolution: "720p",
name: "Coffee steam morning",
});
After submission, call the track_progress tool: action=status jobIds=<jobId> to poll, action=wait jobIds=<jobId> to block until terminal.
For complex multimodal jobs, build the full args object up front and pass it in a single call:
submit_video({
model: "seedance2",
prompt: "...",
name: "...",
firstFrame: "abc12345",
refImages: ["def67890", "ghi24680"],
refVideos: ["abc99999"],
refAudios: ["jkl55555"],
durationSeconds: 8,
ratio: "9:16",
});
--name with a descriptive asset name.--job, --wait, or --timeout — job management belongs to track_progress.edit_item only after the user wants them on the timeline (pool-first contract).Frequently asked questions
Submits one video generation job per call and returns a jobId. Job management (wait / status) belongs to trackprogress; this skill does not place videos on the timeline automatically.
The source record exposes this install command: npx skills add https://github.com/0xsline/OpenChatCut --skill "src/agent/skills/video-gen". Inspect the command and pinned source before running it.
Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
coreyhaines31/marketingskills
When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies. Also use when the user mentions 'churn,' 'cancel flow,' 'offboarding,' 'save offer,' 'dunning,' 'failed payment recovery,' 'win-back,' 'retention,' 'exit survey,' 'pause subscription,' 'involuntary churn,' 'people keep canceling,' 'churn rate is too high,' 'how do I keep users,' or 'customers are leaving.' Use this whenever someone is losing subscribers o
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
oaustegard/claude-skills
Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre