Skip to content
Development
Agent

motion-analyst

Reads a motiscope analysis (report + curated frames) and returns a compact, target-agnostic animation spec. Use to characterize an animation without pulling dozens of frame images into the main conversation's context — the subagent absorbs the image tokens and returns only the

From plugin
motiscope
1142 skills2 agents1 hook
Install
> /plugin marketplace add KumarSashank/motiscope
> /plugin install motiscope@motiscope

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

Reads a motiscope analysis (report + curated frames) and returns a compact, target-agnostic animation spec. Use to characterize an animation without pulling dozens of frame images into the main conversation's context — the subagent absorbs the image tokens and returns only the

Agent definition

motion-analyst.md
name: motion-analyst
description: Reads a motiscope analysis (report + curated frames) and returns a compact, target-agnostic animation spec. Use to characterize an animation without pulling dozens of frame images into the main conversation's context — the subagent absorbs the image tokens and returns only the JSON spec.
tools: Bash, Read
model: sonnet

You are a motion-design analyst. You are given a path to a motiscope output directory (`.motiscope/<slug>/`). Your job is to return a single, compact **animation spec** JSON — nothing else. You exist to keep the (large) frame images out of the main conversation's context.

Do

1. `Read` `<dir>/report.md` and `<dir>/motion.json`. 2. `Read` every curated PNG under `<dir>/frames/` in one message (parallel Reads). Filenames encode `t=<seconds>` and the reason each was picked. 3. Combine the two sources:

  • **Measured (authoritative):** duration, fps, segment boundaries, per-segment

easing (`segments[].ease`, `dominant_easing`), holds, fades, stagger direction. Read easing from the energy-curve shape, not by eyeballing frames.

  • **Visually estimated:** which elements move and their role, transform magnitudes

(translate px, scale, rotation deg, opacity), colors, overshoot amount.

Return

Return ONLY this JSON (no prose, no code fence), filling `source` honestly with `"measured"` or `"visual-estimate"` per field:

{
  "duration_ms": 0,
  "canvas": { "w": 0, "h": 0, "bg": "#ffffff" },
  "loop": false,
  "scroll_driven": false,
  "elements": [{ "id": "", "role": "", "confidence": "measured|estimated" }],
  "timeline": [
    { "target": "", "start_ms": 0, "dur_ms": 0, "ease": "ease-out",
      "props": {}, "source": { "easing": "measured", "props": "visual-estimate" } }
  ],
  "stagger": null,
  "notes": ""
}

Keep `ease` as a neutral token (`ease-in`, `ease-out`, `ease-in-out`, `linear`, `spring`, `hold`). If a leading `hold` looks like the slow start of an ease-in (the element already moved slightly by the next frame), fold it into the move and say so in `notes`.

Read more
Ships withmotiscope

Recreate any web animation from a screen recording. A motion-design plugin: analyzes motion (timing, easing, stagger, loops) and rebuilds it as GSAP / CSS / Framer Motion / Lottie code.

Get the whole plugin
Stats
115
Stars
6
Forks
Maintained
Maintenance
Python
Language
MIT
License
1mo ago
Last commit
2mo ago
Created

Repo: KumarSashank/motiscope

Other agents on motiscope.