react-native — community react-native, claude-bootstrap, community, ide skills, Claude Code, Cursor, Windsurf

v1.0.0
GitHub

About this Skill

Perfect for Cross-Platform Agents needing native mobile app development capabilities with React Native Opinionated project initialization for Claude Code. Security-first, spec-driven, AI-native.

alinaqi alinaqi
[0]
[0]
Updated: 3/5/2026

Agent Capability Analysis

The react-native skill by alinaqi is an open-source community AI agent skill for Claude Code and other IDE workflows, helping agents execute tasks with better context, repeatability, and domain-specific guidance.

Ideal Agent Persona

Perfect for Cross-Platform Agents needing native mobile app development capabilities with React Native

Core Value

Empowers agents to build security-first, spec-driven, AI-native mobile applications using TypeScript and React Native, with a focus on pure business logic separation and reusable UI components, leveraging protocols like TypeScript type checking and file formats like .tsx

Capabilities Granted for react-native

Initializing opinionated project structures for Claude Code
Developing reusable UI components with TypeScript
Building screen components for native mobile apps

! Prerequisites & Limits

  • Requires TypeScript knowledge
  • React Native specific
  • Mobile app development only
Labs Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

react-native

Install react-native, an AI agent skill for AI agent workflows and automation. Works with Claude Code, Cursor, and Windsurf with one-command setup.

SKILL.md
Readonly

React Native Skill

Load with: base.md + typescript.md


Project Structure

project/
├── src/
│   ├── core/                   # Pure business logic (no React)
│   │   ├── types.ts
│   │   └── services/
│   ├── components/             # Reusable UI components
│   │   ├── Button/
│   │   │   ├── Button.tsx
│   │   │   ├── Button.test.tsx
│   │   │   └── index.ts
│   │   └── index.ts            # Barrel export
│   ├── screens/                # Screen components
│   │   ├── Home/
│   │   │   ├── HomeScreen.tsx
│   │   │   ├── useHome.ts      # Screen-specific hook
│   │   │   └── index.ts
│   │   └── index.ts
│   ├── navigation/             # Navigation configuration
│   ├── hooks/                  # Shared custom hooks
│   ├── store/                  # State management
│   └── utils/                  # Utilities
├── __tests__/
├── android/
├── ios/
└── CLAUDE.md

Component Patterns

Functional Components Only

typescript
1// Good - simple, testable 2interface ButtonProps { 3 label: string; 4 onPress: () => void; 5 disabled?: boolean; 6} 7 8export function Button({ label, onPress, disabled = false }: ButtonProps): JSX.Element { 9 return ( 10 <Pressable onPress={onPress} disabled={disabled}> 11 <Text>{label}</Text> 12 </Pressable> 13 ); 14}

Extract Logic to Hooks

typescript
1// useHome.ts - all logic here 2export function useHome() { 3 const [items, setItems] = useState<Item[]>([]); 4 const [loading, setLoading] = useState(false); 5 6 const refresh = useCallback(async () => { 7 setLoading(true); 8 const data = await fetchItems(); 9 setItems(data); 10 setLoading(false); 11 }, []); 12 13 return { items, loading, refresh }; 14} 15 16// HomeScreen.tsx - pure presentation 17export function HomeScreen(): JSX.Element { 18 const { items, loading, refresh } = useHome(); 19 20 return ( 21 <ItemList items={items} loading={loading} onRefresh={refresh} /> 22 ); 23}

Props Interface Always Explicit

typescript
1// Always define props interface, even if simple 2interface ItemCardProps { 3 item: Item; 4 onPress: (id: string) => void; 5} 6 7export function ItemCard({ item, onPress }: ItemCardProps): JSX.Element { 8 ... 9}

State Management

Local State First

typescript
1// Start with useState, escalate only when needed 2const [value, setValue] = useState('');

Zustand for Global State (if needed)

typescript
1// store/useAppStore.ts 2import { create } from 'zustand'; 3 4interface AppState { 5 user: User | null; 6 setUser: (user: User | null) => void; 7} 8 9export const useAppStore = create<AppState>((set) => ({ 10 user: null, 11 setUser: (user) => set({ user }), 12}));

React Query for Server State

typescript
1// hooks/useItems.ts 2import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; 3 4export function useItems() { 5 return useQuery({ 6 queryKey: ['items'], 7 queryFn: fetchItems, 8 }); 9} 10 11export function useCreateItem() { 12 const queryClient = useQueryClient(); 13 14 return useMutation({ 15 mutationFn: createItem, 16 onSuccess: () => { 17 queryClient.invalidateQueries({ queryKey: ['items'] }); 18 }, 19 }); 20}

Testing

Component Testing with React Native Testing Library

typescript
1import { render, fireEvent } from '@testing-library/react-native'; 2import { Button } from './Button'; 3 4describe('Button', () => { 5 it('calls onPress when pressed', () => { 6 const onPress = jest.fn(); 7 const { getByText } = render(<Button label="Click me" onPress={onPress} />); 8 9 fireEvent.press(getByText('Click me')); 10 11 expect(onPress).toHaveBeenCalledTimes(1); 12 }); 13 14 it('does not call onPress when disabled', () => { 15 const onPress = jest.fn(); 16 const { getByText } = render(<Button label="Click me" onPress={onPress} disabled />); 17 18 fireEvent.press(getByText('Click me')); 19 20 expect(onPress).not.toHaveBeenCalled(); 21 }); 22});

Hook Testing

typescript
1import { renderHook, act } from '@testing-library/react-hooks'; 2import { useCounter } from './useCounter'; 3 4describe('useCounter', () => { 5 it('increments counter', () => { 6 const { result } = renderHook(() => useCounter()); 7 8 act(() => { 9 result.current.increment(); 10 }); 11 12 expect(result.current.count).toBe(1); 13 }); 14});

Platform-Specific Code

Use Platform.select Sparingly

typescript
1import { Platform } from 'react-native'; 2 3const styles = StyleSheet.create({ 4 shadow: Platform.select({ 5 ios: { 6 shadowColor: '#000', 7 shadowOffset: { width: 0, height: 2 }, 8 shadowOpacity: 0.1, 9 }, 10 android: { 11 elevation: 2, 12 }, 13 }), 14});

Separate Files for Complex Differences

Component/
├── Component.tsx          # Shared logic
├── Component.ios.tsx      # iOS-specific
├── Component.android.tsx  # Android-specific
└── index.ts

React Native Anti-Patterns

  • ❌ Inline styles - use StyleSheet.create
  • ❌ Logic in render - extract to hooks
  • ❌ Deep component nesting - flatten hierarchy
  • ❌ Anonymous functions in props - use useCallback
  • ❌ Index as key in lists - use stable IDs
  • ❌ Direct state mutation - always use setter
  • ❌ Mixing business logic with UI - keep core/ pure
  • ❌ Ignoring TypeScript errors - fix them
  • ❌ Large components - split into smaller pieces

FAQ & Installation Steps

These questions and steps mirror the structured data on this page for better search understanding.

? Frequently Asked Questions

What is react-native?

Perfect for Cross-Platform Agents needing native mobile app development capabilities with React Native Opinionated project initialization for Claude Code. Security-first, spec-driven, AI-native.

How do I install react-native?

Run the command: npx killer-skills add alinaqi/claude-bootstrap/react-native. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.

What are the use cases for react-native?

Key use cases include: Initializing opinionated project structures for Claude Code, Developing reusable UI components with TypeScript, Building screen components for native mobile apps.

Which IDEs are compatible with react-native?

This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.

Are there any limitations for react-native?

Requires TypeScript knowledge. React Native specific. Mobile app development only.

How To Install

  1. 1. Open your terminal

    Open the terminal or command line in your project directory.

  2. 2. Run the install command

    Run: npx killer-skills add alinaqi/claude-bootstrap/react-native. The CLI will automatically detect your IDE or AI agent and configure the skill.

  3. 3. Start using the skill

    The skill is now active. Your AI agent can use react-native immediately in the current project.

Related Skills

Looking for an alternative to react-native or another community skill for your workflow? Explore these related open-source skills.

View All

widget-generator

Logo of f
f

f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.

149.6k
0
AI

flags

Logo of vercel
vercel

flags is a Next.js feature management skill that enables developers to efficiently add or modify framework feature flags, streamlining React application development.

138.4k
0
Browser

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI