Generate production-ready Lottie animations with Claude Code or Codex
$ npx -y skills add diffusionstudio/lottie --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: diffusionstudio/lottie
What's inside
Text-to-lottie is an open-source framework for generating production ready Lottie animations with claude code/codex or any other coding agent supporting skills.
Install the skill:
npx skills add diffusionstudio/lottie
Then ask your coding agent to generate a Lottie animation using text-to-lottie.
Example prompt:
Create a Lottie animation from the SVG path in https://github.com/JaceThings/SF-Hello/blob/main/SVG/hello-en.svg. Reveal the path with an animation that follows the natural path direction. Apply a premium apple themed gradient to the path. Use ease-in-out timing, a transparent background, and preserve the original SVG geometry.
The agent sets up the workspace and the included player, where each animation lives as a scene inside a project. Scenes load automatically from public/projects/<project>/<scene>/lottie.json and live-update in the player as the agent edits them β so you can inspect, scrub, and refine the generated Lottie in real time.
Provide SVGs, real-world data, or screenshots whenever possible. Results are significantly better when the animation is based on concrete assets.
Describe timing and movement using motion design language like ease-in, ease-out, and ease-in-out.
Professional motion graphics often rely on camera movement. Include camera pushes, pans, zooms, and rig-like motion in your prompt.
By default, outputs usually only expose a background color control. If you want to customize other properties, explicitly ask the agent to create controls for them.
If your animation requires a specific frame rate or length, include the desired FPS and total frame count in the prompt.
Generated animations can be used directly as Lottie JSON files or imported into After Effects for further refinement.
<script src="https://unpkg.com/lottie-web/build/player/lottie.min.js"></script>
<div id="anim"></div>
<script>
lottie.loadAnimation({
container: document.getElementById("anim"),
renderer: "svg",
loop: true,
autoplay: true,
path: "/animations/my-animation.json"
});
</script>
Use React Native Skia to render Lottie animations via its Skottie module. It supports iOS, Android, and web, and lets you customize animation properties, assets, and typographies at runtime.
import { Skia, Canvas, Skottie, useClock } from "@shopify/react-native-skia";
import { useDerivedValue } from "react-native-reanimated";
const animation = Skia.Skottie.Make(JSON.stringify(require("./animation.json")));
export default function Loader() {
const clock = useClock();
const frame = useDerivedValue(
() => ((clock.value / 1000) % animation.duration()) * animation.fps()
);
return (
<Canvas style={{ width: 200, height: 200 }}>
<Skottie animation={animation} frame={frame} />
</Canvas>
);
}
import Lottie
let animationView = LottieAnimationView(name: "animation")
animationView.frame = view.bounds
animationView.contentMode = .scaleAspectFit
animationView.loopMode = .loop
view.addSubview(animationView)
animationView.play()
val view = findViewById<LottieAnimationView>(R.id.animationView)
view.setAnimation(R.raw.animation)
view.loop(true)
view.playAnimation()
dependencies:
lottie: ^1.0.0
import 'package:lottie/lottie.dart';
Lottie.asset('assets/animation.json')
.gitignore
assets/
demo-1.gif
demo-2.gif
header.gif
bun.lock
components.json
index.html
LICENSE
package.json
public/
mark.svg
projects/
main-project/
scene-1/
lottie.json
README.md
README.zh-TW.md
scripts/
copy-canvaskit.mjs
text-slot-unicode.test.mjs
skills/
text-to-lottie/
evals/
output-rubric.md
reference-loading-prompts.json
routing-prompts.json
trigger-prompts.json
references/
chapterization-transition-grammar.md
design-taste.md
lottie-spec-map.md
motion-taste.md
player-contract.md
recipe-camera-scene-motion.md
recipe-data-stats.md
recipe-diagram-technical.md
recipe-loaders-icons.md
recipe-logo.md
recipe-lower-thirds.md
recipe-product-promo.md
recipe-starter-projects.md
recipe-svg-animation.md
recipe-typography.md
recipe-ui-microinteractions.md
recipe-visual-effects.md
svg-compatibility.md
SKILL.md
src/
app.tsx
assets/
fonts/
Inter-VariableFont_opsz,wght.ttf
JetBrainsMono-VariableFont.ttf
icons/
chevron-down.svg
confirm-check.svg
controls-pause.svg
controls-play.svg
diffusion-logo.svg
folder.svg
plus-add.svg
sidebar.svg
components/
playback-controls.tsx
scenes-container.tsx
sidebar-left.tsx
sidebar-right.tsx
ui/
alert-dialog.tsx
button.tsx
container.tsx
context-menu.tsx
dropdown-menu.tsx
icon.tsx
numeric-slider.tsx
slider.tsx
context/
canvas.tsx
scenes.tsx
ui.tsx
index.css
index.tsx
lib/
canvaskit.ts
export.ts
import.ts
lottie.ts
scene.ts
thumbnails.ts
utils.ts
router.tsx
styles/
base.css
types/
common.ts
index.ts
tsconfig.json
vite-plugins/
scenes.ts
vite.config.tsFAQ
lottie is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes text-to-lottie. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.