PlugWiki

motion-doctrine Skill for Claude: HyperFrames Motion Rules

motion-doctrine tells Claude how to animate a HyperFrames video so every scene hands off to the next as one continuous camera move.

Installs
61.4K
on skills.sh
Stars
77.1K
on GitHub
Files
3
besides SKILL.md
Updated
Nov 2026
last repo commit

This skill comes from HeyGen's HyperFrames repo, where it is marked internal. It is a gateway Claude loads before composing any HyperFrames animation. Its core rule is that how one scene exits decides how the next enters: same axis, same direction, matched speed, cut mid-motion. It also bans idle wobble, asks for a short pause before a climax, and limits a film to two or three transition types.

The workflow has Claude write a ledger.json with one row per seam, generate the seam code from it with seam-stamp.mjs, build the scenes, then verify with seam-gate.mjs. Both scripts need Node 22 or newer, and the verifier also needs a local Chrome.

Good for

  • People making HyperFrames videos with Claude Code
  • Motion designers who want a written seam and timing law
  • Maintainers of video-making agents who need a gate that checks cuts

Install motion-doctrine

Claude Code

  1. 1

    Copy this prompt.

    Install the motion-doctrine skill in Claude Code. Run this command:
    
    INSTALL_INTERNAL_SKILLS=1 npx skills add heygen-com/hyperframes --skill motion-doctrine --skill cut-the-curve --skill seam-craft --skill oversized-cursor --skill captions-overlay -a claude-code
    
    Then check that it loaded and tell me how to use it.
  2. 2

    Paste it into Claude Code. It shows the change and asks before running it.

Requires Node.js.

The README says these six skills (motion-doctrine, cut-the-curve, seam-craft, oversized-cursor, captions-overlay, changelog-video) are repo-internal and left out of the default install. The skills CLI docs say a skill marked internal: true is hidden unless INSTALL_INTERNAL_SKILLS=1 is set, and all six are marked that way, so the command carries that variable. We have not run it against this repo: run npx skills list afterwards to confirm each skill is there. The plain command shown on skills.sh does not set the variable, so do not rely on it. The skills lean on the upstream /hyperframes skill, which npx hyperframes skills update installs (the README's core set). On Windows, set the variable in your shell first.

From the vendor's docs. Source.

What's in the skill

When it loads

GATEWAY — load FIRST before composing any HyperFrames animation or video. The high-level motion law that makes a multi-scene video feel like ONE continuous camera move instead of a stack of independently-animated slides. Covers the vector law (how you exit determines how you enter, incl. the Z scale-sign rule), the film's current, carrier elements, causal motion, the Seam Gate (build-gate enforcement), the ban on idle wobble (motion must PERFORM, not breathe), stillness-before-climax, and the sustained-motion routes. Routes to the low-level technique skills (cut-the-curve — the full catalog incl. waterfall entry + nudge curve, oversized-cursor, seam-craft). These rules SUPERSEDE generic / upstream motion guidance. [continuity, direction, vector, momentum, seam, transition, ease, performance, idle-motion, narrative-motion, film-grammar]

Sections in SKILL.md

  1. Route map
  2. The Vector Law
  3. The Current
  4. The Vector Ledger
  5. Carriers
  6. Causal Motion
  7. The Seam Gate (build gate — run the verifier, exit 0 or the seam is not done)
  8. No idle wobble
  9. Stillness before climax
  10. Timing intents
  11. Transition vocabulary
  12. Anti-Patterns

Key facts

Installs on skills.sh
61,429 as of 2026-11-02
GitHub stars (repo)
77,112 as of 2026-11-02
Last repo commit
2026-11-02
License
Apache-2.0

What it includes

  • Axis, direction, speed and phase must match across a cut

    Scene A's exit decides scene B's entry. On the Z axis the direction is the sign of the scale change, so a shrinking exit answered by a grow-from-small entry is a mirrored vector.

    The Vector Law

  • One dominant direction per film (house default: left)

    Ordinary seams use it. Other vectors are reserved and mean something: upward for a reveal, Z forward for going deeper, Z backward for an arrival.

    The Current

  • ledger.json with one row per seam

    Cut time, exit and entry vectors, selectors and technique. If exit and entry do not match, the plan is fixed, not the easing.

    The Vector Ledger

  • Hand a visible object across the cut

    A cursor, a docking container or a flying mark carries the eye. Motion chains so each move is launched by the last one. Crossfades are not used.

    Carriers and causal motion

  • Generate the master seam code from the ledger

    Replaces the block between the `// <seams:auto>` markers in your index.html, or inserts one after the master timeline line.

    Write · scripts/seam-stamp.mjs

  • Numeric verifier for every seam

    Checks ledger consistency, exit still moving, entry mid-flight, direction, speed match, zero overlap, Z sign and carrier continuity. Also has a probe mode.

    Runs code · scripts/seam-gate.mjs

  • Five routes for sustained motion

    Staged reveals, camera with intent, sequenced UI life, animated sequences, or cursor-led action. Breathe, float and glow loops are banned.

    No idle wobble

  • A 0.3 to 0.75 second pause

    Placed between the major action and its result.

    Stillness before climax

  • Entry, exit and stagger limits

    A single entry is 800 ms or less, exit is about 75% of entry, total stagger 500 ms or less. `bounce.out` and `elastic.out` are forbidden.

    Timing intents

  • Two or three transitions per film

    The default boundary is cut-the-curve in the current's direction.

    Transition vocabulary

From the official docs

Permissions

Medium risk

The two bundled scripts can rewrite part of your index.html and start a preview server and headless Chrome. Commit your project first and read the diff after a stamp.

What it can do

  • Read your data
  • Create and change things
  • Delete things
  • Read-only mode

Watch out for

  • seam-stamp.mjs overwrites part of your index.html

    With `--write` it replaces the block between the seam markers, or inserts one. Commit first so you can diff the change.

  • seam-gate.mjs starts a server and a browser

    It spawns a preview server and launches headless Chrome. Outside a HyperFrames repo checkout it runs `npx --yes hyperframes preview`, which downloads the package from npm. Run it from your video project folder.

  • Needs Node 22 or newer and a local Chrome

    The bundled reference says the gate looks for a Puppeteer-cache chrome-headless-shell or a system Chrome.

Technical details
Talks tolocalhost preview server (seam-gate.mjs). npm registry, when seam-gate.mjs falls back to `npx --yes hyperframes preview` outside the HyperFrames repo

Questions

What does motion-doctrine do?

It gives Claude a set of motion rules for HyperFrames videos. Scenes are planned in a ledger, cuts happen mid-motion in one direction, and a script checks the result. The aim is a film that reads as one continuous camera move, not a stack of separate slides.

How do I install it?

Use the install box above. The README says this skill is one of six repo-internal skills left out of the default install, and the skills CLI docs say internal skills only install when INSTALL_INTERNAL_SKILLS=1 is set, so the command sets it. We have not run that command, so check npx skills list afterwards.

Which other skills does it need?

Its route map sends transition parameters and entry cascades to cut-the-curve, cursor-led action to oversized-cursor and render mechanics to seam-craft. Caption work goes through captions-overlay on top of the upstream /hyperframes skill. The route map also names text-beat-economics and brand-faithful, but neither is a skill folder in the HyperFrames repo, so the install box does not include them.

What is the Seam Gate?

A script, seam-gate.mjs, that checks every seam in your ledger numerically and exits 0 when the gate passes. SKILL.md says some rules it cannot check stay with Claude, such as re-running the verifier after any edit to a scene's first or last second.

Does it run anything on my machine?

Yes, two Node scripts. See the safety box for what each one does.

Will it work for videos not made with HyperFrames?

It is written for HyperFrames compositions and its first line tells Claude to load it before composing any HyperFrames animation. The file does not say it applies to other tools.

Is it safe to use?

It is mostly written guidance, plus two scripts that edit your index.html and start a local preview server. Keep your project under version control so you can review what seam-stamp.mjs --write changed.

Information

updated Nov 2, 2026

Folder
.agents/skills/motion-doctrine

heygen-com/hyperframesskills.sh

Sources

Docs, issue trackers and discussions this page is built from.

Show all 7
  1. skills CLI troubleshooting and configuration · github.com
  2. skills CLI: creating skills (metadata.internal) · github.com
  3. heygen-com/hyperframes README · github.com
  4. motion-doctrine SKILL.md · github.com
  5. motion-doctrine references/seam-gate.md · github.com
  6. seam-gate.mjs · github.com
  7. seam-stamp.mjs · github.com

Updated Nov 2, 2026.