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
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
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
- Route map
- The Vector Law
- The Current
- The Vector Ledger
- Carriers
- Causal Motion
- The Seam Gate (build gate — run the verifier, exit 0 or the seam is not done)
- No idle wobble
- Stillness before climax
- Timing intents
- Transition vocabulary
- 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
- Files
- 4 files including SKILL.md (references/seam-gate.md, scripts/seam-gate.mjs, scripts/seam-stamp.mjs)
- skills.sh audits
- Gen Agent Trust Hub pass, Socket pass, Snyk pass
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 LawOne 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 Currentledger.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 LedgerHand 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 motionGenerate 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.mjsNumeric 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.mjsFive 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 wobbleA 0.3 to 0.75 second pause
Placed between the major action and its result.
Stillness before climaxEntry, 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 intentsTwo 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 to | localhost 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
- Repository
- heygen-com/hyperframes
- Folder
.agents/skills/motion-doctrine
Sources
Docs, issue trackers and discussions this page is built from.
Show all 7Hide
- skills CLI troubleshooting and configuration · github.com
- skills CLI: creating skills (metadata.internal) · github.com
- heygen-com/hyperframes README · github.com
- motion-doctrine SKILL.md · github.com
- motion-doctrine references/seam-gate.md · github.com
- seam-gate.mjs · github.com
- seam-stamp.mjs · github.com