Motion Authoring logo

Motion Authoring

Community
INSANE0777
motion-authoring

Use when a converted project (build_project --authored) needs its motion authored — turning motion.manifest.json + inert skeletons into real per-section/page motion with parity proof. Covers topology choice (one master scrub vs independent triggers), intent mapping (loader, journey, cursor, canvas, audio, ruler), per-target surfaces (Next hooks/globals vs Vite/Astro modules), reduced-motion, and the verification gate.

Overview

PublisherINSANE0777
RepositoryAwwwards-mcp
Skill namemotion-authoring
Stars
355
Forks
18
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by INSANE0777 on GitHub. Read the source before you install it.

Installation

Install the Motion Authoring AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/INSANE0777/Awwwards-mcp/tree/main/skills/motion-authoring
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/INSANE0777/Awwwards-mcp.git /tmp/Awwwards-mcp
mkdir -p .claude/skills
cp -r /tmp/Awwwards-mcp/skills/motion-authoring .claude/skills/motion-authoring
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Motion Authoring in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Motion Authoring on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Motion Authoring is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Motion authoring — from measured manifest to real motion

Runs only when the user chose a converted project and authored motion. The generator gives you structure, inert skeleton mounts, and motion.manifest.json (measured triggers, pageTriggers, initial-hidden hints). Authoring is the step where those mounts become real motion and the build is proven against the reference. This is the N2 dogfood recipe (nesil: one 31.21 s master scrub, exact 25,650 px parity).

0. Read the reference, not just the census

The census tells you what moves and roughly when; its selectors are structural paths, not your ids/classes. Read the site's own motion script when available and treat the census as corroboration: real trigger count, pins, scrub ratio, duration, easing vocabulary, stagger delays, which animations are CSS keyframes vs GSAP vs native scroll timelines. Use anims[] to verify coverage — never to derive timelines.

1. Decide the topology before writing code

One question: one master timeline or independent section triggers?

  • One master scrub (tall spacer, fixed stage, single scrubbed trigger) → author a page-level journey module with one labelled timeline; section modules become thin slice builders that add to it. Do NOT split into seven independent ScrollTriggers — overlap and hand-offs change.
  • Independent section triggers → one timeline per section module keyed by the manifest's triggers[]; the skeletons already have the shape (gsap.context, measured constants, refresh).

Rows with start: null are CSS keyframes or unowned rows — provenance, not an instruction to build a timeline each.

2. Manifest contract

motion.manifest.json is evidence, not an authoring file:

  • consume as generated; never add hand rows or flip measured
  • record counts verbatim (sections, sectionTriggers, pageTriggers)
  • record authored code separately (files + before/after) and keep the delivered manifest hash equal to a fresh generation; if you must add rows, mark them authored and say so — never measured: true
  • pageTriggers belong to the page-level module, not to a section
  • No build yet? build_motion_manifest({ bands, scrollCensus, sections? }) scaffolds this manifest shape straight from analyze_page_structure + analyze_scroll_map (+ optional {label, selector?} overrides). Its envelope is measured: false and DOM initial-state hints are empty (no markup), so author from the census triggers and record authored code as below — never flip the scaffold to measured: true by hand.

3. Intent map (what to port, what to skip)

IntentPortSkip
Loader introhero sequence from the site's timeline (name, cursor travel, lid, kicker, role, face)analytics, spinners
Master journeyone scrubbed timeline, section set times, --bg tweens, labelled sectionsunrelated scripts
Canvas/dustcanvas sized to stage, DPR clamp, bounded count, velocity push, cleanupunused particle/WebGL libs
Cursoridle tween, intro hand-off, end-state handoverOS cursor replacement
Audioloop element, volume ramp, toggle, visibilitychange pauseautoplay assertions
Ruler/progressone control per label, head position = progresscustom scrollbar
Copy/formsclipboard + fallback, status resetserver-side behavior absent from the page
Reduced motionhead boot + CSS class; authored code returns before GSAP"lite" variants nobody asked for

4. Target surfaces (do not double-load GSAP)

TargetSurfaceRule
Nextvendor globals via SiteScripts (before MotionRoot), authored hooks/modulesno import gsap in authored code; bounded wait for window.gsap/ScrollTrigger
Vitewindow.gsap/ScrollTrigger/Lenis from kept classic tags copied to dist/src/scriptsno import gsap
Astrosame globals, is:inline vendor tags; page script first, then sectionsno import gsap

Generated skeletons import npm gsap; replacing that with the kept global avoids two copies. An unused gsap dependency may remain — harmless, do not import it.

5. Authoring order

Page-level first (loader → journey → cursor → audio → ruler), then sections that own independent triggers. Keep the same lock discipline as the section loop: author a section, verify its band, lock it, next.

6. Verification gate (all must pass)

  • Every target builds (vite build, astro build, next build + start probe).
  • Desktop 1440×900 at the band anchors (8 stops): scrollHeight ±1 %, identical visible section ids, fonts, 0 console/page errors/404s.
  • Mobile 390×844 smoke: no horizontal overflow, same anchors/visible sections, 0 errors.
  • Reduced motion: head class applied, fixed stage disabled, no overflow, page readable.
  • Authored proof: zero references to the dropped site scripts in source and build trees; only the kept vendor libs; SiteScripts before MotionRoot.

Failure modes

SymptomCauseFix
Page inert after authoringauthored code started before libswait for globals / keep SiteScripts first
Two GSAP runtimes / odd easingnpm import + vendor globaluse the kept global only
Hand-offs changedmaster scrub split into per-section triggersone page-level journey, sections slice it
Manifest "measured" but wronghand rows edited in placeregenerate, or mark authored rows explicitly
Motion fine, page broken on mobiledesktop-only authoringrun the 390 smoke every iteration

Frequently asked questions

What does the Motion Authoring AI skill do?

Use when a converted project (build_project --authored) needs its motion authored — turning motion.manifest.json + inert skeletons into real per-section/page motion with parity proof. Covers topology choice (one master scrub vs independent triggers), intent mapping (loader, journey, cursor, canvas, audio, ruler), per-target surfaces (Next hooks/globals vs Vite/Astro modules), reduced-motion, and the verification gate.

Why use Motion Authoring on TypingMind?

Because you install it once and use it with any model. Motion Authoring is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Motion Authoring in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/INSANE0777/Awwwards-mcp/tree/main/skills/motion-authoring. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Motion Authoring?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Motion Authoring?

As many as you like. As long as a model supports skills, you can use Motion Authoring with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Motion Authoring AI skill free?

Yes. It is published on GitHub by INSANE0777 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇