mir-mobile-android

Solid

Make It Right (Android module). Kotlin + Jetpack Compose + coroutines mechanics for the mir-mobile pillar — the Android-specific footguns the platform-agnostic skill omits: what SavedStateHandle and rememberSaveable actually survive (process death) versus rotation only, repeatOnLifecycle and collectAsStateWithLifecycle, viewModelScope vs lifecycleScope, Compose recomposition storms and the LaunchedEffect wrong-key bug, WorkManager plus the mandatory android:foregroundServiceType and the dataSync 6h/24h cap, permanently-denied runtime permissions, predictive back under targetSdk 36, and Android security (Keystore, SharedPreferences is not secure storage, android:exported, intent redirection, PendingIntent FLAG_IMMUTABLE, App Links assetlinks.json, WebView JS interfaces). Chains: mir-mobile → this. TRIGGER when the mobile target is native Android — Kotlin, Jetpack Compose, ViewModel, Room, DataStore, WorkManager, Gradle/R8, AndroidManifest, Play Console. In React Native or Flutter apps, TRIGGER for the native A

AI & Automation 15 stars 0 forks Updated 1 weeks ago Apache-2.0

Install

View on GitHub

Quality Score: 81/100

Stars 20%
40
Recency 20%
90
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# /mir-mobile-android · Make It Right (Android) Platform module. `mir-mobile` decides **what is correct** on any mobile platform; this carries **Android SDK and Jetpack mechanics**. Load order: `mir-mobile` → `mir-mobile-android`. Reach for this at Gate 5 (design mechanics), Gate 6 (implementation), Gate 7 (review). Store deadlines and cross-platform behavior-change lists live in `mir-mobile/references/store-compliance.md` — read that, don't restate it here. **Stack assumed**, versions verified 13 Aug 2026 against `developer.android.com` and `kotlinlang.org`: | Component | Version | Note | |---|---|---| | Compose BOM | **2026.08.00** (12 Aug 2026) | maps to `compose.ui`/`runtime`/`foundation` **1.12.0**, `material3` **1.4.0** | | Kotlin | **2.4.10** (14 Jul 2026) | Compose compiler ships inside the Kotlin plugin; there is no separate `compose.compiler` version to pin past 1.5.15 | | androidx.lifecycle | **2.11.0** (17 Jun 2026) | `SavedStateHandle` is KMP-compatible since 2.9.0 | | androidx.work | **2.11.2** (25 Mar 2026) | 2.12.0-rc01 exists (12 Aug 2026) — not stable, don't design on it | | compileSdk / targetSdk | **36** | Play requires new apps *and updates* to target API 36 from **31 Aug 2026**; extension on request to 1 Nov 2026 | | androidx.security:security-crypto | 1.1.0 (30 Jul 2025) | **every API deprecated** as of 1.1.0-beta01 (June 2025). The stable release ships deprecated | ## Lifecycle and process death ### 1. Configuration change and process death are di...

Details

Author
anantbhandarkar
Repository
anantbhandarkar/make-it-right
Created
3 months ago
Last Updated
1 weeks ago
Language
Python
License
Apache-2.0

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category

AI & Automation Solid

mir-mobile-ios

Make It Right (iOS module). Swift 6 + SwiftUI + Swift Concurrency mechanical footguns on Apple platforms — the ones the platform-agnostic mobile gates omit: what Swift 6 language mode rejects that Swift 5 allowed (global mutable state, non-Sendable values crossing isolation boundaries), Xcode 26's MainActor-by-default plus nonisolated(nonsending)/@concurrent silently keeping async work ON the main actor, Task lifetime (a Task {} in a view is NOT cancelled on disappear — only .task is), the SwiftUI ForEach(id: \.self) bug that reuses @State across rows, @State vs @StateObject vs @ObservedObject, BGTaskScheduler's non-guarantee, and iOS security (Keychain accessibility classes, PrivacyInfo.xcprivacy required-reason APIs, App Groups, universal links vs URL-scheme hijacking). Chains: mir-mobile → this. TRIGGER for an Apple-platform app in Swift/SwiftUI/UIKit — iOS, iPadOS, watchOS, tvOS, visionOS — views, view models, concurrency, background work, Keychain, push, deep links, App Store submission. In React Native

15 Updated 1 weeks ago
anantbhandarkar
AI & Automation Solid

mir-mobile

Make It Right (mobile pillar). Constraint-first NATIVE MOBILE planning protocol — AI writes screens that run in the simulator; this makes them RIGHT under process death, permission denial, flaky cellular, OS background limits, and app-store review. Runs the hard-gated pipeline (Intent → Constraint Interrogation → Assumption Ledger → Invariants & App State Machine → Risk Register → Design Review → Implementation → Production-Readiness + store submission). Carries the release gates AI ignores: Google Play targetSdk and Play Billing deadlines, restricted-permission declarations, Apple's Xcode/SDK minimum, PrivacyInfo.xcprivacy required-reason APIs. TRIGGER for app work that ships to the App Store or Google Play in ANY mobile stack — Swift/SwiftUI, Kotlin/Jetpack Compose, Kotlin Multiplatform, React Native, Flutter — including background work, offline sync, runtime permissions, keychain/keystore, push, deep links, in-app purchase, and store submission; also enterprise/MDM, OEM-preload and sideloaded builds. Chain

15 Updated 1 weeks ago
anantbhandarkar
AI & Automation Solid

mir-backend-jvm

Make It Right (JVM runtime tier). Java 25/21 LTS and Kotlin runtime reliability footguns shared across every JVM backend framework — distinct from the generic backend gates and from any one framework's mechanics. Covers: thread-pool sizing and pool-exhaustion deadlock, blocking I/O on platform threads, virtual threads after JEP 491 (synchronized no longer pins on Java 24+, jdk.VirtualThreadPinned JFR event) and virtual threads not bounding concurrency, GC choice (G1, ZGC, Generational Shenandoah) and container-aware heap sizing (-XX:MaxRAMPercentage), cold start (Leyden AOT cache, AppCDS, GraalVM native image, CRaC), JMM visibility and data races, ThreadLocal leaks in pooled threads, and JVM-level security (untrusted deserialization and ObjectInputFilter, XXE defaults, SSRF to the cloud metadata IP, Security Manager disabled since JDK 24, Maven/Gradle dependency verification). Chains: mir-backend -> this -> framework module. TRIGGER when the backend runtime is Java or Kotlin on the JVM. SKIP for Python, Node,

15 Updated 1 weeks ago
anantbhandarkar