HyperFrames Animation
heygen-com/hyperframes
Collects motion rules, scene blueprints, transitions and runtime adapters for HyperFrames video compositions, with GSAP as the default animation runtime.
Set the motion language for a piece before anything is animated — one easing family, one timing unit, one transition family, one stagger rhythm — and audit a timeline against it.
$ npx skills add nodetool-ai/nodetool --skill motion-direction -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nodetool-ai/nodetool motion-direction --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/system-skills/motion-direction .claude/skills/motion-direction && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "motion-direction" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/motion-direction into .claude/skills/motion-direction/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motion-direction", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/motion-directionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nodetool-ai/nodetool --skill motion-direction -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nodetool-ai/nodetool motion-direction --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/system-skills/motion-direction .agents/skills/motion-direction && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "motion-direction" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/motion-direction into .agents/skills/motion-direction/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motion-direction", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nodetool-ai/nodetool --skill motion-direction -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nodetool-ai/nodetool motion-direction --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/system-skills/motion-direction .cursor/skills/motion-direction && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "motion-direction" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/motion-direction into .cursor/skills/motion-direction/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motion-direction", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nodetool-ai/nodetool.git --path packages/system-skills/motion-direction--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nodetool-ai/nodetool --skill motion-direction -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nodetool-ai/nodetool motion-direction --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/system-skills/motion-direction .gemini/skills/motion-direction && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "motion-direction" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/motion-direction into .gemini/skills/motion-direction/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motion-direction", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nodetool-ai/nodetool motion-directionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nodetool-ai/nodetool --skill motion-direction -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/system-skills/motion-direction .github/skills/motion-direction && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "motion-direction" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/motion-direction into .github/skills/motion-direction/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motion-direction", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nodetool-ai/nodetool --skill motion-direction -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nodetool-ai/nodetool motion-direction --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/system-skills/motion-direction .opencode/skills/motion-direction && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "motion-direction" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/motion-direction into .opencode/skills/motion-direction/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motion-direction", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
motion-directionSet the motion language for a piece before anything is animated — one easing family, one timing unit, one transition family, one stagger rhythm — and audit a timeline against it.
Motion Direction is an agent skill from nodetool-ai/nodetool. Set the motion language for a piece before anything is animated — one easing family, one timing unit, one transition family, one stagger rhythm — and audit a timeline against it. Use when starting a title pass or a whole cut, when animation feels busy, cheap or inconsistent across shots, or when turning a brand or brief into motion rules an agent can follow. Not for individual clip mechanics — that is motion-graphics.
Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering Motion graphics. The repository describes itself as: Agent-first Creative Workspace. The licence is AGPL-3.0.
Read from SKILL.md and the folder at commit 58765d3. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Motion Direction loads about 3.3k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 1,807 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from nodetool-ai/nodetool at commit 58765d3, republished under its AGPL-3.0 licence (© nodetool-ai). 1,807 words, ~3,315 tokens.
.claude/skills/motion-direction/SKILL.md (or your agent's skills folder).Direction is the judgment layer above craft. It turns a brief into a short set of motion rules, so every shot reads as one hand. Most of the work is subtraction: deciding what does not move.
motion-principles gives the numbers. This decides which numbers the whole
piece is allowed to use.
Lock the motion language first, then animate to it. Pick one of each row below and reuse it. Consistency reads as confidence; variety reads as noise. When in doubt, repeat rather than invent.
Fill every row once, at the top of the job, and state it back to the user before
you animate. The rows guide the timeline document; motion-graphics owns the
tool calls.
| Row | Pick one | Example |
|---|---|---|
| Easing family | The easing string for roughly nine moves in ten | cubic-bezier(0.22,1,0.36,1) |
| Base timing unit | The atomic durationMs; everything else is a multiple | 400 — micro 200, hero 800 |
| Transition family | Which cut style this piece uses | crossfade only, hard cuts elsewhere |
| Stagger rhythm | One offsetMs and one from | 80ms, from: "start" |
| Motion intensity | The travel, scale and overshoot budget | distance ≤ 0.15, overshoot ≤ 1.05 |
| Hold discipline | Minimum stillness between moves | ≥ 400ms with nothing animating |
| Type family and weights | One bundled family and a weight for each text tier | Inter 800 for the hero, 400 for support |
| Space and focus | One camera path and a depth plan, if the piece needs 2.5D | Hero at depthPx: 0, background farther away |
| Shutter and texture | Which layers blur, echo, or step | Hero blur on the impact, background held |
Two easings maximum: one for entrances and landings, one for exits. A third has to justify itself.
For a showcase, hero, launch, or "best" piece, plan each scene with a background
bed, midground, foreground, and a grain or grade finish. Group each scene. Use
path shapes, masks, repeaters, style tracks, animation links, and effects where
they give the composition depth. Read the full document with get_timeline and
use set_timeline_document for fields edit_timeline cannot write, including
styleTracks and repeater.
Study a shipped reference before building. Call list_example_timelines to
choose a slug, then get_example_timeline to read its stats, scene catalog and
first scene excerpt. Use scene_id to choose another scene and clip_offset /
clip_limit to page through its layers. The CodeAct forms are
nodetool.timelines.examples.list() and
nodetool.timelines.examples.get("kite", {clip_limit: 12}). No library install
or repository filesystem is needed. Kite, Prism, Voltra and Tidewater show
different ways to group scenes and combine keyframed layers. Cadence shows a
vertical data story built from the chart helpers and a reusable component.
Build with the craft methods, not hand-keyframed fades. video({palette, fonts, ...}) from @nodetool-ai/sandbox-timeline gives every scene
s.backdrop(), s.glow(), s.flash(), s.kicker(), s.pill(),
s.streaks() and s.finish() — the vocabulary the shipped examples build
scenes from. A slam, a rise or a grow is el.enter()/el.animate() with the
right from/props (title.enter({from: {scale: 1.35, blur: 26, opacity: 0}})
is a slam), a count-up is el.count(), a draw-on is el.draw(). The depth
plan below maps directly onto the API — reach for one of these before a bare
animate() custom curve:
| Plane | Built with |
|---|---|
| Background bed | s.backdrop(), s.streaks(), a low-amplitude el.loop() |
| Midground | supporting elements, laid out in a container (frame-composition's s.stack/s.row) |
| Hero | the one element with the boldest el.enter()/el.animate(), on the beat |
| Finish | s.finish() inside each scene, or v.adjust() for a whole-video grade after v.series() |
Plan every showcase scene across all four before writing the hero's
animation. Read the pack documentation
(nodetool.packs.docs("@nodetool-ai/sandbox-timeline")) for every method's
signature. Budget for a generated still or music bed in a showcase unless the
user sets a cost limit.
After saving a showcase, call
validate_timeline with {"timeline_id":"<id>","tier":"showcase"}, or
nodetool.timelines.validate(id, {tier: "showcase"}). Address its warnings
about scene groups, custom keyframes, finish, camera and concurrent visual
layers. These checks inspect document structure. Preview the result to judge
composition and readability. Standard validation remains appropriate for
ordinary edits and intentionally minimal pieces.
Choose the family and weights in the motion-language spec before building text
clips. NodeTool ships Inter, Space Grotesk, Bebas Neue, Playfair Display,
Lora, and JetBrains Mono. Use one family across a piece and make the hero
visibly heavier than support, such as Inter 800 against 400. Bebas Neue ships
only at 400, so use size and spacing for contrast if you choose it.
On a 1920×1080 frame, start a hero title at 96–160 fontSizePx, support at
42–64, and a short kicker at 28–36. Keep large display tracking tight
(letterSpacingPx −2 to 1); open an uppercase kicker to 2–5px. Check the
actual words at the target frame size and adjust for fit and legibility.
For an existing text clip, edit_timeline can set the type as a
set_clip_params patch:
{"timeline_id":"<id>","ops":[{"op":"set_clip_params","target":"Hero title","textStyle":{"fontFamily":"Inter","fontWeight":800,"letterSpacingPx":-1,"fontSizePx":128}}]}timeline-edit-ops owns the full op contract. frame-composition handles
placement and safe areas for each aspect ratio.
Place the piece on two axes and commit. Mixing cells inside one piece is the usual cause of "inconsistent".
| Soft (organic, eased) | Sharp (precise, snappy) | |
|---|---|---|
| Calm | Luxury, wellness, editorial: long windows, generous holds, minimal stagger | Premium tech, finance: deliberate, clean, unhurried, no overshoot |
| Kinetic | Lifestyle, playful, kids: overshoot and spring, loose timing | Sports, hype, gaming: short windows, hard cuts, accents on beats |
The named preset that fills the spec's easing, timing and intensity rows. Pick one per project and hand it to every later step by name.
| Personality | durationMs | easing | Overshoot | Presets it lives on |
|---|---|---|---|---|
| Playful | 150–300 | easeOutBack or cubic-bezier(0.34,1.56,0.64,1) | overshoot 1.1–1.2 | pop, bounce, squash, float |
| Premium | 350–600 | cubic-bezier(0.4,0,0.2,1) | none | fade, blur, kenBurns, breathe |
| Corporate | 200–400 | cubic-bezier(0.2,0,0,1) | overshoot ≤ 1.03 | fade, slide, wipe |
| Energetic | 100–250 | easeOut with short windows | overshoot 1.15–1.3 | pop, flash, shake, spin |
Premium sits calm-soft, Corporate calm-sharp, Playful kinetic-soft, Energetic
kinetic-sharp. Default to Corporate for product and Playful for lifestyle.
easeOutElastic and easeOutBounce belong to Playful alone.
Rank every element, animate down the list, and stop early.
| Tier | What it is | How it moves |
|---|---|---|
| Hero | The one thing the moment is about | The boldest, longest, most-eased move; lands on the beat |
| Support | Context that helps the hero land | Smaller and faster, out of the way, never competing |
| Texture | Bed, grain, ambient drift | A loop preset at low amplitude; no hard events |
These are the three layers motion-principles names Primary, Secondary and
Ambient. If two elements compete for the eye in one frame, the direction failed:
demote one before touching its keyframes.
Hierarchy is also a track decision. Lowest track index renders on top, so the
hero belongs on a low index and the bed on a high one; a scrim sits between the
picture it darkens and the text it carries. For a camera move, set clip
transform.depthPx separately from track order. The sequence's camera2d
can keyframe position and depth while focusDepthPx and aperturePx decide
which plane softens. Keep one plane legible while the others move.
Use layout (a flex container on a group clip, its real children via
parentId) for elements whose spacing should survive a text or shape
change: flexDirection: "row" | "column" with gap keeps siblings apart,
and a plate sized from live text is a flexItem: {position: "absolute", inset: 0} sibling in a padded container. Use
animationLinks when one clip should follow another's authored position,
scale, rotation, or opacity. Linked followers share one motion decision;
they do not chain through a second link.
For every element ask whether the motion carries meaning. If not, hold it still.
wipe cut under a spin in
under a flash is three ideas competing for 500ms.fade in ramps twice and reads
slower than either alone. Pick one.Map energy across the whole timeline before timing any single move: a low open,
a build, one peak, a settled end. Vary it on purpose — tension, then release.
Stillness is pacing, not a gap. beat-sync-editing turns this shape into cut
points.
An animation's beat anchor follows the document tempo: one-based index,
scope: "clip" or "sequence", and optional offsetMs. A measured audio
curve from bake_audio_animation follows the audio source instead. Use the
former for a rhythmic rule and the latter when a real onset or envelope must
drive the picture. stagger_animations offsets existing animations across an
ordered list of clip IDs while leaving media timing fixed.
Choose motion texture deliberately. repeater makes positioned, delayed
copies of one clip; temporalEcho trails it with fading delayed copies;
steppedTime quantizes its clock. Per-clip motionBlur controls its own shutter
angle and minimum sample count. When layers request different counts, the
scene uses the highest count up to 32 and samples each layer evenly across its
own shutter. Give blur to the fast hero when it clarifies direction, then
inspect the held frame for readability.
Write intent, not keyframes. One line per shot is enough for someone else — or a later turn — to animate it:
Shot 3, 4s. Hero: the price plate,
popin on the downbeat, Corporate. Support: the caption 80ms behind it,fade. Texture: bed holdskenBurnsfrom shot 2. Nothing else moves.
For a repeated title or logo system, inspect list_compositions before
building bare clips. title-slam, word-cards, and logo-sting are starting
rigs when their timing matches the brief. motion-graphics owns the tool
contract. set_clip_params does not accept the new camera, layout, link,
repeat, echo, step, or per-clip blur fields; author those through the full
document with set_timeline_document after reading it with get_timeline.
Before calling a pass done, read the document back with get_timeline and check
every clip against the spec. A miss is a direction defect, not a preference.
linear outside loops.durationMs a multiple of the base unit.offset_ms order for cross-clip builds.Inter, Space Grotesk,
Bebas Neue, Playfair Display, Lora, JetBrains Mono. Anything else
reports font_not_portable and resolves differently per host.Then look: preview_timeline_frame over the midpoints of the moves you just
audited. An audit that only read the document has checked the spec, not the
picture.
Run the review pass motion-graphics owns (its ## Review pass) once, not
twice per piece — contact sheet, per-scene checklist, example comparison,
tier: "showcase" validation, and a real revision. Judge what comes back
against this page's spec too: does the busiest scene still respect Motion
hierarchy, does Restraint survive under the example's density, is the chosen
Motion personality still legible once the gaps are closed.
© nodetool-ai, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in packages/system-skills/motion-direction of nodetool-ai/nodetool.
Open the folder on GitHubat commit 58765d3
Motion Direction next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Motion Direction this skillnodetool-ai/nodetool | 560 | — | ~3.3k | Automated safety check: Pass | AGPL-3.0 | |
| HyperFrames Animationheygen-com/hyperframes | 59k | 3 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Slack GIF Creatoranthropics/skills | 180k | 29 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Stitch to Remotion Walkthrough Videosgoogle-labs-code/stitch-skills | 8.4k | 6 repos | ~3.2k | Automated safety check: Notes | Apache-2.0 | |
| Faceless Explainer Videoheygen-com/hyperframes | 59k | 3 repos | ~7.7k | Automated safety check: Notes | Apache-2.0 | |
| Video ShotcraftVincentwei1021/video-shotcraft | 11k | — | ~2.6k | Automated safety check: Pass | Apache-2.0 |
heygen-com/hyperframes
Collects motion rules, scene blueprints, transitions and runtime adapters for HyperFrames video compositions, with GSAP as the default animation runtime.
anthropics/skills
Provides Slack size and frame limits, Python animation helpers and validators for building animated GIFs sized for emoji and messages.
google-labs-code/stitch-skills
Builds walkthrough videos from Stitch design projects using Remotion, with transitions, zoom effects and text overlays on each screen.
heygen-com/hyperframes
Turns an article, notes or a topic brief into an explainer video whose visuals are invented per scene, built frame by frame in HyperFrames with no footage.
Vincentwei1021/video-shotcraft
Makes cinematic product videos with Remotion from shot recipe cards, a ready template, real page screenshots, camera moves and sound design, or builds a single animated shot.
heygen-com/hyperframes
Imports Figma assets, brand tokens, components and motion into a HyperFrames video composition, using the Figma REST API with a connector or native export for shaders.
nodetool-ai/nodetool
Cut a NodeTool timeline to music and shape its pacing — detect the beat grid, place cuts on phrases, pick a cut type, build speed ramps with time remap, and give the piece an arc.
nodetool-ai/nodetool
Add and animate a consistent text layer on an existing NodeTool timeline.
nodetool-ai/nodetool
Choose and animate colour on a NodeTool timeline, including shape and text gradients, colour grades, 3D LUTs, and dither.
nodetool-ai/nodetool
Write a shootable, precisely timed commercial beat sheet and store it as a NodeTool storyboard, with a consistent entity roster behind every shot.
nodetool-ai/nodetool
Direct ElevenLabs speech, dialogue, sound effects and music — the bracketed audio tags v3 acts on and why the voice decides whether a tag lands, stability as the delivery dial, punctuation instead…
nodetool-ai/nodetool
Stage the frame on a NodeTool timeline — grids, focal placement, safe areas per aspect ratio, depth layers and parallax, camera moves, and where elements enter and leave.
Categories
Set the motion language for a piece before anything is animated — one easing family, one timing unit, one transition family, one stagger rhythm — and audit a timeline against it. Motion Direction is an agent skill from nodetool-ai/nodetool. Set the motion language for a piece before anything is animated — one easing family, one timing unit, one transition family, one stagger rhythm — and audit a timeline against it.
Motion Direction fits situations like: starting a title pass; animation feels busy; inconsistent across shots; turning a brand.
Run `npx skills add nodetool-ai/nodetool --skill motion-direction -a claude-code`. Or copy the skill folder (packages/system-skills/motion-direction in nodetool-ai/nodetool) into .claude/skills/motion-direction in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nodetool-ai/nodetool --skill motion-direction -a codex`. Or copy the skill folder (packages/system-skills/motion-direction in nodetool-ai/nodetool) into .agents/skills/motion-direction in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nodetool-ai/nodetool --skill motion-direction -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/motion-direction, .gemini/skills/motion-direction, .github/skills/motion-direction and .opencode/skills/motion-direction in your project.
SKILL.md names no scripts, command-line tools or credentials: Motion Direction is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Motion Direction is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Motion Direction: HyperFrames Animation (heygen-com/hyperframes, 59k stars), Slack GIF Creator (anthropics/skills, 180k stars), Stitch to Remotion Walkthrough Videos (google-labs-code/stitch-skills, 8.4k stars) and Faceless Explainer Video (heygen-com/hyperframes, 59k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nodetool-ai (a GitHub organization) maintains it in nodetool-ai/nodetool, which has 560 GitHub stars. The repository holds 127 skills in this directory. The repository was last updated on October 9, 2026.
Source: nodetool-ai/nodetool on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.