# Remotion Rule: Charts > Remotion skill rule: Chart and data visualization patterns for Remotion. Use when creating bar charts, pie charts, line charts, stock graphs, or any data-driven animations.. Part of the official Re... ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: ## Quick Use ```bash npx skills add remotion-dev/skills ``` This rule activates automatically when working with charts in a Remotion project. --- ## Intro Chart and data visualization patterns for Remotion. Use when creating bar charts, pie charts, line charts, stock graphs, or any data-driven animations.. Part of the [Remotion AI Skill](https://tokrepo.com/en/workflows/57997ead-c8fa-409c-916f-28bbc0adc8d9) — the official Agent Skill for programmatic video creation in React. **Best for**: Developers using Remotion for charts **Works with**: Claude Code, OpenAI Codex, Cursor --- ## Rule Content # Charts in Remotion Create charts using React code - HTML, SVG, and D3.js are all supported. Disable all animations from third party libraries - they cause flickering. Drive all animations from `useCurrentFrame()`. ## Bar Chart ```tsx const STAGGER_DELAY = 5; const frame = useCurrentFrame(); const { fps } = useVideoConfig(); const bars = data.map((item, i) => { const height = spring({ frame, fps, delay: i * STAGGER_DELAY, config: { damping: 200 }, }); return
; }); ``` ## Pie Chart Animate segments using stroke-dashoffset, starting from 12 o'clock: ```tsx const progress = interpolate(frame, [0, 100], [0, 1]); const circumference = 2 * Math.PI * radius; const segmentLength = (value / total) * circumference; const offset = interpolate(progress, [0, 1], [segmentLength, 0]); ; ``` ## Line Chart / Path Animation Use `@remotion/paths` for animating SVG paths (line charts, stock graphs, signatures). Install: `npx remotion add @remotion/paths` Docs: https://remotion.dev/docs/paths.md ### Convert data points to SVG path ```tsx type Point = { x: number; y: number }; const generateLinePath = (points: Point[]): string => { if (points.length < 2) return ""; return points.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" "); }; ``` ### Draw path with animation ```tsx import { evolvePath } from "@remotion/paths"; const path = "M 100 200 L 200 150 L 300 180 L 400 100"; const progress = interpolate(frame, [0, 2 * fps], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp", easing: Easing.out(Easing.quad), }); const { strokeDasharray, strokeDashoffset } = evolvePath(progress, path); ; ``` ### Follow path with marker/arrow ```tsx import { getLength, getPointAtLength, getTangentAtLength, } from "@remotion/paths"; const pathLength = getLength(path); const point = getPointAtLength(path, progress * pathLength); const tangent = getTangentAtLength(path, progress * pathLength); const angle = Math.atan2(tangent.y, tangent.x); ; ``` --- ## Source & Thanks > Created by [Remotion](https://github.com/remotion-dev). Licensed under MIT. > [remotion-dev/skills](https://github.com/remotion-dev/skills) — Rule: `charts` Part of the [Remotion AI Skill](https://tokrepo.com/en/workflows/57997ead-c8fa-409c-916f-28bbc0adc8d9) collection on TokRepo. --- Source: https://tokrepo.com/en/workflows/82118e54-6262-49d6-941a-b6ea68fc991e Author: Skill Factory