Skip to content
Back to skills

Ae Transitions

ASecurity

Build transitions between shots and scenes in After Effects through the AE MCP Bridge - cuts on the beat, whip pans and zoom punches with motion blur, shape and mask wipes, luma and gradient wipes, iris, block and card wipes, light and glass wipes, match cuts, and precomp-based transitions, with verified effect and parameter names. Use when asked to transition, wipe, reveal, cut between scenes, or make scene changes feel smoother or punchier.

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 19, 2026
ai-agentsgo

Works with

  • mcp

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add solomondivyananth/aftereffects-mcp --skill ae-transitions --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ae Transitions?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ae Transitions
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/solomondivyananth-ae-transitions/badge)](https://www.skillsdirectory.com/skills/solomondivyananth-ae-transitions)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ae-transitions
description: Build transitions between shots and scenes in After Effects through the AE MCP Bridge - cuts on the beat, whip pans and zoom punches with motion blur, shape and mask wipes, luma and gradient wipes, iris, block and card wipes, light and glass wipes, match cuts, and precomp-based transitions, with verified effect and parameter names. Use when asked to transition, wipe, reveal, cut between scenes, or make scene changes feel smoother or punchier.
---

# Transitions

A transition is two layers overlapping for a few frames: the outgoing shot
(A) and the incoming shot (B). Everything below is a way to animate that
overlap. Keep transitions short (4–12 frames at 30 fps). Put them on beats,
using comp markers placed with `ae_markers`.

Set up the overlap first. Stack B above A with a few frames of overlap:

```json
ae_layer_action {"layers": ["Shot A", "Shot B"], "action": "sequence", "overlap": "8f"}
```

When A and B are whole scenes, precompose each (`ae_precompose`) so the
transition animates one layer per scene.

## The cut

Most transitions should be cuts. A cut on a beat, a cut on motion (the
movement carries across), or a cut on a match (same shape or position in both
shots) needs no effect at all. Before adding one, ask whether a clean cut on
the marker is better.

## Choosing one

Pick from what the two shots have in common, not from a menu of effects:

| A and B are… | Use | Why |
|---|---|---|
| the same subject, moved or changed | a match cut, or a morph (`ae-morph`) | the shared shape does the work; an effect would hide it |
| different moments of one idea | a cut on the beat | the cheapest and the strongest |
| different places, same energy | whip pan or zoom punch | motion carries the eye across the join |
| different sections of a film | a shape or colour wipe in the brand colour | it reads as a chapter mark, not a glitch |
| a build that must not lose its place | a masked reveal that grows from the element the eye is on | the frame never goes blank |
| a hard change of tone | dip to colour, or a flash cut | a deliberate blink |
| beauty shots, slow content | a crossfade or a light wipe | anything faster fights the pace |

Two rules that save most transitions:

- **Keep the direction.** If A leaves to the left, B arrives from the right.
  Reversing direction across a cut reads as a mistake even when nobody can
  say why.
- **One transition style per piece**, twice at most. A film that wipes, then
  whips, then iris-wipes looks like a demo of transitions.

## The shape of a transition in time

A transition is not a linear crossing. Give it the same acceleration as a
move: leave fast, arrive soft.

| Type | Overlap | Where the cut sits | Easing |
|---|---|---|---|
| Whip pan / zoom punch | 6–10 frames | at the fastest frame, where the blur is heaviest | A `{out: 85}`, B `{in: 85}` |
| Shape or mask wipe | 8–12 frames | the middle of the wipe | `{out: 20}` → `{in: 85}` |
| Effect wipe (Completion 0→100) | 8–12 frames | at ~50% completion | same |
| Dip / flash | 2–6 frames | on the beat | hold keys, no ease |
| Crossfade | 12–20 frames | the midpoint | linear, or the fade spends too long half-there |

Put the marker on the beat first, then build outwards from it, so the loudest
frame of the transition and the beat are the same frame.

## Whip pan and zoom punch

The energetic ones, built from motion plus blur:

1. On both A and B, keyframe Position (whip) or Scale (punch) across the cut.
   A leaves fast (`ease {"out": 85}` on its last move), B arrives fast then
   settles (`ease {"in": 85}`).
2. Blur the fastest frames. Whip: `ADBE Motion Blur` (Directional Blur):
   Direction along the move, Blur Length 0 → 60–120 → 0 across the cut.
   Zoom: `ADBE Radial Blur` with Type Zoom, or `CC Radial Fast Blur` Amount.
3. Motion blur on the layers and the comp (see the `ae-effects` skill).
4. For a seamless whip, add `ADBE Tile` (Motion Tile) with Mirror Edges on,
   so the frame edges never show.

## Wipes with masks and shapes

Full control, any shape. Animate a mask on B that grows to reveal it:

```json
ae_masks {"layer": "Shot B", "action": "add", "mask": {"rect": [0, 0, 0, 1080], "feather": 40}}
ae_add_keyframes {"layer": "Shot B", "path": ["Masks","Mask 1","Mask Path"], "keys": [
  {"time": "0f", "value": {"vertices": [[0,0],[0,0],[0,1080],[0,1080]]}},
  {"time": "10f", "value": {"vertices": [[0,0],[1920,0],[1920,1080],[0,1080]]}, "ease": {"in": 85}}]}
```

A **shape wipe** (a brand shape or a circle that scales up to fill the frame)
is a shape layer used as a track matte:

```json
ae_shape {"name": "Wipe", "shape": "ellipse", "size": [10, 10], "fill": "#ffffff"}
ae_set_layer_props {"layer": "Shot B", "props": {"trackMatte": {"layer": "Wipe", "type": "alpha"}}}
```

Then scale Wipe from 0 to cover the frame (about 2300% for a 100 px circle
on 1920×1080) in 8–12 frames. Layered colour wipes (two or three coloured
shapes chasing each other 2 frames apart, ending on B) are the classic
motion-design transition.

## Transition effects

Put these on the outgoing layer A, above B. Every one has a Transition
Completion (or Completion) parameter: keyframe it 0 → 100.

| Effect | matchName | Parameters |
|---|---|---|
| Linear Wipe | `ADBE Linear Wipe` | Transition Completion, Wipe Angle, Feather |
| Radial Wipe | `ADBE Radial Wipe` | Transition Completion, Start Angle, Wipe Center, Wipe, Feather |
| Gradient Wipe | `ADBE Gradient Wipe` | Transition Completion, Transition Softness, Gradient Layer, Invert Gradient |
| Iris Wipe | `ADBE IRIS_WIPE` | Iris Center, Iris Points, Outer Radius, Inner Radius, Feather. Animate Outer Radius |
| Venetian Blinds | `ADBE Venetian Blinds` | Transition Completion, Direction, Width, Feather |
| Block Dissolve | `ADBE Block Dissolve` | Transition Completion, Block Width, Block Height, Feather |
| Card Wipe | `APC CardWipeCam` | Transition Completion, Transition Width, Back Layer, Rows, Columns, Flip Axis |
| CC Light Wipe | `CC Light Wipe` | Completion, Center, Intensity, Shape |
| CC Glass Wipe | `CC Glass Wipe` | Completion, Layer to Reveal, Gradient Layer, Softness |
| CC Grid Wipe | `CC Grid Wipe` | Completion, Center, Rotation, Tiles |
| CC Twister | `CC Twister` | Completion, Backside, Center, Axis |

```json
ae_apply_effect {"layer": "Shot A", "effect": "ADBE Linear Wipe", "params": {"Wipe Angle": 90, "Feather": 60}}
ae_add_keyframes {"layer": "Shot A", "path": ["Effects","Linear Wipe","Transition Completion"], "keys": [
  {"time": "0f", "value": 0, "ease": {"out": 20}}, {"time": "10f", "value": 100, "ease": {"in": 85}}]}
```

**Master controls (After Effects 2026).** This generation ships prebuilt
transition rigs as effects — `ADBE CM TransComplete` (Transition Master
Control), plus `ADBE CM TransWipe`, `TransSlide`, `TransCard`, `TransIris`,
`TransRadial`, `TransDissolve`, `TransFade`, `TransFadeMask`, `TransStretch`,
`TransCorner`, `TransDirection`. They wrap the work below behind one set of
dials. Apply with `ae_apply_effect` and read the parameter names back from
the result; list what this install has with
`ae_catalog {"kind": "effects", "query": "master control"}`. Hand-built is
still better when the transition has to carry brand shapes or a specific
element across the cut.

**Luma transitions:** a Gradient Wipe driven by a hidden layer (Fractal
Noise, a gradient ramp `ADBE Ramp`, or a texture) gives organic, ink-like
wipes. Set Gradient Layer to that layer and turn its visibility off
(`enabled: false`).

Layer-reference parameters (Gradient Layer, Layer to Reveal, Back Layer)
point at other layers. If `ae_apply_effect` can't set them from a name, set
them with `ae_run_jsx` (`prop.setValue(layerIndex)`), or ask the user to pick
the layer in the Effect Controls.

## Transitions that use depth

With a camera in the comp (`ae-camera-3d`), the change of shot can be a move
rather than an effect:

- **Push through.** A is a 3D layer; dolly the camera past it while B sits
  further back. Add a little motion blur and the frame edge does the wiping.
- **Rotate the world.** Parent A and B to a null at 90° to each other and
  rotate the null — a card flip at full-frame scale.
- **Z stack.** Lay the scenes out in depth at build time and fly forward
  through all of them; every "transition" is then one continuous camera move.

These only work if both shots are built as precomps with matching size, and
if the camera move eases (20–30 frames, landing ease 85–90).

## Carrying an element across

The strongest scene change is one where nothing cuts: an element survives
into the next shot and becomes part of it — a logo that becomes the app
header, a word that turns into a chip, a line that becomes a ring. Build it
as one layer that exists in both scenes, and change only what has to change
(scale, position, colour) over 4–8 frames. `ae-ui-motion` has the worked
versions; `ae-morph` has the ones where the shape itself changes.

## Match cuts

A match cut hands one motion from shot A to shot B. The eye follows the
motion across the cut, so what has to match is where the thing is, how fast
it moves and which way. Whether the two shots look alike matters less.

1. **Read the motion on both sides.** Watch 6–12 real frames before and
   after the cut, not a spread across the whole shot:
   ```json
   ae_review_motion {"comp": "Scene A", "start": "84f", "duration": "12f", "frames": 12}
   ```
2. **Continue it; don't restart it.** B's first frame is the *next sample*
   of A's motion. It must not repeat A's last pose (that reads as a stall),
   and it must not start from rest. So the keys either side of the cut carry
   speed. Don't ease into the cut or out of it: give the handoff key a linear
   or velocity-matched side, and a `continuous` spatial handle so the path
   doesn't kink:
   ```json
   ae_add_keyframes {"comp": "Scene B", "layer": "Ring", "path": ["Transform", "Position"],
     "keys": [{"time": 0, "value": [980, 540], "ease": {"in": 33, "out": 33, "inSpeed": 1400, "outSpeed": 1400}, "spatial": "continuous"},
              {"time": "14f", "value": [1500, 540], "ease": "easy_in"}]}
   ```
   Measure the speed A leaves with (px/s at its last key, from
   `ae_find_animation`) and give B's first key the same speed.
3. **One source for the shared element.** If the same ring, word or icon
   exists on both sides, make it one precomp used in both shots. Two copies
   drift apart in size, colour and weight, and the cut exposes the difference.
4. **Ranges are half-open.** If frame N is A's last visible frame, A's out
   point is frame N+1 and B's in point is frame N+1. Setting A's out point to
   N drops a frame; setting B's in point to N shows both for a frame.
   ```json
   ae_set_layer_props {"comp": "Edit", "layer": "Scene A", "props": {"outPoint": "90f"}}
   ae_set_layer_props {"comp": "Edit", "layer": "Scene B", "props": {"inPoint": "90f"}}
   ```
5. **Check the four frames around the cut** at full size: `ae_render_frame`
   with `"times": ["88f", "89f", "90f", "91f"]`, then `ae_proof` for
   `empty-frame` and pops. The shared element should sit on one smooth line
   across all four.

## Sound

Most transitions are sold by audio, not picture. A whoosh that starts 4–6
frames *before* the cut and an impact exactly on it will make a plain cut
feel designed. Place them against the same markers (`ae-audio-sync`).

## Crossfades and dips

- **Crossfade:** B's Opacity 0 → 100 over the overlap. Use it rarely; it
  reads as soft and old-fashioned unless it's intentional.
- **Dip to colour:** a solid above both, Opacity 0 → 100 → 0 around the cut.
- **Flash cut:** a white solid on 1–2 frames with hold keys (`interp: "hold"`) exactly on the cut.

## When it goes wrong

| Symptom | Cause | Fix |
|---|---|---|
| A frame of white or transparency mid-transition | A ends before B starts | extend the overlap; `ae_proof` reports it as `empty-frame` |
| A hard line where the wipe starts | no feather, or the mask begins inside the frame | feather 20–60, and start the mask fully outside |
| The frame edge shows during a whip | the layer is exactly comp-sized | `ADBE Tile` (Motion Tile) with Mirror Edges, or scale to 110% |
| It strobes | fast motion with motion blur off | both switches on; `ae_proof`'s `strobe` check finds these |
| The transition feels late | it was built from the cut, not from the beat | move the loudest frame onto the marker |
| It reads as long and soft | 20+ frames, linear easing | halve it and ease it |
| Every cut has a transition | no cuts at all | most of them should be cuts |

## Check it

Transitions live in a few frames, so look at every one:

```json
ae_review_motion {"start": "<cut time minus 6f>", "duration": "12f", "frames": 12}
```

Sample about two frames per frame of transition — at 8 samples across 10
frames you are not seeing the transition, you are seeing a slideshow of it.

Look for: a frame where neither shot shows, a mask edge visible at the start,
a hard edge where there should be feather, and whether the transition lands
on the beat. Then `ae_proof` over the same window with a high `samples` count
(`ae-motion-proof`) — that is where one-frame pops and empty frames show up
as numbers. With a reference, compare it at native frame rate with the
`video-reference-compare` skill.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.