Text-to-Lottie
github.com/diffusionstudio/lottie- Category
- Developer Tools
- Rank
- No. 2099Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Design & Media
- Interfaces
- Agent Skill / Plugin
- Builder
- diffusionstudio
- GitHub
- 5.5k stars
- Latest release
- v1.0.0
- Date
About
An open-source framework for generating production-ready Lottie animations with a coding agent such as Claude Code or Codex, or any other agent that supports skills. It installs as a skill via `npx skills add diffusionstudio/lottie`, after which the agent can be prompted in natural language to build an animation — for example animating an SVG path with a specified reveal direction, gradient, easing, and transparent background.
What it does
A set of written instructions that teaches an AI coding assistant to author Lottie JSON, the vector motion format that web and mobile apps play natively, paired with a local browser player built on Skia's Skottie renderer. The assistant writes each scene into a project folder, the player picks up changes live, and you scrub or pin exact frames to check the result. Editable values such as colors, sizes and text become sliders, color pickers and text fields in a properties panel, and a whole project exports as one zip of scenes, images and fonts.
Why it's ranked here
MIT licensed, and the instructions go well past a prompt template. A routing table sends each kind of request (logos, loaders, lower thirds, charts, camera moves, multi-beat sequences) to its own recipe, and a required verification pass checks the first, middle and last frames in the real renderer before the agent may finish. Design rules are written as hard defaults, for example no framing cards or borders unless whitespace cannot do the job. That makes it one of the more disciplined motion packages for coding agents, though output quality still rests on the agent following the rules.
What's good
The player rules document real Lottie failure modes instead of hoping the model knows them. Text renders blank when its font is missing, so each scene ships its own font files matched by embedded family name. Editable text needs one specific keyframed shape or it renders empty. Box text wraps by width but never clips by height. The player also imports existing dotLottie archives and plain JSON as new scenes, so it doubles as an editor for files you already have, and one control can drive several copies of the same text across a piece.
Tradeoffs
Verification is tied to one renderer. The instructions forbid checking output in lottie-web or any other player, yet the readme's own web example uses lottie-web, and the spec notes concede that masks, gradients and blend modes can differ between renderers. The player is a Solid and Vite app you clone, install and run, so this is not a lightweight drop-in. The only test script in the package manifest covers text slots; the instructions are measured by eval prompt files rather than automated tests of the player.
How to use it well
Suited to developers who want app-ready motion (loaders, icons, success states, title reveals, short promos) without opening After Effects. Hand the agent concrete material: an SVG, real data or a screenshot. Name easing, camera moves, frame rate and total frame count in the prompt, and ask explicitly for any controls beyond background color, since that is usually all you get. Check pinned frames in the player, then test again in your target runtime before shipping. Output is Lottie JSON plus scene assets for the web, iOS, Android, Flutter and React Native players the readme lists, or for further work in After Effects.
Technical notes+
skills/text-to-lottie/SKILL.md is a thin router: it maps intents to recipe files and always requires skills/text-to-lottie/references/player-contract.md before an edit. The dev server defaults to port 3030 with fallback, exposes GET /__context for the project tree and playback state, and accepts slot write-back on POST /__scenes/lottie, which is why the skill demands re-reading a scene file before overwriting it. src/lib/scene.ts fetches scene JSON with no-store caching and hands images and fonts to MakeManagedAnimation as one named-blob map. src/lib/canvaskit.ts memoises a single canvaskit-wasm instance shared by the main canvas and thumbnails. src/lib/import.ts unzips dotLottie archives with fflate; src/lib/export.ts zips served source files, not in-memory state. src/lib/lottie.ts writes text slot values to both the slot document and the bound layer fallback.
Observed
- License
- MIT
- Install surface
- Agent skill added with npx skills add; player project cloned with degit and run with npm
- Player stack
- SolidJS and Vite app rendering through canvaskit-wasm (Skia Skottie)
- Import formats
- Plain Lottie JSON and dotLottie archives
- Export
- Zip with animations, images and fonts folders
- Tests
- One Node test script in the package manifest, covering text slot Unicode handling
- Skill evals
- Trigger, routing and reference-loading prompt sets plus an output rubric
Read from README.md, package.json, LICENSE, skills/text-to-lottie/SKILL.md, skills/text-to-lottie/references/player-contract.md, skills/text-to-lottie/references/lottie-spec-map.md, src/lib/lottie.ts, src/lib/export.ts, src/lib/import.ts, src/lib/scene.ts, src/lib/canvaskit.ts.
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.