Uniwind skills

Uniwind

Два скилла для React Native с Tailwind v4: правила стилизации через Uniwind и пошаговый перенос проекта с NativeWind

  • 1 740 ★ репозитория
  • Последний коммит
  • MIT
СкиллОфициальный

Широкий доступ

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

  • Скилл переноса удаляет пакеты NativeWind, файл tailwind.config и описания типов, меняет конфигурации Metro и Babel
  • Агент запускает менеджер пакетов и поиск по коду проекта, а при очистке кэша сбрасывает кэш Watchman
  • Установка Uniwind Pro требует входа через аккаунт GitHub и платной лицензии
Все причины и проверки

uni-stack/uniwind

Установка

Работает в

Ручная установка

bun add uniwind tailwindcss

Это установка самой библиотеки из описания проекта, дальше идут руководства по установке в документации. Скиллы она не ставит.

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

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

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Скилл переноса удаляет пакеты NativeWind, файл tailwind.config и описания типов, меняет конфигурации Metro и Babel
  • Агент запускает менеджер пакетов и поиск по коду проекта, а при очистке кэша сбрасывает кэш Watchman
  • Установка Uniwind Pro требует входа через аккаунт GitHub и платной лицензии

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

Что делает

Репозиторий Uniwind, привязок Tailwind CSS v4 к React Native от авторов Unistyles, содержит папку skills с двумя скиллами для работы агента в проектах на этой библиотеке. Скилл uniwind определяет тип задачи: установка, стилизация, темы, варианты, сторонние компоненты, React Navigation или диагностика. Затем он открывает нужный из девяти справочных файлов и сверяется с 14 критическими правилами. Среди них: Tailwind только версии 4, никаких динамически собранных имен классов, вместо `tailwind.config.js` настройка в `global.css`, а `withUniwindConfig` обертывает конфигурацию Metro снаружи. Скилл migrate-nativewind-to-uniwind переносит проект с NativeWind за 15 шагов. Сначала он читает `package.json`, `tailwind.config`, `metro.config.js`, `babel.config.js` и файл `global.css`. Потом удаляет `nativewind` и `react-native-css-interop`, ставит Uniwind с Tailwind 4, убирает пресет Babel, переписывает конфигурацию Metro и CSS, удаляет `cssInterop` и `remapProps`, переносит переменные тем и проверяет отступы безопасной области. В конце идет список проверки на iOS и Android: темы, шрифты и отсутствие импортов NativeWind. Когда агент не уверен в API, оба скилла отправляют его к документации Uniwind в формате llms-full.txt, чтобы не угадывать.

Для кого. Для разработчиков мобильных приложений на React Native и Expo, которые стилизуют экраны классами Tailwind или переходят на Uniwind с NativeWind.

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

  • Агент добавляет новый экран в приложение на Expo и должен писать классы Uniwind по правилам библиотеки
  • Проект стоит на NativeWind, и его нужно целиком перевести на Uniwind и Tailwind 4
  • Цвет у `ActivityIndicator` или `Switch` не меняется классом, и нужно найти причину
  • Нужны темы светлая, темная и свои с одинаковым набором CSS-переменных
  • Сторонний компонент вроде expo-image надо подключить к `className` через `withUniwind`

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

  • Проект сидит на Tailwind 3: скилл поддерживает только четвертую версию
  • Приложение собрано на React Native ниже 0.81 или Expo SDK ниже 54: скилл советует сначала обновиться
  • Основной скилл не ведет перенос с NativeWind: для этого есть отдельный скилл из того же репозитория
  • Нужна веб-верстка без React Native: правила описывают только мобильные компоненты и сборщик Metro
  • Стили приложения уже живут на Unistyles: для них в каталоге есть скилл React Native Unistyles v3

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

Перенеси мое приложение на Expo с NativeWind на Uniwind и Tailwind 4, после каждого шага говори, какие файлы изменены

Ограничения

Скилл рассчитан на Uniwind 1.7.0 и новее, Uniwind Pro 1.2.1 и новее, Tailwind CSS 4, React Native 0.81 и новее, Expo SDK 54 и новее. Компонент `LayoutDirection` появился в версии 1.8.0, а `ScopedVariables` в 1.11.0.

Где лежит команда установки самих скиллов, в репозитории не сказано: папки из `skills` придется копировать в каталог скиллов агента вручную.

Uniwind Pro платный: отдельный пакет uniwind-pro с входом через GitHub, цена начинается с 99 долларов за место в год, нужна пересборка нативной части, Expo Go не поддерживается.

Перенос с NativeWind меняет много файлов сразу: удаляет пакеты, конфигурацию Tailwind и описания типов. Перед запуском нужна чистая ветка в git.

Отдельный сервер MCP у Uniwind есть, но в репозитории скиллов его нет: скилл лишь предлагает подключить его по документации.

Как отключить. Удалите папки uniwind и migrate-nativewind-to-uniwind из каталога скиллов агента, например из `.claude/skills/`. Если сами пакеты библиотеки вам больше не нужны, уберите `uniwind` из зависимостей проекта своим менеджером пакетов.

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

Почему скилл запрещает собирать имена классов из переменных?

Tailwind ищет классы при сборке, а не во время работы приложения. Строка вроде `bg-${color}-500` для сканера не существует, поэтому скилл требует полных строк, объектов-соответствий или тернарных выражений.

Для чего нужен префикс accent- в цветах компонентов?

Свойства `color` у кнопки и `ActivityIndicator`, `tintColor` у изображения, `thumbColor` у `Switch` не входят в объект стиля. Для них нужен проп вида `colorClassName` с классом `accent-blue-500`, а обычный `text-blue-500` сработает только на `className`.

Можно ли обернуть View или Pressable в withUniwind?

Нет, скилл запрещает это для компонентов react-native и react-native-reanimated: у них поддержка `className` уже встроена, и обертка ломает поведение. `withUniwind` нужен для сторонних компонентов вроде expo-image, expo-blur и moti.

Что скилл говорит о размере rem при переносе с NativeWind?

В NativeWind базовый размер был 14 пикселей, в Uniwind по умолчанию 16. Чтобы сохранить прежние размеры, скилл предлагает задать `polyfills: { rem: 14 }` в конфигурации Metro.

Почему global.css не подключают в index.js?

Импорт в точке входа ломает горячую перезагрузку. Файл подключают в компоненте приложения, например в `App.tsx` или `app/_layout.tsx`, а папка с этим файлом считается корнем приложения для сканера Tailwind.

Нужно ли для тем компонент ThemeProvider?

Не нужен: тему меняют вызовом `Uniwind.setTheme()`. Все темы обязаны задавать один и тот же набор CSS-переменных, иначе приложение падает на этапе выполнения.

Обсуждение

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

Скиллы

React Native Unistyles v3 skill

react-native-unistyles-v3

Скилл по стилизации React Native через Unistyles v3: настройка, темы, адаптивная верстка, варианты и миграция с v2

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

Скиллы Callstack по React Native: производительность, обновление версий, миграция нативных приложений, тестирование и CI

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

SwiftUI Design Skill

swiftui-design-skill

Скилл дизайна интерфейсов на SwiftUI: компилируемый код, токены, паттерны и шесть правил против небрежности ИИ. Установка одной командой npx skills

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

Набор скиллов по iOS 26+, Swift 6.3 и SwiftUI: агент получает знания по современным фреймворкам Apple

СкиллМинимальный доступ1,2 тыс.Звезды репозитория
Официальный

Buoy MCP дает агенту читать работающее приложение на React Native или Flutter, нажимать на экран и смотреть сеть

MCP-серверШирокий доступ693Звезды репозитория

Скиллы Storybook для React Native

Storybook for React Native agent skills

Официальный

Три скилла для Claude Code и Cursor: подключение Storybook v10 к React Native, написание stories в CSF и обновление версий по одному шагу

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

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

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

ЗаписьОфициальныйЗвезды репозиторияГлавное отличие
Uniwind skills (эта запись)да1 740
React Native Unistyles v3 skillнет2 973стилизация React Native через Unistyles v3: темы, адаптивность, варианты и миграция с v2
Expo Skillsнет3 744официальные скиллы Expo: сборка, деплой, обновление и отладка приложений на Expo и EAS

Коротко о README

Описание проекта короткое: баннер, значки npm, команда `bun add uniwind tailwindcss` и ссылки на документацию с темами и перечнем поддерживаемых классов. В перечне возможностей привязки `className` для всех компонентов React Native, расчет стилей при сборке, темная и пользовательские темы, псевдоклассы, адаптивные медиазапросы и свои CSS-свойства. Папка skills содержит оба скилла с девятью справочными файлами, рядом лежат AGENTS.md и CONTEXT.md для тех, кто работает над самой библиотекой, а правила участия сводятся к обсуждению до крупных правок.

Бейдж для README

Исходный SKILL.md

---
name: uniwind
description: >
  Uniwind — Tailwind CSS v4 styling for React Native. Use when adding, building,
  or debugging components in a React Native project that uses Uniwind classNames.
  Covers setup, Metro config, global.css, theming, className props, accent-* color
  props, platform/data/state/responsive variants, CSS variables, custom utilities,
  withUniwind for third-party components, cn/tailwind-merge, tailwind-variants,
  safe area utilities, ScopedVariables, LayoutDirection, gradients, fonts, React Navigation,
  UI kits, diagnostics, troubleshooting, and Uniwind Pro features. Does not
  cover NativeWind migration.
---

# Uniwind

> Uniwind 1.7.0+ / Uniwind Pro 1.2.1+ / Tailwind CSS v4 / React Native 0.81+ / Expo SDK 54+

If user has lower version, recommend updating to 1.7.0+ (free) / 1.2.1+ (Pro) for best experience.

`LayoutDirection` is available from Uniwind 1.8.0+.

`ScopedVariables` scopes CSS variable overrides to a component subtree and is available from Uniwind 1.11.0+ / Uniwind Pro 1.6.0+.

Uniwind brings Tailwind CSS v4 to React Native. All core React Native components support the `className` prop out of the box. Styles are compiled at build time — no runtime overhead.

## Critical Rules

1. **Tailwind v4 only** — Use `@import 'tailwindcss'` not `@tailwind base`. Tailwind v3 is not supported.
2. **Never construct classNames dynamically** — Tailwind scans at build time. `bg-${color}-500` will NOT work. Use complete string literals, mapping objects, or ternaries.
3. **Never use `cssInterop` or `remapProps`** — Those are NativeWind APIs. Uniwind does not override global components.
4. **No `tailwind.config.js`** — All config goes in `global.css` via `@theme` and `@layer theme`.
5. **No ThemeProvider required** — Use `Uniwind.setTheme()` directly.
6. **`withUniwindConfig` must be the outermost** Metro config wrapper.
7. **NEVER wrap `react-native` or `react-native-reanimated` components with `withUniwind`** — `View`, `Text`, `Pressable`, `Image`, `TextInput`, `ScrollView`, `FlatList`, `Switch`, `Modal`, `Animated.View`, `Animated.Text`, etc. already have full `className` support built in. Wrapping them with `withUniwind` will break behavior. Only use `withUniwind` for **third-party** components (e.g., `expo-image`, `expo-blur`, `moti`).
8. **Font families: single font only** — React Native doesn't support fallbacks. Use `--font-sans: 'Roboto-Regular'` not `'Roboto', sans-serif`.
9. **All theme variants must define the same set of CSS variables** — If `light` defines `--color-primary`, then `dark` and every custom theme must too. Mismatched variables cause runtime errors.
10. **`accent-` prefix is REQUIRED for non-style color props** — This is crucial. Props like `color` (Button, ActivityIndicator), `tintColor` (Image), `thumbColor` (Switch), `placeholderTextColor` (TextInput) are NOT part of the `style` object. You MUST use the corresponding `{propName}ClassName` prop with `accent-` prefixed classes. Example: `<ActivityIndicator colorClassName="accent-blue-500" />` NOT `<ActivityIndicator className="text-blue-500" />`. Regular Tailwind color classes (like `text-blue-500`) only work on `className` (which maps to `style`). For non-style color props, always use `accent-`.
11. **rem default is 16px** — NativeWind used 14px. Set `polyfills: { rem: 14 }` in metro config if migrating.
12. **`cssEntryFile` must be a relative path string** — Use `'./global.css'` not `path.resolve(__dirname, 'global.css')`.
13. **Deduplicate with `cn()` when mixing custom CSS classes and Tailwind** — Uniwind does NOT auto-deduplicate. If a custom CSS class (`.card { padding: 16px }`) and a Tailwind utility (`p-6`) set the same property, both apply with unpredictable results. Always wrap with `cn('card', 'p-6')` when there's overlap.

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

Foxx AIUniwind skills
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.