← Back to Cross-platform mobile foundation team

Skill · Version 1.0.0

Discover a mobile project

Maps the actual mobile stack, deployment targets and state ownership before changing implementation.

mobile-project-discovery

Team members using this skill

See how it helps

When is it useful?

Use when entering an existing React Native, Flutter or native project.

What does it help you do?

  • Identifies framework versions, build workflow and platform targets.
  • Traces navigation, state, API and persistence ownership.
  • Coordinates shared boundaries with native, backend and design work.

Try asking this

Inspect our mobile repository and identify where notification routing, authentication and persisted drafts belong. Trace a notification from a terminated app through login to its destination. Identify the owners of routing, credentials and restored drafts before implementation.

Detailed documentation

Read the skill’s original instructions, examples and checks in their authored language.

Details…Show less

Mobile Project & Platform Discovery

Adapt to the project's actual mobile stack, target OS versions and architectural boundaries before writing code. Never mix frameworks or introduce a competing state/navigation library; for a brand-new app, agree the stack with the architect based on product goals, hardware needs and release workflow.

1. Fingerprint the stack, workflow and deployment targets

Stack Manifests & Config to Inspect Key Version & Architecture Signals
React Native / Expo package.json, app.json / app.config.ts, eas.json, metro.config.js, babel.config.js Expo SDK version, CNG / Prebuild (generated ios/ & android/) vs Bare RN, New Architecture (newArchEnabled, Fabric/TurboModules), Hermes engine, runtimeVersion policy.
Flutter pubspec.yaml, analysis_options.yaml, build.yaml, l10n.yaml, lib/main_*.dart Dart SDK constraint, Impeller renderer config, flavors, codegen (build_runner, freezed, json_serializable, riverpod_generator, pigeon).
Native iOS *.xcodeproj, *.xcworkspace, Package.swift, Podfile, Info.plist, *.entitlements IPHONEOS_DEPLOYMENT_TARGET, Swift language mode (Swift 5 vs Swift 6 strict concurrency), SwiftUI vs UIKit lifecycle, App Groups / Keychain sharing.
Native Android settings.gradle(.kts), app/build.gradle(.kts), gradle/libs.versions.toml, AndroidManifest.xml minSdk, targetSdk, compileSdk, Kotlin & Compose compiler versions, build flavors/variants, ProGuard/R8 rules (proguard-rules.pro).

2. Map existing architecture and state ownership

  • Trace how a feature flows end-to-end: Screen / Widget -> ViewModel / Notifier / Hook -> Repository / Service -> HTTP Client / Local DB / Native Bridge.
  • Identify the single owner for each data category:
    1. Server cache: TanStack Query / RTK Query / Riverpod AsyncNotifier / Repository cache.
    2. Encrypted credentials: iOS Keychain / Android Keystore (expo-secure-store, react-native-keychain, flutter_secure_storage).
    3. Structured local persistence: SQLite (expo-sqlite, WatermelonDB, Drift, Room, SwiftData/CoreData) vs fast KV (MMKV, SharedPreferences, UserDefaults).
    4. Ephemeral UI & route state: local component state and serializable route parameters.
  • Locate existing design tokens, safe-area wrappers, keyboard-avoiding containers, localization catalogs and test harnesses.

3. Coordinate cross-cutting boundaries

  • Never hand-edit generated native folders in Expo CNG or generated .g.dart / .freezed.dart files in Flutter.
  • When a task requires native toolchain changes, new OS entitlements or API contract changes, align with the architect, backend developers or security reviewer before coding.

Before you finish

  • Stack, SDK version, New Architecture/Impeller status and minSdk / iOS deployment target verified.
  • Managed/CNG vs bare/native workflow and codegen pipeline identified.
  • Existing router, state store, API client, secure storage and design primitives mapped.
  • Exact commands for typecheck, static analysis, codegen and tests confirmed.

Included files 2

  • LICENSE.txt
  • SKILL.md