Persian Motion Director
A Claude skill for pro motion design with correct Persian (Farsi) typography: no slideshows, no broken letters. 8 techniques, HarfBuzz tooling, Remotion examples.
Install
npx remotion studio src/index.tsInstall command taken from the project's README or registry entry. Always review code before running it.
README excerpt
Read full README on GitHub →persian-motion-director
A Claude skill for professional motion design with correct Persian typography. Films that don't play like slideshows, and Persian that doesn't fall apart.
Most generated motion fails in two predictable ways. It plays like a slideshow: scenes fade into each other, one ease-in-out on everything, everything arrives at once. And its Persian breaks: letters split apart when animated, dots get clipped, Arabic letters and digits slip in, half-spaces go missing, reveals run the wrong way.
This skill teaches Claude to direct instead: show directions before building, lock the music first, cut on the beat, keep one camera moving, and set Persian the way a Persian reader expects. It comes with eight working techniques, tooling for per-letter and per-dot Persian animation, and a checklist and linter for Persian copy.
Eight techniques
Every sketch is plain JavaScript, a pure function of time, so the same code runs live in a browser and frame-exact in Remotion.
| 01 · One camera, no cuts · یک دوربین، بدون کاتScenes on one strip, right to left; whip pans with motion blur and parallax. | 02 · One shape carries the story · یک شکل، کلِ داستانThe full stop grows into the reply bubble, then into the next full stop. |
| 03 · The real UI, directed · رابطِ واقعی، کارگردانیشدهRTL interface in 3D, a cursor on arcs, a focus pull. | 04 · Cut on the beat · کات روی ضربMusic first; a hard cut on every beat, punch-ins, inverted frames. |
| 05 · On twos, with line boil · دوفریمی، با خطِ لرزانDrawings hold two frames, lines wobble; the camera stays smooth. | 06 · Paper cut-out letters · حروفِ کاغذیEach joined letter group is a rigid paper piece, one light, matching shadows. |
| 07 · Dots last · نقطهها آخرLetter bodies first, right to left; then the dots drop in. | 08 · Kashida, not letter-spacing · کشیده، نه فاصلهStretch the joining stroke, measured in calligraphic dots. |
What's inside
SKILL.md the director's loop, anti-slideshow rules, Persian non-negotiables
references/
workflow.md brief → directions → music first → shot list on the bar grid → style frames → build → checks
anti-slideshow.md curves, springs, staggers, holds, motion blur, rhythm (with numbers and sources)
persian-typography.md joining, masks, bidi, characters, kashida, fonts, a review checklist
persian-copy.md natural Persian for motion, common machine-copy mistakes
techniques/01…08 one file per technique: recipe, values, Persian notes, the X posts behind it
scripts/
shape_persian.py HarfBuzz shaping → SVG outlines split into letter bodies, dots and joined groups
split_fa.js split a word into letters that keep their joined forms (zero-width joiners)
lint_persian.py lint copy (ي/ك, digits, half-spaces, punctuation, kashida) and code (letter boxes, letter-spacing, fades)
assets/
sketches/ motion engine, the eight sketches, shaped glyph data, gallery.html
remotion/ SketchPlayer adapter, one clip per technique, the intro film, render scripts
music/compose_shur_pulse.py an original 120 BPM track in Dastgah Shur, written in code, with a beat map
Install
Claude Code (personal skills):
git clone https://github.com/atmirrr/persian-motion-director ~/.claude/skills/persian-motion-director
Similar plugs
Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.
An AI skill that provides design intelligence for building professional UI/UX across multiple platforms.
Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local…
Why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.