Install any skill in seconds. Free to start, no credit card required.
Get Started Free →All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography
.claude/skills/coco-research-hyperframes-animation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -48% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 64% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 33% | 0% |
All motion knowledge in one skill: rules (atomic recipes), blueprints (multi-phase scene templates), transitions (scene-to-scene), techniques (broader motion-design patterns), and adapters (per-runtime APIs).
For the composition contract (data attributes, sub-compositions, determinism) see hyperframes-core.
Pick 2-4 rules from rules-index.md, glue them together with a single paused GSAP timeline, done. This is faster and produces less code than starting from a blueprint.
Blueprints live in blueprints-index.md. Each entry points to blueprints/<id>.md (recipe). Do not read it speculatively; load it when you've already decided you need scene-level orchestration.
| Want to… | Read | | ------------------------------------------------------------------------------ | --------------------------------------------------- | | Pick an atomic motion pattern by trigger / tag | rules-index.md | | Read one rule's full HTML / CSS / GSAP recipe | rules/<name>.md | | Pick a multi-phase scene template | blueprints-index.md | | Read one blueprint's full recipe | blueprints/<id>.md | | Author a scene transition (CSS-driven, between two clips) | transitions/overview.md, transitions/catalog.md | | Look up a broader motion-design technique | techniques.md | | Analyze an existing composition's animation map | scripts/animation-map.mjs | | GSAP API — timeline / tweens / position parameters | adapters/gsap.md | | GSAP — drop-in effect recipes | rules/gsap-effects.md | | GSAP — transforms / perf | adapters/gsap-transforms-and-perf.md | | GSAP — eases / stagger | adapters/gsap-easing-and-stagger.md | | GSAP — timeline / labels | adapters/gsap-timeline-and-labels.md | | Lottie / dotLottie (After Effects exports, window.__hfLottie) | adapters/lottie.md | | Three.js / WebGL (3D scenes, AnimationMixer, hf-seek) | adapters/three.md | | Anime.js (window.__hfAnime) | adapters/animejs.md | | CSS keyframes (animation-delay / play-state / fill-mode) | adapters/css-animations.md | | Web Animations API (element.animate(), currentTime seek) | adapters/waapi.md | | TypeGPU / WebGPU (navigator.gpu, WGSL, compute pipelines) | adapters/typegpu.md | | HTML-as-texture + WebGL/GLSL post-fx (capture live DOM via drawElementImage) | adapters/html-in-canvas-patterns.md | | Named text-animation effects (24 IDs via external animate-text skill) | adapters/animate-text.md |
Multiple runtimes can coexist in one composition. Each registers its instances on the runtime-specific global so HyperFrames can seek all of them in one pass.
Prerequisite: hyperframes-core → Non-Negotiable Rules (single paused timeline, data-duration governs length, no Math.random / Date.now / performance.now, no repeat: -1, no page-load gsap.set on later-scene clips, no display or raw visibility tweens, and no timeline construction inside async / setTimeout / Promise). GSAP autoAlpha and zero-duration visibility sets at explicit timeline boundaries remain allowed by core. Use those exceptions only on non-clip elements or wrappers inside a clip; the framework owns .clip lifecycle. Don't restate the full contract here.
Animation-craft additions on top of core's contract:
getBoundingClientRect() at tween time. Tween-time DOM measurements desync because the renderer samples in parallel; compute coordinates once at composition setup and reuse.x, y, scale, rotation). Core's allowlist also permits opacity / color / backgroundColor / borderRadius for non-spatial property tweens — but never width / height / top / left for layout changes.bashnode skills/hyperframes-animation/scripts/animation-map.mjs <composition-dir> \ --out <composition-dir>/.hyperframes/anim-map
Reads every GSAP timeline registered on window.__timelines, enumerates tweens, samples bboxes, computes flags, outputs animation-map.json. Use it to audit choreography (dead zones, stagger consistency, lifecycle warnings) after authoring.
animation-map.mjs resolves helper packages from the current project first, then can bootstrap the bundled HyperFrames package version. Set HYPERFRAMES_SKILL_PKG_VERSION=<version> only when running the skill outside the bundled CLI/skill install and you need to pin that bootstrap version explicitly.
hyperframes-core — composition structure, data attributes, sub-compositions, deterministic render contracthyperframes-creative — palettes, typography, narration, beat planning (non-animation creative direction)hyperframes-cli — npx hyperframes lint / check / snapshot / preview / render| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→fail | 38,733 | 29,404 | -24% | 1 | 1 | 0% | 6,209 | 5,443 | -12% | 0 | 0 | — |
case-01 | fail→fail | 33,140 | 19,514 | -41% | 1 | 1 | 0% | 5,925 | 4,366 | -26% | 0 | 0 | — |
case-02 | fail→pass | 41,090 | 12,890 | -69% | 1 | 1 | 0% | 6,725 | 3,491 | -48% | 0 | 0 | — |
case-04 | pass→pass | 22,246 | 12,190 | -45% | 1 | 1 | 0% | 3,232 | 3,315 | +3% | 0 | 0 | — |
case-05 | pass→fail | 25,069 | 17,887 | -29% | 1 | 1 | 0% | 3,551 | 3,773 | +6% | 0 | 0 | — |
case-06 | fail→pass | 10,344 | 13,918 | +35% | 1 | 1 | 0% | 1,978 | 3,240 | +64% | 0 | 0 | — |
case-07 | fail→fail | 13,961 | 6,055 | -57% | 1 | 1 | 0% | 1,649 | 2,630 | +59% | 0 | 0 | — |
case-08 | fail→pass | 17,895 | 2,951 | -84% | 1 | 1 | 0% | 2,401 | 2,120 | -12% | 0 | 0 | — |
case-19 | pass→pass | 17,640 | 13,585 | -23% | 1 | 1 | 0% | 2,056 | 2,690 | +31% | 0 | 0 | — |
case-09 | fail→fail | 8,941 | 2,734 | -69% | 1 | 1 | 0% | 1,455 | 2,041 | +40% | 0 | 0 | — |
case-10 | fail→pass | 11,613 | 5,681 | -51% | 1 | 1 | 0% | 1,843 | 2,604 | +41% | 0 | 0 | — |
case-11 | pass→pass | 17,677 | 10,325 | -42% | 1 | 1 | 0% | 1,996 | 2,401 | +20% | 0 | 0 | — |
case-12 | fail→pass | 15,066 | 7,944 | -47% | 1 | 1 | 0% | 1,523 | 2,030 | +33% | 0 | 0 | — |
case-13 | pass→pass | 14,130 | 9,697 | -31% | 1 | 1 | 0% | 2,702 | 2,411 | -11% | 0 | 0 | — |
case-14 | fail→pass | 22,391 | 2,769 | -88% | 1 | 1 | 0% | 2,786 | 1,964 | -30% | 0 | 0 | — |
case-15 | pass→pass | 10,747 | 1,960 | -82% | 1 | 1 | 0% | 1,840 | 1,854 | +1% | 0 | 0 | — |
case-16 | pass→pass | 10,190 | 8,644 | -15% | 1 | 1 | 0% | 1,797 | 3,114 | +73% | 0 | 0 | — |
case-17 | fail→pass | 12,059 | 5,124 | -58% | 1 | 1 | 0% | 2,011 | 2,469 | +23% | 0 | 0 | — |
case-18 | fail→pass | 12,151 | 10,901 | -10% | 1 | 1 | 0% | 2,107 | 2,568 | +22% | 0 | 0 | — |
case-20 | fail→pass | 13,346 | 6,919 | -48% | 1 | 1 | 0% | 2,395 | 1,896 | -21% | 0 | 0 | — |
case-21 | fail→pass | 18,732 | 8,151 | -56% | 1 | 1 | 0% | 2,455 | 2,083 | -15% | 0 | 0 | — |
case-22 | fail→pass | 9,969 | 6,720 | -33% | 1 | 1 | 0% | 1,263 | 1,829 | +45% | 0 | 0 | — |
case-23 | fail→pass | 17,920 | 7,113 | -60% | 1 | 1 | 0% | 1,085 | 1,891 | +74% | 0 | 0 | — |
case-24 | fail→pass | 14,543 | 11,567 | -20% | 1 | 1 | 0% | 1,730 | 2,485 | +44% | 0 | 0 | — |
case-25 | pass→pass | 11,887 | 6,374 | -46% | 1 | 1 | 0% | 2,056 | 2,548 | +24% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 24 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +48 percentage points is the difference between those two pass rates over the 24 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.