agent-instructions
Use when writing project instructions for a coding agent (CLAUDE.md, AGENTS.md, or equivalent). Covers what belongs in them, what…
Use when building cross-platform mobile apps with React Native or Expo. Covers navigation, platform differences, list performance, native modules, offline behavior, and release builds. Trigger on "flatlist is laggy", "expo or bare react native", "bridge to a native module", "set
Claude Code
$ npx -y skills add nimadorostkar/Claude-Skills-collection --skill react-native --agent claude-code
Codex
$ npx skills add nimadorostkar/Claude-Skills-collection --skill react-native -a codex -y
Cursor
$ npx skills add nimadorostkar/Claude-Skills-collection --skill react-native -a cursor -y
Gemini CLI
$ npx skills add nimadorostkar/Claude-Skills-collection --skill react-native -a gemini-cli -y
GitHub Copilot
$ npx skills add nimadorostkar/Claude-Skills-collection --skill react-native -a github-copilot -y
OpenCode
$ npx skills add nimadorostkar/Claude-Skills-collection --skill react-native -a opencode -y
Windsurf
$ npx skills add nimadorostkar/Claude-Skills-collection --skill react-native -a windsurf -y
name: react-native description: Use when building cross-platform mobile apps with React Native or Expo. Covers navigation, platform differences, list performance, native modules, offline behavior, and release builds. Trigger on "flatlist is laggy", "expo or bare react native", "bridge to a native module", "set up ota updates". Do not use for web React component design — see the react skill; for store signing and staged rollout, see the mobile-release skill. metadata: category: mobile version: 1.0.0 tags: [react-native, expo, mobile, navigation, performance]
Build React Native applications that feel native: lists that scroll at 60fps, navigation that matches platform conventions, and a release pipeline that does not surprise you at submission.
1. **Choose the runtime honestly** — Expo with a development build gives you native modules and the Expo tooling. Expo Go is for prototypes; bare React Native is for teams that need full native control and are prepared to maintain it. 2. **Structure navigation first** — Stacks inside tabs, with a typed route map. Retrofitting deep links into an untyped navigator is painful. 3. **Fix lists before they are slow** — `FlashList` with a stable `keyExtractor`, memoized row components, and a fixed item size where possible. `ScrollView` with a hundred children will drop frames on a mid-range Android. 4. **Handle platform differences explicitly** — `Platform.select` for behavior, not just style. Back-button behavior, safe areas, and permission flows differ genuinely. 5. **Move animation off the JS thread** — Reanimated worklets run on the UI thread. Animating via `setState` will jank the moment the JS thread does anything else. 6. **Test the release build** — Debug builds hide performance problems entirely. Profile in release, on a real mid-range device.
**A list that stays at 60fps:**
const OrderRow = memo(function OrderRow({ order, onPress }: OrderRowProps) {
return (
<Pressable onPress={() => onPress(order.id)} style={styles.row}>
<Text style={styles.title}>{order.reference}</Text>
<Text style={styles.meta}>{order.customerName}</Text>
</Pressable>
);
});
export function OrderList({ orders }: { orders: Order[] }) {
const router = useRouter();
const onPress = useCallback((id: string) => router.push(`/orders/${id}`), [router]);
return (
<FlashList
data={orders}
renderItem={({ item }) => <OrderRow order={item} onPress={onPress} />}
keyExtractor={(item) => item.id}
estimatedItemSize={72} // FlashList needs this to recycle correctly
removeClippedSubviews
/>
);
}`onPress` is hoisted and stable, `OrderRow` is memoized, so scrolling re-renders nothing that has not changed.
**Animation on the UI thread:**
const offset = useSharedValue(0);
const style = useAnimatedStyle(() => ({
transform: [{ translateY: withSpring(offset.value) }],
}));
// Runs on the UI thread — unaffected by whatever the JS thread is doing.A curated library of 137 production-grade skills for Claude and other AI coding agents. Every skill follows one structure, speaks with one voice, and earns its place by changing what the agent does.
Use when writing project instructions for a coding agent (CLAUDE.md, AGENTS.md, or equivalent). Covers what belongs in them, what…
Use when an agent needs state that survives a session or a context compaction. Covers what to persist, file-based memory,…
Use when automating agent behavior with lifecycle hooks. Covers hook events, deterministic enforcement of rules the model should…
Use when packaging skills, commands, hooks, and MCP servers into a distributable plugin. Covers manifest structure, bundling,…
Use when writing a new skill for an AI agent. Covers scoping, description writing for reliable triggering, progressive…
Use when reviewing or improving an existing agent skill. Covers triggering accuracy, content quality, redundancy with the base…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.