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,217 @@
1
+ # Example Output — Unreal Blueprint Advisor
2
+
3
+ Full agent response to the input in [`example-input.md`](example-input.md).
4
+
5
+ ---
6
+
7
+ ```
8
+ BLUEPRINT ANALYSIS
9
+ ==================
10
+ Actor Class : BP_EnemyCharacter (extends ACharacter)
11
+ UE Version : 5.4
12
+ Focus : Performance
13
+
14
+ FINDINGS
15
+ --------
16
+
17
+ [CRITICAL] GetPlayerCharacter + Cast To in Event Tick
18
+ Problem : GetPlayerCharacter() + Cast To BP_PlayerCharacter run every frame for every
19
+ enemy. With 20 enemies at 60 FPS = 1,200 cast operations per second.
20
+ Blueprints have overhead per node execution. Cast is O(1) but the Blueprint
21
+ VM cost of evaluating both nodes inside a Tick that runs 1,200×/second is
22
+ significant and scales linearly with enemy count.
23
+ Fix : Cache in BeginPlay:
24
+ - In BeginPlay: GetPlayerCharacter → Cast To BP_PlayerCharacter →
25
+ Store result in variable CachedPlayer (type: BP_PlayerCharacter object ref)
26
+ - In Tick: use CachedPlayer directly, with a null check before access.
27
+
28
+ [CRITICAL] MoveToActor called every Tick
29
+ Problem : Calling MoveToActor every frame cancels and re-issues the AI Move To request
30
+ 60 times per second. Each call flushes the current pathfinding request and
31
+ starts a new one — this causes the NavigationMesh to be queried every frame,
32
+ creating significant NavMesh overhead that grows with enemy count.
33
+ Fix : Replace Tick-based movement with event-driven chasing:
34
+ - Add a float variable ChaseUpdateRate = 0.15
35
+ - In BeginPlay: SetTimer by Event → call UpdateChaseState every 0.15 seconds
36
+ - In UpdateChaseState: compute distance, compare to radius, toggle IsChasing
37
+ - Call MoveToActor ONCE when IsChasing transitions false → true
38
+ - Bind to AIController OnMoveCompleted to know when to re-path
39
+
40
+ [WARNING] AttackPlayer called every Tick when in range (60 attacks/second)
41
+ Problem : `If IsChasing AND distance < 150 → AttackPlayer` fires every frame the player
42
+ is in melee range. Unless AttackPlayer internally gates on an animation state,
43
+ this fires the attack 60 times per second.
44
+ Fix : Add a boolean bIsAttacking = false.
45
+ AttackPlayer: if !bIsAttacking → set bIsAttacking = true → play attack montage
46
+ Attack montage AnimNotify at end of swing → set bIsAttacking = false
47
+ Gate: only call AttackPlayer when NOT bIsAttacking.
48
+
49
+ [WARNING] No component separation (health, damage, AI state all in root Actor)
50
+ Problem : Health, damage handling, and AI movement state all live in BP_EnemyCharacter.
51
+ For a shipped game this does not scale: health can't be reused on the player,
52
+ projectile interactions can't be tested independently, and the class grows
53
+ unbounded.
54
+ Fix : Extract to components:
55
+ - BP_HealthComponent: Health, TakeDamage, OnDied event dispatcher
56
+ - BP_AIStateComponent: IsChasing, chase/attack state machine
57
+ CapsuleComponent overlap → calls HealthComponent.TakeDamage(damage)
58
+ HealthComponent broadcasts OnDied → Die function listens and responds.
59
+
60
+ [INFO] SetTimer by Function Name (Die → "DestroySelf")
61
+ Problem : SetTimer by Function Name uses string-based lookup, which is slower than
62
+ delegate-based timers and cannot be safely refactored (rename the function
63
+ and the timer silently stops working).
64
+ Fix : Replace with SetTimer by Event:
65
+ Create a Custom Event called OnDeathTimerExpired.
66
+ SetTimer by Event → bind to OnDeathTimerExpired → call DestroyActor.
67
+
68
+ TICK AUDIT
69
+ ----------
70
+ Uses Tick: Yes
71
+ → Tick contains: player fetch + cast, distance calc, MoveToActor, attack check.
72
+ ALL of this should leave Tick.
73
+ Recommended final Tick state: DISABLED ENTIRELY on BP_EnemyCharacter.
74
+ Replace with:
75
+ - 0.15s looping timer for chase/attack state machine (CPU cost: negligible)
76
+ - AI Perception Component with Sight config (triggered only when player enters range)
77
+ - AIController OnMoveCompleted delegate for re-pathing
78
+
79
+ C++ MIGRATION CANDIDATES
80
+ ------------------------
81
+ | Node / Logic | Priority | Reason |
82
+ |---|---|---|
83
+ | Distance check + state machine | HIGH | Called every frame on many actors — timer helps but C++ is cheaper |
84
+ | MoveToActor / NavMesh pathfinding | HIGH | NavMesh API is C++ only for full control; Blueprint wrapper has overhead |
85
+ | Health + damage calculation | MEDIUM | Math is trivial; Blueprint is acceptable for ≤20 enemies |
86
+ | Death sequence + timer | LOW | Cosmetic; Blueprint is fine |
87
+ | SetTimer by Function Name | LOW | Replace with SetTimer by Event in Blueprint |
88
+
89
+ C++ EQUIVALENT (HIGH priority items)
90
+ -------------------------------------
91
+
92
+ // AEnemyCharacter.h
93
+ #pragma once
94
+ #include "CoreMinimal.h"
95
+ #include "GameFramework/Character.h"
96
+ #include "EnemyCharacter.generated.h"
97
+
98
+ UCLASS()
99
+ class MYGAME_API AEnemyCharacter : public ACharacter
100
+ {
101
+ GENERATED_BODY()
102
+
103
+ public:
104
+ AEnemyCharacter();
105
+
106
+ protected:
107
+ virtual void BeginPlay() override;
108
+
109
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI")
110
+ float ChaseRadius = 800.f;
111
+
112
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI")
113
+ float AttackRadius = 150.f;
114
+
115
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI")
116
+ float StateUpdateInterval = 0.15f;
117
+
118
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Combat")
119
+ float Health = 100.f;
120
+
121
+ private:
122
+ UPROPERTY()
123
+ TObjectPtr<ACharacter> CachedPlayer;
124
+
125
+ FTimerHandle StateTimerHandle;
126
+ bool bIsChasing = false;
127
+ bool bIsAttacking = false;
128
+
129
+ UFUNCTION()
130
+ void UpdateChaseState();
131
+
132
+ // Called by AnimNotify at the end of the attack montage
133
+ UFUNCTION(BlueprintCallable)
134
+ void OnAttackComplete();
135
+ };
136
+
137
+ // AEnemyCharacter.cpp
138
+ #include "EnemyCharacter.h"
139
+ #include "Kismet/GameplayStatics.h"
140
+ #include "AIController.h"
141
+
142
+ AEnemyCharacter::AEnemyCharacter()
143
+ {
144
+ // Disable Tick entirely — all updates are timer-driven
145
+ PrimaryActorTick.bCanEverTick = false;
146
+ }
147
+
148
+ void AEnemyCharacter::BeginPlay()
149
+ {
150
+ Super::BeginPlay();
151
+
152
+ // Cache once — no Cast To in a hot loop
153
+ CachedPlayer = Cast<ACharacter>(UGameplayStatics::GetPlayerCharacter(this, 0));
154
+
155
+ // Replace Tick with a low-frequency state machine timer
156
+ GetWorldTimerManager().SetTimer(
157
+ StateTimerHandle,
158
+ this,
159
+ &AEnemyCharacter::UpdateChaseState,
160
+ StateUpdateInterval,
161
+ true // looping
162
+ );
163
+ }
164
+
165
+ void AEnemyCharacter::UpdateChaseState()
166
+ {
167
+ if (!CachedPlayer) return;
168
+
169
+ const float Dist = FVector::Dist(GetActorLocation(), CachedPlayer->GetActorLocation());
170
+
171
+ if (Dist < ChaseRadius)
172
+ {
173
+ if (!bIsChasing)
174
+ {
175
+ bIsChasing = true;
176
+ // MoveToActor called ONCE when transitioning into chase — not every tick
177
+ if (AAIController* AI = Cast<AAIController>(GetController()))
178
+ {
179
+ AI->MoveToActor(CachedPlayer, AttackRadius * 0.9f);
180
+ }
181
+ }
182
+
183
+ // Attack gate: only trigger when in range AND not already attacking
184
+ if (Dist < AttackRadius && !bIsAttacking)
185
+ {
186
+ bIsAttacking = true;
187
+ // Play montage here; OnAttackComplete() resets bIsAttacking via AnimNotify
188
+ }
189
+ }
190
+ else if (bIsChasing)
191
+ {
192
+ bIsChasing = false;
193
+ if (AAIController* AI = Cast<AAIController>(GetController()))
194
+ {
195
+ AI->StopMovement();
196
+ }
197
+ }
198
+ }
199
+
200
+ void AEnemyCharacter::OnAttackComplete()
201
+ {
202
+ bIsAttacking = false;
203
+ }
204
+
205
+ ARCHITECTURE ASSESSMENT
206
+ -----------------------
207
+ BP_EnemyCharacter currently mixes: player perception (detecting the player), movement
208
+ control, combat logic, health management, and death handling in a single Actor class.
209
+ For shipped games:
210
+ - Extract health into UHealthComponent — call TakeDamage on it from the overlap handler
211
+ - Use AI Perception Component (UAISenseConfig_Sight) to replace distance polling — this
212
+ scales to 200 enemies with no per-frame cost (perception runs on a budget)
213
+ - Consider Behavior Tree + Blackboard for the state machine — this cleanly separates
214
+ the chase/attack logic from the Actor and is designer-editable without code changes
215
+
216
+ OVERALL VERDICT: MIGRATE TO C++ (for chase state machine) + REFACTOR ARCHITECTURE
217
+ ```