Visual transition reel
Skill PrunaAI/pruna-skills/skills/workflows/visual-transition-reel
Agent skills and plugins to give your agents access to Pruna API and generation workflows.
npx -y skills add PrunaAI/pruna-skills --skill visual-transition-reelAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
9.9 KB, as published. Nobody here has run it
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/[email protected] -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-videoscenes) →`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
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? |
| Global | style_bible? aspect_ratio? 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-videopair 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-imagewithhero_prompt+style_bible+ ritual seed fromgeneration-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-editwithedit_prompt+ hero inimages[]- 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-editwithlast_frame_edit_prompt+ start still inimages[]- 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.5under 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 |