Agent skill

Motion Graphics

by nodetool-ai in nodetool-ai/nodetool

Build and review a NodeTool timeline piece — the motion agent's entry point.

AGPL-3.0Auto-check passedMedia & Creative

Install Motion Graphics

skills CLI
$ npx skills add nodetool-ai/nodetool --skill motion-graphics -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install nodetool-ai/nodetool motion-graphics --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-graphics .claude/skills/motion-graphics && rm -rf skills-src

Use ~/.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/

Facts

Skill name
motion-graphics
GitHub stars
560
Token cost
~2.8k tokens
SKILL.md length
1,408 words
Files
1
Skills in repo
127
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Build and review a NodeTool timeline piece — the motion agent's entry point.

  • Works in 5 steps: Contact sheet. preview_timeline_frame… → Per-scene checklist, answered in writing… → Compare against a reference. Pick the… → …
  • Clip entrances and exits
  • SKILL.md covers Before the first edit of a new…, Load other craft skills for…, The build loop and Choose the authoring surface, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Motion Graphics is an agent skill from nodetool-ai/nodetool. Build and review a NodeTool timeline piece — the motion agent's entry point. Covers the build loop, choosing between the code pack and edit ops, the revise-by-editing-the-script loop, and the review pass. Use for title cards, kinetic text, lower thirds, clip entrances and exits, and layered motion.

Its SKILL.md is about 2.8k 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.

When your agent uses it

  • Clip entrances and exits
  • Tasks that involve Motion graphics

Example prompts

  • “/motion-graphics”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Contact sheet. preview_timeline_frame with sheet: true, sampling
  2. Per-scene checklist, answered in writing before you touch an op
  3. Compare against a reference. Pick the closest scene with
  4. Validate at the showcase tier. `validate_timeline(id, {tier
  5. Revise, then re-run this pass. Make at least one revision that changes

What it can do on your machine

Read from SKILL.md and the folder at commit 58765d3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json and javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Motion Graphics loads about 2.8k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 1,408 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~79
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from nodetool-ai/nodetool at commit 58765d3, republished under its AGPL-3.0 licence (© nodetool-ai). 1,408 words, ~2,836 tokens.

Download SKILL.mdSave it as .claude/skills/motion-graphics/SKILL.md (or your agent's skills folder).
name
motion-graphics
description
Build and review a NodeTool timeline piece — the motion agent's entry point. Covers the build loop, choosing between the code pack and edit ops, the revise-by-editing-the-script loop, and the review pass. Use for title cards, kinetic text, lower thirds, clip entrances and exits, and layered motion.
featured
true

Motion Graphics → Timeline Agent

Before the first edit of a new piece

When starting a piece from a brief, load motion-direction and motion-principles with load_skill before the first timeline edit. Use them to set the motion language and timing for the whole piece. Do not start animating from this file alone.

If the piece has a title layout or an end card, also load frame-composition before that first edit. If it has an end card, load logo-reveal too. These loads are required even when this skill was the only one selected from the catalog.

For showcase, hero, launch, or "best" briefs, follow motion-direction's depth plan and example timelines before writing scenes.

Motion is built, then checked. Author with the pack or with ops (below), then look at the frames with preview_timeline_frame. A change you have not looked at is not done.

Load other craft skills for the job

This file is the build loop and the entry point, not the op contract. After the required loads above, load other relevant craft skills for the job and come back here to pick the authoring surface.

The questionSkill
Where do the cuts land, how do I pace it, how do I ramp a hitbeat-sync-editing
Which colours, in what order do I grade, what can actually movecolor-motion
A preset is close but not right; overshoot, decay, wiggle, arc, draw-onmotion-curves
An ambient bed behind the contentmotion-background

Three are neighbours rather than layers. caption-titles decides what text says and when it appears. video-audio-continuity decides, before the first clip renders, whether a multi-scene piece's sound comes from one generated clip or from a track of your own — a decision this file's ops cannot undo. The board skills (explainer-storyboard, commercial-beat-sheet, launch-commercial, music-video-treatment, trailer-template) decide the shots before there is a timeline to animate; assemble_storyboard_timeline is where their board becomes this file's document.

Anything generated for the timeline — a bed, a sting, a voice, a clip — has a model line with its own guide. find_model returns prompting_skill on a route it covers; load_skill it before writing that prompt.

The build loop

Build a piece in four moves: direct (fix the motion language and the scene list before writing anything — motion-direction and, when there is a title or end card, frame-composition/logo-reveal), build (write the scenes in code, one v.scene per beat), save (v.save() attaches the code; read saved.code and saved.warnings), review (the pass below). Revise by editing that script — see below — and repeat the last two steps. A piece that renders clean on the first save has not been looked at yet.

Choose the authoring surface

Two ways to touch a timeline document. Pick by what changed, not by habit.

SituationSurface
A new cut, or a scene with more than a few clips@nodetool-ai/sandbox-timeline (code)
A few edits to a cut that already exists — retiming a clip, swapping a preset, nudging a staggeredit_timeline ops

Code, for a new cut. In a JS script or a Code node, import { video } from "@nodetool-ai/sandbox-timeline". Its video() builds a document of scenes (v.scene(name, seconds, fn), local time in seconds), lays them out with v.series([...]), and v.save(nodetool.timelines, {...}) writes the whole document in one call and returns {timeline_id, errors, warnings}. A cut with hundreds of keyframed clips costs a handful of API calls this way, instead of one edit_timeline op per clip. NodeTool's shipped example timelines (Cadence, Kite, Prism, Voltra, Tidewater, T minus 30) are built with it. Its full signatures, options and gotchas are the pack's own skill — read nodetool.packs.docs("@nodetool-ai/sandbox-timeline") before writing scenes, not this file. frame-composition covers how to lay out what goes inside a scene; this file covers the build loop and the ops surface below.

Ops, for an edit. edit_timeline takes a timeline ID and an ops array, run in order, up to 60 per call:

json
{"timeline_id":"<id>","ops":[{"op":"animate_clip","target":"Title","animations":[{"role":"in","preset":"fade","durationMs":400}]}]}

Its full op shapes, what each op refuses, and when a change instead needs a whole-document set_timeline_document write are timeline-edit-ops — load it before a batch of ops, not this file.

A compact two-scene piece

The build loop end to end: a backdrop, a laid-out title block, a counter, a transition, a finish pass, save, then read the warnings.

js
import { video } from "@nodetool-ai/sandbox-timeline";

const v = video({
  width: 1920, height: 1080, fps: 30,
  palette: { ink: "#06110e", ink2: "#0c2a21", text: "#f4fbf8", accent: "#34d399" },
  fonts: { display: "Space Grotesk", body: "Inter" }
});

const hello = v.scene("Hello", 2.5, (s) => {
  s.backdrop();
  const kicker = s.kicker("LIVE");
  const title = s.text("Round-ups", { size: 120, weight: 700, font: "display" });
  const sub = s.text("on every card", { size: 40, color: "#8fb3a6" });
  s.stack([kicker, title, sub], { gap: 20 }); // frame-composition: a title block
  title.enter({ from: { scale: 1.2, opacity: 0 }, dur: 0.3, ease: "outExpo" });
  sub.enter({ from: { offsetY: 24, opacity: 0 }, at: 0.15, dur: 0.25 });
});

const outro = v.scene("Outro", 1.8, (s) => {
  s.backdrop({ colors: ["#0f3b2e", "#06110e"] });
  const counter = s.text("$0.00", { size: 96, font: "display" });
  counter.count({ from: 0, to: 1.6, dur: 1.2, prefix: "$", decimals: 2 });
  s.finish({ vignette: 0.2, grain: 0.05 });
});

v.series([hello, v.transition("wipe", 0.3, { direction: "left" }), outro]);

const saved = await v.save(nodetool.timelines, { name: "Round-ups", showcase: true });
if (saved.warnings.length) {
  // read them before calling this done — see Review pass below
}

Author and revise with code

v.save(nodetool.timelines, {...}) attaches the code that rebuilds the timeline as its source — no separate code.set call. The stored code is the retained program: the scene callbacks and the helpers they use, with every research result, generated asset id and loop value written in as a literal. The calls that produced those values ran once, in your action, and a rebake never repeats them. saved.code.embedded is false, with the reason in saved.code.warnings, when a scene callback calls nodetool.*, uses Math.random()/Date.now(), or reads a value that is not plain data. Do the research and generation at the top level, then build the scenes from the results. To attach code after the fact, nodetool.timelines.code.set(timeline_id, code) bakes the code, which must build the timeline without a capability call.

Revising a code-backed timeline is: code.get(id) → code.edit(id, edits) with a few small exact string replacements (each old matches exactly once) → read the conflicts and warnings it answers → look at frames. This is the review → revise → rerun loop from the build loop above, made cheap — a two-line diff instead of a 500-line resend. edit_timeline ops still apply for a timeline with no code, or a deliberate hand tweak — timeline-edit-ops owns that contract and what it costs a code-backed scene. The pack's own skill (@nodetool-ai/sandbox-timeline) covers what code-backed identity means for scene names and clip ids; api-timelines owns the full code.* call contract.

Show full SKILL.md (489 more words)Show less

Review pass

For a showcase, hero, launch, or "best" piece, critique like a director before calling it done. A render with no errors is not a finished piece — this pass is part of the job, not a step to skip when the frames look clean. Reserve rounds for it: the run budget is shared with authoring, so budget for at least one full pass plus one revision, not just the build.

  1. Contact sheet. preview_timeline_frame with sheet: true, sampling every scene at its entrance, its hero hold, and its exit.
  2. Per-scene checklist, answered in writing before you touch an op:
    • What does the eye follow first, and is that the intended hero?
    • What moves in the background? A static bed behind the action is a finding, not a pass.
    • Does any text touch or get crossed by a shape?
    • How much of the frame is actually used? Look yourself — the validator's showcase_frame_underfilled check is a bounding-box proxy and can miss a thin outline or ring that reads as sparse against an empty backdrop.
    • Does every number that is supposed to count actually count, and finish while it is still on screen?
    • How does the scene exit and the next one enter? A default crossfade on a showcase brief is a finding to name, not the absence of one.
  3. Compare against a reference. Pick the closest scene with examples.list() / examples.get(slug). Render matching-beat sheets of your piece and that example with preview_timeline_frame, sheet: true, mapping beats across differing durations and sampling the middle of a move. Call view_image on both with this explicit question: "Compared with the example, what is missing in layer count, secondary motion, texture and light, and camera depth? Name the beat and the gap." Read how the example scene was actually built with examples.source(slug) when the clip excerpt alone does not explain a moment — a repeater's phase offsets, a two-pass text effect, a shared id scheme. compare_timeline_frames cannot target a shipped example — both its sides must be your own timeline (an id, version or document) — so use it after a revision to prove which frames actually changed, not to judge against a reference.
  4. Validate at the showcase tier. validate_timeline(id, {tier: "showcase"}) returns errors and warnings — there is no issues field. Every showcase_* warning is a hard stop: resolve it, or state the specific artistic exclusion to the user before rendering. Expect showcase_scene_groups_missing, showcase_custom_motion_missing, showcase_finish_missing, showcase_camera_missing, showcase_layer_density_low, showcase_scene_group_density_low, showcase_custom_animation_density_low, showcase_effect_variety_low, showcase_clip_density_low, showcase_motion_blur_missing, plus showcase_frame_underfilled, showcase_text_collision, showcase_motion_range_narrow and showcase_dead_motion. Each names a shipped example to study. Zero warnings is a structural floor, not a craft verdict — the medians in the warning text are the design target.
  5. Revise, then re-run this pass. Make at least one revision that changes the composition itself, not only a fix for a validator error, before calling the piece done. Then repeat steps 1–4 on the result. Stopping at the first clean render is the failure this pass exists to catch.

© 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

Files

Just SKILL.md in packages/system-skills/motion-graphics of nodetool-ai/nodetool.

Open the folder on GitHubat commit 58765d3

Compare with similar skills

Motion Graphics 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.

Motion Graphics compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Motion Graphics this skillnodetool-ai/nodetool560—~2.8kAutomated safety check: PassAGPL-3.0
HyperFrames Animationheygen-com/hyperframes59k3 repos~2.1kAutomated safety check: PassApache-2.0
Slack GIF Creatoranthropics/skills180k29 repos~2kAutomated safety check: PassApache-2.0
Stitch to Remotion Walkthrough Videosgoogle-labs-code/stitch-skills8.4k6 repos~3.2kAutomated safety check: NotesApache-2.0
Faceless Explainer Videoheygen-com/hyperframes59k3 repos~7.7kAutomated safety check: NotesApache-2.0
Video ShotcraftVincentwei1021/video-shotcraft11k—~2.6kAutomated safety check: PassApache-2.0

Similar skills

  • 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.

    59k GitHub starsUsed in 3 repos~2.1k tokens
    Media & CreativeAuto-check passed
  • Slack GIF Creator

    anthropics/skills

    Official

    Provides Slack size and frame limits, Python animation helpers and validators for building animated GIFs sized for emoji and messages.

    180k GitHub starsUsed in 29 repos~2k tokens
    Media & CreativeAuto-check passed
  • Stitch to Remotion Walkthrough Videos

    google-labs-code/stitch-skills

    Official

    Builds walkthrough videos from Stitch design projects using Remotion, with transitions, zoom effects and text overlays on each screen.

    8.4k GitHub starsUsed in 6 repos~3.2k tokens
    Media & CreativeAuto-check: notes
  • Faceless Explainer Video

    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.

    59k GitHub starsUsed in 3 repos~7.7k tokens
    Media & CreativeAuto-check: notes
  • Video Shotcraft

    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.

    11k GitHub stars~2.6k tokensUpdated 4 days ago
    Media & CreativeAuto-check passed
  • Figma to HyperFrames

    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.

    59k GitHub starsUsed in 3 repos~4.5k tokens
    Media & CreativeAuto-check: notes

More from nodetool-ai/nodetool

All 127 skills in this repo
  • Beat Sync Editing

    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.

    560 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Caption Titles

    nodetool-ai/nodetool

    Add and animate a consistent text layer on an existing NodeTool timeline.

    560 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Color Motion

    nodetool-ai/nodetool

    Choose and animate colour on a NodeTool timeline, including shape and text gradients, colour grades, 3D LUTs, and dither.

    560 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Commercial Beat Sheet

    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.

    560 GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Elevenlabs Audio Prompting

    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…

    560 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Frame Composition

    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.

    560 GitHub stars~3.5k tokensUpdated today
    Auto-check passed

Questions about Motion Graphics

What does Motion Graphics do?

Build and review a NodeTool timeline piece — the motion agent's entry point. Motion Graphics is an agent skill from nodetool-ai/nodetool. Build and review a NodeTool timeline piece — the motion agent's entry point.

When should I use Motion Graphics?

Motion Graphics fits situations like: clip entrances and exits; tasks that involve Motion graphics.

How do I install Motion Graphics in Claude Code?

Run `npx skills add nodetool-ai/nodetool --skill motion-graphics -a claude-code`. Or copy the skill folder (packages/system-skills/motion-graphics in nodetool-ai/nodetool) into .claude/skills/motion-graphics in your project. Claude Code loads it when a task matches its description.

How do I install Motion Graphics in Codex?

Run `npx skills add nodetool-ai/nodetool --skill motion-graphics -a codex`. Or copy the skill folder (packages/system-skills/motion-graphics in nodetool-ai/nodetool) into .agents/skills/motion-graphics in your project. Codex loads it when a task matches its description.

Can I use Motion Graphics in Cursor, Gemini CLI or GitHub Copilot?

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-graphics -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-graphics, .gemini/skills/motion-graphics, .github/skills/motion-graphics and .opencode/skills/motion-graphics in your project.

What does Motion Graphics need to run?

SKILL.md names no scripts, command-line tools or credentials: Motion Graphics is instructions for the agent only.

Does Motion Graphics access the network?

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.

Is Motion Graphics safe to install?

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.

What licence does Motion Graphics use?

Motion Graphics 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.

How many tokens does Motion Graphics use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Motion Graphics?

Skills that share tags, products or a category with Motion Graphics: 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.

Who maintains Motion Graphics?

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.