Source profileQuality 87/100Review permissions

heygen-com/hyperframes/skills/motion-graphics/SKILL.md

motion-graphics

A short, design-led motion graphic where motion is the message — kinetic typography, stat count-up, chart/data-viz hit, logo sting / brand lockup, lower-third / callout / social overlay, animated map (highlight regions, connect places, zoom to a location), animated tweet / news-article / headline, webpage / UI animation (scroll, cursor, callouts), or fusing a real image's geometry into a chart. Usually under 10s (up to ~30s), no narration or live-action subject; renders to MP4 or transparent ove

Source repository stars
39,428
Declared platforms
1
Static risk flags
2
Last source update
2026-08-04
Source checked
2026-08-04

Decision brief

What it does—and where it fits

The front door is /hyperframes. This skill makes a short, design-led, unnarrated motion graphic (motion is the message; under 10s, no voice-over). Anything longer, narrated, or multi-scene — or any uncertainty → read /hyperframes first: the intent layer owns every route decision.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorDeclaredSource recordInstall path and trigger
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/heygen-com/hyperframes --skill "skills/motion-graphics"
    Safe inspection promptEditorial

    Inspect the Agent Skill "motion-graphics" from https://github.com/heygen-com/hyperframes/blob/77f95e46e038ee93e03b3f7a0099b25a4feb73f8/skills/motion-graphics/SKILL.md at commit 77f95e46e038ee93e03b3f7a0099b25a4feb73f8. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Step 0 — Initialize

      cwd is the agent workspace root; write all artifacts under PROJECTDIR = videos//. : use the dir the user gave, else a short kebab-case name from the intent (-motion). Not the workspace basename or a timestamp.

      cwd is the agent workspace root; write all artifacts under PROJECTDIR = videos//. : use the dir the user gave, else a short kebab-case name from the intent (-motion). Not the workspace basename or a timestamp.Only when $PROJECTDIR/hyperframes.json is absent:init checks the installed skills against the latest on GitHub and updates the global set if any are out of date.
    2. 02

      Step 1 — Plan (subagent: Director Part 1)

      Dispatch one subagent. prompt = full agents/director.md + Dispatch context (SKILLDIR / PROJECTDIR / the user's request / Schema: /references/shot-plan-ir.md). It must:

      Decide: does this need a search? (the first fork)No → pick a form category (kinetic-type / stat / charts / logo-reveal / lower-thirds); content is user-supplied; assetneeds: [].Yes → emit a search plan into assetneeds[] (news / web / tweet / image; two-pole queries). The specific search-driven category (webpage / news / tweet / asset-fusion) is confirmed by the content type returned in Step 2,…
    3. 03

      Step 2 — Source ◇ (Bash: media-use, conditional)

      If shot-plan.json.assetneeds is non-empty, resolve assets (search / generate / fetch → frozen project-local paths + ledger). See phases/source/guide.md (wraps media-use resolve; the search-driven categories use the news/web/tweet/image search). If assetneeds is empty, skip to St…

      If shot-plan.json.assetneeds is non-empty, resolve assets (search / generate / fetch → frozen project-local paths + ledger). See phases/source/guide.md (wraps media-use resolve; the search-driven categories use the news…
    4. 04

      Step 3 — Design (subagent: Director Part 2)

      Dispatch a subagent (prompt = agents/director.md Part 2 + dispatch context including the resolved assets/index.md if Step 2 ran + catalog-map.md). It designs the shot around the available assets: pick the catalog block(s) + the hyperframes-animation rules/blueprints, the layout,…

      Dispatch a subagent (prompt = agents/director.md Part 2 + dispatch context including the resolved assets/index.md if Step 2 ran + catalog-map.md). It designs the shot around the available assets: pick the catalog block(…
    5. 05

      Step 4 — Build (subagent: Builder, reuse-first)

      Dispatch a subagent. prompt = full agents/builder.md + dispatch context (shot-plan.json, catalog-map.md, the category's module.md, references/motion-vocabulary.md, references/builder-contract.md). Reuse-first: npx hyperframes add + customize in place; hand-author only gaps + the…

      Dispatch a subagent. prompt = full agents/builder.md + dispatch context (shot-plan.json, catalog-map.md, the category's module.md, references/motion-vocabulary.md, references/builder-contract.md). Reuse-first: npx hyper…

    Permission review

    Static risk signals and limitations

    Runs scripts

    medium · line 75

    The documentation asks the agent to run terminal commands or scripts.

    npx hyperframes init "$PROJECT_DIR" --non-interactive --example=blank --skill=motion-graphics

    Network access

    medium · line 95

    The documentation includes network, browsing, or remote request actions.

    If `shot-plan.json.asset_needs` is non-empty, resolve assets (search / generate / fetch → frozen project-local paths + ledger). See `phases/source/guide.md` (wraps `media-use resolve`; the search-driven categories use the news/web/tweet/ima

    Network access

    medium · line 152

    The documentation includes network, browsing, or remote request actions.

    **Asset-first rationale:** sourcing is front-loaded and informs shot design (the RWA flow: analyze → search → review → compose). the search-driven categories (`webpage`/`news`/`tweet`) and `asset-fusion` both lean on media-use search (news/

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score87/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars39,428SourceRepository attention, not individual Skill quality
    Compatibility1 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    heygen-com/hyperframes
    Skill path
    skills/motion-graphics/SKILL.md
    Commit
    77f95e46e038ee93e03b3f7a0099b25a4feb73f8
    License
    Apache-2.0
    Collected
    2026-08-04
    Default branch
    main
    View the original SKILL.md

    First, keep this skill fresh — run silently, don't ask: npx hyperframes skills update motion-graphics. A fast no-op when everything is current; otherwise it refreshes this skill plus the core domain skills it depends on before you rely on them.

    figma source: If the logo/asset/animation to build from comes from a figma.com URL, run /figma first — asset export, brand tokens, and Motion→GSAP translation if the graphic is a Figma Motion import — then build from its output. Don't drive Figma via raw MCP tools directly: that skips SVG sanitization, .media/manifest.jsonl provenance, and brand-token var() binding, so a later brand change can't propagate without a full re-import.

    motion-graphics — dispatch entry

    The front door is /hyperframes. This skill makes a short, design-led, unnarrated motion graphic (motion is the message; ~under 10s, no voice-over). Anything longer, narrated, or multi-scene — or any uncertainty → read /hyperframes first: the intent layer owns every route decision.

    This workflow is autonomous by design — at most one clarifying question (agents/director.md), then build through verification without intermediate review. The intent layer (/hyperframesreferences/intent-interview.md) routes here directly without run-shape questions; a storyboard and companion session add little to a piece this short. Rendering is still user-gated: after checks and proof snapshots pass, ask the canonical “preview first, or render?” question from ../hyperframes-core/references/brief-contract.md. When a BRIEF.md exists, read it before the director's question.

    A short design-led motion graphic. Asset-first: decide the asset strategy and source real material before designing the shot, then design the shot around what you have, then compose by reusing catalog capabilities. All artifacts go to PROJECT_DIR = videos/<project-name>/ (created in Step 0); all paths below are relative to it.

    PhaseExecutionPrimary artifactDetailed flow
    initBashhyperframes.jsonStep 0
    plansubagent — decide search? + classify + asset strategyshot-plan.json (draft: category, asset_needs queries, brief)agents/director.md (Part 1)
    source ◇Bash — media-use resolve (skip if asset_needs is empty)assets/ + assets/index.mdphases/source/guide.md
    designsubagent — shot design around resolved assetsshot-plan.json (final: block(s) + layout + motion + positions)agents/director.md (Part 2)
    buildsubagent — reuse-first compositioncompositions/index.htmlagents/builder.md
    verifyBash — lint, check, proof snapshots; repair on failuresnapshots/contact-sheet.jpgStep 5
    approveAsk preview or render; wait for the answerexplicit render approvalStep 6
    renderBash — hyperframes render (MP4, or --format webm/mov for overlay)renders/video.mp4 or transparent overlayStep 6

    ◇ source runs only when the chosen category declares assets. Pure code/text categories (e.g. kinetic-type, most charts/stat) have asset_needs: [] and skip straight from plan to design.

    Categories — split by the search decision

    plan's first decision is: does this need a search? That fork splits the categories into two groups; then the specific category is picked — for search-driven, by the type of content the search returns. Each category is one categories/<id>/module.md (its planning + build rules); the shared motion vocabulary lives in references/motion-vocabulary.md (→ hyperframes-animation rules/blueprints + registry blocks).

    Form categories — no search; the user supplies the content:

    CategoryIntentLeans on
    kinetic-typepunchy line / quote / title, motion-first textcaption-* blocks + animation rules
    statsingle hero number / count-up + ringapple-money-count / rules/{counting-dynamic-scale, stat-bars-and-fills}
    chartsbar / line / pie / race / % from datadata-chart block
    logo-reveallogo sting / brand lockup (user logo)logo-outro / rules/svg-path-draw
    lower-thirdsname / title bars, callouts, social overlayscaption-* + registry overlay blocks
    mapsgeographic motion — highlight regions, connect places, zoom to a location (vector lane, or baked basemap lane)us-map / world-map family + bake-basemap.mjs

    Search-driven categories — search first, then animate by content type (the RWA path):

    Returned contentCategoryAnimation
    webpage / linkwebpagewebpage / UI animation (scroll, reveal, cursor, callouts)
    news articlenewsheadline reveal + source card + key-fact callouts
    tweettweetanimated tweet card
    image / entityasset-fusionthe asset's geometry becomes the chart (RWA diegetic fusion)

    Build order: one at a time, coverage-first (rough is fine). kinetic-type ported from the prototype; the rest follow.

    Prerequisites

    macOS Apple Silicon or Linux x64. System tools: brew install node ffmpeg. npx hyperframes doctor once. macOS GPU render: export PRODUCER_BROWSER_GPU_MODE=hardware.

    Optional keys (local fallbacks if unset) — only needed by categories that source/generate assets via media-use:

    KeyUsed forFallback
    GEMINI_API_KEY / GOOGLE_API_KEYimage generation (media-use resolve)skip generate / search-only
    (asset_scout / search providers)webpage/news/tweet + asset-fusion real-asset searchcategory degrades to asset-free

    Flow

    Step 0 — Initialize

    cwd is the agent workspace root; write all artifacts under PROJECT_DIR = videos/<project-name>/. <project-name>: use the dir the user gave, else a short kebab-case name from the intent (<subject>-motion). Not the workspace basename or a timestamp.

    Only when $PROJECT_DIR/hyperframes.json is absent:

    PROJECT_DIR="${MOTION_GRAPHICS_DIR:-videos/<project-name>}"
    mkdir -p "$(dirname "$PROJECT_DIR")"
    npx hyperframes init "$PROJECT_DIR" --non-interactive --example=blank --skill=motion-graphics
    

    init checks the installed skills against the latest on GitHub and updates the global set if any are out of date.

    Constraints: never hyperframes init in the workspace root; never nest another hyperframes/ inside PROJECT_DIR; every Bash command (master + subagents) is a (cd "$PROJECT_DIR" && ...) subshell — never bare cd.

    Step 1 — Plan (subagent: Director Part 1)

    Dispatch one subagent. prompt = full agents/director.md + ## Dispatch context (SKILL_DIR / PROJECT_DIR / the user's request / Schema: <SKILL_DIR>/references/shot-plan-ir.md). It must:

    1. Decide: does this need a search? (the first fork)
      • No → pick a form category (kinetic-type / stat / charts / logo-reveal / lower-thirds); content is user-supplied; asset_needs: [].
      • Yes → emit a search plan into asset_needs[] (news / web / tweet / image; two-pole queries). The specific search-driven category (webpage / news / tweet / asset-fusion) is confirmed by the content type returned in Step 2, and finalized in Step 3.
    2. Write a draft shot-plan.json (envelope + chosen form category or search intent + asset_needs + a one-paragraph shot brief). Schema: references/shot-plan-ir.md.

    Validation: [ -s "$PROJECT_DIR/shot-plan.json" ] && echo ok || echo missing.

    Step 2 — Source ◇ (Bash: media-use, conditional)

    If shot-plan.json.asset_needs is non-empty, resolve assets (search / generate / fetch → frozen project-local paths + ledger). See phases/source/guide.md (wraps media-use resolve; the search-driven categories use the news/web/tweet/image search). If asset_needs is empty, skip to Step 3.

    # illustrative — see phases/source/guide.md
    (cd "$PROJECT_DIR" && node <SKILL_DIR>/phases/source/resolve.mjs --plan ./shot-plan.json --out ./assets)
    

    Degrade gracefully: if a search/provider is unavailable, the category falls back to asset-free (note it in context.log).

    Step 3 — Design (subagent: Director Part 2)

    Dispatch a subagent (prompt = agents/director.md Part 2 + dispatch context including the resolved assets/index.md if Step 2 ran + catalog-map.md). It designs the shot around the available assets: pick the catalog block(s) + the hyperframes-animation rules/blueprints, the layout, the motion, beats, and (for asset-fusion) the element_positions + eyedropper palette. Finalizes shot-plan.json (content.block + content.customize + per-category content).

    Step 4 — Build (subagent: Builder, reuse-first)

    Dispatch a subagent. prompt = full agents/builder.md + dispatch context (shot-plan.json, catalog-map.md, the category's module.md, references/motion-vocabulary.md, references/builder-contract.md). Reuse-first: npx hyperframes add <block> + customize in place; hand-author only gaps + the asset-fusion affordance. Output compositions/index.html honoring the HF contract (paused GSAP timeline on window.__timelines, class="clip" + stable ids, tl.seek(0), deterministic).

    Step 5 — Verify (Bash → repair subagent on failure)

    (cd "$PROJECT_DIR" && npx hyperframes lint .)
    (cd "$PROJECT_DIR" && npx hyperframes check .)
    (cd "$PROJECT_DIR" && npx hyperframes snapshot --at <proof-times>)
    

    Choose proof times that show the opening state, signature move, and final hold. Inspect the generated contact or snapshot sheet before continuing. On lint, check, or snapshot failure, dispatch the repair subagent (agents/finalize.md) for one in-place fix pass, then rerun the failed gate. Never change a fixed duration merely to hide a defect.

    Step 6 — Approve and render (Bash)

    Ask one question: “preview first, or render?” If the user chooses preview, open Studio and return to the same approval gate after revisions:

    (cd "$PROJECT_DIR" && npx hyperframes preview)
    

    Render only after an explicit render answer:

    (cd "$PROJECT_DIR" && npx hyperframes render . --skill=motion-graphics -q high -o ./renders/video.mp4)
    # transparent overlay variant: --format webm  (or mov)
    

    Verify the output exists, is non-empty, and has the intended duration. The final handoff names the artifact, actual duration, composition or frame id, proof times, and the inspected contact or snapshot sheet. Flags live in /hyperframes-clireferences/preview-render.md.

    Resume table

    StateContinue from
    no shot-plan.jsonStep 1 (plan)
    shot-plan.json has asset_needs, no assets/Step 2 (source)
    shot-plan.json final, no compositions/index.htmlStep 3/4 (design+build)
    compositions/index.html exists, proof snapshots absentStep 5 (verify)
    checks and proof snapshots pass, no approved renderStep 6 (approval)
    approved render existsverify output, then report

    Design notes (maintainers — execution does not read this)

    • Asset-first rationale: sourcing is front-loaded and informs shot design (the RWA flow: analyze → search → review → compose). the search-driven categories (webpage/news/tweet) and asset-fusion both lean on media-use search (news/web/tweet/image), which is media-use's documented RWA lineage.
    • Reuse-first: the in-ecosystem analog of LLM-generated templates is "compose catalog blocks + hyperframes-animation rules". HF's paused GSAP timeline ≙ Remotion's useCurrentFrame.
    • Category module contract: one categories/<id>/module.md (planning + build), sharing references/motion-vocabulary.md (+ optional eval). Adding a category = drop the folder + register its classifier line in agents/director.md + its row in catalog-map.md; the phase pipeline is untouched.
    • Directory shape:
      videos/<project-name>/
        hyperframes.json  context.log
        shot-plan.json            # the IR (Director output)
        assets/  assets/index.md  # media-use output (if sourced)
        compositions/index.html   # Builder output
        renders/video.mp4
      
    • Registration: in hyperframes router — add the "design-led short motion graphic" intent + Workflow description; carve the motion-graphics triggers out of /general-video; add reverse Do-NOT-use edges. See motion-graphics-genre.md §5-7.

    Alternatives

    Compare before choosing

    Computed 91111

    aryaniyaps/lamina

    lamina

    Product design skill for developers who build with AI coding agents. Use when you need to know what to build before prompting your agent — domain model, workflows, edge cases, product states, and UX gaps handled upfront. Works alongside Cursor, Claude Code, Codex, Gemini, Pi. Any stack, any UI library. Do NOT use for visual styling, pixel layouts, or writing app source.

    Computed 90195

    PramodDutta/qaskills

    Website Audit

    Comprehensive website auditing skill using Lighthouse, PageSpeed Insights, and web performance APIs to audit performance, accessibility, SEO, best practices, and security.

    Computed 8923,781

    alirezarezvani/claude-skills

    pricing-strategist

    Use when designing or revisiting product pricing — selecting a pricing model (subscription seat-based, usage-based, value-based, freemium, or hybrid), running Van Westendorp Price Sensitivity Meter analysis on WTP survey data, or designing Good/Better/Best packaging tiers. Recommends a model and a price range with trade-offs, never a single number. For Commercial leads, Product Marketing, and CMOs at the pricing-design moment — not deal-by-deal discounting, not brand positioning.

    Computed 982,504

    aaron-he-zhu/aaron-marketing-skills

    reactivation-specialist

    Use when the user asks to "build a win-back campaign", "re-engage lapsed subscribers", "run a re-permission / re-consent sweep", or "sunset my dead list"; produces a closed-loop reactivation program — a lapsed-cohort definition, a staged offer ladder, a re-consent (re-permission) capture step, and a sunset-confirm / suppression rule. Owns none of the SEND-N sub-item notes: engagement-decay / sunset is email-sequence-designer's and preference-center / frequency options is preference-frequency-man