text-to-lottie
- Use it when:
- You want a Lottie animation made or fixed: a logo or text reveal, a loader or icon, a UI microinteraction, a lower third, a data animation or a product promo.
- It does:
- Routes the request to a recipe, writes lottie.json and optional controls into the player project, then inspects pinned frames in the browser and fixes what looks wrong.
- You get:
- A Lottie JSON scene under public/projects/, with editable slots, such as the background color, in the player's properties panel.
- Design defaults:
- Restraint: no cards, borders or dividers unless they do a job, one background tone, and easing chosen by each motion's behavior.
- Backgrounds:
- Transparent for logos, icons, loaders, overlays and lower thirds; a full-frame scene gets a background layer with a color control.
- Needs:
- Node.js for the player's dev server and a browser to inspect frames; with no player project it downloads one with npx degit.
Works inside the repo's player project: if none exists, it downloads it with npx degit, runs npm install and starts the dev server.
TL;DR
Text-to-lottie pairs this skill with a local player built on Skia's Skottie renderer, where each animation is a scene at public/projects/<project>/<scene>/lottie.json, which the player's scene list picks up as soon as it is written. The skill reads only the references the task needs: one primary recipe, such as logo, typography, loaders and icons, SVG animation, camera moves, diagrams, data and stats, product promos or visual effects, plus guides to motion and design taste. It asks only when the answer changes the output, such as a transparent or full-frame background, brand constraints or supplied assets. It picks the target scene by authority, a file path first, then a browser route, then a known scene, otherwise a new one, and overwrites the starter scene only while it is still the untouched placeholder. Important values become slots with labelled controls. Native text renders when the scene ships its font file. Before finishing it validates the JSON, confirms the player lists the scene, and checks the first, middle and last frames for a blank canvas, missing assets, wrong layer order, bad easing, cropping and text overflow.
Summarizes the skill at 3c72912.
npx skills add https://github.com/diffusionstudio/lottie --skill text-to-lottie skills.sh pageSource on GitHubAll skills from diffusionstudio/lottie
- Total Downloads
- 11,200 on skills.sh, Nov 9, 2026
- Repo stars
- 5,708 diffusionstudio/lottie
- First seen
- Jun 8, 2026 on skills.sh
Weekly values
| Week to | Installs |
|---|---|
| Sep 21 | 200 |
| Sep 28 | 170 |
| Oct 5 | 225 |
| Oct 12 | 221 |
| Oct 19 | 279 |
| Oct 26 | 280 |
| Nov 2 | 285 |
| Nov 9 | 300 |
| Category |
Generate and edit video, images and audio. Taste for interfaces that don't look generated: direction, motion and accessibility. Everything for building software: planning, coding, debugging, design, frameworks, cloud, agents and skills. |
|---|---|
| Type |
A multi-step process the agent follows: interview, debug, run a TDD loop, review. |
| Effect |
Its own steps create or change files, git state or local tools. |
| Needs |
A specific command-line tool or desktop app must be installed, such as gh, agent-browser, LibreOffice, Obsidian or a vendor CLI. Drives a real Chromium or Chrome browser. |
| Publisher |
A verified publisher on skills.sh, or the company or maintainer behind the product the skill operates. |
| Topics | |
| Stack |
SKILL.md
From diffusionstudio/lottie at 3c72912. Checked daily, last changed Nov 6, 2026.
Frontmatter
name: text-to-lottie
description: Create, edit, or fix Lottie/Bodymovin JSON animations for the local Skia Skottie player. Use for text-to-Lottie, SVG/logo/type animation, loaders/icons, state feedback, UI microinteractions, lower thirds, diagrams, data/stat/chart animations, product promos, scene/camera motion, visual effects, scene edits, slots/controls, and Skottie debugging.Text To Lottie
Author production-ready Lottie JSON for the official local Skia Skottie player. The deliverable is a renderable scene in the player, not isolated JSON.
Operating Model
- Use the official player project and verify in Skia Skottie. Do not hand-roll a custom viewer or switch renderers for verification.
- Keep the skill portable across Agent Skills clients. Avoid host-specific commands, command modes, or orchestration conventions in skill instructions.
- Prefer fewer questions and stronger defaults. Ask only when a decision changes the output materially, such as transparent vs full-frame background, brand constraints, target format, or supplied source assets.
- Prioritize clean, intentional, professional motion over merely satisfying the literal prompt.
Reference Loading
This SKILL.md is the thin control plane. Load only one-level references that
match the task. Do not open the whole reference library.
Always read references/player-contract.md before creating, editing, fixing, or
verifying a scene. If a routed reference is unavailable, continue using the
inline rules in this file.
| User intent | References to read when present |
|---|---|
| Any new/edit/fix Lottie scene | references/player-contract.md |
| JSON structure, keyframes, slots, shapes, assets | references/lottie-spec-map.md |
| Logo animation | references/recipe-logo.md, references/motion-taste.md, references/design-taste.md |
| Typography, title, quote, text reveal | references/recipe-typography.md, references/design-taste.md, references/motion-taste.md |
| Lower third, name tag, caption bar, overlay | references/recipe-lower-thirds.md, references/design-taste.md, references/motion-taste.md |
| Loader, icon, spinner, badge animation | references/recipe-loaders-icons.md, references/motion-taste.md |
| Success, error, warning, completion, empty state | references/recipe-loaders-icons.md, references/design-taste.md, references/motion-taste.md |
| UI microinteraction | references/recipe-ui-microinteractions.md, references/design-taste.md, references/motion-taste.md |
| Generic "animate this SVG" or SVG-to-Lottie | references/recipe-svg-animation.md, references/svg-compatibility.md, references/motion-taste.md |
| Camera follow, pan, zoom, parallax, scene motion | references/recipe-camera-scene-motion.md, references/design-taste.md, references/motion-taste.md |
| Diagram, technical line animation, callout, flow trace | references/recipe-diagram-technical.md, references/design-taste.md, references/motion-taste.md |
| Data, stats, KPIs, charts, metrics, dashboard figures | references/recipe-data-stats.md, references/design-taste.md, references/motion-taste.md |
| Product launch, feature announcement, social promo | references/recipe-product-promo.md, references/design-taste.md, references/motion-taste.md |
| Long text, multiple ideas, list/features/steps, timeline, before/after, problem/solution, quote+proof, recap/story, product walkthrough, multi-language variations, chapters, multi-beat sequence, episode, jump/hard cuts, transition grammar | references/chapterization-transition-grammar.md, references/motion-taste.md |
| Glow, glass, metal, gradient, fill, bubble/burst effects | references/recipe-visual-effects.md, references/design-taste.md, references/motion-taste.md |
| SVG input inside logo/icon/UI/lower-third work | The task recipe plus references/svg-compatibility.md |
| Starter brief or reusable project direction | references/recipe-starter-projects.md, references/design-taste.md, references/motion-taste.md |
| Any "premium", "clean", "minimal", "modern", "sleek", or "polished" qualifier | references/design-taste.md (restraint defaults), plus the routed recipe |
For mixed prompts, choose one primary recipe from the main deliverable, then add secondary references for source format or visual treatment. Examples: SVG logo with glow uses logo as primary plus SVG compatibility and visual effects; product launch with pan/zoom uses product promo plus camera scene motion; technical SVG diagram tracing uses diagram/technical plus SVG compatibility; kinetic title with glass sweep uses typography plus visual effects.
Workflow
- Route the task using the table above. Read only the relevant references that exist.
- Locate the official player project and resolve the target scene using the
target precedence below. Before editing, verify the resolved path is
public/projects/<project>/<scene-N>/lottie.json; re-read that current file immediately before overwriting because the UI can write slot edits back to source. - Decide the background policy before authoring.
- Write or update
public/projects/<project>/<scene-N>/lottie.jsonand, when useful,controls.json. - Validate JSON, run or reuse the dev server, inspect exact frames with
?frame=N, and fix render/design/motion issues before finishing.
Inline Rules
Design Defaults (always apply)
These few defaults are non-negotiable and apply to every designed scene. Load
references/design-taste.md for the full reasoning, especially for any
"premium", "clean", "minimal", "modern", or "card" prompt.
- Premium means subtract, not add. When a prompt says premium, clean, minimal, modern, sleek, or sophisticated, default to restraint: remove chrome before adding it. Premium is carried by scale, weight, brightness, spacing, and timing, never by cards, borders, dividers, shadows, glow, or stacked tints.
- Chrome/container budget is
0by default. Do not add a framing card, container, border, or divider unless it does a job that whitespace and alignment cannot. Separate grids and columns with negative space and alignment first, a single hairline second, and a filled or bordered card last and only when explicitly warranted. - One surface tone. Use one background tone. Do not stack two near-black or two near-white tints to fake a "surface"; it reads muddy. If a card surface must differ from the background, make it one deliberate step with a clear purpose.
- One divider treatment, one color. If dividers are truly needed, use one weight and one color for all of them, title rule and column rules included. Never use slightly different colors or weights per divider.
Scene Rules
- Scene files live at
public/projects/<project>/<scene-N>/lottie.json. - Resolve target scenes by authority: an explicit file path wins; a browser URL
route like
/<project>/<scene>wins next; an already-known project/scene for the task wins next; otherwise create a new safe scene. Use/__contextonly for discovery, verification, or playback state unless the task explicitly says to edit what is currently on screen and no more specific target exists. Do not let/__context.liveoverride a known file path, URL, or project/scene. Overwritemain-project/scene-1only if it is still the untouched placeholder; otherwise create a new scene. - Full-frame standalone compositions should include a visible background layer
with a
bgColorslot andcontrols.jsonentry. - Transparent-by-default outputs include logos, icons, loaders, overlays, lower thirds, and SVG-derived assets unless the user asks for a background.
- Include top-level
v,fr,ip,op,w,h,nm,assets, andlayers. Treatopas exclusive. - Use purposeful easing and staging. Avoid defaulting to linear motion. Derive
easing from the behavior-based anchors in
motion-taste.md(chosen by motion behavior, focal element strongest); do not fall back to one uniform ease for every layer. - Use slots for important editable values and add
controls.jsonlabels/ranges when they improve the properties panel. - For SVG input, preserve the viewBox, normalize styling, watch fill rules and intersections, and verify the result in Skottie.
- Native Lottie text/text slots (
ty:5) render in this player when the scene ships its font: drop a.ttf/.otf/.ttcnext tolottie.json, declare it infonts.listwithfFamilymatching the font's embedded family name, and reference it from text documents. The loader passes every scene font to Skottie. Prefer native text; reach for vector/shape text only for deliberate path effects (stroke-on, glyph morphs, handwriting). See the player-contract "Native Text" reference.
Verification
Before finishing:
-
Confirm the intended target file path is
public/projects/<project>/<scene-N>/lottie.json. -
Validate JSON:
node -e "JSON.parse(require('fs').readFileSync('public/projects/<project>/<scene-N>/lottie.json','utf8'))" -
Confirm the official player is running and the scene appears in
GET /__context. -
Inspect pinned frames in the browser. For new scenes, check frame
0, midpoint, andop - 1. -
Confirm the background policy matches the use case.
-
Check for blank canvas, missing assets, unstyled shapes, wrong layer order, bad easing, awkward timing, cropped content, text overflow, and visible SVG artifacts.
-
Finish only when the animation renders cleanly and feels intentional.
Maintenance Evals
Do not read eval files during normal animation work. Use them only when testing or changing this skill:
evals/trigger-prompts.jsonevals/routing-prompts.jsonevals/reference-loading-prompts.jsonevals/output-rubric.md