persian-motion-director — скилл

Скилл для Claude о моушен-дизайне с корректным персидским: восемь приемов, шейпинг HarfBuzz для букв и точек, линтер текста и кода

  • 152 ★ репозитория
  • Последний коммит
Скилл

Расширенный доступ

Почему такой уровень

  • Скилл запускает скрипты Python и Node.js и пишет файлы роликов в проект
  • Рендер Remotion ставит зависимости из npm и нагружает процессор
Все причины и проверки

atmirrr/persian-motion-director

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/persian-motion-director

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Скилл запускает скрипты Python и Node.js и пишет файлы роликов в проект
  • Рендер Remotion ставит зависимости из npm и нагружает процессор

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

persian-motion-director учит Claude режиссировать анимацию. Скилл исходит из двух типичных провалов сгенерированного видео: оно похоже на слайд-шоу, а персидский текст ломается при анимации. Буквы расползаются, точки обрезаются, вместо персидских знаков вылезают арабские, пропадают полупробелы, текст раскрывается не в ту сторону. Рабочий цикл такой: сначала показать направления до сборки, зафиксировать музыку, монтировать по долям, вести одну движущуюся камеру. В скилле восемь рабочих приемов: одна камера без склеек, одна форма на всю историю, живой интерфейс справа налево, монтаж на долю, рисунок на двойках с дрожащей линией, буквы из бумаги, точки в конце и кашида вместо разрядки. Каждый прием написан обычным JavaScript как чистая функция времени, поэтому код идет и в браузере, и покадрово в Remotion. К скиллу приложены скрипты: shape_persian.py режет слово на тела букв, точки и соединенные группы через HarfBuzz, split_fa.js делит слово с сохранением формы соединения, lint_persian.py проверяет текст и код. Правила персидской типографики основаны на требованиях W3C к арабской и персидской верстке.

Для кого. Моушен-дизайнерам и разработчикам, которые делают ролики и анимацию с персидским или другим RTL-текстом в Remotion или на веб-коде.

Подходит, если

  • Нужен 30-секундный тизер приложения на персидском с монтажом под музыку
  • Анимация выглядит как слайд-шоу, и ее надо довести до профессионального вида
  • Персидский заголовок при анимации распадается на отдельные буквы
  • Прежде чем собирать ролик, надо показать восемь направлений на выбор

Не подходит, если

  • Видео без персидского и RTL-текста: скилл заточен под эту типографику
  • Нужна готовая видеомонтажная программа: скилл дает приемы и код, а сборку ведет агент
  • Нужна лицензионная музыка: в репозитории лежит собственный трек автора и карта долей

Пример запроса к агенту

Сделай 30-секундный персидский тизер моего приложения в Remotion с монтажом под музыку и сначала покажи восемь направлений

Ограничения

Для шейпинга нужны Python с uharfbuzz и fonttools, для покадрового рендера Remotion. Включен шрифт Vazirmatn под лицензией OFL. Приемы взяты из публичных обсуждений моушен-дизайнеров, а правила персидского проверены в Chrome, то есть в движке Remotion. Лицензия репозитория в метаданных GitHub не определена, поэтому перед коммерческим использованием материалов проверьте файл LICENSE. Приемы описаны на примерах из Remotion и браузерного JavaScript, поэтому для других инструментов анимации их придется переносить самостоятельно.

Как отключить. Удалите папку persian-motion-director из ~/.claude/skills или из .claude/skills проекта. Созданные ролики и код остаются в проекте.

Частые вопросы

Какие восемь приемов в скилле?

Одна камера без склеек, одна форма на всю историю, настоящий интерфейс справа налево, монтаж на долю, рисунок на двойках с дрожащей линией, буквы из бумаги, точки в конце и кашида. Для каждого есть живой скетч в assets/sketches и клип для Remotion.

Что проверяет lint_persian.py?

Текст на арабские буквы ي и ك вместо персидских, цифры, полупробелы и знаки препинания, а код на коробки вокруг букв, `letter-spacing` и затухания. Запуск: `python3 scripts/lint_persian.py copy copy.txt` или `python3 scripts/lint_persian.py code src/`.

Зачем нужна кашида?

Анимация растягивает соединительный штрих между буквами, и это сохраняет форму слова. Прием 08 измеряет растяжку в каллиграфических точках.

Работает ли скилл без Remotion?

Да, скетчи запускаются в браузере: cd assets/sketches && python3 -m http.server 8000. Remotion нужен для покадрового рендера и сборки клипов.

Когда Claude подхватывает скилл?

Когда вы просите анимацию или ролик с персидским, фарси, арабской вязью или RTL-текстом, а также когда жалуетесь, что движение выглядит как слайд-шоу, дефолтно или не профессионально.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

Девять скиллов по моушн-дизайну для Claude Code: тайминг, цвет, композиция, After Effects, Remotion, логотипы и фоны.

ПлагинМинимальный доступ226Звезды репозитория

Скилл Claude Code делает из строки с темой шоурил на HyperFrames: тайминг по битам, переходы-морфы и звук, написанный кодом.

СкиллМинимальный доступ185Звезды репозитория

Набор для моушн-дизайна с агентом: правила с цифрами, самопроверка по кадрам и синтез звука, плюс веб-симуляции в 60 к/с

СкиллРасширенный доступ963Звезды репозитория

Скилл для Claude Code делает на Remotion ролик о вашем продукте из его компонентов, токенов дизайна и логотипа, с музыкой в такт

СкиллРасширенный доступ425Звезды репозитория

Скилл делает из одной фразы motion-ролик на 12–60 секунд целиком кодом: цвета, шрифты, раскадровка и музыка выводятся из брифа.

СкиллРасширенный доступ197Звезды репозитория

Скилл для Claude Code и Codex: делает кинематографичные продуктовые видео на Remotion из карточек-рецептов кадров, готового шаблона и аудиоресурсов

СкиллРасширенный доступ18,9 тыс.Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйЗвезды репозиторияГлавное отличие
persian-motion-director (эта карточка)нет152
Motion Design Skillнет2 980общий моушен-дизайн без работы с персидской типографикой
HyperFramesнет83 283сборка роликов из HTML без правил для RTL-текста
Framer Motion AI Skillsнет10анимации интерфейса на Framer Motion, видеороликов тут нет

Коротко о README

README называет два провала сгенерированной анимации и дает восемь приемов в таблице с превью. Дальше описаны состав репозитория (SKILL.md, `references`, `scripts`, `assets`), установка в личные скиллы Claude Code или в .claude/skills проекта, примеры запросов и запуск живых скетчей и клипов Remotion.

Бейдж для README

Исходный SKILL.md

---
name: persian-motion-director
description: Direct and build professional motion design (promo and launch films, kinetic typography, animated explainers, social clips, title sequences) with correct Persian/Farsi and right-to-left typography, in Remotion or plain web code. Use this skill whenever the user wants a video, animation, motion graphics, teaser or animated text that contains Persian, Farsi, Arabic-script or RTL text, and whenever they say a motion piece looks "default", "like a slideshow", "AI-made" or "not pro", or that the Persian looks off, broken or disconnected, even if they never say "motion design". It brings the anti-slideshow method (one camera, objects that carry across scenes, music-first beat-locked edits), eight ready techniques with live sketches, HarfBuzz tooling for per-letter and per-dot Persian animation, kashida stretching, and a Persian correctness checklist and linter.
---

# Persian Motion Director

You are directing, not just animating. Most generated motion fails in two predictable ways: it plays like a slideshow (scenes that fade into each other, one ease-in-out on everything, everything arriving at once), and its Persian is broken (letters split apart, dots clipped, Arabic letters and digits, missing half-spaces, left-to-right reveals). This skill fixes both. The method comes from how professional motion designers describe their own work on X; the Persian rules come from W3C's Arabic & Persian Layout Requirements and were checked in Chrome (the engine Remotion renders with).

## The director's loop

Work in this order. Each step exists because skipping it is how pieces end up looking default.

1. **Read the brief and fill only real gaps.** Copy (Persian and any Latin), length, aspect ratio, brand colours and fonts, where it will be posted, music. If a brand exists, use its palette and fonts instead of inventing one.
2. **Show directions before building.** Motion is subjective and expensive to redo. Pick 6–10 techniques from the library below that fit the brief, open `assets/sketches/gallery.html` (or render the clips) and let the user choose. Rework after a full build costs ten times more than a pick list.
3. **Music first.** Lock the track and its tempo before animating. Build a bar map: which section lives on which bars. If there's no track, compose one (`assets/music/compose_shur_pulse.py` is a working example that writes `beats.json`) or ask for one. At 120 BPM one beat is 0.5 s and one bar 2 s; at 60 fps a beat is 30 frames.
4. **Write the shot list on the bar grid** (template in `references/workflow.md`). Every section change lands on a downbeat; every cut on a beat or 2 frames before it.
5. **Style frames.** Render 4–6 stills (`assets/remotion/render-stills.mjs`) and get a yes before animating everything.
6. **Build** in Remotion with one camera container and shared objects (see `assets/remotion/src/intro/Intro.tsx` for a complete worked example).
7. **Check**, then render: run `scripts/lint_persian.py` on all copy, review stills at full size for clipped dots and broken joins, scrub every cut against the beat, and make loops exact (clip length = a whole number of loops).

## What separates pro motion from a slideshow

| Slideshow habit | What to do instead |
|---|---|
| Scenes chained with fade transitions | One camera travels between scenes, or one object carries into the next scene. Never `fade()` scene to scene. |
| The same ease-in-out on everything | Each move gets its own curve. Entrances: `bezier(.16,1,.3,1)` over ~20 frames. Exits: `bezier(.7,0,.84,0)` over ~8 frames, travelling only ~70% as far. |
| Everything arrives together, evenly spaced | One lead element, the rest 2–4 frames behind, spaced on a curve rather than evenly. |
| Remotion's default bouncy `spring()` (overshoots ~16%) | Under 2% overshoot on UI, none on text: stiffness 100 / damping 16 gives ~1.5%. |
| Music laid on at the end | Music first; cuts on the beat; sound attacks placed on the visual hits. |
| Centered text on a gradient, logo at the end | Show the real product doing a real task in the first 10 seconds. |
| Freezes, or motion that never pauses | Hold long enough to read; only the camera breathes (zoom 1.00 → 1.04 per scene). |
| Grain, halftone or ASCII as a finish | Texture only with a physical reason (paper, print, light). These finishes are now the AI default. |

More numbers and the sources behind them: `references/anti-slideshow.md`.

## Persian non-negotiables

Read `references/persian-typography.md` before writing any Persian into a frame. The short version:

1. **Never put Persian letters in their own boxes.** `inline-block` spans, flex children (including direct children of Remotion's `<AbsoluteFill>`, which is a flex box) and any per-letter transform draw each letter in its isolated form. Animate whole words or lines. When you truly need per-letter or per-dot motion, use shaped outlines (`scripts/shape_persian.py`) or zero-width-joiner splitting (`scripts/split_fa.js`).
2. **Fade words, not letters.** Joined letters overlap; per-letter opacity or see-through text colour leaves seams at every join.
3. **Masks need slack.** Persian reaches far above and below Latin: pad clip masks by about 0.5em top and bottom, use line-height ≥ 1.6 (≥ 2.4 for Nastaliq), or the dots and the top of گ get cut.
4. **Direction.** `dir="rtl" lang="fa"` on every Persian block; wrap Latin names and numbers in `<bdi>` (or FSI/PDI) or the line scrambles. Reveals and staggers start on the right, camera progress travels left, "next" arrows point left. Play buttons, clocks and numbers are never mirrored.
5. **Characters.** Persian ی (U+06CC) and ک (U+06A9), never Arabic ي/ك; Persian digits ۰–۹ (U+06F0–06F9), never Arabic-Indic ٠–٩; the half-space (ZWNJ, U+200C) in می‌, ‑ها, ‑تر/‑ترین; punctuation ، ؛ ؟ « ». `scripts/lint_persian.py` catches these.

Сообщить о проблеме