Flower transitions
1 / 8 Stripes iris
Wavy mint and purple stripes open in an 8-petal flower-shaped iris, cover the frame, then close.
Use it in Tella
- Open any video in Tella, then open the AI chat.
- Paste the skill:
tellahq/community-skills/flower-transitions - Then ask for what you want, for example:
Add flower transitions at every layout change in this video.
Use it in Claude Code
Add it to Claude Code, or any agent that reads skills:
npx skills add tellahq/community-skills --skill flower-transitionsInstructions
What the AI chat follows when the skill is pasted, from its SKILL.md.
Flower transitions
Full-frame motion-graphic transitions that cover each layout change. Each one is a transparent ProRes 4444 overlay (1920×1080, 30 fps): the graphic wipes in with a shaped mask, covers the whole frame, and wipes out again. The layout switch happens underneath while the frame is covered. The camera footage itself is never touched. Grain and retro texture stay on the graphics only.
The set (8 designs, rotated)
They are saved in the user's private media library. Find them with list_library (scope: 'private', type: 'video') by name, all starting with "Flower transition –". Use each item's sourceId, and never guess IDs.
- Stripes iris: wavy mint/purple stripes in a flower-shaped (8-petal) circle that opens and closes.
- Bloom wave: blue flower bloom in a wavy left-to-right wipe.
- Grid tiles: the 3×3 flower grid, built tile by tile on a diagonal.
- Pink stripes blinds: stripes in pink and orange, as staggered horizontal blinds.
- Warm bloom iris: orange and pink bloom in a 6-petal iris.
- Stripes+bloom diagonal: the bloom keyed over the stripes, in a diagonal wipe.
- Rings wave: new wavy concentric rings in the stripes palette, in a right-to-left wavy wipe.
- Violet grid tiles: violet flower grid, with tiles popping in randomly.
gallery/ has a short clip and a poster of each design as it looks over a real layout change. Watch them to see which design is which.
Each design comes as a 2.4s version (the default). Pink stripes blinds and Warm bloom iris also have 1.6s versions for tight spots.
Steps
get_timelinewithlayouts(andoverlays). List the moments where the layout really changes: camera-only ↔ side-by-side/split, fullscreen ↔ framed camera, and so on. Sort the layouts by start time first, because the list is not in order.- Skip punch-ins (a camera-only section with
punchIn: trueis emphasis, not a layout change). Treat the change out of a punch-in into a different layout as a change. - Skip b-roll boundaries by default. B-roll must end with a hard cut back to the speaker, so never put a transition on a b-roll exit. Offer b-roll entries as an option.
- Skip changes in the last second of the video.
- Skip punch-ins (a camera-only section with
- Placement. Each 2.4s transition fully covers the frame from about 1.0s to 1.3s into it. Start it at
switch − 1133 msso the switch falls in the middle of the full cover. For a 1.6s version, start it atswitch − 750 ms. - Overlap check. When two neighbouring 2.4s transitions would overlap (layout changes less than about 2.4s apart), use the 1.6s versions there. If even those overlap (changes under about 1.6s apart), keep one transition and let the other change hard-cut, and say so.
- Rotate the 8 designs in order (1→8, then repeat) so no two in a row look alike.
- Add them all in one
apply_video_editsbatch:add_media_overlaywithpoint {xPct: 0, yPct: 0}anddimensions {width: 1920, height: 1080}(the canvas size). Name each one "Transition – <design>". Leavetransition/animationunset, because the alpha channel does the wipe. - Verify with one
get_filmstriparound the first 3–5 switches (before, mid-in, at the switch, mid-out, after). Check that the frame is fully covered at the switch and transparent before and after. - To change the length later, render new files (below) and swap them in one batch: remove the old overlays, then add the new ones.
update_overlaycan't change the source.
Offer as follow-ups: a whoosh on each transition, b-roll entries, and leaving very quick sections as hard cuts.
Rendering new versions (other length, canvas size or colours)
Use scripts/gen.py. It needs numpy (pip install --break-system-packages numpy) and ffmpeg.
- Download the three source graphics into
$WORKDIR(default/workspace/flower-transitions) asstripes.mp4,bloom.mp4andgrid.mp4. Useget_source_thumbnailwithformat: 'mp4', the fulldurationMsandwidth: 1072, then curl the URL. The original sources are "wavy stripes kaleidoscope" (su_cmvi5vnx3009i08jk1ip831cn, 11.4s), "flower bloom pulse" (su_cmvi5vpt500kx02rm5nd9hl11, 7.7s) and "flower grid" (su_cmvi5vqzt001j02rvbjsw2pvl, 4.1s). All are 1072×1080. If these sources aren't reachable, ask the user to attach the three clips again. Never use the bloom clip's first 0.5s: it shows player UI. - Run
NF=<frames> W=<width> H=<height> python3 gen.py [variant…]. 72 frames gives 2.4s, 48 gives 1.6s, 24 gives 0.8s. Files land in$WORKDIR/out<NF>/. The full cover runs from frame round(NF·10/24) to round(NF·13/24)−1. Start the overlay at the middle of that window, converted to ms, before the switch. - Before uploading, look at a contact sheet. Composite a few frames over a solid colour with ffmpeg and
view_imageit. - Upload with
create_source(kind: 'video', width, height, duration) andcurl -T file.mov "<uploadUrl>". Upload several in parallel, thenwait_for_jobson the sources. - Save the new files to the library with
add_library_item, using the same "Flower transition – <design> (<length>)" naming.
Keep the look: grainy, slightly pixel-stepped kaleidoscope patterns in mint/teal/lavender/blue, with remixes made by hue-shifting (pink/orange about +150°, warm about +170°, violet about +60°), mirroring, or keying one graphic over another. Mask shapes are petal irises, wavy wipes, tiles, blinds and diagonals. Masks animate in with an ease-in and out with an ease-out (cubic).
Files
The other files in the skill, such as reference videos it copies from.