Expo Mobile App Skill
A Claude Code skill that builds Expo mobile apps with onboarding, paid subscriptions, AdMob ads, analytics and localization.
- 114 ★ on the repository
- Last commit
Extended access
Why this level
- The skill generates app code with payments, ads and analytics, and the user supplies service keys.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/expo-mobile-app-skillDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The skill generates app code with payments, ads and analytics, and the user supplies service keys.
This is third-party code. Review the repository files before installing.
What it does
The skill sets the workflow for an Expo React Native app: required onboarding, paywall and settings screens and a flow from onboarding to paywall to the main app. Monetization is assembled from StoreKit 2 through expo-iap with weekly and yearly subscriptions and a lifetime purchase, RevenueCat in observer mode for purchase records and Apple Ads attribution, and AdMob banners with UMP and ATT consent. The set includes PostHog analytics with typed events and feature flags, multi-language support with RTL for Turkish, English and Arabic, onboarding with a video background, a rating prompt at value moments and light, dark and system themes. Among the rules: do not use AsyncStorage or lineHeight, and build navigation on NativeTabs. Optional parts cover background tasks, widgets and Live Activities.
Who it is for. Mobile developers and solo founders building Expo apps with subscriptions and ads who want a single set of decisions.
Good fit when
- A water reminder app with onboarding and a paywall needs creating.
- Subscriptions with a trial and a lifetime purchase must be assembled through StoreKit 2.
- Before release an AdMob banner is needed with GDPR consent and the ATT prompt.
- The interface is translated into several languages including Arabic with RTL.
Not a fit when
- The app is native Swift or Kotlin and not on Expo.
- Monetization is not wanted but the skill pushes a paywall and ads.
- Development targets Android without the App Store, so the StoreKit rules are surplus.
Example request
/zafer-skills Create a water reminder app with onboarding, a paywall and a settings screen.Limitations
The skill pins the stack and rules: Expo SDK 57, React Native 0.86, StoreKit 2, RevenueCat and AdMob, so deviating from it is manual work. Some decisions, such as the paywall, follow App Store rule 3.1.2 and need a fresh check before release. The text warns that this is a skill file and not a project: dependencies must not be installed or code created in its folder. The MIT license is stated in the README, and the repository has no LICENSE file.
How to disable. Remove the zafer-skills skill from the agent skills directory with the remove command of the same npx skills tool, or delete the folder by hand.
FAQ
How do I install the skill?
Run `npx skills add zaferayan/skills`.
How do I call the skill?
Enter `/zafer-skills` and describe the app, for example a water reminder. The skill sets up the project structure and wires in purchases.
Which screens does the skill treat as required?
Onboarding, paywall and settings, with the flow going from onboarding to the paywall and the main app.
Which bans does the skill have?
Do not use `AsyncStorage` or `lineHeight`, and build navigation only on `NativeTabs`.
Which languages are supported?
Multi-language support with RTL for Turkish, English and Arabic.
Discussion
No questions or reviews yet.
Related
SkillsExpo's official agent skills: building, deploying, updating and debugging Expo and EAS apps
Two skills for building mobile screens at top-app quality: studying real screens through the Appllama MCP and a strict bar for native Expo and React Native UI
Evan Bacon's skill teaches an agent to add widgets, App Clips, Safari extensions and other native Apple targets to an Expo app
Animations, gestures, on-device AI, audio and live video: 10 Software Mansion skills teach the agent React Native patterns.
A Claude Code skill that designs and builds a questionnaire-style app onboarding flow modeled on subscription apps
Skill that teaches agents to write @appeeky/expo-healthkit code: one API for Apple HealthKit and Android Health Connect in Expo.
README in short
The repository consists of SKILL.md and a README. The README lists features, stack and usage. The skill is built for Claude Code and creates an app in steps: structure, purchases, ads, analytics, onboarding and settings.
README badge
Original SKILL.md
---
name: zafer-skills
description: Expo React Native mobile app development with StoreKit 2 subscriptions (expo-iap) plus RevenueCat observer mode, AdMob ads with UMP/ATT consent, PostHog analytics, i18n with RTL, onboarding flow, paywall, and NativeTabs navigation
---
# Expo Mobile Application Development Guide
> **IMPORTANT**: This is a SKILL file, NOT a project. NEVER run npm/bun install in this folder. NEVER create code files here. When creating a new project, ALWAYS ask the user for the project path first or create it in a separate directory (e.g., `~/Projects/app-name`).
This guide is created to provide context when working with Expo projects using Claude Code.
## MANDATORY REQUIREMENTS
When creating a new Expo project, you MUST include ALL of the following:
### Required Screens (ALWAYS CREATE)
- [ ] `src/app/onboarding.tsx` - Swipe-based onboarding with fullscreen background video and gradient overlay
- [ ] `src/app/notification-permission.tsx` - Pre-permission screen that explains notifications before the system prompt (add `location-permission.tsx` too if the app uses location)
- [ ] `src/app/paywall.tsx` - Paywall screen (shown after the permission screens)
- [ ] `src/app/settings.tsx` - Settings screen with language, theme, notifications, and reset onboarding options
### Onboarding Video Implementation (REQUIRED)
The onboarding screen MUST have a fullscreen background video. Use a URL, not a local file:
```tsx
import { useVideoPlayer, VideoView } from "expo-video";
const VIDEO_URL =
"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4";
const player = useVideoPlayer(VIDEO_URL, (player) => {
player.loop = true;
player.muted = true;
player.play();
});
// In render:
<VideoView
player={player}
style={StyleSheet.absoluteFill}
contentFit="cover"
nativeControls={false}
/>;