mir-mobile-ios
SolidMake 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
Install
Quality Score: 81/100
Skill Content
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
mir-mobile-android
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
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
mir-frontend-vanilla
Make It Right (vanilla JS / no-framework reactivity tier). Plain-DOM footguns that no reactive library is present to hide. Covers event listeners never removed (the #1 leak) and AbortController as the removal mechanism; detached DOM nodes retained by a closure or a module-scope map; Intersection/Mutation/ResizeObservers never disconnected and timers that outlive their element; innerHTML as an XSS sink and the current alternatives (textContent, Element.setHTML + Sanitizer, Trusted Types CSP); manual state/DOM divergence and the idempotent render-from-state discipline; custom-element lifecycle and upgrade timing, shadow DOM style/focus/ARIA consequences; stale-response-overwrites-fresh-response fetch races; and manual focus management (focus after route change, dialog focus traps, aria-live). Chains: mir-frontend → this. TRIGGER when the UI is built with plain DOM APIs and no reactive library — vanilla JS/TypeScript, jQuery-era code, hand-written Web Components, a static site with its own script, a browser-exte