Tested demoQuality 98/100

vasilyu1983/AI-Agents-public/frameworks/shared-skills/skills/software-mobile/SKILL.md

software-mobile

Guides mobile platform selection and delivery across native and cross-platform stacks. Use when planning auth, push, deep links, releases, or app architecture for iOS/Android.

Source repository stars
80
Declared platforms
2
Static risk flags
0
Last source update
2026-08-21
Source checked
2026-08-25

Decision brief

What it does: where it fits

Use this skill for platform choice, cross-platform tradeoffs, Android implementation guidance, and shared mobile concerns such as authentication, notifications, deep linking, release readiness, and policy checks. For deep native iOS implementation or rewrite work, route to softw…

Best for

  • Platform selection between native iOS, native Android, React Native, Flutter, Kotlin Multiplatform, and wrapper shells
  • Android app development with Kotlin, Jetpack Compose, ViewModel, StateFlow, and WorkManager
  • Cross-platform decisions across React Native, Expo, Flutter, Kotlin Multiplatform, and WebView shells

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.
Controlled single-run demoChecked 2026-08-20

What changed when the Skill was used

In this controlled same-task single run, enabling software-mobile changed the output from 4127 non-whitespace characters and 10 headings to 4009 characters and 7 headings. Matches among 8 signals extracted from the pinned source changed from 1 to 1. Both actual outputs are shown; this is a structural observation, not a quality score or a universal performance claim.

Same test task

Design and implement a representative production change for a TypeScript webhook retry service. Include the key code or pseudocode, tradeoffs, and verification steps. The deliverable must specifically reflect this user intent: Guides mobile platform selection and delivery across native and cross-platform stacks. Use when planning auth, push, deep links, releases, or app architecture for iOS/Android.

Without the Skill
Screenshot of the actual model output for software-mobile without the Skill

Baseline: 4127 non-whitespace characters, 10 headings, and 38 list items.

With the Skill
Screenshot of the actual model output for software-mobile with the Skill

With Skill: 4009 non-whitespace characters, 7 headings, and 41 list items.

ObservationWithout SkillWith Skill
Source-signal coverage1/8: platform1/8: mobile
Output structure4127 chars · 10 headings · 38 list items · 3 code blocks4009 chars · 7 headings · 41 list items · 4 code blocks
Verification and caution signals14 verification signals · 4 risk/limitation signals8 verification signals · 6 risk/limitation signals

A prompt you can use

Use the software-mobile Skill pinned at c95ab14ef8cf for my task. Follow its source-specific constraints around `software-mobile`, `mobile`, `development`, `quick`, then return the finished deliverable with explicit assumptions, verification, failure conditions, and limits. Do not treat the Skill text as a factual source or claim that a single demonstration proves universal performance.

Method and limitationsExpand

Test method

  • Baseline and treatment used the same task, model (gpt-5.3-codex-low), and runner; the only planned difference was whether the complete target Skill text was injected.
  • The treatment used snapshot dbde68607fba1336143dc9a996f41c7e8342c1e6; the current source commit c95ab14ef8cf13e778412c4510960b9da9ef7700 was verified against content hash 27adace51054. The baseline explicitly prohibited loading any Skill or external rule file.
  • The same deterministic script counted characters, headings, lists, code blocks, verification terms, caution terms, and source signals in both artifacts. Source signals: `software-mobile`, `mobile`, `development`, `quick`, `reference`, `platform`, `selection`, `cross-platform`.
  • The visuals are local screenshots of the actual Markdown artifacts in a fixed 1200 × 800 evidence canvas, not recreated product mockups. Raw JSON artifacts and request records are retained in the research directory.

Do not over-read this demo

  • This is one controlled demonstration per condition, not a multi-run statistical benchmark; the model is stochastic.
  • Character, structure, and keyword counts show observable differences but cannot by themselves prove correctness, originality, or business impact.
  • The task is a representative test designed for repeatability, not every real-world use of the Skill; rerun after a material source change.
Editorial review
SkillSignal editorial
Runner
Cursor Agent 2026.08.04-aaa8809
Model
gpt-5.3-codex-low
Refresh due
2026-11-18
Reviewed commit
c95ab14ef8cf13e778412c4510960b9da9ef7700
Test snapshot
dbde68607fba1336143dc9a996f41c7e8342c1e6

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexDeclaredSource recordInstall path and trigger
Claude CodeDeclaredSource recordInstall path and trigger
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-mobile"
Safe inspection promptEditorial

Inspect the Agent Skill "software-mobile" from https://github.com/vasilyu1983/AI-Agents-public/blob/53f6cb73ea53a2646e3e7d4665062ad66f3683ac/frameworks/shared-skills/skills/software-mobile/SKILL.md at commit 53f6cb73ea53a2646e3e7d4665062ad66f3683ac. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow

    1. Confirm product scope, platform targets, native requirements, and release constraints. 2. Route web-only, backend, or iOS-native deep dives to adjacent skills. 3. Choose the stack from the selection guidance above. 4. Apply guidance for auth, push, offline behavior, release g…

    Confirm product scope, platform targets, native requirements, and release constraints.Route web-only, backend, or iOS-native deep dives to adjacent skills.Choose the stack from the selection guidance above.
  2. 02

    Quick Reference

    Review the “Quick Reference” section in the pinned source before continuing.

    Review and apply the “Quick Reference” source section.
  3. 03

    When to Use This Skill

    Use this skill when you need:

    Platform selection between native iOS, native Android, React Native, Flutter, Kotlin Multiplatform, and wrapper shellsAndroid app development with Kotlin, Jetpack Compose, ViewModel, StateFlow, and WorkManagerCross-platform decisions across React Native, Expo, Flutter, Kotlin Multiplatform, and WebView shells
  4. 04

    When NOT to Use This Skill

    Review the “When NOT to Use This Skill” section in the pinned source before continuing.

    Review and apply the “When NOT to Use This Skill” source section.
  5. 05

    Platform Selection

    Review the “Platform Selection” section in the pinned source before continuing.

    Review and apply the “Platform Selection” source section.

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score98/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars80SourceRepository attention, not individual Skill quality
Compatibility2 platformsSourceDeclared in the catalog source record
Usage guidetested outcome pageTestedGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
vasilyu1983/AI-Agents-public
Skill path
frameworks/shared-skills/skills/software-mobile/SKILL.md
Commit
53f6cb73ea53a2646e3e7d4665062ad66f3683ac
License
MIT
Collected
2026-08-25
Default branch
main
View the original SKILL.md

Mobile Development

Use this skill for platform choice, cross-platform tradeoffs, Android implementation guidance, and shared mobile concerns such as authentication, notifications, deep linking, release readiness, and policy checks. For deep native iOS implementation or rewrite work, route to software-ios-native. For native iOS build, install, packaging, or stale-app debugging, route to software-ios-runtime-debugging.

Quick Reference

TaskiOSAndroidCross-PlatformDefault
UISwiftUI + UIKit interopJetpack Compose + Views interopReact Native, Flutter, KMP + native UINative first for platform-heavy work
State@State, @Observable, @EnvironmentViewModel + StateFlowZustand/RTK, Riverpod, shared domain statePlatform-native state models
NavigationNavigationStackNavigation Compose / Navigation ComponentExpo Router or React NavigationExpo Router for greenfield Expo apps
NetworkingURLSession + async/awaitRetrofit/OkHttp/Ktor + coroutinesFetch/Axios, generated clientsTyped clients over ad hoc fetches
StorageSwiftData/Core Data, KeychainRoom/DataStore, KeystoreMMKV/SQLite/WatermelonDB, secure storageKeep secrets in platform secure storage
TestingSwift Testing + XCTest UIJUnit + Compose Test + MacrobenchmarkDetox/Maestro, framework-native testsMeasure performance, do not assume it
ReleasePrivacy manifests, App Review checksPlay target SDK, Data safety, IntegrityExpo/EAS or native pipelinesRe-check store policy before each cut
iOS CIXcode Cloud ci_scripts/ci_post_clone.sh for generated filesGradle Play Publisher or managed pipelines; Play Integrity for signingEAS Build / Codemagic for RN/ExpoPlatform-managed CI for submission
Push proofXcode real-device → APNs sandboxFCM debug / prod separation by configProduction send path must prove delivery per environmentNever treat local push success as TestFlight proof

When to Use This Skill

Use this skill when you need:

  • Platform selection between native iOS, native Android, React Native, Flutter, Kotlin Multiplatform, and wrapper shells
  • Android app development with Kotlin, Jetpack Compose, ViewModel, StateFlow, and WorkManager
  • Cross-platform decisions across React Native, Expo, Flutter, Kotlin Multiplatform, and WebView shells
  • Mobile auth, passkeys, push notifications, offline-first sync, deep links, and app-store release preparation
  • Backend translation pipeline design for localized prose delivery to mobile clients

When NOT to Use This Skill

NeedUse Instead
Web-only frontendsoftware-frontend
Backend API implementationsoftware-backend
Managed app-backend (Supabase, Firebase, Appwrite)software-baas-platforms
Native iOS app skeleton with iCloud/CloudKit/App Intents/Foundation Modelssoftware-ios-native + software-ios-ai-engine
Native iOS rewrite, SwiftUI, or Xcode workflowssoftware-ios-native
Native iOS build/install/launch failures, stale-app, simulator driftsoftware-ios-runtime-debugging
Native iOS visual auditssoftware-ios-design
iOS-specific testing deep divesqa-testing-ios
Native Android rewrite, Kotlin, Gradle, Android Studiosoftware-android-native
Native Android build/install/launch failures, emulator driftsoftware-android-runtime-debugging
Native Android visual auditssoftware-android-design

Platform Selection

Need to ship mobile product?
    │
    ├─ Single platform only?
    │   ├─ iOS → SwiftUI for new code, UIKit interop where needed
    │   └─ Android → Jetpack Compose for new code, Views interop where needed
    │
    ├─ Both iOS and Android?
    │   ├─ Native integrations / performance / platform fidelity dominate? → Separate native apps
    │   ├─ JS/TS team and fastest shared delivery? → React Native + Expo-managed for greenfield
    │   ├─ Fully shared rendering and custom UI control? → Flutter
    │   └─ Kotlin team, shared logic, native UI? → Kotlin Multiplatform
    │
    └─ Existing web app wrapper?
        ├─ Low-complexity shell → WebView / Capacitor
        └─ Meaningful native features → React Native or native modules

Cross-Platform Defaults (July 2026)

FrameworkDefaultStatus
React NativeNew Architecture is now the only architecture — Legacy Architecture has been removed from current RN/Expo releases, not merely opt-out. The decision point has shifted from "should we adopt it" to "is every native module/library we depend on migrated"Mandatory, not opt-in
Expo + Expo RouterFastest greenfield path unless bare/native-heavy control needed early; current Router major version ships file-based routing plus brownfield-embedding supportActive default
FlutterStrong when shared rendering and animation control matter more than native feelActive
Kotlin MultiplatformBest fit for shared business logic with native UI; Compose Multiplatform for iOS reached stable in 2025 and has continued shipping performance-focused releases since (concurrent rendering, native text input)Validate library maturity per release, not from a single stability announcement

Workflow

  1. Confirm product scope, platform targets, native requirements, and release constraints.
  2. Route web-only, backend, or iOS-native deep dives to adjacent skills.
  3. Choose the stack from the selection guidance above.
  4. Apply guidance for auth, push, offline behavior, release gates, and testing.
    • For iOS push: prove the local sandbox path and the production path separately.
    • Treat push signoff as two gates: transport proof (notification accepted and shown) and open-path proof (tapping from cold start and warm start does not freeze or crash).
  5. Re-check current platform-policy and framework facts before final recommendations.
Mobile task
  -> Identify platform mix, app type, and user-facing surface
  -> Route deep native work to iOS or Android specialist skills
  -> Define architecture, state, navigation, storage, and release gates
  -> Implement bounded slice with accessibility and localization checks
  -> Build, install, launch, test, and capture proof
  -> Report platform-specific blockers and handoffs

Platform Defaults

iOS

  • SwiftUI for new screens; UIKit interop for mature or heavily customized flows.
  • @Observable on iOS 17+; keep ObservableObject only when supporting older baselines.
  • Swift Concurrency throughout; keep UI-facing state on @MainActor.
  • Swift Testing for unit tests; XCTest for UI/legacy coverage.
  • Privacy manifests, required-reason APIs, and App Review requirements are hard release gates.
  • Backend routing authoritative per device row (push_environment); verify the newest row after every install type change.
  • iOS push QA: validate the notification-open path explicitly after transport succeeds — tap from cold start, tap from warm resume, force-close and relaunch normally.
  • Before TestFlight upload, inspect archived app entitlements: confirm aps-environment = production.

iOS Release Operations

GateRule
TestFlight channelsinternal → external (Beta App Review) → public link
Upload pathApp Store Connect Organizer → App Store Connect. Release Testing is not the submission route.
Backend/content vs binaryBackend fixes that don't change the binary, native UI, capabilities, or App Review-visible behavior do not require a new iOS release.
Smoke proofReal-iPhone TestFlight smoke: production APNs delivery + product loading + purchase + restore + relaunch.
Minimum SDK for uploadApple periodically raises the minimum Xcode/SDK version accepted at App Store Connect (e.g., the iOS/iPadOS 26 SDK plus Xcode 26+ became mandatory for new uploads in April 2026) — check developer.apple.com/news/upcoming-requirements before any archive/upload, since a passing local build can still be rejected at ingestion.

Android

  • Jetpack Compose for new UI; Views only for interop or legacy.
  • ViewModel + StateFlow; LiveData is maintenance-mode for older View-based code only.
  • WorkManager for guaranteed background work; Credential Manager for passkeys/password/federated sign-in.
  • Baseline Profiles and Macrobenchmark for startup and scroll performance.
  • Play target SDK policy, Data safety, and Play Integrity are hard release gates.
  • New apps and updates must target API 36 / Android 16 by August 31, 2026 (extension requests can push individual apps to November 1, 2026); existing published apps must target at least API 35 / Android 15 to remain visible on Android 16+/17 devices. This deadline moves every year — re-check developer.android.com/google/play/requirements/target-sdk before every release, don't reuse a cached deadline.

Known Platform Traps

iOS

  • _performBlockAfterCATransactionCommitSynchronizes: / "Call must be made on main thread" is a private SwiftUI symbol, not user-code. Web-search the signature before any code review.
  • Once APNs accepts a push payload and the banner appears, any freeze or crash after tapping belongs to the app-side open path (delegate isolation, pending-route races, off-main UI mutations) — not to transport.
  • dataCorrupted + <!DOCTYPE html> is an API routing / auth bug, not a concurrency bug.
  • Xcode 26 default TLS Client Hello changed: apps talking to servers with strict TLS-fingerprint allowlists may see login or API failures on fresh builds — verify against staging.

Android / Kotlin

  • android.view.ViewRootImpl$CalledFromWrongThreadException and ConcurrentModificationException inside SnapshotStateObserver are the Android parallels to iOS main-thread crashes. They surface when a MutableStateFlow backing UI state is mutated from Dispatchers.IO while Compose is reading it on the main thread.
  • Safe pattern: do blocking work inside withContext(Dispatchers.IO) { ... }, return a plain value, then assign to _uiState.value on the main thread. Collect in composables via collectAsStateWithLifecycle().
  • Kotlin 2.x + Strong Skipping Mode: emitting a fresh data class instance per field on every ViewModel event defeats Compose's identity-based skip check. Split UI state into @Immutable sub-objects; hoist derived lists with stateIn; wrap per-row callbacks in remember(id) { { ... } }.
  • When adb logcat shows the crash includes SnapshotStateObserver, MonotonicFrameClock, or Recomposer, route to software-android-native and software-android-runtime-debugging.

Expert Judgment Calls

Non-experts see a working build and call it done. An expert checks the cases where "it built and ran once" is not the same as "it will pass review, survive an audit, or work for the next user."

  • Cross-platform regret is asymmetric. Moving from native to shared code is a full rewrite; moving from shared code to native is usually a partial, surgical one (pull out the hot path, keep the rest). When timeline pressure forces a shared-framework choice, explicitly list which native integrations (camera pipelines, ARKit/ARCore, background audio, CarPlay/Android Auto, widgets, App Intents/App Actions) are foreseeable within 12 months — those are the ones that force a native escape hatch later, and the earlier you know, the cheaper the hedge (e.g., isolate the module behind a platform-abstraction boundary from day one).
  • One native escape hatch usually means you need native hiring anyway. Teams under-price this: a single deep native module (e.g., a custom camera pipeline or a hardware SDK) requires the same iOS/Android specialist skill as a fully native app, just applied to a smaller surface. Budget the hire, not just the sprint.
  • App Review rejection risk hides in account and auth flows, not UI polish. The most common late-stage iOS rejections a non-expert misses: (1) Guideline 5.1.1(v) — in-app account deletion that actually deletes the record and revokes tokens, not just deactivates; (2) Sign in with Apple parity — if the app offers any third-party or social login, Sign in with Apple must be offered too, at equal prominence; (3) subscription flows that don't expose "Cancel Subscription" reachably inside the app or account settings. Verify all three before submission, every release — Apple periodically increases enforcement on these without a version bump to announce it.
  • Push permission priming is a judgment call, not a technical one. Requesting notification permission on first launch reliably produces "Don't Allow" from most users, who then never see the system prompt again. An expert defers the OS prompt until the user has taken an action that makes the value of push obvious (e.g., after placing an order), and separately audits whether the soft-ask copy itself needs its own re-prompt path if declined.
  • Offline-first correctness is a conflict-resolution decision, not a caching decision. Before implementing local-first storage, force an explicit answer to "what happens when two devices edit the same record while offline" — last-write-wins, field-level merge, or user-facing conflict UI. Silence on this question means the team will discover the answer in production, from a support ticket.
  • A shared entitlement registry is cheaper before launch than after. Apps that sell both in-store (StoreKit/Play Billing) and web/Stripe entitlements without one canonical source of truth accumulate silent state drift (a user paid on web, app still shows locked) that is expensive to retrofit once both paths have real users.
  • Framework benchmark claims decay faster than they're written. A blog post claiming "Flutter is now as fast as native" or "RN startup time improved 40%" is a snapshot of one app, one release, one device. Treat every unsourced performance claim as a hypothesis to verify with Instruments/Macrobenchmark on the actual product, not a fact to design around.

Release Readiness Checklist

iOS App Store

  • Icons, launch assets, and permission copy are complete
  • Privacy manifest and required-reason APIs are correct for app targets and listed SDKs
  • Third-party SDK compliance matches Apple's current requirements
  • Accessibility, deep links, and push flows tested on current devices
  • App Store metadata, privacy policy, and TestFlight coverage ready
  • Full App Store Connect preparation — see references/app-store-connect-checklist.md

Google Play

  • Target SDK matches the latest Play policy (API 36 / Android 16 required for new apps and updates by August 31, 2026 — re-verify the current deadline, it moves annually)
  • Privacy policy, content rating, and Data safety complete
  • Integrity, auth, and background behavior tested under modern Android constraints
  • Internal/closed/open tracks configured appropriately

Common Anti-Patterns

Anti-PatternProblemBetter Default
Unsourced framework benchmarksMisleads architecture decisionsMeasure with Instruments, Macrobenchmark, and real-device runs
Treating old policy dates as timelessStore submission failuresRe-check Apple/Google policy pages before release
Defaulting to LiveData in new Android appsOlder reactive modelViewModel + StateFlow for new work
Treating Expo as "just React Native tooling"Missed routing/OTA ergonomicsUse Expo Router and EAS deliberately
Fingerprinting-based deferred deep linksReliability and privacy issuesVerified Universal/App Links plus approved attribution flows
SafetyNet Attestation on AndroidDeprecatedPlay Integrity API
Mixed web + store entitlements without one canonical registryConflicting access stateOne entitlement registry with documented conflict-resolution rule before launch
Treating mobile billing policy as staticStore rejectionRe-verify Apple and Google billing policy before release and major monetization changes

Known Traps

  • Assuming one mobile framework decision solves release, entitlement, deep-link, and push behavior without platform-specific proof
  • Validating auth, push, or deep links only in local debug builds and treating that as production readiness
  • Mixing sandbox, staging, and production mobile backends until install-specific behavior becomes impossible to reproduce
  • Using emulator or simulator success as proof for background execution, notification delivery, or device-specific lifecycle
  • Choosing a cross-platform stack before listing native integrations, extension points, and store-policy constraints that can force native escape hatches

Navigation

References

Shared Checklists And Utilities

Templates

Related Skills

Fact-Checking

Store policy deadlines, minimum SDK/Xcode requirements, and framework architecture defaults (React Native, Expo, Kotlin/Compose Multiplatform) change on their own release cadence and are wrong within months if hardcoded. Before quoting any date, version, or percentage in this skill or its references, verify it against a current primary source — Apple Developer News/Release Notes, Google Play Console Help, the framework's official changelog — rather than this file's memory of it. If a source can't be reached and the fact is load-bearing (a submission gate, a deadline, a required minimum version), say so explicitly and flag the guidance as unverified rather than stating it as current fact.

Always re-verify before release or final recommendation:

  • Apple release notes, minimum Xcode/SDK version for App Store Connect uploads, third-party SDK requirements, App Review Guidelines
  • Google Play target API policy and deadline, Android release behavior, Credential Manager, Play Integrity
  • React Native and Expo changelogs (architecture status, routing, OTA)
  • Kotlin Multiplatform and Compose Multiplatform release notes

Freshness Protocol

When users ask recommendation or "what's current" questions, use web search first. If unavailable, answer from data/sources.json and mark guidance as potentially stale.

Learnings Loop

Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).

After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.

Frequently asked questions

What to verify before installation and use

What does the software-mobile source document cover?

Use this skill for platform choice, cross-platform tradeoffs, Android implementation guidance, and shared mobile concerns such as authentication, notifications, deep linking, release readiness, and policy checks. For deep native iOS implementation or rewrite work, route to softw…

How do I install software-mobile?

The source record exposes this install command: npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-mobile". Inspect the command and pinned source before running it.

Which Agent platforms does the source record declare?

The pinned source record declares support for: codex, claude code.

Alternatives

Compare before choosing