agentleFS
kumaran-iskumaran-is/claude-code-onboarding/.claude/skills/mobile-developer/SKILL.md

mobile-developer

Skill35 starsChanged 6 months agoMITView on GitHub

Expert mobile developer for React Native, native Swift/SwiftUI, Kotlin/Compose, and mobile CI/CD (Fastlane, Codemagic, Bitrise, EAS). Use for everything mobile that flutter-mobile does NOT cover. For Flutter 3.41.x work, use flutter-mobile skill instead.

  • Installs packages

8 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use frontend-developer.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • nicolasestremSkill

    frontend-developer

    a senior frontend developer specializing in modern web applications with deep expertise in React 18+

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 4 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 6 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before generating code, consult these sources for current syntax and APIs:

    line 170
  2. Very specific:

    Never use this skill for Flutter UI work — use flutter-mobile

    line 183
  3. Very specific:

    No array index as key in FlatList/FlashList — use stable unique IDs

    line 185
  4. Very specific:

    No inline functions in renderItem — use useCallback to prevent re-renders

    line 186
  5. Very specific:

    No JS-thread animations — always use useNativeDriver: true or Reanimated 3

    line 187
  6. Distinctive:

    No raw HTTP without SSL pinning for auth or payment endpoints

    line 189
  7. Distinctive:

    No secrets in JS bundle — use EAS secrets or native keystore

    line 190
  8. Distinctive:

    After writing code, dispatch these reviewer agents:

    line 194

“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Iron Law

FOR FLUTTER WORK — USE flutter-mobile SKILL INSTEAD. This skill is for React Native, native Swift/Kotlin, and mobile CI/CD only.

Mobile Developer Skill

Disambiguation — Which Skill to Use

TaskUse This SkillUse flutter-mobile Instead
React Native appYESNo
Flutter screen/provider/widgetNoYES
Native Swift/SwiftUI moduleYESNo
Native Kotlin/Compose moduleYESNo
Fastlane lanes / Codemagic pipelineYESNo
EAS Update / CodePush OTAYESNo
Flutter CI/CD (GitHub Actions, build)No — use deployment-engineer agentNo
Detox E2E (React Native)YESNo
Maestro E2E (Flutter)NoYES (via flutter-mobile)
App Store signing (any)NoNo — use asc-signing-setup skill

Capabilities

1. React Native (RN 0.74+, New Architecture)

New Architecture (Fabric renderer, TurboModules, JSI), Hermes engine, Metro bundler configuration, Flipper debugging, Codegen for typed native modules, and the bridge-free JSI layer for synchronous native calls.

2. Expo (SDK 50+)

EAS Build for managed and bare workflows, EAS Update for over-the-air JS bundle delivery, development builds with custom native code, config plugins for extending native projects without ejecting.

3. Native Integration

Swift/SwiftUI platform channel implementations (method channels, event channels), Kotlin/Compose native module authoring, brownfield integration (embedding RN screens in an existing native app or vice versa).

4. Architecture

Clean Architecture for React Native (data/domain/presentation layers), MVVM with React Query or Zustand, MVI with Redux Toolkit, BLoC pattern adapted for RN, feature-first folder structure mirroring the flutter-mobile convention.

5. Performance

App startup time reduction (Hermes bytecode, lazy loading), memory leak detection (Flipper Memory Monitor, Instruments, Android Profiler), battery impact analysis, FlatList/FlashList virtualization, Reanimated 3 for 60fps UI-thread animations, InteractionManager for deferred heavy work.

6. Data Management

Realm for complex relational offline data, WatermelonDB for high-performance sync, MMKV for fast key-value storage, offline-first sync patterns with conflict resolution (last-write-wins, CRDT), background sync with WorkManager (Android) and BGTaskScheduler (iOS).

7. Mobile CI/CD

Fastlane lanes (match for code signing, gym for builds, pilot/deliver for distribution), Codemagic YAML workflows, Bitrise pipelines, GitHub Actions with mobile-specific caching (CocoaPods, Gradle), CodePush for hotfix OTA, EAS Update for Expo-managed OTA.

8. Testing

Jest unit tests with @testing-library/react-native, Detox for black-box E2E on device/emulator, Maestro for declarative E2E (RN and native), XCTest for Swift unit tests, Firebase Test Lab and Bitrise device farm for multi-device coverage.

9. Security

OWASP MASVS compliance (MASVS-STORAGE, MASVS-CRYPTO, MASVS-NETWORK, MASVS-AUTH), react-native-keychain / expo-secure-store for credential storage, certificate pinning via react-native-ssl-pinning or TrustKit (iOS), RASP (Runtime Application Self-Protection), jailbreak/root detection.

Quick Reference — React Native Setup

# New React Native project (Expo recommended for new projects)
npx create-expo-app MyApp --template blank-typescript
cd MyApp

# Core RN dependencies
npx expo install expo-router react-native-screens react-native-safe-area-context

# EAS CLI for builds and OTA
npm install -g eas-cli
eas login
eas build:configure
# Bare React Native (when full native control is required)
npx @react-native-community/cli init MyApp --template react-native-template-typescript
cd MyApp
npx pod-install ios  # Install CocoaPods dependencies
# Run
npx expo start           # Expo dev server
npx react-native run-ios # Bare RN iOS
npx react-native run-android # Bare RN Android

# Detox E2E setup
npm install --save-dev detox @types/detox
npx detox init

Fastlane CI/CD Example

# fastlane/Fastfile
default_platform(:ios)

platform :ios do
  lane :beta do
    increment_build_number(
      build_number: ENV["BUILD_NUMBER"]
    )
    match(type: "appstore")
    build_app(scheme: "MyApp", configuration: "Release")
    upload_to_testflight(skip_waiting_for_build_processing: true)
  end

  lane :deploy do
    match(type: "appstore")
    build_app(scheme: "MyApp", configuration: "Release")
    upload_to_app_store(force: true, skip_screenshots: true)
  end
end

platform :android do
  lane :beta do
    gradle(
      task: "bundle",
      build_type: "Release",
      project_dir: "android/"
    )
    upload_to_play_store(track: "internal")
  end

  lane :deploy do
    gradle(task: "bundle", build_type: "Release", project_dir: "android/")
    upload_to_play_store(track: "production", rollout: "0.1")
  end
end

EAS Update (OTA) Example

# Publish an update to the preview channel
eas update --channel preview --message "Fix checkout crash"

# Promote preview to production
eas update --channel production --message "Stable release"
// eas.json
{
  "build": {
    "preview": {
      "distribution": "internal",
      "ios": { "simulator": false }
    },
    "production": {
      "ios": { "buildConfiguration": "Release" },
      "android": { "buildType": "apk" }
    }
  },
  "update": {
    "channel": "production"
  }
}

Documentation Sources

Before generating code, consult these sources for current syntax and APIs:

SourceToolPurpose
React NativeContext7 MCPRN APIs, hooks, native modules, New Architecture APIs
ExpoContext7 MCPEAS, SDK APIs, config plugins, expo-router
Swift/SwiftUIContext7 MCPSwiftUI views, Combine, platform integrations
Kotlin/ComposeContext7 MCPJetpack Compose, coroutines, platform integrations
FastlaneWebFetch docs.fastlane.toolsLane actions, match, gym, pilot, deliver
DetoxContext7 MCPE2E matchers, device API, configuration

Hard Prohibitions

  • Never use this skill for Flutter UI work — use flutter-mobile
  • No AsyncStorage for sensitive data — use react-native-keychain or expo-secure-store
  • No array index as key in FlatList/FlashList — use stable unique IDs
  • No inline functions in renderItem — use useCallback to prevent re-renders
  • No JS-thread animations — always use useNativeDriver: true or Reanimated 3
  • No console.log in production — use a structured logger (e.g., react-native-logs)
  • No raw HTTP without SSL pinning for auth or payment endpoints
  • No secrets in JS bundle — use EAS secrets or native keystore

Post-Code Review

After writing code, dispatch these reviewer agents:

  • code-reviewer — general quality, DRY, error handling
  • security-reviewer — OWASP MASVS compliance, secure storage, network security
  • flutter-security-expert — only if the feature also has a Flutter counterpart that shares native code

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.