---
name: transitions-pack
description: Join clips with designed transitions - whip pans with motion blur, white flash, zoom punch, RGB glitch, blur dissolve, light leak, iris, wipes, push, clock wipe, dip to black or hard cuts - one style for the whole edit or one per cut, with an optional whoosh sound the user supplies. Renders a labelled showcase reel and a mid-transition contact sheet so the user can choose before the final join. Use when the user wants transitions between Kenerate clips, a punchy montage, "smooth transitions", whip / glitch / flash effects, or to see transition options.
compatibility: Python 3.9+ with Pillow and ffmpeg (xfade).
metadata:
  author: kenerate
  version: "1.1"
  kenerate-tools: "generate_video generate_image wait_for_generation"
---

# Transitions pack

`scripts/transitions.py` normalises the clips and chains ffmpeg `xfade` with per-transition effects (motion blur, RGB
split, flash, light leak) only inside each transition window. Rules: [references/KENERATE.md](references/KENERATE.md) (models and voices: [references/MODELS.md](references/MODELS.md), or the free `pick_model` / `pick_voice` tools).

## When to use / not to use
- Use for montages, hooks, product reels, travel edits. For a full edit with music, captions and trims, use
  `video-editing` (its `--transition` covers the basic set) and come here for the designed ones.

## 1. Show the options (free)
```
python <skill-dir>/scripts/transitions.py --showcase --clips "<clip1>" "<clip2>" --aspect 9:16 --res 720
python <skill-dir>/scripts/transitions.py --list
```
The showcase alternates the two clips with every transition, labelled, and writes `*_preview.jpg` (the middle of each
transition). Show it; ask which one (or a sequence).

## 2. Join
```
python <skill-dir>/scripts/transitions.py --clips "<c1>" "<c2>" "<c3>" "<c4>" \
  --transitions whip-left,flash,zoom-punch --aspect 9:16 --out kenerate-out/transitions-pack/<project>.mp4
```
- `--transition NAME` for one style everywhere; `--transitions a,b,c` per cut (cycled); `--seconds` overrides lengths.
- Pace: whips / flash / glitch 0.25-0.35 s for energy; dissolves 0.5-0.8 s for calm.
- Sound: the clips' own audio crossfades. Whoosh / hit effects only with the user's OK and a file they supply
  (`--sfx whoosh.mp3 --sfx-db -8`). Never add music or sounds on your own.

## Progress and output
Steps: fetch → normalise → join (percent) → preview → done. `RESULT_JSON.transitions` lists each cut's time and style.

## If something fails
A clip shorter than 2.5x the transition gets a shorter transition automatically. Unknown names: `--list`.

## Limits
Up to ~40 clips per run (one ffmpeg graph). Every clip is re-encoded to the same size and 30 fps.
