HyperFrames Video Compositions
spinabot/brigade
Writes HTML compositions with a GSAP timeline that the render_video tool turns into deterministic MP4 videos from data, text or layouts.
Analyze a screen recording of an animation to characterize its motion — timing, easing, transforms, and sequencing — so it can be recreated as web code.
$ npx skills add KumarSashank/motiscope --skill motiscope-analyze -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install KumarSashank/motiscope motiscope-analyze --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/KumarSashank/motiscope.git skills-src && mkdir -p .claude/skills && cp -r skills-src/integrations/skills/motiscope-analyze .claude/skills/motiscope-analyze && 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 "motiscope-analyze" agent skill from https://github.com/KumarSashank/motiscope/tree/main/integrations/skills/motiscope-analyze into .claude/skills/motiscope-analyze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motiscope-analyze", 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/KumarSashank/motiscope/tree/main/integrations/skills/motiscope-analyzeType 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 KumarSashank/motiscope --skill motiscope-analyze -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install KumarSashank/motiscope motiscope-analyze --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/KumarSashank/motiscope.git skills-src && mkdir -p .agents/skills && cp -r skills-src/integrations/skills/motiscope-analyze .agents/skills/motiscope-analyze && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "motiscope-analyze" agent skill from https://github.com/KumarSashank/motiscope/tree/main/integrations/skills/motiscope-analyze into .agents/skills/motiscope-analyze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motiscope-analyze", 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 KumarSashank/motiscope --skill motiscope-analyze -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install KumarSashank/motiscope motiscope-analyze --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/KumarSashank/motiscope.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/integrations/skills/motiscope-analyze .cursor/skills/motiscope-analyze && 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 "motiscope-analyze" agent skill from https://github.com/KumarSashank/motiscope/tree/main/integrations/skills/motiscope-analyze into .cursor/skills/motiscope-analyze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motiscope-analyze", 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/KumarSashank/motiscope.git --path integrations/skills/motiscope-analyze--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 KumarSashank/motiscope --skill motiscope-analyze -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install KumarSashank/motiscope motiscope-analyze --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/KumarSashank/motiscope.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/integrations/skills/motiscope-analyze .gemini/skills/motiscope-analyze && 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 "motiscope-analyze" agent skill from https://github.com/KumarSashank/motiscope/tree/main/integrations/skills/motiscope-analyze into .gemini/skills/motiscope-analyze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motiscope-analyze", 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 KumarSashank/motiscope motiscope-analyzeInstalls 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 KumarSashank/motiscope --skill motiscope-analyze -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/KumarSashank/motiscope.git skills-src && mkdir -p .github/skills && cp -r skills-src/integrations/skills/motiscope-analyze .github/skills/motiscope-analyze && 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 "motiscope-analyze" agent skill from https://github.com/KumarSashank/motiscope/tree/main/integrations/skills/motiscope-analyze into .github/skills/motiscope-analyze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motiscope-analyze", 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 KumarSashank/motiscope --skill motiscope-analyze -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install KumarSashank/motiscope motiscope-analyze --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/KumarSashank/motiscope.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/integrations/skills/motiscope-analyze .opencode/skills/motiscope-analyze && 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 "motiscope-analyze" agent skill from https://github.com/KumarSashank/motiscope/tree/main/integrations/skills/motiscope-analyze into .opencode/skills/motiscope-analyze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motiscope-analyze", 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.
motiscope-analyzeAnalyze a screen recording of an animation to characterize its motion — timing, easing, transforms, and sequencing — so it can be recreated as web code.
Motiscope Analyze is an agent skill from KumarSashank/motiscope. Analyze a screen recording of an animation to characterize its motion — timing, easing, transforms, and sequencing — so it can be recreated as web code. Use when the user drops or points at a video of an animation (.mp4/.mov/.webm/.mkv/.m4v/.avi/.gif) and says things like "I want this animation on my site", "recreate this motion", "how is this animated", or runs motiscope-analyze.
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 Web animation and motion and Motion graphics. It works with FFmpeg. The repository describes itself as: 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 /… The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c0ce3dd. 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.
Shell commands in SKILL.md call:
codexFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom 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.
Motiscope Analyze loads about 3.3k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 1,740 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 KumarSashank/motiscope at commit c0ce3dd, republished under its MIT licence (© KumarSashank). 1,740 words, ~3,264 tokens.
.claude/skills/motiscope-analyze/SKILL.md (or your agent's skills folder).Analyze a screen recording of an animation to characterize its motion — timing, easing, transforms, and sequencing — so it can be recreated as web code. Use when the user drops or points at a video of an animation (.mp4/.mov/.webm/.mkv/.m4v/.avi/.gif) and says things like "I want this animation on my site", "recreate this motion", "how is this animated", or runs
motiscope-analyze.
Arguments ([path-to-video] [notes]): take them from the user's message. If they're missing, infer them or ask.
motiscope is a shell command. If it isn't found it isn't on your PATH — see
https://github.com/KumarSashank/motiscope#install. The reference guides live under
$(motiscope home)/references/.
Invoking the sibling skills. In Codex, mention a skill with $motiscope-recreate. In
Cursor, use /motiscope-recreate. Elsewhere, just follow that skill's SKILL.md.
Seeing the frames — do not skip this. The curated keyframes are PNG files on disk, and
you must actually look at them. Codex: use the view_image tool (if it's unavailable,
enable tools.view_image = true in ~/.codex/config.toml, or have the user relaunch with
codex -i frame1.png,frame2.png). Cursor: the file-reading tool accepts .png and puts
the image in context. If you genuinely cannot open images, say so — you can still
report the measured timing, but you cannot know what is animating, and you must not
guess it from the filenames.
Turn a screen recording of an animation into a precise, target-agnostic animation spec you can hand to motiscope-recreate. A bundled Python pipeline measures the motion (a dense per-frame motion-energy curve + ffmpeg signal analysis — this is the source of truth for timing and easing) and extracts a small set of curated PNG keyframes for you to see. You combine the two into the spec.
motiscope doctor --checkExit 0 → proceed silently. Non-zero → ffmpeg/ffprobe are missing; hand off to motiscope-doctor (don't try to analyze without them).
$1 or their message), use it.ls -t animations/*.{mp4,mov,webm,mkv,m4v,avi,gif} *.{mp4,mov,webm,mkv,m4v,avi,gif} 2>/dev/null | headanimations/ (or pass a path) and stop.Local files only. motiscope does not download URLs. If the user pastes a URL, ask them to screen-record it and drop the file in.
motiscope analyze "<video>" --preset balancedIt writes to .motiscope/<slug>/ and prints a summary, the report.md path, and the ordered curated frame list.
The number of frames you Read is what costs tokens (~300–400 tokens/frame); the numeric analysis is free. Frame count tracks motion complexity, capped by the preset — it does not grow with video length.
| Preset | Frame cap | Resolution | Use when |
|---|---|---|---|
--preset draft | 12 | 512px | quick look, tight token budget |
--preset balanced (default) | 32 (usually lands 8–20 after dedup) | 640px | most cases |
--preset detailed | 48 | 960px | dense multi-beat sequences, or reading on-screen text |
--preset landing | 44 | 1280px | web/landing walkthroughs — cover each section's design at readable resolution + its in-section motion |
Start with balanced. Only reach for detailed if the animation is intricate or you couldn't read a label; use draft for a fast first pass. If the user hasn't said, pick balanced and mention they can ask for more detail.
--start / --end)For anything longer than ~15s, or when the user points at a specific moment ("the part around 0:12", "the last second"), analyze just that window instead of a sparse whole-clip scan. Times accept SS, MM:SS, or HH:MM:SS; frame/segment timestamps come back in absolute source time.
motiscope analyze "<video>" --preset detailed --start 0:12 --end 0:15--fps)Within a (short) focus window you can force a uniform sample rate so nothing between keyposes is missed — e.g. --fps 20 gives up to a frame every ~50ms. Near-identical frames are still collapsed unless you pass --no-dedup. Combine with a short window so the budget isn't blown:
motiscope analyze "<video>" --start 1.0 --end 3.0 --fps 20 --frame-budget 48For clips ≥8s with two or more motion beats, ingest.py auto-decomposes by default: it finds the beats, then concentrates frames on each motion segment (drilling densely) and gives each hold just one representative frame — so the budget is spent on motion, not dead air. A 10s clip with a 5s hold in the middle spends ~0 frames on the hold. The report notes when this happened.
Control it with --decompose (force on) / --no-decompose (force the flat single-pass). Auto is the right default; force it off only if you specifically want even coverage across the whole timeline.
Other flags: --frame-budget N / --resolution W override the preset; --format jpg for gradient-heavy recordings that bloat as PNG; --no-dedup to keep every sampled frame; --out DIR (default .motiscope/).
Small elements register now. The primary motion signal is localized (built from the most-active regions of the frame), so a small button/card/icon moving on a large page reads as real motion instead of washing out. The stagger direction in the report tells you the sequencing (e.g.
left-to-right, ~200ms each) — use it when building the spec'sstagger.
The division of labor is the whole point:
report.md measured the timing you can't see in a still: exact durations, the per-segment easing curve (a real cubic-bezier fitted from the velocity profile), the beat/segment boundaries, the stagger timing (~ms between items), and any loop period. Trust these — a screenshot has no time axis, so this is the one thing that isn't guessable.Steps:
report.md for the measured timing (energy sparkline, segment/beat table with the fitted cubic-bezier, stagger timing, loop).t=<seconds> + why each was picked, so you can line frames up against the measured timeline.Read timing from the numbers; read everything else from the frames.
Frames are chosen by the motion-energy signal. Anything small, low-contrast, briefly visible, or mostly occluded barely moves that signal and may not appear in a single curated frame — while still being a headline feature of the animation. A train crossing a bridge was missed exactly this way.
Before you commit to a spec:
A failed automated measurement does not crash. It returns a confident float.
-0.03 .. 0.63 into 0.30
invents a fact. Reporting the range is the finding.The full list, with the real failures behind each one, is in
references/measurement-traps.md. Read it before reporting any velocity, easing or ratio you
derived yourself rather than reading out of report.md.
Emit a target-agnostic spec: a timing skeleton (measured) + your visual reading (what each element is and does). Schema:
{
"duration_ms": 2000,
"canvas": { "w": 800, "h": 600, "bg": "#ffffff" },
"loop": false,
"scroll_driven": false,
"elements": [{ "id": "card", "role": "card" }],
"timeline": [
{ "target": "card", "start_ms": 0, "dur_ms": 400,
"ease": "ease-out", "bezier": [0.16, 1, 0.3, 1],
"animation": "fade + slide up",
"props": { "opacity": [0, 1], "y": [24, 0] },
"source": { "timing": "measured", "everything_else": "seen" } }
],
"stagger": { "children": "card", "each_ms": 80 },
"notes": "e.g. 'headline does a per-word mask reveal'; 'logo path draws in'"
}Rules:
start_ms, dur_ms, ease, bezier, stagger each_ms, loop period_ms are MEASURED — copy them from report.md/motion.json verbatim. Especially: use the fitted cubic-bezier directly (CSS cubic-bezier(...), Framer [..], GSAP CustomEase) — it's the real curve, not a guess.animation, elements, props (magnitudes/direction/colors), and the animation type are YOURS from the frames — describe the actual effect in the free-text animation field (open vocabulary), and put your best-estimate property values in props. Direction, scale, rotation, opacity, morph, draw, etc. all come from what you see, not from the numbers.hold: a gentle ease-in's slow start can read as a short hold (sub-pixel motion is invisible in the analysis thumbnails). Check the first frames — if the element already moved slightly, treat it as the start of the ease, not a delay."loop": true with period_ms. It can be a half-cycle for back-and-forth motion — decide loop-vs-yoyo from the frames.props (a complex morph, a particle system, a shader), say so in animation/notes and let recreate build it directly from your description — don't force it into simple props."scroll_driven": true and do not copy duration_ms into the spec as if it were the design's. Report ratios (layer speed ÷ page-scroll speed) and note which quantities belong to the recorder. A clip can be scroll-driven and contain a time-driven object (a train, a spinner, a looping badge) — measure that object's speed separately.Summarize the animation in one or two sentences, then offer:
Recreate this as GSAP, CSS, Framer Motion, or Lottie/SVG? Run ``motiscope-recreate
<target>.
The spec you just built is saved in .motiscope/<slug>/manifest.json; recreate will reload it (plus motion.json) if you don't hand it over directly.
© KumarSashank, MIT. 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 integrations/skills/motiscope-analyze of KumarSashank/motiscope.
Open the folder on GitHubat commit c0ce3dd
Motiscope Analyze 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 |
|---|---|---|---|---|---|---|
| Motiscope Analyze this skillKumarSashank/motiscope | 122 | — | ~3.3k | Automated safety check: Pass | MIT | |
| HyperFrames Video Compositionsspinabot/brigade | 11k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Motion Adfabricioctelles/skills | 106 | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| Remotion Video Enhanceranbeime/skill | 7.8k | — | ~1.9k | Automated safety check: Notes | None | |
| Vid Motion GraphicsVarnan-Tech/opendirectory | 674 | — | ~3k | Automated safety check: Pass | MIT | |
| Vid Sizzle ReelVarnan-Tech/opendirectory | 674 | — | ~3.9k | Automated safety check: Pass | MIT |
spinabot/brigade
Writes HTML compositions with a GSAP timeline that the render_video tool turns into deterministic MP4 videos from data, text or layouts.
fabricioctelles/skills
Produce a short motion-graphics video ad — a 15s Facebook/Instagram/TikTok spot — as a rendered MP4.
anbeime/skill
Adds Remotion-style video transitions and Framer Motion page animations to PPT-based videos and HTML slide viewers, planning the animation sequence first.
Varnan-Tech/opendirectory
Generates motion graphics videos (MP4) from a content brief.
Varnan-Tech/opendirectory
Generates a high-energy sizzle reel or hype video (MP4) from brand assets and key messages.
heygen-com/hyperframes
Collects motion rules, scene blueprints, transitions and runtime adapters for HyperFrames video compositions, with GSAP as the default animation runtime.
KumarSashank/motiscope
Analyze a screen recording of an animation to characterize its motion — timing, easing, transforms, and sequencing — so it can be recreated as web code.
KumarSashank/motiscope
Check and configure motiscope — verify ffmpeg/ffprobe are installed and scaffold the API-key config used for optional (stubbed) asset generation.
KumarSashank/motiscope
Check and configure motiscope — verify ffmpeg/ffprobe are installed and scaffold the API-key config used for optional (stubbed) asset generation.
KumarSashank/motiscope
Rebuild a whole landing page / multi-section website from a screen recording that scrolls or walks through it.
KumarSashank/motiscope
Recreate an analyzed animation as working web code — GSAP (JavaScript), CSS/Web Animations, Framer Motion (React), or Lottie/SVG.
KumarSashank/motiscope
Rebuild a whole landing page / multi-section website from a screen recording that scrolls or walks through it.
Works with
Categories
Analyze a screen recording of an animation to characterize its motion — timing, easing, transforms, and sequencing — so it can be recreated as web code. Motiscope Analyze is an agent skill from KumarSashank/motiscope. Analyze a screen recording of an animation to characterize its motion — timing, easing, transforms, and sequencing — so it can be recreated as web code.
Motiscope Analyze fits situations like: points at a video of an animation (.mp4/.mov/.webm/.mkv/.m4v/.avi/.gif) and says things like I want this animation on my site; recreate this motion; how is this animated; runs motiscope-analyze.
Run `npx skills add KumarSashank/motiscope --skill motiscope-analyze -a claude-code`. Or copy the skill folder (integrations/skills/motiscope-analyze in KumarSashank/motiscope) into .claude/skills/motiscope-analyze in your project. Claude Code loads it when a task matches its description.
Run `npx skills add KumarSashank/motiscope --skill motiscope-analyze -a codex`. Or copy the skill folder (integrations/skills/motiscope-analyze in KumarSashank/motiscope) into .agents/skills/motiscope-analyze 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 KumarSashank/motiscope --skill motiscope-analyze -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/motiscope-analyze, .gemini/skills/motiscope-analyze, .github/skills/motiscope-analyze and .opencode/skills/motiscope-analyze in your project.
Going by SKILL.md and its folder, Motiscope Analyze needs the command-line tools its instructions call (codex). Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: github.com. 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.
Motiscope Analyze is published under the MIT 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 Motiscope Analyze: HyperFrames Video Compositions (spinabot/brigade, 11k stars), Motion Ad (fabricioctelles/skills, 106 stars), Remotion Video Enhancer (anbeime/skill, 7.8k stars) and Vid Motion Graphics (Varnan-Tech/opendirectory, 674 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
KumarSashank (a GitHub user) maintains it in KumarSashank/motiscope, which has 122 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on July 28, 2026.
Source: KumarSashank/motiscope on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.