SkillAgentSearch skills...

cut-the-curve

The technique catalog: five velocity-matched SEAMS (zoom-through, INVERSE zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus the two in-scene techniques — waterfall ENTRY (staggered arrival cascades for title cards / segment openers) and the nudge curve (slow-fast-slow three-phase…

Install / Use

npx skills add heygen-com/hyperframes --skill cut-the-curve

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

90/100

Supported Platforms

Universal

Tags

Our assessment of cut-the-curve

cut-the-curve scores 90/100 on our quality scale, 138th of 1,630 Development & Engineering skills we index (top 9%).

Its SKILL.md is 18 KB long, well organised into 14 sections and no code examples: a thorough specification that gives an agent plenty to work with.

With 52,778 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
30/30
Structure
13/20
Description
15/15
Adoption
20/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated today, so cut-the-curve is actively maintained.
  • It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

cut-the-curve compared with similar skills

All 4 of these similar skills score higher than cut-the-curve; compare them before choosing.

SkillScoreStarsUpdatedFormat
cut-the-curve (this skill)by heygen-com9052.8ktodaySKILL.md
ai-job-searchby MadsLorentzen10043.9k3d agoCLAUDE.md
claude-howtoby luongnv8910041.7k5d agoCLAUDE.md
algorithmic-artby anthropics100177.9k2d agoSKILL.md
pptxby anthropics100177.9k2d agoSKILL.md

Frequently asked questions

How do I install cut-the-curve?
Run npx skills add heygen-com/hyperframes --skill cut-the-curve. The install tabs above show the steps for each supported agent.
Which AI agents does cut-the-curve work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is cut-the-curve safe to use?
It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is cut-the-curve still maintained?
The repository was last updated today, so cut-the-curve is actively maintained.

name: cut-the-curve description: "The technique catalog: five velocity-matched SEAMS (zoom-through, INVERSE zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus the two in-scene techniques — waterfall ENTRY (staggered arrival cascades for title cards / segment openers) and the nudge curve (slow-fast-slow three-phase group slides). Covers partial-travel (~12% of frame) velocity matching via mirrored power4 eases, the Z scale-sign rule, size-scaled blur (10px text / 18-20px full-frame), word-by-word staggered cuts, cascade pacing by element weight, and the 10/65/25 slide ratio. Read before authoring any transition, text-beat handoff, kinetic text entry, or group reposition. [depth, zoom, inverse-zoom, scale-sign, mirrored-zoom, rack-focus, pacing, velocity, cut-the-curve, waterfall, stagger, cascade, kinetic-text, title-card, segment-opener, nudge, slide, easing, group-motion, z-depth, motion-graphics, cinematic, transition, blur, directional-continuity]" metadata: internal: true

Cut the Curve — the technique catalog

Five SEAM techniques, one principle: cut at peak velocity, match direction and speed on both sides of the cut — plus the two in-scene techniques (§6 arrivals, §7 slides). The seam LAW — vector law, the current, the ledger, the Seam Gate — lives in motion-doctrine; read it first. This skill is the parameters and mechanics. All GSAP code templates (worker + registry): examples/gsap-implementation.md.

Catalog

| # | Technique | Scope | Axis | Use for | | --- | -------------------------- | ------------------------------ | ------------------- | ------------------------------------------------------ | | 1 | Zoom-Through (forward) | Within-scene text swap | Z, toward viewer | progressing deeper into the same thought | | 2 | Inverse Zoom-Through | Arrival / payoff beat | Z, away from viewer | something bigger lands | | 3 | Cut the Curve | Between scenes | X / Y | the default boundary, the film's current | | 4 | Waterfall Cut | Text-to-text seam | X, per-word | word-level handoff between big-text beats | | 5 | Rack-Focus Blur-Cut | Same-surface state swap | X / Y / Z | the one cut you want SEEN — a DSLR focus-pull flourish | | 6 | Waterfall Entry | In-scene ARRIVAL (no seam) | Y, from below | title cards, segment openers, list intros | | 7 | Nudge Curve | In-scene group slide (no seam) | X / Y | repositioning a composed group to make room |

Z direction is a sign

"Same axis" is not enough on Z — the sign of d(scale)/dt must match across the cut:

| Z vector | Exit scale | Entry scale | Variant | | -------------- | ------------------- | -------------------- | -------------------- | | Push (forward) | growing 1 → 1.2 | growing 0.75 → 1 | zoom-through | | Pull (back) | shrinking 1 → 0.8 | shrinking 1.25 → 1 | inverse zoom-through |

Banned mirrors: a receding exit answered by a grow-from-small entry (pull flips to push — the common one, since grow-from-small is the default element entrance), and a push exit answered by an oversized retraction. This binds the incoming scene's OWN entrances during the seam window (cut + ~0.5s), not just the wrapper tween: hold the incoming frame composed, or author its entrance to match the sign. Verify per Seam Gate rule 7.

Blur logic (all Z variants)

| Subject | Peak blur | Why | | --------------------------------------------- | ----------- | -------------------------------------------------------------- | | Text-scale (headline, word group) | 10px | 20px smears letterforms — the cut reads as a glitch, not speed | | Full-frame surface (window, card, screenshot) | 18–20px | lighter blur on a big surface reads as a rendering hiccup |

Same peak blur on both sides at the swap frame. Blur the WRAPPER, never children.


1. Zoom-Through (forward)

Z-axis velocity-matched cut; never both texts visible. Everything GROWS: the outgoing text accelerates toward camera, a hard swap hides at peak blur, the incoming text keeps growing into the focal plane. Headlines and short phrases only. Total ≈ 0.4s.

| Phase | Scale | Blur | Opacity | Ease | Duration | | -------------- | -------- | -------- | ----------------- | ------------------------------------------ | -------- | | Exit | 1 → 1.2 | 0 → 10px | 1 → 0.15 | power3.in (opacity: separate none tween) | 0.2s | | Cut (tl.set) | in: 0.75 | 10px | out: 0 / in: 0.15 | — | — | | Entry | 0.75 → 1 | 10 → 0px | 0.15 → 1 | expo.out | 0.5s |

Exit opacity MUST be its own linear tween — power3.in holds opacity near 1 too long. On entry all properties share expo.out.

2. Inverse Zoom-Through (backward)

The pull-back mirror: the outgoing element RECEDES; the incoming arrives OVERSIZED (as if just behind camera) and retracts into the focal plane. Everything SHRINKS. Spend on ARRIVAL/payoff beats — a payoff line, a giant reply, a held end-state — never ordinary boundaries. Total ≈ 0.7s (30% exit / 70% entry).

| Phase | Scale | Blur | Opacity | Ease | Duration | | -------------- | -------- | -------- | ----------------- | ------------------------------------------ | -------- | | Exit | 1 → 0.8 | 0 → 10px | 1 → 0.15 | power3.in (opacity: separate none tween) | ~0.2s | | Cut (tl.set) | in: 1.25 | 10px | out: 0 / in: 0.15 | — | — | | Entry | 1.25 → 1 | 10 → 0px | 0.15 → 1 | expo.out | ~0.5s |

Blur is 10px text-scale; 18–20px only when both sides are full-bleed surfaces.

Sign discipline: the incoming scene arrives as a composed frame inside the retracting wrapper — no grow-from-small intro in the seam window. Staged entrances happen after the retraction settles, or start ≥1 and retract.

3. Cut the Curve (default scene boundary)

X/Y velocity-matched cut — the default for ALL scene-to-scene boundaries, in the film's current, not an accent. The outgoing hero accelerates in one direction, the cut lands mid-motion, the incoming hero continues the SAME direction and decelerates. Total ≈ 0.6s; directions LEFT / RIGHT / UP / DOWN (default LEFT).

Partial travel: ~12% of frame (≈230px at 1920) — never full off-screen moves.

| Direction | Exit | Entry start → end | | --------- | ------------- | ----------------- | | Leftward | x: 0 → −230 | x: +230 → 0 | | Rightward | x: 0 → +230 | x: −230 → 0 | | Upward | y: 0 → −230 | y: +230 → 0 | | Downward | y: 0 → +230 | y: −230 → 0 |

Mechanics:

  • Mirrored eases: exit power4.in + entry power4.out, same distance and duration — the two halves of one power4.inOut, so velocity matches exactly at the cut.
  • The fade trick: exit opacity completes at ~25–30% of its travel (fade ≈ 0.18–0.3s vs motion 0.3–0.34s); entry ignites at ~0.35 opacity mid-path. Time the last fading element to die right at the cut — a gap where nothing moves reads as dead air.
  • Exit 0.2–0.4s; entry ≥ exit. Optional blur 8–10px.
  • Stage ground: #root must be opaque (background: var(--canvas-deep, var(--canvas, #000))) — the mid-window cut opens a summed-opacity < 1 window that flashes white otherwise (see seam-craft).

push-slide exists but violates partial-travel and mid-motion phase; prefer cut-the-curve.

4. Waterfall Cut (word-by-word cut-the-curve)

Cut-the-curve at WORD granularity — the strongest leftward cut for text-to-text seams. Outgoing words ramp out on their own curves; incoming words cascade in mid-flight — a wave the eye rides across the seam.

Scope: worker-authored inside one multi-beat comp (stacked full-frame .beat layers), NOT a registry/injector type — it tweens word spans, not clip wrappers. The boundary into and out of the text-beat block still gets a normal registry transition. Does not count against the 2–3 transition budget.

| Parameter | Value | Why | | ------------------- | --------------------- | ------------------------------------------- | | Travel | ±230px (~12% frame) | partial travel + velocity > full-frame push | | Exit | 0.34s power4.in | the acceleration IS the cut | | Exit fade | 0.18s, starts with x | word gone by ~25–30% of travel — no smear | | Exit stagger | +0.022s reading order | the line peels, not a block slide | | Entry | 0.3s power4.out | back half of the composite — velocity match | | Entry start opacity | 0.35 | mid-path ignition; binary 0→1 pops | | Entry gaps | 0.05s × 0.84 decay | accelerating cascade, resolves composed |

Rules:

  • One direction per chain, riding the current. Inverse zoom is the chain's ARRIVAL beat only.
  • Pre-set all words to x: +230, opacity: 0 at build time — immediateRender: false alone leaves un-started words visible at rest.
  • A short first beat may exit whole-line: its fade ends ~0.02s before the cut so it is still streaking when the next words ignite — no dead gap.
  • Transform/opacity only (seek-safe); opaque stage ground applies.

5. Rack-Focus Blur-Cut (the visible cut)

The one variant where the cut is SEEN: a defocus blur SPIKE hides a single-frame hard swap — a handheld-DSLR focus-pull. Use as an occasional flourish for a state swap of the SAME surface within one visual theme; never the default boundary.

Differences from the others: outgoing stays FULLY OPAQUE until the cut (the blur hides the swap — no early fade); eases power2.in / power2.out (soft optics, not momentum).

Rules:

  • Fire only at a narrative beat, ≤ once per ~8s; never mid-caption or during a hold.
  • Cut at PEAK blur (≥6px; peak 8–12px, ≤16–18px max) — swapping on the way up shows the cut.
  • A subtle scale (~1.06 lens-breathing) sells it as optics.
  • Same direction on both sides — the vector law still holds. Entry ≥ exit duration.
  • Blur the wrapper; never blur + opacity in one tween on one element (headless compositing bug); never blur a <video> directly (wrap it).

6. Waterfall Entry (in-scene arrival — not a seam)

Staggered ARRIVAL cascade: words/elements whip in from below (one consistent direction), each starting before the previous settles — an accelerating wave that resolves into a composed layout. Title cards, segment openers, list/feature intros. The seam sibling is §4; do not mix their rules:

| | §6 Entry (arrival) | §4 Waterfall Cut (seam) | | ------------- | --------------------------------------------- | --------------------------------------------------------- | | Opacity | BINARY 0→1 via tl.set at entry — never fade | ignites at 0.35 mid-path — the fade IS the velocity trick | | Axis default | Y, from below | X, riding the current | | Outgoing side | none | words ramp out on mirrored power4.in |

Choreography:

  • Overlap, don't queue — next element starts within ±2 fram

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars52.8k
CategoryDevelopment
Updated15h ago
Forks4.8k

Languages

TypeScript

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

No cautions