mobile-ai-agents 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/AGENTS.md +228 -0
  2. package/CLAUDE.md +236 -0
  3. package/LICENSE +21 -0
  4. package/README.md +652 -0
  5. package/agents/android/android-crash-analyzer/README.md +134 -0
  6. package/agents/android/android-crash-analyzer/agent.md +206 -0
  7. package/agents/android/android-crash-analyzer/example-input.md +138 -0
  8. package/agents/android/android-crash-analyzer/example-output.md +225 -0
  9. package/agents/android/anr-investigation/README.md +78 -0
  10. package/agents/android/anr-investigation/agent.md +117 -0
  11. package/agents/android/anr-investigation/example-input.md +62 -0
  12. package/agents/android/anr-investigation/example-output.md +103 -0
  13. package/agents/android/axiom/agent.md +197 -0
  14. package/agents/android/code-reviewer/README.md +108 -0
  15. package/agents/android/code-reviewer/agent.md +210 -0
  16. package/agents/android/code-reviewer/example-input.md +116 -0
  17. package/agents/android/code-reviewer/example-output.md +115 -0
  18. package/agents/android/compose-navigation/README.md +76 -0
  19. package/agents/android/compose-navigation/agent.md +121 -0
  20. package/agents/android/compose-navigation/example-input.md +49 -0
  21. package/agents/android/compose-navigation/example-output.md +325 -0
  22. package/agents/android/compose-screen-builder/README.md +95 -0
  23. package/agents/android/compose-screen-builder/agent.md +170 -0
  24. package/agents/android/compose-screen-builder/example-input.md +40 -0
  25. package/agents/android/compose-screen-builder/example-output.md +568 -0
  26. package/agents/android/compose-ui-reviewer/README.md +73 -0
  27. package/agents/android/compose-ui-reviewer/agent.md +253 -0
  28. package/agents/android/compose-ui-reviewer/example-input.md +84 -0
  29. package/agents/android/compose-ui-reviewer/example-output.md +102 -0
  30. package/agents/android/crash-analyzer/README.md +53 -0
  31. package/agents/android/crash-analyzer/agent.md +295 -0
  32. package/agents/android/memory-leak-analyzer/README.md +79 -0
  33. package/agents/android/memory-leak-analyzer/agent.md +116 -0
  34. package/agents/android/memory-leak-analyzer/example-input.md +78 -0
  35. package/agents/android/memory-leak-analyzer/example-output.md +128 -0
  36. package/agents/cross-platform/accessibility-auditor/README.md +47 -0
  37. package/agents/cross-platform/accessibility-auditor/agent.md +268 -0
  38. package/agents/cross-platform/accessibility-auditor/example-input.md +84 -0
  39. package/agents/cross-platform/accessibility-auditor/example-output.md +132 -0
  40. package/agents/cross-platform/appforge/agent.md +303 -0
  41. package/agents/cross-platform/ci-cd-generator/README.md +65 -0
  42. package/agents/cross-platform/ci-cd-generator/agent.md +422 -0
  43. package/agents/cross-platform/ci-cd-generator/example-input.md +69 -0
  44. package/agents/cross-platform/ci-cd-generator/example-output.md +261 -0
  45. package/agents/cross-platform/crasher/agent.md +221 -0
  46. package/agents/cross-platform/figma/agent.md +247 -0
  47. package/agents/cross-platform/launchpad/agent.md +330 -0
  48. package/agents/cross-platform/mobile-harness/agent.md +422 -0
  49. package/agents/cross-platform/mobile-memory/agent.md +429 -0
  50. package/agents/cross-platform/perf/agent.md +261 -0
  51. package/agents/cross-platform/pipeline/agent.md +288 -0
  52. package/agents/cross-platform/release-notes-generator/README.md +63 -0
  53. package/agents/cross-platform/release-notes-generator/agent.md +218 -0
  54. package/agents/cross-platform/release-notes-generator/example-input.md +71 -0
  55. package/agents/cross-platform/release-notes-generator/example-output.md +96 -0
  56. package/agents/cross-platform/scribe/agent.md +180 -0
  57. package/agents/cross-platform/security-scanner/README.md +61 -0
  58. package/agents/cross-platform/security-scanner/agent.md +287 -0
  59. package/agents/cross-platform/security-scanner/example-input.md +77 -0
  60. package/agents/cross-platform/security-scanner/example-output.md +141 -0
  61. package/agents/cross-platform/sentinel/agent.md +217 -0
  62. package/agents/cross-platform/store-listing-writer/README.md +58 -0
  63. package/agents/cross-platform/store-listing-writer/agent.md +380 -0
  64. package/agents/cross-platform/store-listing-writer/example-input.md +67 -0
  65. package/agents/cross-platform/store-listing-writer/example-output.md +131 -0
  66. package/agents/flutter/bloc-feature-builder/README.md +101 -0
  67. package/agents/flutter/bloc-feature-builder/agent.md +225 -0
  68. package/agents/flutter/bloc-feature-builder/example-input.md +47 -0
  69. package/agents/flutter/bloc-feature-builder/example-output.md +838 -0
  70. package/agents/flutter/dart/agent.md +223 -0
  71. package/agents/flutter/widget-generator/README.md +66 -0
  72. package/agents/flutter/widget-generator/agent.md +264 -0
  73. package/agents/flutter/widget-generator/example-input.md +71 -0
  74. package/agents/flutter/widget-generator/example-output.md +163 -0
  75. package/agents/gaming/forge/agent.md +197 -0
  76. package/agents/gaming/unreal/agent.md +200 -0
  77. package/agents/ios/crash-analyzer/README.md +69 -0
  78. package/agents/ios/crash-analyzer/agent.md +300 -0
  79. package/agents/ios/crash-analyzer/example-input.md +83 -0
  80. package/agents/ios/crash-analyzer/example-output.md +126 -0
  81. package/agents/ios/swift/agent.md +206 -0
  82. package/agents/ios/swift-reviewer/README.md +68 -0
  83. package/agents/ios/swift-reviewer/agent.md +231 -0
  84. package/agents/ios/swift-reviewer/example-input.md +100 -0
  85. package/agents/ios/swift-reviewer/example-output.md +127 -0
  86. package/agents/react-native/bridge/agent.md +212 -0
  87. package/agents/react-native/performance-optimizer/README.md +81 -0
  88. package/agents/react-native/performance-optimizer/agent.md +284 -0
  89. package/agents/react-native/performance-optimizer/example-input.md +104 -0
  90. package/agents/react-native/performance-optimizer/example-output.md +132 -0
  91. package/agents/unity/shader-generator/README.md +77 -0
  92. package/agents/unity/shader-generator/agent.md +270 -0
  93. package/agents/unity/shader-generator/example-input.md +70 -0
  94. package/agents/unity/shader-generator/example-output.md +160 -0
  95. package/agents/unreal/blueprint-advisor/README.md +71 -0
  96. package/agents/unreal/blueprint-advisor/agent.md +311 -0
  97. package/agents/unreal/blueprint-advisor/example-input.md +73 -0
  98. package/agents/unreal/blueprint-advisor/example-output.md +217 -0
  99. package/cli/index.js +1091 -0
  100. package/docs/agent-guide.md +138 -0
  101. package/docs/chatgpt-integration.md +219 -0
  102. package/docs/core-loops.md +143 -0
  103. package/docs/cursor-integration.md +143 -0
  104. package/docs/getting-started.md +132 -0
  105. package/docs/index.html +711 -0
  106. package/docs/installation.md +271 -0
  107. package/docs/mobile-harness.md +160 -0
  108. package/docs/mobile-mcp.md +172 -0
  109. package/docs/mobile-memory.md +349 -0
  110. package/docs/release-process.md +85 -0
  111. package/docs/releases/release-v1.0.0.md +165 -0
  112. package/docs/roadmap/github-issues.md +239 -0
  113. package/docs/skill-categories.md +125 -0
  114. package/docs/vscode-copilot-integration.md +104 -0
  115. package/docs/wiki.md +615 -0
  116. package/install.sh +507 -0
  117. package/mobile-karpathy.md +79 -0
  118. package/package.json +57 -0
  119. package/skills/android/README.md +31 -0
  120. package/skills/android/android-tdd.md +89 -0
  121. package/skills/android/anr-investigation.md +251 -0
  122. package/skills/android/code-review.md +98 -0
  123. package/skills/android/compose-migration.md +48 -0
  124. package/skills/android/compose-review.md +78 -0
  125. package/skills/android/kotlin-modernize.md +51 -0
  126. package/skills/android/memory-leak-investigation.md +256 -0
  127. package/skills/android/proguard-rules.md +48 -0
  128. package/skills/cross-platform/accessibility-audit.md +63 -0
  129. package/skills/cross-platform/api-versioning.md +59 -0
  130. package/skills/cross-platform/clean-code-audit.md +239 -0
  131. package/skills/cross-platform/crash-triage.md +53 -0
  132. package/skills/cross-platform/deeplink-debug.md +57 -0
  133. package/skills/cross-platform/feature-slice.md +48 -0
  134. package/skills/cross-platform/grill-mobile.md +64 -0
  135. package/skills/cross-platform/mobile-mcp-qa.md +193 -0
  136. package/skills/cross-platform/mobile-memory-graph.md +179 -0
  137. package/skills/cross-platform/mobile-memory-save.md +210 -0
  138. package/skills/cross-platform/mobile-memory-search.md +154 -0
  139. package/skills/cross-platform/perf-audit.md +61 -0
  140. package/skills/cross-platform/prd-verification.md +324 -0
  141. package/skills/cross-platform/release-prep.md +64 -0
  142. package/skills/cross-platform/security-audit.md +281 -0
  143. package/skills/cross-platform/store-listing.md +75 -0
  144. package/skills/flutter/README.md +32 -0
  145. package/skills/flutter/dart-modernize.md +47 -0
  146. package/skills/flutter/flutter-review.md +59 -0
  147. package/skills/flutter/flutter-tdd.md +73 -0
  148. package/skills/flutter/widget-extract.md +41 -0
  149. package/skills/flutter/widget-gen.md +131 -0
  150. package/skills/gaming/blueprint-to-cpp.md +51 -0
  151. package/skills/gaming/game-perf.md +54 -0
  152. package/skills/gaming/shader-gen.md +44 -0
  153. package/skills/gaming/unity-tdd.md +85 -0
  154. package/skills/ios/README.md +45 -0
  155. package/skills/ios/data-persistence.md +151 -0
  156. package/skills/ios/ios-tdd.md +90 -0
  157. package/skills/ios/networking.md +139 -0
  158. package/skills/ios/performance.md +122 -0
  159. package/skills/ios/swift-concurrency.md +57 -0
  160. package/skills/ios/swift-review.md +124 -0
  161. package/skills/ios/swiftui-review.md +49 -0
  162. package/skills/ios/swiftui-state.md +122 -0
  163. package/skills/ios/unit-testing.md +144 -0
  164. package/skills/ios/xcode-warnings.md +37 -0
  165. package/skills/react-native/README.md +42 -0
  166. package/skills/react-native/bridge-audit.md +104 -0
  167. package/skills/react-native/expo-optimize.md +55 -0
  168. package/skills/react-native/new-arch-migrate.md +53 -0
  169. package/skills/react-native/performance.md +124 -0
  170. package/skills/react-native/rn-review.md +53 -0
  171. package/skills/react-native/rn-tdd.md +76 -0
  172. package/skills/shared/README.md +46 -0
  173. package/skills/shared/accessibility-audit.md +132 -0
  174. package/skills/shared/crash-analysis.md +110 -0
  175. package/skills/shared/security-scan.md +149 -0
  176. package/skills/unity/README.md +31 -0
  177. package/skills/unity/shader-review.md +110 -0
  178. package/templates/agent-template.md +88 -0
  179. package/templates/prompt-template.md +50 -0
  180. package/templates/skill-template.md +64 -0
  181. package/templates/workflow-template.md +48 -0
  182. package/workflows/app-launch.md +66 -0
  183. package/workflows/appforge-workflow.md +232 -0
  184. package/workflows/ci-setup.md +77 -0
  185. package/workflows/crash-to-fix.md +71 -0
  186. package/workflows/feature-ship.md +61 -0
  187. package/workflows/game-level.md +72 -0
  188. package/workflows/mobile-harness.md +319 -0
  189. package/workflows/mobile-mcp-qa.md +228 -0
  190. package/workflows/mobile-memory-workflow.md +243 -0
  191. package/workflows/new-project-setup.md +93 -0
  192. package/workflows/new-screen.md +68 -0
  193. package/workflows/perf-sprint.md +78 -0
  194. package/workflows/release-cycle.md +71 -0
@@ -0,0 +1,53 @@
1
+ # Skill β€” /crash-triage
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/crash-triage`
5
+ **Composable With:** agents/cross-platform/crasher/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Rapid crash triage for any mobile platform. Paste a stacktrace, get a root cause and fix. The first thing to run when a crash alert fires.
12
+
13
+ ---
14
+
15
+ ## Skill Prompt
16
+
17
+ ```
18
+ Triage the provided mobile crash stacktrace:
19
+
20
+ STEP 1 β€” CLASSIFY
21
+ Identify the crash type:
22
+ - NullPointerException / nil dereference
23
+ - IndexOutOfBoundsException / array out of bounds
24
+ - ClassCastException / invalid cast
25
+ - ANR (Application Not Responding) β€” main thread blocked
26
+ - OOM (OutOfMemoryError) β€” memory exhaustion
27
+ - EXC_BAD_ACCESS β€” iOS memory corruption / dangling pointer
28
+ - Unhandled exception / promise rejection (RN)
29
+ - Assertion failure / fatalError (Swift)
30
+ - Stack overflow (infinite recursion)
31
+
32
+ STEP 2 β€” FIND THE ORIGIN
33
+ Read the stacktrace top to bottom:
34
+ - The top frame is usually the symptom, not the cause.
35
+ - Find the first frame in YOUR code (not framework code).
36
+ - The origin is usually 3–8 frames below the top.
37
+
38
+ STEP 3 β€” STATE THE ROOT CAUSE
39
+ One sentence: "The crash occurs because X happens when Y condition is true."
40
+
41
+ STEP 4 β€” THE FIX
42
+ Concrete code change. Not "add a null check" β€” the actual check, in the actual function.
43
+
44
+ STEP 5 β€” REGRESSION TEST
45
+ One sentence: "Write a test that calls [function] with [condition] and asserts [expected behavior]."
46
+
47
+ Output format:
48
+ CRASH TYPE: <type>
49
+ ORIGIN: <file:function:line>
50
+ ROOT CAUSE: <one sentence>
51
+ FIX: <code snippet>
52
+ REGRESSION TEST: <description>
53
+ ```
@@ -0,0 +1,57 @@
1
+ # Skill β€” /deeplink-debug
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/deeplink-debug`
5
+
6
+ ---
7
+
8
+ ## Purpose
9
+
10
+ Diagnoses broken deep links across Android and iOS. Notoriously painful β€” this skill walks through every failure mode systematically.
11
+
12
+ ---
13
+
14
+ ## Skill Prompt
15
+
16
+ ```
17
+ Debug the described deep link issue step by step:
18
+
19
+ PROVIDE THIS INFORMATION:
20
+ 1. Deep link URL or app link (e.g. https://app.example.com/product/123 or myapp://product/123)
21
+ 2. Platform: Android, iOS, or both
22
+ 3. Symptom: doesn't open app / opens wrong screen / opens app but crashes / works on dev not prod
23
+ 4. Link type: App Link (Android) / Universal Link (iOS) / Custom URL scheme / Branch.io / Firebase Dynamic Link
24
+
25
+ ANDROID APP LINKS CHECKLIST:
26
+ [ ] android:autoVerify="true" in the intent-filter (without this, App Links don't work)
27
+ [ ] Intent filter scheme is "https" (not "http") for App Links
28
+ [ ] /.well-known/assetlinks.json served at the exact domain, over HTTPS, with correct JSON
29
+ [ ] assetlinks.json contains the correct SHA-256 certificate fingerprint
30
+ (Get fingerprint: keytool -list -v -keystore debug.keystore β€” debug != production!)
31
+ [ ] assetlinks.json is accessible without redirect (redirects break App Link verification)
32
+ [ ] App is installed and App Link verification has been triggered (reboot or reinstall)
33
+ [ ] Test: adb shell am start -a android.intent.action.VIEW -d "https://yourdomain.com/path"
34
+
35
+ iOS UNIVERSAL LINKS CHECKLIST:
36
+ [ ] apple-app-site-association (AASA) file served at /.well-known/apple-app-site-association
37
+ [ ] AASA is served with Content-Type: application/json (not .well-known/apple-app-site-association.json)
38
+ [ ] AASA contains the correct appID (TeamID.BundleID) in the "applinks" section
39
+ [ ] AASA path patterns match the URLs being tested (wildcards: * matches one path component, ** matches any)
40
+ [ ] Associated Domains entitlement includes applinks:yourdomain.com
41
+ [ ] Test on real device (simulator doesn't support Universal Links)
42
+ [ ] Test: Settings β†’ Developer β†’ Universal Links β†’ Diagnostics tool (iOS 16+)
43
+
44
+ CUSTOM URL SCHEMES (fallback):
45
+ [ ] Scheme registered in AndroidManifest.xml / Info.plist
46
+ [ ] Scheme not conflicting with another installed app (no guarantee of uniqueness)
47
+ [ ] Test: adb shell am start -a android.intent.action.VIEW -d "myapp://path"
48
+ xcrun simctl openurl booted "myapp://path"
49
+
50
+ COMMON FAILURES AND FIXES:
51
+ - "Works in dev, not prod": different signing certificate β†’ different SHA-256 fingerprint in assetlinks.json
52
+ - "Opens browser instead of app": assetlinks.json or AASA not found / served with wrong Content-Type
53
+ - "App opens but wrong screen": intent/URL handler not matching the path pattern
54
+ - "Crashes on open": deep link handler accessing null navigation state before initialization
55
+
56
+ Output a step-by-step diagnosis with the most likely cause first.
57
+ ```
@@ -0,0 +1,48 @@
1
+ # Skill β€” /feature-slice
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/feature-slice`
5
+
6
+ ---
7
+
8
+ ## Purpose
9
+
10
+ Breaks a mobile feature epic into independently shippable, correctly-sized tickets. Works with Jira, Linear, and GitHub Issues. Prevents the "one giant PR" anti-pattern.
11
+
12
+ ---
13
+
14
+ ## Skill Prompt
15
+
16
+ ```
17
+ Slice the described mobile feature into independently shippable tickets:
18
+
19
+ SLICING RULES:
20
+ 1. Each ticket should be shippable behind a feature flag without breaking existing behavior.
21
+ 2. Each ticket should be completable by one engineer in 1–3 days.
22
+ 3. Tickets are ordered: data layer first, then domain, then UI.
23
+ 4. "Independently shippable" means the app still works if only this ticket is merged.
24
+
25
+ LAYER ORDER (mobile Clean Architecture):
26
+ 1. Data models / API contract (can be merged immediately, no visible change)
27
+ 2. Repository / data source implementation
28
+ 3. Domain use case
29
+ 4. ViewModel / state management
30
+ 5. UI scaffold (empty screen, no data)
31
+ 6. UI with real data
32
+ 7. Error states and edge cases
33
+ 8. Analytics / logging
34
+ 9. Tests (can be bundled with each layer or as a final ticket)
35
+
36
+ OUTPUT PER TICKET:
37
+ Title: [PLATFORM] Layer β€” What it does
38
+ Acceptance Criteria:
39
+ - [ ] Criterion 1
40
+ - [ ] Criterion 2
41
+ Dependencies: <ticket numbers this depends on>
42
+ Estimated effort: <S | M | L> (S=4h, M=1d, L=2-3d)
43
+
44
+ Also flag:
45
+ - Any tickets that can be done in parallel (no dependency between them)
46
+ - Any ticket that is a blocker for everything else (do it first)
47
+ - Any ticket that touches existing code and needs a regression test
48
+ ```
@@ -0,0 +1,64 @@
1
+ # Skill β€” /grill-mobile
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/grill-mobile`
5
+ **Viral Potential:** HIGHEST β€” 20 questions before any mobile code is written
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Asks 20 mobile-specific alignment questions before writing a single line of code. Prevents the most common mobile AI mistakes: wrong API level, reinventing native components, ignoring platform constraints.
12
+
13
+ Inspired by mattpocock's `/grill-me` β€” the mobile-specific version.
14
+
15
+ ---
16
+
17
+ ## Skill Prompt
18
+
19
+ ```
20
+ Before writing any code for this mobile feature, ask the following 20 questions.
21
+ Wait for answers before proceeding. Group them into 5 rounds of 4 questions each
22
+ so the conversation feels natural rather than overwhelming.
23
+
24
+ ROUND 1 β€” Platform Basics
25
+ 1. What platform(s) are we targeting? (Android, iOS, Flutter, React Native, Unity/Unreal?)
26
+ 2. What is the minimum OS version / SDK level we support?
27
+ 3. Is this a new feature in a greenfield project or modifying an existing codebase?
28
+ 4. Which design system or component library is in use? (Material3, Cupertino, custom?)
29
+
30
+ ROUND 2 β€” Technical Context
31
+ 5. What state management solution is in use? (ViewModel/StateFlow, Bloc, Riverpod, Redux, Zustand, none?)
32
+ 6. What dependency injection framework, if any? (Hilt, Koin, Provider, none?)
33
+ 7. Are there existing components in the codebase that already solve part of this?
34
+ 8. What is the target frame rate? (30fps for low-end, 60fps, 120fps for premium?)
35
+
36
+ ROUND 3 β€” User & Device Reality
37
+ 9. What type of device is the primary target? (High-end flagship, mid-range, low-RAM budget?)
38
+ 10. Will this feature work offline? What is the offline behavior?
39
+ 11. Are there users with accessibility needs we should design for? (Screen reader, large text, motor?)
40
+ 12. What is the expected data size? (A handful of items, hundreds, thousands?)
41
+
42
+ ROUND 4 β€” Integration & Constraints
43
+ 13. What API or backend does this feature connect to? Any rate limits or auth requirements?
44
+ 14. Are there any app store policies affecting this feature? (Location, permissions, content?)
45
+ 15. What is the target app size budget? Any constraints on adding dependencies?
46
+ 16. Is this screen deep-linkable? What parameters does the deep link carry?
47
+
48
+ ROUND 5 β€” Quality & Delivery
49
+ 17. What is the test strategy? (Unit only, integration, UI test, manual only?)
50
+ 18. Has this feature been designed in Figma or another tool? Can you share the spec?
51
+ 19. What does "done" look like? What are the acceptance criteria?
52
+ 20. What are the top 3 edge cases we must handle before this ships?
53
+
54
+ After receiving answers, summarize your understanding of the feature in 3 bullet points
55
+ and confirm with the developer before writing any code.
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Notes
61
+
62
+ - Use this at the start of every non-trivial feature implementation.
63
+ - Answers to questions 1, 2, 8, 9 directly prevent the most common AI mobile coding mistakes.
64
+ - The summary-and-confirm step catches misunderstandings before they become wrong code.
@@ -0,0 +1,193 @@
1
+ # Skill β€” /mobile-mcp-qa
2
+
3
+ **Platform:** Android / iOS / Flutter / React Native
4
+ **Slash Command:** `/mobile-mcp-qa`
5
+ **Composable With:** APPFORGE, AXIOM, SWIFT, DART, BRIDGE, CRASHER, PERF, Mobile Memory
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Use Mobile MCP to run AI-assisted QA on a real device, emulator, or simulator. This skill turns a feature flow into a repeatable device test plan using screenshots, accessibility snapshots, element inspection, taps, typing, swipes, app install, app launch, and device orientation checks.
12
+
13
+ Mobile MCP is best used after implementation, during APPFORGE Stage 7 Full QA, or before store submission.
14
+
15
+ ---
16
+
17
+ ## Prerequisites
18
+
19
+ Install Mobile MCP in your AI tool:
20
+
21
+ ```json
22
+ {
23
+ "mcpServers": {
24
+ "mobile-mcp": {
25
+ "command": "npx",
26
+ "args": ["-y", "@mobilenext/mobile-mcp@latest"]
27
+ }
28
+ }
29
+ }
30
+ ```
31
+
32
+ Claude Code:
33
+
34
+ ```bash
35
+ claude mcp add mobile-mcp -- npx -y @mobilenext/mobile-mcp@latest
36
+ ```
37
+
38
+ Codex:
39
+
40
+ ```bash
41
+ codex mcp add mobile-mcp npx "@mobilenext/mobile-mcp@latest"
42
+ ```
43
+
44
+ You also need at least one available Android emulator/device or iOS simulator/device.
45
+
46
+ ---
47
+
48
+ ## Input Format
49
+
50
+ ```text
51
+ COMMAND: /mobile-mcp-qa
52
+ PLATFORM: <Android | iOS | Flutter | React Native>
53
+ APP_ID: <Android package name or iOS bundle id>
54
+ BUILD_PATH: <optional apk/ipa/app path>
55
+ DEVICE: <optional target device name>
56
+ FLOW:
57
+ <numbered user flow to test>
58
+ EXPECTED:
59
+ <expected UI state, navigation, data, and analytics>
60
+ EDGE_CASES:
61
+ <offline, invalid input, rotation, restart, permissions, api errors>
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Skill Prompt
67
+
68
+ ```text
69
+ Run a Mobile MCP QA pass for the provided mobile app flow.
70
+
71
+ STEP 1 β€” VERIFY SETUP
72
+ - List available devices.
73
+ - Select the requested device, or choose the first available emulator/simulator.
74
+ - If BUILD_PATH is provided, install the app.
75
+ - Launch APP_ID.
76
+ - Capture screen size and orientation.
77
+
78
+ STEP 2 β€” BASELINE SCREEN
79
+ - Take a screenshot.
80
+ - List elements on screen.
81
+ - Record the initial screen name and visible primary actions.
82
+ - If accessibility data is incomplete, fall back to screenshot-based coordinate reasoning.
83
+
84
+ STEP 3 β€” EXECUTE FLOW
85
+ For each user-flow step:
86
+ - Identify the target element.
87
+ - Prefer accessibility element interaction when available.
88
+ - Use coordinate tap only when element metadata is missing.
89
+ - Type text where required.
90
+ - Swipe only when the target is off-screen.
91
+ - Take a screenshot after every major state transition.
92
+
93
+ STEP 4 β€” VERIFY EXPECTED RESULT
94
+ Check:
95
+ - Correct screen reached
96
+ - Correct labels and values rendered
97
+ - Loading, empty, and error states behave as expected
98
+ - Navigation stack and back behavior work
99
+ - Keyboard behavior is sane
100
+ - Orientation does not break layout
101
+ - App restart preserves required state
102
+ - Offline/API error behavior is user-safe
103
+
104
+ STEP 5 β€” REPORT
105
+ Return:
106
+ MOBILE MCP QA REPORT
107
+ ====================
108
+ Platform:
109
+ Device:
110
+ App:
111
+ Flow:
112
+ Result: PASS | FAIL | BLOCKED
113
+
114
+ Steps Executed:
115
+ | Step | Action | Evidence | Result |
116
+ |---|---|---|---|
117
+
118
+ Issues:
119
+ | Severity | Screen | Issue | Repro Step | Fix |
120
+ |---|---|---|---|---|
121
+
122
+ Screenshots Captured:
123
+ - <screenshot name or description>
124
+
125
+ Accessibility Findings:
126
+ - <missing labels, small targets, focus issues>
127
+
128
+ Recommended Next Action:
129
+ <single concrete fix or next test>
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Example
135
+
136
+ ### Input
137
+
138
+ ```text
139
+ COMMAND: /mobile-mcp-qa
140
+ PLATFORM: Android
141
+ APP_ID: com.example.invoice
142
+ FLOW:
143
+ 1. Launch app.
144
+ 2. Tap Add Invoice.
145
+ 3. Enter client "Acme Studio".
146
+ 4. Enter amount "450".
147
+ 5. Set due date tomorrow.
148
+ 6. Save invoice.
149
+ 7. Confirm invoice appears on dashboard.
150
+ EXPECTED:
151
+ Dashboard shows Acme Studio, $450, due tomorrow, status Unpaid.
152
+ EDGE_CASES:
153
+ Rotate on dashboard, restart app, verify invoice persists.
154
+ ```
155
+
156
+ ### Output
157
+
158
+ ```text
159
+ MOBILE MCP QA REPORT
160
+ ====================
161
+ Platform: Android
162
+ Device: Pixel_7_API_35
163
+ App: com.example.invoice
164
+ Flow: Create invoice and verify dashboard persistence
165
+ Result: FAIL
166
+
167
+ Steps Executed:
168
+ | Step | Action | Evidence | Result |
169
+ |---|---|---|---|
170
+ | 1 | Launched app | Home screenshot shows empty dashboard | PASS |
171
+ | 2 | Tapped Add Invoice | Add Invoice screen visible | PASS |
172
+ | 3 | Entered client and amount | Form fields populated | PASS |
173
+ | 4 | Saved invoice | Returned to dashboard | PASS |
174
+ | 5 | Restarted app | Dashboard empty after relaunch | FAIL |
175
+
176
+ Issues:
177
+ | Severity | Screen | Issue | Repro Step | Fix |
178
+ |---|---|---|---|---|
179
+ | CRITICAL | Dashboard | Invoice is not persisted after app restart | Save invoice, terminate app, relaunch | Verify Room insert is awaited before navigation |
180
+
181
+ Screenshots Captured:
182
+ - home-empty-initial
183
+ - add-invoice-filled
184
+ - dashboard-after-save
185
+ - dashboard-after-restart
186
+
187
+ Accessibility Findings:
188
+ - Add Invoice button has label.
189
+ - Amount field missing content description for currency expectation.
190
+
191
+ Recommended Next Action:
192
+ Fix invoice persistence by awaiting InvoiceDao.insert() before navigating back to Dashboard, then rerun the restart persistence flow.
193
+ ```
@@ -0,0 +1,179 @@
1
+ # Skill β€” /mobile-memory-graph
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/mobile-memory-graph`
5
+ **Composable With:** Mobile Memory, AXIOM, SWIFT, DART, BRIDGE, FORGE, UNREAL
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Build the Knowledge Graph section of `MOBILE_MEMORY.md` from pasted mobile code files. Use it when the user wants architecture context, dependency flow, god node detection, or a token-reduced map of a codebase.
12
+
13
+ ---
14
+
15
+ ## Input Format
16
+
17
+ ````text
18
+ COMMAND: /mobile-memory-graph
19
+ FILES:
20
+ FILE: <relative/path/File.kt>
21
+ ```kotlin
22
+ <code>
23
+ ```
24
+ FILE: <relative/path/File.swift>
25
+ ```swift
26
+ <code>
27
+ ```
28
+ ````
29
+
30
+ Accept Kotlin, Java, Swift, Dart, TypeScript, TSX, JavaScript, JSX, C#, and Blueprint/C++ snippets.
31
+
32
+ ---
33
+
34
+ ## Platform Detection
35
+
36
+ | Signal | Platform |
37
+ |---|---|
38
+ | `.kt`, `androidx`, `ViewModel`, `StateFlow`, `HiltViewModel` | Android |
39
+ | `.swift`, `SwiftUI`, `ObservableObject`, `@Published`, `MainActor` | iOS |
40
+ | `.dart`, `Widget`, `StateNotifier`, `Bloc`, `Riverpod` | Flutter |
41
+ | `.tsx`, `.jsx`, `React Native`, `NativeModules`, `FlatList` | React Native |
42
+ | `.cs`, `MonoBehaviour`, `Update()`, `Rigidbody` | Unity |
43
+
44
+ ---
45
+
46
+ ## Skill Prompt
47
+
48
+ ```text
49
+ Build the Knowledge Graph section of MOBILE_MEMORY.md from the provided code files.
50
+
51
+ Output only:
52
+ ## πŸ—ΊοΈ Knowledge Graph
53
+
54
+ Required subsections:
55
+ 1. Nodes table
56
+ 2. Key Edges table
57
+ 3. God Nodes table
58
+ 4. Architecture Violations list
59
+ 5. Token Reduction Summary
60
+
61
+ Node types:
62
+ [UI] [VM] [UC] [REPO] [NET] [DB] [DI] [NAV] [TEST]
63
+
64
+ Health values:
65
+ OK, CRITICAL, WARNING, DEBT
66
+
67
+ Edge types:
68
+ OBSERVES, CALLS, INJECTS, NAVIGATES_TO, EMITS, VIOLATES
69
+
70
+ Every edge note must start with a confidence tag:
71
+ - EXTRACTED: direct code evidence exists
72
+ - INFERRED: strongly implied by naming/imports/framework convention
73
+ - AMBIGUOUS: possible relationship but insufficient code shown
74
+
75
+ Platform checks:
76
+ - Android: flag GlobalScope, repository construction in ViewModel, exposed MutableStateFlow, UI navigation from ViewModel, repository called by 2+ ViewModels.
77
+ - iOS: flag retain cycles, force unwraps, MainActor misuse, ObservableObject with 6+ @Published, class with 4+ protocol conformances.
78
+ - Flutter: flag expensive build() work, missing const constructors, unawaited futures, StateNotifier with 3+ consumers, build() over 200 lines.
79
+ - React Native: flag bridge calls in hot paths, missing keys on lists, Context with 5+ consumers, component over 150 lines.
80
+ - Unity: flag Update() abuse, GC allocations in hot paths, physics calls in Update(), class with 5+ responsibilities.
81
+
82
+ Token reduction estimate:
83
+ Estimate raw file tokens from code volume and compare to graph token count. Use conservative math and state assumptions.
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Output Format
89
+
90
+ ```markdown
91
+ ## πŸ—ΊοΈ Knowledge Graph
92
+
93
+ ### Nodes
94
+ | Node | Type | Layer | Health |
95
+ |---|---|---|---|
96
+ | [ClassName] | [VM/REPO/UI/etc] | [UI/Domain/Data] | [OK/CRITICAL/WARNING/DEBT] |
97
+
98
+ ### Key Edges
99
+ | From | Edge | To | Note |
100
+ |---|---|---|---|
101
+ | [Node] | OBSERVES | [Node] | EXTRACTED: [why this matters] |
102
+
103
+ ### God Nodes
104
+ | Node | Connections | Platform Risk | Recommendation |
105
+ |---|---|---|---|
106
+
107
+ ### Architecture Violations
108
+ - [Class] VIOLATES [rule] β€” [explanation] β†’ [fix]
109
+
110
+ ### Token Reduction Summary
111
+ - Raw files estimated: [N] tokens
112
+ - Graph summary: [N] tokens
113
+ - Reduction: [XΓ—]
114
+ - Assumption: [how estimate was calculated]
115
+ ```
116
+
117
+ ---
118
+
119
+ ## Example
120
+
121
+ ### Input
122
+
123
+ ````text
124
+ COMMAND: /mobile-memory-graph
125
+ FILE: app/cart/CartViewModel.kt
126
+ ```kotlin
127
+ @HiltViewModel
128
+ class CartViewModel @Inject constructor() : ViewModel() {
129
+ val uiState = MutableStateFlow(CartState())
130
+ private val repo = CartRepository(RetrofitCartApi())
131
+
132
+ fun checkout(activity: Activity) {
133
+ GlobalScope.launch {
134
+ repo.checkout()
135
+ activity.startActivity(Intent(activity, PaymentActivity::class.java))
136
+ }
137
+ }
138
+ }
139
+ ```
140
+ ````
141
+
142
+ ### Output
143
+
144
+ ```markdown
145
+ ## πŸ—ΊοΈ Knowledge Graph
146
+
147
+ ### Nodes
148
+ | Node | Type | Layer | Health |
149
+ |---|---|---|---|
150
+ | CartViewModel | VM | UI | CRITICAL |
151
+ | CartRepository | REPO | Data | WARNING |
152
+ | RetrofitCartApi | NET | Data | OK |
153
+ | PaymentActivity | NAV | UI | WARNING |
154
+
155
+ ### Key Edges
156
+ | From | Edge | To | Note |
157
+ |---|---|---|---|
158
+ | CartViewModel | CALLS | CartRepository | EXTRACTED: ViewModel constructs and calls repository directly |
159
+ | CartRepository | CALLS | RetrofitCartApi | INFERRED: repository receives RetrofitCartApi constructor dependency |
160
+ | CartViewModel | NAVIGATES_TO | PaymentActivity | EXTRACTED: ViewModel starts Activity through Activity reference |
161
+ | CartViewModel | VIOLATES | Coroutine ownership | EXTRACTED: uses GlobalScope inside ViewModel |
162
+
163
+ ### God Nodes
164
+ | Node | Connections | Platform Risk | Recommendation |
165
+ |---|---|---|---|
166
+ | CartViewModel | 4 | High: mixes state, DI, coroutine ownership, and navigation | Inject repository, use viewModelScope, emit navigation event |
167
+
168
+ ### Architecture Violations
169
+ - CartViewModel VIOLATES Clean Architecture β€” constructs CartRepository and RetrofitCartApi directly β†’ inject dependencies with Hilt.
170
+ - CartViewModel VIOLATES state encapsulation β€” exposes MutableStateFlow publicly β†’ expose StateFlow via asStateFlow().
171
+ - CartViewModel VIOLATES lifecycle ownership β€” uses GlobalScope β†’ use viewModelScope.
172
+ - CartViewModel VIOLATES navigation ownership β€” starts Activity directly β†’ emit navigation event and let UI navigate.
173
+
174
+ ### Token Reduction Summary
175
+ - Raw files estimated: 180 tokens
176
+ - Graph summary: 125 tokens
177
+ - Reduction: 1.4Γ—
178
+ - Assumption: Small snippet; larger projects improve because repeated code bodies collapse into nodes and edges.
179
+ ```