| name | visual-transition-reel |
| description | Use when someone wants a montage with transitions between shots โ action-sequence reel or multi-scene piece where narration is optional. |
| license | MIT |
| metadata | {"version":"1.0.8","package":"pruna-skills"} |
Prerequisites
Install and load these skills before generating (skip if already in context via @pruna):
| Skill | Description | Install |
|---|
p-image | Use when someone wants a fast AI image โ product shots, hero visuals, mood boards, or draft photos from a text prompt. | npx skills add PrunaAI/pruna-skills@p-image -y |
p-image-edit | Use when someone wants to edit an existing photo โ change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | npx skills add PrunaAI/pruna-skills@p-image-edit -y |
p-video | Use when someone wants one short video clip from text or images โ B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | npx skills add PrunaAI/pruna-skills@p-video -y |
stable-audio-2.5 | Use when someone wants light instrumental background music โ an ambient bed under dialogue or underscore for reels and explainers. | npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y |
Or install the full suite once: npx skills add PrunaAI/pruna-skills@pruna -y
Follow each skill's Before generating / craft sections โ do not restate guide content here.
Workflow habit
In every reply, name `visual-transition-reel` in backticks. State the current phase gate โ use exact phrases approve plan, approve stills, approve clips when listing gates. Do not same-turn plan + paid video. Skip-review / burn-credits โ follow generation-diversity Red flags.
Skill boundary
Montage with transitions between composed video clips โ not a picture-book slideshow.
Redirect before intake:
- Picture-book / illustrated slideshow / Ken Burns story with narration โ
`illustrated-story-reel`
- Cinematic multi-scene B-roll chapters (full
p-video scenes) โ `narrated-multi-scene`
When NOT to use
Use a different skill instead:
| Skill | Description | Install |
|---|
illustrated-story-reel | Use when someone wants a slideshow story with narration or music โ picture-book illustrated frames with Ken Burns or gentle p-video motion. | npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y |
narrated-multi-scene | Use when someone wants a multi-part story with voiceover โ episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y |
interactive-explainer | Use when someone wants an educational explainer with a host and characters โ history or science shorts with dialogue, not voiceover-only B-roll. | npx skills add PrunaAI/pruna-skills@interactive-explainer -y |
Feedback gates (required)
| Phase | What to show | Proceed when |
|---|
| 0 โ Plan | Scene table, transition prompts, style_bible | approve plan |
| A โ Stills | Hero + start/end PNGs | approve stills |
| B โ Video | clips/*.mp4 | approve clips |
| D โ Bed | Final after concat + optional bed | User accepts |
Intake: ask before generating
Open intake โ generation-diversity clarification intake.
Do not start scene 1 until the whole scene plan exists in writing (manifest or table):
| Topic | Questions |
|---|
| Story | Scene order (1โฆN)? What changes between beats (location, time, emotion)? |
| Per scene i | Start still (edit_prompt or upload)? End still (last_frame_edit_prompt)? Transition video_prompt (OPEN/MID/CLOSE motion)? duration_seconds? |
| Continuity | Per scene: chain_from_previous only when motion continues. Otherwise composed OPENING still + hard cut. |
| Stills source | Generate via p-image hero + p-image-edit, or user-supplied photo pairs? |
| Format | aspect_ratio; transition clips 720p / 1080p? |
| Global | style_bible? ritual_seed? frame_chain_mode (extract_last_frame vs parallel_vignettes)? |
| Audio | Native SFX only (default), optional stable-audio-2.5 bed in post, or upgrade to triple + TTS? |
| Assembly | Concat order; chain crossfade (~0.12โ0.15s) vs hard cut (0)? Target total duration? |
Ask follow-ups until every scene row has enough to build input without guessing.
Anchor pairs + video-prompting
Start/end stills and transition motion use video-prompting scene-anchor pairs โ physically reachable end states; same subject in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on p-image-edit plates per image-prompting.
Scene table (template)
# | Start (image) | End (last_frame_image) | Transition prompt | Duration | Chain? |
|---|
| 1 | edit_prompt โ still | last_frame_edit_prompt โ still | OPEN/MID/CLOSE motion | 5s | no |
| 2 | = scene 1 end or extract(clip 1) | end still | motion prompt | 4s | yes / no |
How the agent runs this
- Copy templates/transition-plan.template.json โ fill from intake โ approve plan.
- Hero โ parallel start stills โ parallel end stills โ approve stills.
- Parallel (or sequential for extract-chain)
p-video pair jobs โ approve clips.
- ffmpeg concat ยฑ per-join crossfade โ optional bed.
Generation phases
| Phase | Action |
|---|
| stills | Hero + start/end PNGs (default first stop) |
| video | After stills approval โ p-video pairs |
| assemble | After clips approval โ concat ยฑ bed |
Workflow (after intake)
Phase 0 โ Hero (p-image)
One approved anchor still when generating from text:
p-image with hero_prompt + style_bible + ritual seed from generation-diversity
- Slop gate โ approve before branching edits
Skip when every scene uses uploaded start/end images.
Phase 1 โ Start stills (p-image-edit, parallel)
For each scene without an uploaded start image:
- Upload hero URL to
/v1/files
p-image-edit with edit_prompt + hero in images[]
- Download โ
{scene_id}.png
Run all start stills in parallel after hero exists (pruna-api).
Phase 2 โ End stills (p-image-edit, parallel)
For each scene with last_frame_edit_prompt:
- Upload start still URL
p-image-edit with last_frame_edit_prompt + start still in images[]
- Download โ
{scene_id}_last.png
Run all end stills in parallel once start stills exist.
Phase 3 โ Video (p-video)
Scene anchor pair โ one job per row (duration set, no audio):
{
"prompt": "OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.",
"image": "START_URL",
"last_frame_image": "END_URL",
"duration": 5,
"resolution": "720p",
"fps": 24
}
frame_chain_mode | Start frame when chain_from_previous: true | Render order |
|---|
extract_last_frame | ffmpeg last frame from prior clip | Sequential for chained scenes |
parallel_vignettes | always composed start still | Parallel (montage / hard cuts) |
planned_stills | prior scene end still URL | Parallel once all stills exist |
Extract last frame when chaining:
ffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png
Poll all get_url until done; retry failed scenes only.
Phase 4 โ Review
Adjust transition prompt, stills, or duration; re-run that scene only.
Phase 5 โ Assembly
- Normalize clip audio (48 kHz stereo) if concat fails on mixed formats
- Concat โ hard cuts:
ffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4
Per-join crossfade (~0.12โ0.15s) on chain joins โ use xfade (video) + acrossfade (audio); hard-cut joins stay at 0.
- Optional bed โ
stable-audio-2.5 under native SFX (amix, bed ~0.10โ0.15)
Phase 6 โ Manifest
Scene table + start/end URLs + prediction ids + chain_from_previous flags.
Transition prompt shape
Write video_prompt as motion between the two plates โ not a repeat of the still descriptions:
OPEN: [what holds at start frame]
MID: [camera + subject motion developing]
CLOSE: [how motion settles into end frame]
Limits: prefer 4โ5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.
When to chain vs hard cut
Use chain_from_previous: true | Use chain_from_previous: false |
|---|
| Same location, motion continues | New location or story beat |
| Subject mid-action into next beat | Emotional pause or time jump |
You will extract_last_frame from prior clip | Montage vignettes (parallel_vignettes) |
Related
Related skills:
| Skill | Description | Install |
|---|
image-to-video | Use when someone wants one short film beat from images โ a narrated scene, story moment, or cinematic B-roll with optional voiceover. | npx skills add PrunaAI/pruna-skills@image-to-video -y |
narrated-multi-scene | Use when someone wants a multi-part story with voiceover โ episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y |
video-editing | Use when assembling or polishing already-rendered clips with ffmpeg โ concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export โ or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | npx skills add PrunaAI/pruna-skills@video-editing -y |