From asset-generation
Generates videos using OpenAI Sora-2 from text prompts or images, designs scene prompts, and handles API jobs with polling and downloading via Python script.
npx claudepluginhub kyh/vibedgamesThis skill uses the workspace's default tool permissions.
Use this skill when the user wants actual video generation with OpenAI `sora-2`, or when the task requires strong prompting, shot planning, and API parameter selection for that model. This skill should unlock operational video work, not just prompt suggestions.
Generates, edits, extends, polls, lists, downloads Sora AI videos; creates character references; runs local multi-video queues via CLI. For demos, marketing, UI mocks.
Generates AI videos using Veo MCP tools or Sora API scripts for text-to-video, image-to-video, video extension, and style-consistent generation with draft-to-final workflows.
Generates AI videos from text descriptions or images using Google Veo 3.1 (default) or OpenAI Sora. Supports dialogue/audio, reference images, image-to-video animation, and interactive requirement gathering.
Share bugs, ideas, or general feedback.
Use this skill when the user wants actual video generation with OpenAI sora-2, or when the task requires strong prompting, shot planning, and API parameter selection for that model. This skill should unlock operational video work, not just prompt suggestions.
Video generation works best when the request reads like direction, not decoration. The job is to translate a vague idea into a concrete scene with clear subject, motion, camera, timing, and constraints.
Before generating, ask:
Core principles:
OpenAI documents sora-2 as the current frontier video generation model. The model page and Videos API guide describe text-to-video generation, image-guided generation, and async job retrieval via the Videos API. See references/openai-sora-2.md.
sora-2.size: 1280x720 or 720x1280seconds: 4, 8, or 12image_url reference and state what must stay fixed versus what should change.scripts/sora_video_generate.py to create the job, poll until terminal status, and download the video.For sprite-animation experiments, the most reliable path in this repo has been:
Important practical notes from live runs:
input_reference via local file upload worked for this repo's image-guided runs.image_reference by URL was not the successful path here.For walk and run tests, there was a clear tradeoff:
So the right pattern is usually:
Prefer compact scene-direction prompts:
Create a 10-second side-view pirate platformer concept shot. A compact pirate hero climbs from a sea cave toward wooden platforms while surf rises below. Camera stays locked in side view with gentle parallax only. Bright 16-bit-inspired colors, readable silhouette, no HUD, no text, no extra characters.
When motion matters, specify the beat structure:
When camera matters, say exactly what it should do:
For image-guided work, label references explicitly:
image 1 = subject identity and style anchorimage 2 = environment or motion referenceState both:
For pixel-art character work, make the "must remain unchanged" section explicit:
The Sora 2 prompting guide reinforces a few patterns that matter for practical use:
Create and download a text-to-video clip:
OPENAI_API_KEY=... \
python3 .claude/skills/sora-2/scripts/sora_video_generate.py \
--prompt "A brass astrolabe turns slowly on a captain's desk by lantern light." \
--out-dir tmp/sora-clip --size 1280x720 --seconds 4
Create and download an image-guided clip:
OPENAI_API_KEY=... \
python3 .claude/skills/sora-2/scripts/sora_video_generate.py \
--prompt "Animate this pixel-art pirate into a short run cycle while preserving the exact character style from the source image." \
--image-file ./pirate-anchor-canvas-720x1280.png \
--out-dir tmp/sora-clip --size 720x1280 --seconds 4
Useful flags:
--image-url https://...--image-file ./local-reference.png--poll-interval 10--timeout 900--no-wait--no-download--filename-prefix shot-01The script calls POST /v1/videos, polls GET /v1/videos/{id}, and downloads the file from GET /v1/videos/{id}/content.
❌ Anti-pattern: prompting with cinematic synonyms instead of scene logic Why bad: the model gets atmosphere but weak action and continuity. Better: specify subject, environment, action, camera, duration, and exclusions.
❌ Anti-pattern: treating create response as final output Why bad: video generation is asynchronous. Better: poll until completion and download the finished file.
❌ Anti-pattern: under-specifying the camera Why bad: the clip may invent movement or framing that breaks the intent. Better: say whether the camera is locked, tracking, pushing in, or static.
❌ Anti-pattern: overloading one short clip with too many story beats Why bad: 5-20 second clips cannot carry a whole trailer worth of events cleanly. Better: focus each clip on one shot or a short, ordered beat sequence.
❌ Anti-pattern: vague image-guided edits Why bad: the model may drift identity, style, or composition. Better: say what the reference image contributes and what should remain unchanged.
❌ Anti-pattern: assuming still-image continuity transfers automatically Why bad: a clip can keep the scene idea while redesigning the subject. Better: treat identity preservation as an explicit requirement and don't assume the model will infer it from a loose reference.
❌ Anti-pattern: using a tiny sprite as the only identity signal on a huge canvas Why bad: the model gets too little information about the real character. Better: use a larger, size-matched reference canvas with enough padding for motion, but keep the subject prominent.
❌ Anti-pattern: shipping the raw Sora frames as the final game animation Why bad: the clip may contain repeated cycles, soft transitional poses, or drifting registration. Better: use Sora to generate motion reference, then normalize and curate a single runtime loop afterward.
IMPORTANT: Do not converge on one house-video pattern for every request.
references/openai-sora-2.mdscripts/sora_video_generate.pyThis skill should make video generation operational, not theoretical, and should enable real video jobs instead of hypothetical workflow talk.
Turn the request into a concrete shot, choose the duration and size intentionally, create the job, wait for completion, download the result, and report the real output path back to the user.