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,210 @@
1
+ # Skill — /mobile-memory-save
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/mobile-memory-save`
5
+ **Composable With:** Mobile Memory, AXIOM, CRASHER, SWIFT, DART, BRIDGE, PERF
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Create a compact `MOBILE_MEMORY.md` checkpoint fast. Use this when the session is getting long, a major decision was made, or you need to switch AI tools without losing progress.
12
+
13
+ This skill does not require activating the full Mobile Memory agent. It produces a smaller file with only:
14
+
15
+ - `INSTANT RESUME`
16
+ - `Progress`
17
+ - `NEXT ACTION`
18
+ - `Code State`
19
+ - Resume instructions
20
+
21
+ ---
22
+
23
+ ## Input Format
24
+
25
+ ```text
26
+ COMMAND: /mobile-memory-save
27
+ PROJECT: <project name>
28
+ PLATFORM: <Android/iOS/Flutter/RN/Unity/Unreal>
29
+ CURRENT TASK:
30
+ <what we are doing>
31
+ DECISIONS:
32
+ <bullet list of decisions made>
33
+ PROGRESS:
34
+ <done / in progress / blocked>
35
+ CODE STATE:
36
+ <files changed, files mid-edit, important snippets if needed>
37
+ NEXT ACTION:
38
+ <one executable instruction>
39
+ ```
40
+
41
+ If the user does not provide fields, infer them from the conversation and mark uncertain items as `AMBIGUOUS`.
42
+
43
+ ---
44
+
45
+ ## Skill Prompt
46
+
47
+ ```text
48
+ Create a compact MOBILE_MEMORY.md checkpoint from the current session.
49
+
50
+ Rules:
51
+ 1. Capture only what a future AI needs to continue without asking the user to repeat context.
52
+ 2. Do not summarize away decisions, blockers, or file names.
53
+ 3. Produce exactly one NEXT ACTION. It must be executable, concrete, and free of assumed context.
54
+ 4. Include code state for any file mid-edit or any snippet that would be lost between sessions.
55
+ 5. Use the compact MOBILE_MEMORY.md format below. Do not add extra sections.
56
+
57
+ Compact MOBILE_MEMORY.md format:
58
+
59
+ ---
60
+ # Mobile Memory
61
+ **Project:** [name]
62
+ **Platform:** [Android/iOS/Flutter/RN/Unity/Unreal]
63
+ **Stack:** [language, framework, key libraries]
64
+ **Architecture:** [pattern]
65
+ **Saved:** [date]
66
+ **Compatible:** Claude Code · Cursor · Windsurf · ChatGPT · Gemini · Copilot
67
+ **Token reduction:** [X× vs reading raw files]
68
+
69
+ ---
70
+
71
+ ## ⚡ INSTANT RESUME
72
+ [2-4 self-contained sentences covering project, task, decisions, progress, and next move.]
73
+
74
+ ---
75
+
76
+ ## 🎯 Session Context
77
+
78
+ ### Current Task
79
+ [Exact task in one paragraph]
80
+
81
+ ### Decisions Made
82
+ | Decision | Reason | Rejected |
83
+ |---|---|---|
84
+
85
+ ### Progress
86
+ ✅ Done: [list]
87
+ 🔄 In Progress: [exact state of anything mid-edit]
88
+ ⏭️ NEXT ACTION: [specific, executable, no assumed context]
89
+ 🚧 Blocked: [list or "Nothing"]
90
+
91
+ ### Open Questions
92
+ - [question 1]
93
+ - [question 2]
94
+
95
+ ---
96
+
97
+ ## 📄 Code State
98
+ [For any file mid-edit, paste current state here]
99
+
100
+ ---
101
+
102
+ ## 🔄 Resume Instructions
103
+
104
+ **Claude Code:**
105
+ Start new session → paste INSTANT RESUME → paste full MOBILE_MEMORY.md → say "Continue"
106
+
107
+ **Cursor/Windsurf:**
108
+ Save as MOBILE_MEMORY.md in project root → next prompt: "Read MOBILE_MEMORY.md and continue"
109
+
110
+ **ChatGPT/Gemini:**
111
+ Paste full file as first message → "Resume from NEXT ACTION"
112
+
113
+ **Same tool, new session:**
114
+ Paste full file → /mobile-memory restore
115
+ ---
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Output Format
121
+
122
+ Return a single Markdown document named `MOBILE_MEMORY.md` using the compact format in the prompt.
123
+
124
+ ---
125
+
126
+ ## Example
127
+
128
+ ### Input
129
+
130
+ ```text
131
+ COMMAND: /mobile-memory-save
132
+ PROJECT: PayTrack
133
+ PLATFORM: Flutter
134
+ CURRENT TASK: Replace setState checkout form with Riverpod StateNotifier.
135
+ DECISIONS:
136
+ - Keep checkout validation in CheckoutController.
137
+ - Use AsyncValue for submit state.
138
+ - Keep navigation in the widget after successful submit.
139
+ PROGRESS:
140
+ - Done: controller skeleton created.
141
+ - In progress: widget still calls setState in _submit().
142
+ - Blocked: none.
143
+ CODE STATE:
144
+ lib/checkout/checkout_page.dart has old _submitting bool.
145
+ NEXT ACTION: Replace _submitting bool with ref.watch(checkoutControllerProvider).isLoading and call controller.submit(orderId).
146
+ ```
147
+
148
+ ### Output
149
+
150
+ ```markdown
151
+ ---
152
+ # Mobile Memory
153
+ **Project:** PayTrack
154
+ **Platform:** Flutter
155
+ **Stack:** Dart, Flutter, Riverpod
156
+ **Architecture:** Feature-first MVVM with StateNotifier controllers
157
+ **Saved:** 2026-06-06
158
+ **Compatible:** Claude Code · Cursor · Windsurf · ChatGPT · Gemini · Copilot
159
+ **Token reduction:** 18× vs reading raw files
160
+
161
+ ---
162
+
163
+ ## ⚡ INSTANT RESUME
164
+ PayTrack is a Flutter app refactoring checkout from local setState to a Riverpod StateNotifier. The session decided validation belongs in CheckoutController, submit state should use AsyncValue, and navigation remains in the widget after success. The controller skeleton exists, but checkout_page.dart still uses a local _submitting bool. Continue by replacing _submitting with provider state and routing submit through CheckoutController.submit(orderId).
165
+
166
+ ---
167
+
168
+ ## 🎯 Session Context
169
+
170
+ ### Current Task
171
+ Replace the checkout page's local setState submit flow with a Riverpod StateNotifier while preserving existing navigation behavior.
172
+
173
+ ### Decisions Made
174
+ | Decision | Reason | Rejected |
175
+ |---|---|---|
176
+ | Keep validation in CheckoutController | Makes submit logic testable | Validation inside widget callbacks |
177
+ | Use AsyncValue for submit state | Represents loading, success, and error cleanly | Separate bool and error fields |
178
+ | Keep navigation in widget | UI owns navigation after controller success | Controller using BuildContext |
179
+
180
+ ### Progress
181
+ ✅ Done: CheckoutController skeleton created.
182
+ 🔄 In Progress: checkout_page.dart still owns _submitting and _submit().
183
+ ⏭️ NEXT ACTION: Replace _submitting bool in lib/checkout/checkout_page.dart with ref.watch(checkoutControllerProvider).isLoading and call ref.read(checkoutControllerProvider.notifier).submit(orderId) from the submit button.
184
+ 🚧 Blocked: Nothing
185
+
186
+ ### Open Questions
187
+ - Should submit errors render inline or as a SnackBar?
188
+
189
+ ---
190
+
191
+ ## 📄 Code State
192
+ lib/checkout/checkout_page.dart still has a private `_submitting` bool and `_submit()` method that call setState before and after the API call.
193
+
194
+ ---
195
+
196
+ ## 🔄 Resume Instructions
197
+
198
+ **Claude Code:**
199
+ Start new session → paste INSTANT RESUME → paste full MOBILE_MEMORY.md → say "Continue"
200
+
201
+ **Cursor/Windsurf:**
202
+ Save as MOBILE_MEMORY.md in project root → next prompt: "Read MOBILE_MEMORY.md and continue"
203
+
204
+ **ChatGPT/Gemini:**
205
+ Paste full file as first message → "Resume from NEXT ACTION"
206
+
207
+ **Same tool, new session:**
208
+ Paste full file → /mobile-memory restore
209
+ ---
210
+ ```
@@ -0,0 +1,154 @@
1
+ # Skill — /mobile-memory-search
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/mobile-memory-search`
5
+ **Composable With:** Mobile Memory, MOBILE-HARNESS, APPFORGE, `/mobile-memory-save`, `/mobile-memory-graph`
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Search and inject local Mobile AI Agents memory captured in `.mobile-ai-agents/memory/` so an AI session can resume with the right project context without reading every file or asking the user to repeat decisions.
12
+
13
+ Use this when a project has been worked on across multiple days, tools, agents, or tasks.
14
+
15
+ ---
16
+
17
+ ## Input Format
18
+
19
+ ```text
20
+ COMMAND: /mobile-memory-search
21
+ QUERY:
22
+ <decision, feature, bug, file name, agent finding, release step, or task>
23
+ MEMORY_SOURCE:
24
+ <optional output from `mobile-ai-agents memory search`, `timeline`, or `inject`>
25
+ NEXT_STEP:
26
+ <optional current task>
27
+ ```
28
+
29
+ ---
30
+
31
+ ## Skill Prompt
32
+
33
+ ```text
34
+ Use local Mobile AI Agents memory to restore relevant context.
35
+
36
+ If the user has not provided memory output, ask them to run one of:
37
+
38
+ - `npx mobile-ai-agents memory inject`
39
+ - `npx mobile-ai-agents memory search <query>`
40
+ - `npx mobile-ai-agents memory timeline --limit 20`
41
+
42
+ When memory output is provided:
43
+
44
+ 1. Identify the project, platform, active feature, and most recent next action.
45
+ 2. Pull out decisions, rejected alternatives, unresolved findings, files touched, and blockers.
46
+ 3. Separate confirmed memory from assumptions.
47
+ 4. Recommend exact files to read before editing.
48
+ 5. Continue from the latest NEXT ACTION if it is clear.
49
+
50
+ Output exactly:
51
+
52
+ MOBILE MEMORY SEARCH RESULT
53
+ =====================
54
+ Query:
55
+ Project:
56
+ Platform:
57
+
58
+ Relevant Memory:
59
+ | Time | Type | Title | Why It Matters |
60
+ |---|---|---|---|
61
+
62
+ Decisions:
63
+ - <decision or "None found">
64
+
65
+ Open Risks:
66
+ - <risk or "None found">
67
+
68
+ Files To Read Next:
69
+ - <file or "Unknown">
70
+
71
+ Confirmed Context:
72
+ - <fact>
73
+
74
+ Assumptions:
75
+ - <assumption or "None">
76
+
77
+ NEXT ACTION:
78
+ 1. <single executable action>
79
+ ```
80
+
81
+ ---
82
+
83
+ ## CLI Workflow
84
+
85
+ ```bash
86
+ npx mobile-ai-agents memory init
87
+ npx mobile-ai-agents memory capture --type decision --title "Use Room" --text "Persist habits locally with Room."
88
+ npx mobile-ai-agents memory capture --type next-action --text "Implement HabitDao and restart persistence test."
89
+ npx mobile-ai-agents memory search persistence
90
+ npx mobile-ai-agents memory inject
91
+ npx mobile-ai-agents memory checkpoint
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Example
97
+
98
+ ### Input
99
+
100
+ ```text
101
+ COMMAND: /mobile-memory-search
102
+ QUERY: persistence
103
+ MEMORY_SOURCE:
104
+ Project: Habit Pulse
105
+ Platform: Android
106
+ Events: 3
107
+
108
+ ## Recent Memory
109
+ - 2026-07-09T04:00:00Z · decision · Use Room — Persist habits locally with Room instead of SharedPreferences.
110
+ - 2026-07-09T04:03:00Z · finding · PRD verification failed — Restart persistence is missing.
111
+ - 2026-07-09T04:05:00Z · next-action · Implement HabitDao — Implement HabitDao and restart persistence test.
112
+ ```
113
+
114
+ ### Output
115
+
116
+ ```text
117
+ MOBILE MEMORY SEARCH RESULT
118
+ =====================
119
+ Query: persistence
120
+ Project: Habit Pulse
121
+ Platform: Android
122
+
123
+ Relevant Memory:
124
+ | Time | Type | Title | Why It Matters |
125
+ |---|---|---|---|
126
+ | 2026-07-09T04:00:00Z | decision | Use Room | Persistence approach chosen |
127
+ | 2026-07-09T04:03:00Z | finding | PRD verification failed | Restart behavior missing |
128
+ | 2026-07-09T04:05:00Z | next-action | Implement HabitDao | Current task |
129
+
130
+ Decisions:
131
+ - Use Room instead of SharedPreferences for habit persistence.
132
+
133
+ Open Risks:
134
+ - Restart persistence has not passed PRD verification.
135
+
136
+ Files To Read Next:
137
+ - Habit entity, DAO, database, repository, and current home screen state files.
138
+
139
+ Confirmed Context:
140
+ - The next implementation step is HabitDao plus restart persistence test.
141
+
142
+ Assumptions:
143
+ - Exact file paths were not present in memory output.
144
+
145
+ NEXT ACTION:
146
+ 1. Read persistence-related files, then implement HabitDao and a restart persistence test.
147
+ ```
148
+
149
+ ---
150
+
151
+ ## Notes
152
+
153
+ - This skill searches local memory output; it does not replace reading source files before editing.
154
+ - Keep secrets out of memory captures. Wrap sensitive text in `<private>...</private>` before capture.
@@ -0,0 +1,61 @@
1
+ # Skill — /perf-audit
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/perf-audit`
5
+ **Composable With:** agents/cross-platform/perf/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Systematic slow-screen profiling checklist for any mobile platform. Run this before guessing at optimizations.
12
+
13
+ ---
14
+
15
+ ## Skill Prompt
16
+
17
+ ```
18
+ Run a systematic performance audit on the described slow screen:
19
+
20
+ STEP 1 — BASELINE MEASUREMENT (before touching code)
21
+ Tell me the current measurements (or ask the developer to measure):
22
+ - Android: record with Android GPU Inspector or Systrace. Look for frames > 16ms.
23
+ - iOS: Instruments → Time Profiler. Look for main thread > 8ms between frames.
24
+ - Flutter: DevTools → Performance tab. Flag any frame > 16ms in the flame chart.
25
+ - RN: Flipper → Perf Monitor or React DevTools Profiler.
26
+ Without a baseline, we cannot know if our fix worked.
27
+
28
+ STEP 2 — MAIN THREAD ANALYSIS
29
+ Is the main/UI thread being blocked?
30
+ Check for:
31
+ - Synchronous disk reads (SharedPreferences.getX(), NSUserDefaults, MMKV)
32
+ - JSON parsing of large payloads on the UI thread
33
+ - Image decoding without background threading
34
+ - Database queries (Room, CoreData, SQLite) without async/await
35
+ - Any operation > 1ms on the thread that drives the UI
36
+
37
+ STEP 3 — RENDERING ANALYSIS (platform-specific)
38
+ Android/Compose: Layout Inspector → check for overdraw, deep view trees.
39
+ iOS/SwiftUI: Instruments → Core Animation. Look for offscreen renders.
40
+ Flutter: DevTools → Widget Inspector. Check rebuild count per frame.
41
+ React Native: Check JS thread usage in Flipper. Flag non-native animations.
42
+
43
+ STEP 4 — MEMORY ANALYSIS
44
+ Is GC/ARC pressure causing jank?
45
+ - Profile allocation rate during the slow interaction.
46
+ - Identify allocations per frame in hot path.
47
+ - Identify retained objects (memory leaks) causing eventual OOM.
48
+
49
+ STEP 5 — LIST PERFORMANCE (if applicable)
50
+ - Is a non-virtualized list rendering all items?
51
+ - Are list items creating expensive objects (network requests, DB calls) per cell?
52
+ - Is the list re-rendering all cells on parent state change?
53
+
54
+ STEP 6 — PRIORITIZED FIX LIST
55
+ For each bottleneck found:
56
+ 1. What is it? (be specific — function name, line)
57
+ 2. Estimated time saved (ms per frame)
58
+ 3. Concrete fix with code
59
+
60
+ Output measurements first, then fixes.
61
+ ```