From saaip7-ipdev-mobileapps-skill
Create distinctive, production-grade React Native mobile applications with modern best practices. Use this skill when the user asks to build React Native components, screens, or complete mobile apps for iOS and Android. Handles UI creation from scratch, design-to-code conversion (Figma/mockups), state management (Zustand, Redux Toolkit), navigation (React Navigation), styling (NativeWind, StyleSheet), and performance optimization. Generates beautiful, performant cross-platform code.
How this skill is triggered — by the user, by Claude, or both
Slash command
/saaip7-ipdev-mobileapps-skill:react-native-mobile-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill guides creation of distinctive, production-grade React Native mobile applications. Implement real working TypeScript/React Native code with attention to aesthetics, performance, and platform conventions.
This skill guides creation of distinctive, production-grade React Native mobile applications. Implement real working TypeScript/React Native code with attention to aesthetics, performance, and platform conventions.
Before coding, understand context and commit to a design direction:
| Category | Recommended | Alternative |
|---|---|---|
| Runtime | Expo | Bare React Native |
| Language | TypeScript | - |
| State | Zustand | Redux Toolkit, Jotai |
| Server State | TanStack Query | SWR |
| Navigation | React Navigation 6+ | Expo Router |
| Styling | NativeWind | StyleSheet, Tamagui |
| UI Library | React Native Paper | NativeBase |
| Animations | Reanimated 3 | Animated API |
| Lists | FlashList | FlatList |
<View className="flex-1 bg-white p-4">
<Text className="text-xl font-bold text-gray-900">Title</Text>
<Pressable className="bg-blue-500 py-3 px-6 rounded-xl active:opacity-80">
<Text className="text-white font-semibold text-center">Button</Text>
</Pressable>
</View>
import { create } from 'zustand';
interface AuthStore {
user: User | null;
login: (user: User) => void;
logout: () => void;
}
export const useAuthStore = create<AuthStore>((set) => ({
user: null,
login: (user) => set({ user }),
logout: () => set({ user: null }),
}));
const Stack = createNativeStackNavigator<RootStackParamList>();
function RootNavigator() {
return (
<Stack.Navigator screenOptions={{ headerShown: false }}>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Detail" component={DetailScreen} />
</Stack.Navigator>
);
}
import { FlashList } from '@shopify/flash-list';
<FlashList
data={items}
renderItem={({ item }) => <ItemCard item={item} />}
estimatedItemSize={100}
keyExtractor={(item) => item.id}
/>
src/
├── app/ # Expo Router or entry
├── components/
│ ├── ui/ # Button, Input, Card
│ └── features/ # ProductCard, CartItem
├── hooks/ # Custom hooks
├── stores/ # Zustand stores
├── services/ # API calls
├── utils/ # Helpers
└── types/ # TypeScript types
import { Platform } from 'react-native';
const styles = StyleSheet.create({
shadow: Platform.select({
ios: {
shadowColor: '#000',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.1,
shadowRadius: 8,
},
android: {
elevation: 4,
},
}),
});
useColorScheme)For detailed implementation guides:
// Prefer: TypeScript, memo, proper typing
import { memo, useCallback } from 'react';
interface Props {
item: Product;
onPress?: (id: string) => void;
}
export const ProductCard = memo(function ProductCard({ item, onPress }: Props) {
const handlePress = useCallback(() => onPress?.(item.id), [item.id, onPress]);
return (
<Pressable onPress={handlePress} className="bg-white rounded-2xl p-4">
<Text className="text-lg font-semibold">{item.name}</Text>
</Pressable>
);
});
NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
Generate distinctive, crafted React Native code. Avoid generic boilerplate.
Guides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
npx claudepluginhub joshuarweaver/cascade-code-languages-misc-1 --plugin saaip7-ipdev-mobileapps-skill