Перейти к руководству
animate-expoавтор Emil Kowalski

Animate Expo Skill.

Skill для Claude Code и Codex в области дизайна мобильных приложений: жесты, пружины и переходы для React Native и Expo.

  • Мобильные приложения
  • UI-код
emilkowalski/skills · skills/animate-expo/SKILL.mdSKILL.md
--- name: animate-expo description: Build animations in React Native and Expo, making the decisions in the order that determines whether they feel right — should it animate, which thread it runs on, which properties, spring or timing, how the gesture hands off, how it degrades. Writes the implementation with Reanimated, Gesture Handler, Expo Router and expo-haptics. Use when animating anything in an Expo app, adding gestures, sheets, screen … --- ## Operating Posture ## Hard Rules ## The Build Sequence ## Setup that silently breaks motion ## 120fps ## Recipes
Преамбула и заголовки секций считаны из исходного файла 2026-09-14 · 17 458 символов всего

01 Что делает

Что делает скилл animate-expo в Claude Code и Codex

Сводка, рабочий процесс и результаты — всё прочитано из SKILL.md этого skill.

Из SKILL.mdПрочитано 14.09.2026 · не запись выполнения

Словами самого skill

Скилл для создания движения в React Native и Expo. Он превращает запрос на анимацию в реализацию, которая проходит проверку на реальном устройстве, принимая решения в том порядке, который определяет, будут ли они ощущаться правильно: стоит ли анимировать вообще, на каком потоке это выполняется, какие свойства, spring или timing, как передаётся жест, как деградирует поведение.

Всё следует из трёх фактов о мобильных устройствах: hover не существует, есть два runtime, и палец пользователя находится на элементе. Скилл предназначен для всех, кто анимирует приложение на Expo, добавляет жесты, шторки, переходы между экранами, отклик на нажатие или haptics, либо исправляет анимацию, которая заикается на устройстве. Код написан с использованием Reanimated, Gesture Handler, Expo Router и expo-haptics.

Что он выдаёт

  • Сам код реализации, написанный напрямую, а не предложенный в виде вариантов.
  • Короткий результат проверки, указывающий частотный уровень и названное назначение, включая то, что было отклонено и почему.
  • Строка с ингредиентами: инструмент, свойства, spring или curve плюс duration, а также на каком runtime выполняется работа.
  • Список того, что нужно проверить «на ощупь» на устройстве, поскольку передачу жеста и таймингхаптики нельзя оценить по коду.
Смотрите пример запроса ↗

Как это работает

  1. 01
    Проверьте анимацию прежде всего остального

    Таблица частоты решает, происходит ли движение вообще; верхний уровень останавливает процесс и не пишет код. Переключение вкладок никогда не сопровождается сдвигом, потому что вкладки — это равноправные элементы, а не иерархия.

  2. 02
    Назовите цель одним словом

    Skill требует назвать одним словом намерение перед тем, как продолжить — feedback, spatial consistency, state indication, предотвращение резкого изменения, explanation или delight, причём последнее только для редких моментов первого знакомства.

  3. 03
    Выберите самый дешёвый инструмент, который работает

    Пройдите по таблице сверху вниз и остановитесь на первой подходящей строке: CSS transition, CSS keyframes, layout animation, shared value плюс Gesture, затем native stack, formSheet, NativeTabs, Link.Menu, RefreshControl, Lottie или Skia.

  4. 04
    Ограничьте анимируемые свойства

    Transform и opacity ничего не стоят; всё остальное запускает layout pass, который каждый кадр заново прогоняет Yoga для узла и его соседей.

  5. 05
    Выбирайте spring или timing в зависимости от пальца

    Любое взаимодействие, инициированное пальцем, получает spring, чтобы скорость сохранялась при прерывании; всё остальное использует timing-кривую, никогда ease-in.

  6. 06
    Не выносите кадр на JS thread

    Shared values передаются в useAnimatedStyle вместо React state, а вызовы RN-runtime переносятся в onEnd или в реакцию на порог, а не выполняются внутри обновления жеста.

02 Определите своё применение

Когда использовать скилл animate-expo

Используйте skill animate-expo в Claude Code или Codex, когда задача — дизайн мобильного приложения такого рода. Применимость и ограничения ниже взяты из собственного файла skill.

Хорошо подходит

  • Анимация чего-либо в приложении Expo, включая жесты, sheets, переходы между экранами, отклик на нажатие и хаптику.
  • Движение, в котором задействован палец, поэтому прерываемость и передача скорости рассматриваются как базовое требование, а не как полировка.
  • Запрос, соответствующий одному из названных рецептов, где начинать нужно с рецепта, а не с пустого файла.
  • Переработка веб-паттернов взаимодействия для платформы без hover, где состояния hover должны превратиться в press, position или ничто.

Знайте границы

  • Веб-анимация, которая относится к другому skill.
  • Тестирование движения в Expo Go, которое не является средой для оценки производительности и скрывает искомые проблемы.
  • Запросы, не прошедшие проверку по частоте — skill называет причину и отказывается писать анимацию.
  • Проекты, ещё работающие на старой архитектуре, поскольку Reanimated 4 требует New Architecture.

Что предоставить

  • Взаимодействие и то, как часто оно происходитЧастотный уровень решает, будет ли что-либо создано вообще; переключение вкладок, открытие и закрытие клавиатуры, скроллинг и переключатели настроек находятся на верхнем уровне.
  • Назначение, названное одним словомБез единого называемого назначения сборки не будет.
  • Пакеты, нужные проекту, устанавливаемые через ExpoУстановка идёт через Expo CLI, чтобы версии разрешались относительно SDK проекта — обычный npm install этого не даст.

03 Внутри скилла

Правила, которые Skill animate-expo задаёт Claude Code и Codex

8 конкретных инструкций, значений по умолчанию и ограничений, которые SKILL.md задаёт для агента — та часть файла, которая влияет на результат.

  1. Выполняйте последовательность по порядку

    Шаги 1 и 2 определяют всё, что следует далее, поэтому частота и названное назначение должны быть определены до выбора инструмента или свойства.

  2. Reanimated, а не Core Animated

    Core Animated не может управляться жестом без пересечения моста, а useNativeDriver допускает только transform и opacity.

  3. Никаких приблизительных значений

    Кривые и конфигурации пружин нужно брать из таблиц в файле, а не придумывать.

  4. Режим сниженной анимации поставляется вместе с анимацией

    Обработка доступности — часть того же изменения, а не отдельная задача на потом.

  5. Оценивайте ощущение только на релизной сборке

    Проверка проводится на самом медленном поддерживаемом устройстве, на релизной сборке; симулятор и dev-сборки не считаются.

  6. Используйте два параметра пружины от Apple

    Пружины задаются через duration плюс dampingRatio плюс velocity, а не через mass, stiffness и damping; стандартное затухание — { duration: 400, dampingRatio: 1 }, и overshootClamping: true, когда жёсткая граница должна удерживаться.

  7. Соблюдайте область касания

    Минимум 44x44pt на iOS и 48dp на Android, достигается через hitSlop, а не увеличением визуала, плюс pressRetentionOffset, чтобы смещение не отменяло нажатие.

  8. Один тактильный отклик на одно действие пользователя

    Тактильный отклик срабатывает в том же кадре, что и визуал, в причинный момент, никогда при скролле или на каждый кадр, и никогда как единственная обратная связь.

04 Применение

Установите animate-expo в Claude Code или Codex

Одна команда npx skills add, затем первая задача в вашем агенте и чек-лист для результата.

Добавьте animate-expo в Claude Code, Codex или ваш агент

Запустите в своём проекте; установщик спросит, какому агенту его добавить.

Terminal
npx skills add https://github.com/emilkowalski/skills --skill animate-expo

Общая форма CLI skills для skills/animate-expo/SKILL.md; репозиторий может документировать свой собственный путь.

Дайте скиллу первую задачу по дизайну мобильного приложения

Написано в терминах самого skill; замените части в квадратных скобках своим материалом.

Starter prompt
In my Expo app the [filter sheet] is a bottom sheet people open a few times a session, and dragging it down should dismiss it, snapping back if the drag was short. Add press feedback to the [row component] in the list and a selection haptic when the sheet detent catches. Keep all of it on the UI thread — nothing should stutter on a three-year-old Android — and ship reduced-motion handling in the same change.

Источник: составлено по SKILL.md в терминах самого skill.

Проверьте первый результат

Что сам SKILL.md считает правильным результатом:

  • Проверьте взаимодействие вручную на устройстве: смахните его, прервите на полпути, разверните обратно.
  • Убедитесь, что CADisableMinimumFrameDurationOnPhone присутствует для iPhone с ProMotion, так как последние Expo SDK устанавливают это по умолчанию.
  • Проверьте, что режим сниженной анимации сводится к меньшему и мягче, а не к нулю, сохраняя пояснение через opacity и цвет.
  • Сначала проверьте тихие «поломки», если ничего не запускается: плагин Babel для worklets и обёртку GestureHandlerRootView вокруг приложения.

В OpenDesign импортируйте animate-expo по ссылке его SKILL.md: Plugins → Add → Skill → Import from link, затем выберите его в верхней панели.

05 Открытый исходный код, проверяемость

Источник, лицензия и проверка

Откуда взяты факты на этой странице и когда они были последний раз проверены.

Repository
github.com/emilkowalski/skills Ветка main
Файл skill
skills/animate-expo/SKILL.md Контрольная сумма содержимого записана при проверке; коммит d23d7f8
License
MIT Из LICENSE.
Звёзды репозитория
37 516 Снимок GitHub сделан 2026-09-14 для всего репозитория emilkowalski/skills, который содержит 9 навыков в этом каталоге. Не является оценкой или счётчиком использования для animate-expo.
Проверено OpenDesign
2026-09-14 Исходный файл, путь, текст лицензии и количество звезд были проверены. Не входит в основной комплект OpenDesign (проверено 2026-08-28); живой запуск не был записан на этой странице.

Внутри SKILL.md

  1. Рабочая позицияДействуйте как старший инженер: решайте, указывайте причину в одной строке, пишите код.
  2. Жёсткие правилаПять неизменных требований: порядок последовательности, Reanimated, табличные значения, сниженная анимация, оценка в релизной сборке.
  3. Последовательность сборкиДевять упорядоченных шагов — от частотного фильтра до свойств, пружин, потока и хаптики.
  4. Настройка, которая незаметно ломает анимациюПричины, из-за которых анимация не запускается: установка, плагин Babel, корневой view и архитектура.
  5. 120fpsВключение CADisableMinimumFrameDurationOnPhone, чтобы у iPhone с ProMotion был бюджет кадра 8ms.
  6. РецептыОтсылает к RECIPES.md по обратной связи при нажатии, шторкам, свайпам, заголовкам, UI клавиатуры, вкладкам.
  7. Никогда не выпускатьТаблица из двух столбцов, где запрещённым паттернам сопоставлена замена, которую следует использовать вместо них.
  8. РезультатКод плюс несколько строк о результате фильтра, ингредиентах и том, что нужно проверить на ощупь.
  9. ТонКатегоричный и краткий; прямо говорит, когда чему-то вообще не следует анимироваться.
Собственное описание skill
«Создавайте анимации в React Native и Expo, принимая решения в том порядке, который определяет, будут ли они правильными — должна ли анимация существовать, в каком потоке она выполняется, какие свойства, пружина или тайминг, как передаётся жест, как деградирует. Пишет реализацию с Reanimated, Gesture Handler, Expo Router и expo-haptics. Используйте при анимации чего угодно в приложении Expo, добавлении жестов, шторок, переходов между экранами, обратной связи на нажатие или тактильных откликов, или исправлении анимации, которая тормозит на устройстве. Для веб-анимации используйте `animate`.»

Описание из front-matter в SKILL.md. Полный файл содержит около 17 458 символов. Читать полный файл на GitHub.

06 Перед установкой

Вопросы о skill animate-expo

Ответы взяты из SKILL.md в редакции от 2026-09-14, а не из записанного запуска.

Почему Reanimated, а не базовый Animated API?

Базовый Animated не может управляться жестом без пересечения bridge, а useNativeDriver допускает только transform и opacity. Ворклеты Reanimated работают в UI-потоке и продолжают работать, даже когда JS занят.

Что происходит, если взаимодействие случается десятки раз в день?

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

Animate Expo

Запустите animate-expo на реальной задаче дизайна мобильного приложения.

Скачайте OpenDesign, импортируйте animate-expo по ссылке на его SKILL.md, вставьте промпт выше и прочитайте план перед результатом.

Терминал
npx skills add https://github.com/emilkowalski/skills --skill animate-expo

OpenDesign для компьютера

Одна дизайн-система. Единый образ бренда во всех материалах

В полном Vibe Design Workspace одни и те же правила бренда работают для сайтов, слайдов, интерактивных прототипов, дашбордов, изображений и HTML-видео. Подключите локальные Codex, Claude Code, Cursor и другие кодинг-агенты и создавайте бесплатно.

  • Сайты, слайды, прототипы, дашборды, изображения и видео
  • Более 140 дизайн-систем и полная библиотека шаблонов и навыков
  • Локальный Codex и более 21 кодинг-агента · Бесплатно
Скачать бесплатно

Для macOS и Windows