react-native-patterns — скилл для Claude Code
Скилл направляет агента при разработке мобильных приложений на React Native и Expo: от навигации до различий между iOS и Android.
npx skills add spencerpauly/awesome-cursor-skills --skill react-native-patterns -a claude-codeЧто делает react-native-patterns
Скилл даёт агенту правила для React Native и Expo. Он охватывает файловую навигацию через expo-router, раздельный код для iOS и Android, стили через StyleSheet.create и работу с длинными списками через FlatList.
Внутри есть структура маршрутов с app/_layout.tsx, динамическими путями и вкладками. Скилл также предлагает @react-navigation/native, nativewind, zustand, @tanstack/react-query, expo-image и другие библиотеки под отдельные задачи.
Expo советуется для большинства проектов. Если нужен пользовательский нативный модуль, который Expo не поддерживает, выбирайте Bare React Native, потому что там доступен полный контроль над нативной частью.
Какие задачи решает
- Настроить файловую навигацию в
expo-router - Разделить код для iOS и Android
- Отрисовать длинный список через
FlatList - Убрать стили, создаваемые при каждом рендере
- Подключить хранение данных через
expo-secure-store
Примеры запросов агенту
- Используй react-native-patterns и создай навигацию с вкладками в
expo-router. - Примени react-native-patterns: вынеси различия iOS и Android в
Component.ios.tsxиComponent.android.tsx. - Используй react-native-patterns, чтобы переделать длинный
ScrollViewвFlatList.
Как установить react-native-patterns
1Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill react-native-patterns -a claude-code2Вручную: положить файлы
~/.claude/skills/react-native-patterns/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/react-native-patterns/
1Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill react-native-patterns -a codex2Вручную: положить файлы
.agents/skills/react-native-patterns/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill react-native-patterns -a cursor2Вручную: положить файлы
.cursor/skills/react-native-patterns/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install spencerpauly/awesome-cursor-skills react-native-patterns2Вручную: положить файлы
.github/skills/react-native-patterns/SKILL.md1Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill react-native-patterns -a gemini-cli2Командой платформы
gemini skills install https://github.com/spencerpauly/awesome-cursor-skills --path resources/react-native-patternsВручную: положить файлы
.devin/skills/react-native-patterns/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill react-native-patterns -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о react-native-patterns
Как установить react-native-patterns в Claude Code?
Выполните npx skills add spencerpauly/awesome-cursor-skills --skill react-native-patterns -a claude-code, затем повторите npx skills add spencerpauly/awesome-cursor-skills --skill react-native-patterns -a claude-code.
Что делает react-native-patterns?
Скилл помогает агенту следовать практикам React Native и Expo при создании мобильного приложения. Он покрывает навигацию, стили, производительность, платформенный код и нативные модули.
Когда выбирать Expo, а когда Bare React Native?
Expo советуется для большинства проектов. Bare React Native нужен, когда требуется пользовательский нативный модуль, который Expo не поддерживает.
Исходный текст
SKILL.md · CC0-1.0
---
name: react-native-patterns
description: Build mobile apps with React Native and Expo — navigation, platform-specific code, performance, and native modules.
user-invocable: true
---
# React Native Patterns
Build production-quality mobile apps with React Native and Expo.
## Project Setup
**Expo (recommended for most projects):**
```bash
npx create-expo-app@latest my-app
cd my-app
npx expo start
```
**Bare React Native (when you need full native control):**
```bash
npx @react-native-community/cli init MyApp
```
Use Expo unless you need a custom native module that Expo doesn't support.
## Navigation
Use `expo-router` (file-based routing) or `@react-navigation/native`:
```
app/
├── _layout.tsx # Root layout (tabs, stack, drawer)
├── index.tsx # Home screen
├── (tabs)/
│ ├── _layout.tsx # Tab navigator
│ ├── home.tsx
│ ├── profile.tsx
│ └── settings.tsx
└── [id].tsx # Dynamic route
```
## Platform-Specific Code
```typescript
import { Platform } from 'react-native';
const styles = StyleSheet.create({
shadow: Platform.select({
ios: { shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1 },
android: { elevation: 4 },
}),
});
```
For larger differences, use platform-specific files:
- `Component.ios.tsx`
- `Component.android.tsx`
## Styling
Use `StyleSheet.create` for performance (styles are sent to native once):
```typescript
const styles = StyleSheet.create({
container: { flex: 1, padding: 16 },
title: { fontSize: 24, fontWeight: '700' },
});
```
For a Tailwind-like experience, use `nativewind`:
```tsx
<View className="flex-1 p-4">
<Text className="text-2xl font-bold">Hello</Text>
</View>
```
## Performance
**FlatList over ScrollView** for long lists:
```tsx
<FlatList
data={items}
keyExtractor={(item) => item.id}
renderItem={({ item }) => <ItemRow item={item} />}
initialNumToRender={10}
maxToRenderPerBatch={5}
windowSize={5}
/>
```
**Memoize expensive components:**
```tsx
const ItemRow = React.memo(({ item }: { item: Item }) => (
<View><Text>{item.name}</Text></View>
));
```
**Avoid:**
- Inline styles (creates new objects every render)
- Anonymous functions in `renderItem`
- Large images without caching (`expo-image` handles this)
## Common Libraries
| Need | Library |
|------|---------|
| Navigation | `expo-router` or `@react-navigation/native` |
| State | `zustand`, `jotai`, or React context |
| Data fetching | `@tanstack/react-query` |
| Images | `expo-image` |
| Icons | `@expo/vector-icons` |
| Storage | `expo-secure-store` (sensitive), `@react-native-async-storage/async-storage` (general) |
| Animations | `react-native-reanimated` |
| Gestures | `react-native-gesture-handler` |
| Forms | `react-hook-form` + `zod` |
## Tips
- Test on both iOS and Android from the start, not at the end
- Use `expo-dev-client` for custom native modules with Expo
- Handle safe areas with `react-native-safe-area-context`
- Always handle keyboard avoidance for forms (`KeyboardAvoidingView`)
- Use `expo-updates` for OTA updates in production
© spencerpauly · CC0-1.0 · spencerpauly/awesome-cursor-skills