Skip to main content
skill CX Codex

after-effects · dylantarre — Claude Code skill: 12 animation principles

Walks your agent through Disney's 12 animation principles inside Adobe After Effects, from squash and stretch to appeal. Useful when a character or UI needs to move right.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add dylantarre/animation-principles --skill after-effects -a claude-code
Open on GitHub

What after-effects does

The skill breaks down all 12 Disney animation principles and pairs each with a concrete After Effects technique. Squash and stretch comes with a JavaScript expression that reads one scale axis and adjusts the other so volume stays constant. Follow through and overlapping action get a delay expression using valueAtTime on a child layer. Bounce and overshoot have ready formulas with amplitude, frequency and decay.

Timing is laid out frame by frame: 2-4 frames read as a snap, 12-15 as normal pace, 40 and up as heavy. A separate table covers composition frame rate. There is a set of essential expressions too — wiggle, loopOut("cycle"), time remap. Export options close it out: Lottie through Bodymovin, GIF through Media Encoder, H.264 and ProRes video, sprite sheet via script.

Everything assumes you are working inside Adobe After Effects. Expressions, Graph Editor curves and Onion Skin all run in the app itself. The agent suggests structure and code; you still build the comp and set the keys.

What it helps with

  • get squash and stretch without hand-tuning both scale axes
  • lay out a scene frame by frame for wind-up and main action
  • offset child layers for overlapping action
  • tune Graph Editor curves to the pace you want
  • pick an export format: Lottie, GIF or video

Example prompts for the agent

  • Help me set up squash and stretch for a bouncing ball in After Effects
  • Break the character animation into frames: wind-up, action, settle
  • Give me a decaying bounce expression for a layer's position

How to install after-effects

1Skills CLI (Vercel)

npx skills add dylantarre/animation-principles --skill after-effects -a claude-code

2Manually: put the files in place

~/.claude/skills/after-effects/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/after-effects/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about after-effects

How do I install after-effects in Claude?

Run npx skills add dylantarre/animation-principles --skill after-effects -a claude-code. The skill file lands at ~/.claude/skills/after-effects/SKILL.md.

What does after-effects do?

It covers Disney's 12 animation principles with After Effects techniques: expressions, frame-based timing, Graph Editor work and export options.

Do I need After Effects to use this skill?

Yes. Expressions and settings like Graph Editor or Onion Skin run in the app itself, while the agent only suggests structure and code.

Source text

SKILL.md · MIT
---
name: after-effects
description: Use when implementing Disney's 12 animation principles in Adobe After Effects
---

# After Effects Animation Principles

Implement all 12 Disney animation principles using After Effects' powerful animation tools.

## 1. Squash and Stretch

```javascript
// Expression for automatic squash/stretch
s = transform.scale[1];
x = 100 + (100 - s) * 0.5;
[x, s]
```

Or manually:
- Keyframe Scale X and Y inversely
- When Y compresses, X expands
- Maintain volume (X * Y ≈ constant)

## 2. Anticipation

Timeline structure:
- **0-10f**: Wind-up (crouch, pull back)
- **10-12f**: Transition
- **12-30f**: Main action
- **30-40f**: Settle

Use Easy Ease on anticipation keyframes for smooth wind-up.

## 3. Staging

Techniques:
- Use depth of field (Camera > Depth of Field)
- Apply blur to background layers
- Use vignettes to direct focus
- Adjust opacity of secondary elements
- Light the main subject brighter

## 4. Straight Ahead / Pose to Pose

**Pose to Pose (recommended):**
1. Set keyframes at key poses
2. Fill in breakdowns
3. Use Graph Editor to adjust timing

**Straight Ahead:**
- Animate frame-by-frame
- Use Onion Skin (Layer > Onion Skin)

## 5. Follow Through and Overlapping Action

```javascript
// Delay expression for child layers
thisComp.layer("Parent").transform.position.valueAtTime(time - 0.05)
```

Or:
- Offset child keyframes by 2-5 frames
- Use parenting with delayed wiggle
- Apply spring expression to end values

## 6. Slow In and Slow Out

- Select keyframes > F9 (Easy Ease)
- Graph Editor > Adjust bezier handles
- Steeper curve = faster movement
- Flatter curve = slower movement

```javascript
// Custom ease expression
ease(time, inPoint, outPoint, startValue, endValue)
```

## 7. Arc

Techniques:
- Draw motion path with Pen tool
- Use Position property's bezier handles
- Layer > Transform > Auto-Orient
- Apply path from shape layer to position

## 8. Secondary Action

- Animate main action first
- Add secondary on separate layer/property
- Offset timing slightly
- Secondary should complement, not compete

Example: Character waves → Hair follows → Clothing shifts

## 9. Timing

| Frames | Feel |
|--------|------|
| 2-4 | Snappy, instant |
| 6-8 | Quick, energetic |
| 12-15 | Normal pace |
| 20-30 | Slow, heavy |
| 40+ | Dramatic, weighted |

Adjust composition frame rate for overall feel (24fps cinematic, 30fps smooth).

## 10. Exaggeration

```javascript
// Overshoot expression
amp = 15;
freq = 3;
decay = 5;
t = time - key(numKeys).time;
if (t > 0) {
  value + amp * Math.sin(t * freq * Math.PI * 2) / Math.exp(t * decay);
} else {
  value;
}
```

Push values 20-50% beyond realistic:
- Larger scales
- Wider rotations
- More dramatic timing

## 11. Solid Drawing

- Use 3D layers for depth
- Apply cameras with perspective
- Animate Z position
- Use light and shadow
- Consider volume in all poses

## 12. Appeal

Design principles:
- Clear silhouettes at every pose
- Smooth curves over sharp angles
- Consistent character proportions
- Pleasing timing patterns
- Clean, readable motion paths

## Essential Expressions

```javascript
// Wiggle
wiggle(frequency, amplitude)

// Loop
loopOut("cycle")

// Time remap
timeRemap = linear(time, 0, duration, 0, 1)

// Bounce
n = 0;
if (numKeys > 0) {
  n = nearestKey(time).index;
  if (key(n).time > time) n--;
}
if (n == 0) t = 0;
else t = time - key(n).time;
amp = 80; freq = 3; decay = 8;
value + amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
```

## Export Options

- **Lottie**: Bodymovin plugin → JSON
- **GIF**: Media Encoder
- **Video**: H.264, ProRes
- **Sprite Sheet**: Scripts > Render Sprite Sheet

© dylantarre · MIT · dylantarre/animation-principles

Similar skills

Everything for Design →

after-effects by other authors comes first.

From the same set86

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor