Animate Text
Use this skill as a text animation catalog backed by generated JSON contracts.
Use assets/specs/<id>.json for a portable motion contract. Use assets/effects/<id>.json for exact animation reproduction, including content, renderer algorithm, playback, runtime, host requirements, rendering contract, and library adapters.
This skill ships 24 specs in total. The website currently showcases 20 of them.
When To Use
Use this skill when the request involves:
- animating headings, labels, counters, editorial copy, or text swaps
- matching a named effect id such as
soft-blur-in,typewriter,shared-axis-y, orkinetic-center-build - choosing a motion pattern from a curated catalog and translating it into a target stack
- reproducing the current animation behavior in another stack without relying on example components
- implementing the same spec with WAAPI, Motion / motion.dev, GSAP, CSS, Lottie, Rive, or another renderer
Workflow
- Determine whether the user wants:
- the exact site version of a visible effect
- a portable translation of the motion contract
- If the user names an effect id, read
assets/specs/<id>.jsonor runnode scripts/get-spec.mjs <id>. - Otherwise use
references/catalog.mdor optionally run:node scripts/list-specs.mjsnode scripts/find-spec.mjs "<query>"
- Use
assets/specs/<id>.jsonwhen the user wants a portable translation of the motion intent. - Use
assets/effects/<id>.jsonornode scripts/get-effect.mjs <id>when the user wants the exact generated animation behavior. - If the user names a target animation library, treat that as binding. Follow
showcase.library_selectionand use only the matchingshowcase.library_adapters.<library>block for that effect. - For exact reproduction, follow
showcase.renderer,showcase.playback,showcase.timing,showcase.runtime,showcase.stage,showcase.rendering_contract,showcase.library_selection, andshowcase.library_adaptersover assumptions inferred from the portable spec alone. - Treat
showcase.stageas animation host requirements only. Do not copy typography, color, padding, card chrome, or page layout from the source website unless the user explicitly asks for that UI. - When applying an effect to an existing section, preserve that section's text. Use
showcase.contentonly as demo/fallback copy unless the user explicitly asks to reproduce the showcase copy.
Bundled Resources
references/catalog.md: compact summary of the bundled spec libraryreferences/schema.md: field-level schema for portable specs and exact showcase effect recipesreferences/selection-guide.md: heuristics for picking the right effect familyreferences/implementation-notes.md: translation notes for common animation stacksassets/specs/*.json: portable motion contractsassets/effects/*.json: exact generated animation recipesassets/catalog.json: visible website catalog order and renderer overridesassets/samples.json: sample copy used by the generated examplesassets/runtime-presets.json: runtime multipliers and loop timing presetsassets/stage-presets.json: animation host requirements, not presentation stylingassets/renderer-recipes.json: shared renderer algorithmsassets/library-adapters.json: WAAPI, Motion, and GSAP implementation mapping guidance
Optional Helper Scripts
The helper scripts are optional deterministic shortcuts. They require Node.js 20+.
node scripts/list-specs.mjsprints bundled spec metadata as JSONnode scripts/get-spec.mjs <id>prints one portable motion spec as JSONnode scripts/get-effect.mjs <id>prints one exact generated animation recipe as JSONnode scripts/find-spec.mjs "<query>"returns likely matches ranked by metadata
If Node is unavailable, the core skill still works through the Markdown references and JSON assets alone.
Translation Rules
- Preserve
targetexactly:whole,per-character,per-word, orper-line. - Map
enterandexitdurations, easing, and stagger directly into the target stack. - Preserve transform, opacity, blur, scale, rotation, and spacing fields when the target stack supports them.
- For layout-aware effects such as
kinetic-center-buildorshort-slide-down, use the exact effect recipe instead of flattening the effect into a generic stagger. - For exact animation reproduction, preserve the
showcase.renderer,showcase.playback,showcase.timing,showcase.runtime,showcase.stage,showcase.rendering_contract, andshowcase.library_adaptersfields fromassets/effects/<id>.json. - Do not substitute the requested animation library. If the user asks for GSAP, import and use GSAP; if the user asks for Motion, import and use Motion; if the user asks for WAAPI, use
Element.animate. - When targeting Motion or GSAP, use the matching
showcase.library_adapters.motionorshowcase.library_adapters.gsapblock for imports, time-unit conversion, easing conversion, keyframe shape, completion, and renderer-specific notes. - Read
showcase.engine_notesandshowcase.reproduction_notescarefully. They describe stack-specific details required for visual parity. - For exact site behavior, implement the full
showcase.playbackloop. Do not stop at the first enter animation unless the user explicitly asks for a one-shot reveal. - If a renderer recipe says to wait for a phase to complete, either await the animation/tween promise or sleep the computed phase total, not both.
Notes
- The public website uses a curated subset of the bundled library. The skill can still use additional bundled specs that are not currently visible on the website.
assets/specs/*.jsonare the authoritative portable motion contracts.assets/effects/*.jsonare the authoritative exact animation reproduction contracts.- Hidden effects have
"showcase": nullin the exact effect recipe. - If a prose note conflicts with a JSON field, prefer the JSON.