Skip to content

Platform Guide

Salman Ashraf edited this page May 29, 2026 · 1 revision

Platform Guide

Per-platform tips, gotchas, and best practices for every agent.


Android

Android Crash Analyzer (agents/android/android-crash-analyzer/)

Accepts: Logcat output, Firebase Crashlytics export, ANR trace (traces.txt), LeakCanary report.

Always fill USER_ACTION. "User tapped Back while the photo was uploading" is worth 10 lines of code for lifecycle crash diagnosis.

Supported crash types:

  • NullPointerException, IllegalStateException, IndexOutOfBoundsException
  • Fragment lifecycle crashes (requireContext() after detach, view after onDestroyView)
  • ViewModel observer bugs (duplicate observers, observer after view destroyed)
  • Coroutine crashes (unhandled exceptions, wrong dispatcher, GlobalScope scope leaks)
  • RecyclerView position errors, DiffUtil conflicts
  • OutOfMemoryError, LeakCanary reference chains
  • ANR — paste the complete traces.txt, not a single-thread excerpt

Output: 9 sections — Crash Summary, Root Cause, Why This Happens, Risk Level, Recommended Fix, Updated Code, Edge Cases, Testing Checklist, Prevention Tips.


Android Code Reviewer (agents/android/code-reviewer/)

Paste the full class, not a snippet — imports and field declarations change the analysis significantly.

Set FILE_PATH accurately. A file in .../viewmodel/ is reviewed as a ViewModel. A file in .../data/repository/ is reviewed as a Repository. Layer-boundary violations are inferred from the path.

Set COMPOSE_VERSION: none for View/XML-based UI to suppress Compose-specific checks.

Reviews: Clean Architecture layer boundaries, GlobalScope usage, LiveData vs StateFlow, !! force-unwrap, Compose recomposition, coroutine exception handling, testability score.


Android Compose Screen Builder (agents/android/compose-screen-builder/)

Be specific. "A list of orders" → generic output. "A LazyColumn of order cards showing order ID, status badge (color-coded), total amount, and date — with pull-to-refresh, empty state, and error state" → production-quality output.

List every action. Pull-to-refresh, swipe-to-delete, FAB — if you don't list it, it won't appear.

Name your existing repositories. If you write DEPENDENCIES: OrderRepository, the agent injects it instead of generating a stub.

Output: Three Kotlin files — UiState.kt, ViewModel.kt, Screen.kt — plus NavHost snippet and Gradle dependencies.


Android Compose UI Reviewer (agents/android/compose-ui-reviewer/)

Use this instead of the Code Reviewer when: The screen is slow to scroll, there's visual flickering, the Compose compiler metrics show unstable types, or you're seeing unexplained recompositions.

Reviews: SimpleDateFormat in items { }, missing key on LazyColumn, remember key correctness, derivedStateOf selection, state hoisting, LaunchedEffect key, slot API design.


iOS

iOS Crash Analyzer (agents/ios/crash-analyzer/)

The crash report must be symbolicated. Unsymbolicated reports show hex addresses like 0x000000010042a100 that cannot be analyzed. Symbolicate first:

  • Xcode Organizer: open the crash, click "Symbolicate"
  • Terminal: symbolicatecrash crash.crash MyApp.app.dSYM > symbolicated.crash

Supported crashes: EXC_BAD_ACCESS (SIGSEGV/SIGBUS), force-unwrap nil (unexpectedly found nil), SIGABRT (assertion, fatalError()), watchdog termination (0x8badf00d), Main Thread Checker violations, SwiftUI state crashes, Objective-C doesNotRecognizeSelector.

Output: Same 9-section format as the Android Crash Analyzer.


Swift Code Reviewer (agents/ios/swift-reviewer/)

Set SWIFT_VERSION: 6.0 to enable strict concurrency checking — Sendable violations, actor isolation errors become compile-time checks.

Set SWIFTUI: true to activate SwiftUI-specific checks (@StateObject vs @ObservedObject, expensive body computations, .task vs .onAppear).

Reviews: [weak self] vs [unowned self] in escaping closures, @Published mutation off Main thread, force-unwrap (!) removal, async/await migration candidates, protocol-based testability, retain cycles.


Flutter

Flutter BLoC Feature Builder (agents/flutter/bloc-feature-builder/)

Choose PATTERN: cubit for 90% of features. Use PATTERN: bloc only when you need event history, event transformations (throttle/debounce), or event replay for undo/redo.

Specify RESPONSE_FIELDS precisely. The more exact the JSON field names and types, the more accurate the generated fromJson mappings.

What gets generated: Domain entities, repository interface + implementation, Dio data source with DioException handling, Either<Failure, T> error propagation, Cubit/BLoC with sealed state classes, page with BlocBuilder, bloc_test stubs, get_it DI registration, pubspec.yaml additions.


Flutter Widget Generator (agents/flutter/widget-generator/)

Be specific in DESCRIPTION. Vague: "A product card". Better: "A card with a cached network image at the top (16:9 ratio), product name in titleMedium, price in primary color, and a star rating row (1–5 stars). Tapping the card opens the product detail. No external packages."

Guarantees: Null-safe Dart 3.x, const constructors where possible, Theme.of(context) for all colors/styles, Semantics for accessibility, AnimationController disposed in dispose().


React Native

RN Performance Optimizer (agents/react-native/performance-optimizer/)

Set ARCH: new for React Native 0.74+ with New Architecture (JSI/Fabric) enabled. Set ARCH: old for Bridge-based apps.

Include PROFILER_DATA (paste from React DevTools Profiler or Flipper) to rank findings by actual measured render time instead of heuristic estimates.

Finds: Inline functions/objects in JSX, missing useCallback/useMemo/React.memo, FlatList missing keyExtractor/getItemLayout, animations on JS thread (useNativeDriver: false), bridge calls in render paths.


Unity

Unity Shader Generator (agents/unity/shader-generator/)

Always specify RENDER_PIPELINE. URP, HDRP, and Built-in use completely different include paths and HLSL APIs. A URP shader will not compile in a Built-in project and vice versa.

Set TARGET_PLATFORM: mobile to enforce mobile GPU budget:

  • ≤2 texture samples per fragment
  • half precision throughout (16-bit vs 32-bit)
  • No dynamic branching (if on interpolated values)

Output: A complete Shader "Custom/..." file — Properties block, SubShader, vertex + fragment stages, and a Material Setup guide for the Inspector.


Unreal Engine

Blueprint Advisor (agents/unreal/blueprint-advisor/)

Describe the Blueprint in plain English steps. The agent cannot read node graph images or screenshots. List what each event does, step by step.

Tick is the #1 issue. Any logic in Event Tick that runs every frame for many actors is expensive. The agent flags this and provides timer-based and event-driven alternatives with concrete timing values.

C++ output: The agent generates a complete .h + .cpp pair using UE5 API conventions (TObjectPtr, UPROPERTY, UFUNCTION, FTimerHandle, AddDynamic).


Cross-Platform

Security Scanner (agents/cross-platform/security-scanner/)

Use SECURITY_FOCUS: all for a complete OWASP scan. Use a specific focus to narrow: secrets, storage, network, deeplinks, webview, permissions, or crypto.

Run on: API client files, auth/session managers, any file that touches SharedPreferences, UserDefaults, WebView, deep link handlers, or cryptographic operations.

Rotate any secret found immediately. If it was in version control history at any point, assume it is already compromised. Run gitleaks detect --source . --report-format json to scan the full git history.


Accessibility Auditor (agents/cross-platform/accessibility-auditor/)

Specify the exact platform variant: Android-Compose, Android-XML, iOS-SwiftUI, iOS-UIKit, Flutter, or React-Native. The corrected code differs significantly between frameworks — a Compose fix looks nothing like a SwiftUI fix.

Always test on a physical device with real assistive technology after applying fixes:

  • Android: TalkBack (Settings → Accessibility → TalkBack)
  • iOS: VoiceOver (Settings → Accessibility → VoiceOver)
  • Emulator/simulator behavior differs from real device behavior

CI/CD Pipeline Generator (agents/cross-platform/ci-cd-generator/)

List special requirements. Slack notifications, specific JDK versions, screenshot tests, upload to multiple Firebase groups — if you don't list it in REQUIREMENTS, it won't appear in the output.

Output includes a Secrets Reference table — every ${{ secrets.X }} in the generated YAML is listed with where to get it and where to set it.

For production releases, the pipeline creates a GitHub Release automatically when you push a version tag: git tag v1.2.0 && git push origin v1.2.0


Home · Using Agents · Skills and Prompts · Reference

Mobile Dev Skill Agents

Home


Getting Started

Reference

Community


Repository github.com/salmanashraf/mobile-dev-skills

Version: v1.0.0 · MIT License

Clone this wiki locally