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,75 @@
1
+ # Skill — /store-listing
2
+
3
+ **Platform:** Cross-Platform
4
+ **Slash Command:** `/store-listing`
5
+ **Composable With:** agents/cross-platform/launchpad/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Conversational ASO and growth listing writer. It audits the app baseline, then generates App Store and Play Store metadata, keyword strategy, screenshot/video briefs, and launch-growth recommendations without duplicating platform keywords incorrectly.
12
+
13
+ ---
14
+
15
+ ## Skill Prompt
16
+
17
+ ```
18
+ Generate ASO-optimized store listing copy through a short diagnostic conversation:
19
+
20
+ ASK THESE QUESTIONS FIRST (wait for answers before generating unless the user already provided them):
21
+ 1. App Store / Play Store URL if live, or app name and category if not live.
22
+ 2. Target market/region and language. Example: US English, UK English, Brazil Portuguese, Japan Japanese.
23
+ 3. Core value proposition in one sentence.
24
+ 4. Target user and pain point. Include audience, use case, and purchase intent.
25
+ 5. Top 3 features that make users stay.
26
+ 6. Top 2-3 competitors or alternatives.
27
+ 7. Current stage: idea, pre-launch, newly launched, scaling, or optimization.
28
+ 8. Platform(s): Android, iOS, or both.
29
+ 9. Monetization: free, ads, subscription, one-time purchase, IAP, or mixed.
30
+ 10. Brand tone: professional, friendly, playful, premium, utility, or minimal.
31
+
32
+ AFTER RECEIVING ANSWERS, GENERATE:
33
+
34
+ PLAY STORE:
35
+ - Title (30 chars): Brand + primary keyword. Keep it natural and policy-safe.
36
+ - Short Description (80 chars): Primary conversion hook with 1-2 important keywords.
37
+ - Long Description (4000 chars max): Semantic description for Google Play NLP.
38
+ Primary keyword in the first 167 chars. Maintain roughly 2-3% primary keyword density.
39
+ Use benefit headers, short paragraphs, bullets, social-proof placeholders, and a CTA.
40
+ - Store Listing Experiments: 2-3 A/B test ideas for title, short description, screenshots, or feature graphic.
41
+ - Promotional Content: event/update/banner idea if relevant.
42
+
43
+ APP STORE:
44
+ - Name (30 chars): Brand + highest-value keyword if it fits naturally.
45
+ - Subtitle (30 chars): Secondary keyword phrase that complements the name and does not repeat words.
46
+ - Keyword field (100 chars): Comma-separated, no spaces, no repeats from name/subtitle.
47
+ Break phrases into individual words. Prefer singular form unless plural has distinct intent.
48
+ - Promotional Text (170 chars): Timely update, offer, social proof, or launch hook.
49
+ - Description (4000 chars max): Benefit-first, structured, conversion-focused.
50
+ - Product Page Optimization: 2-3 PPO test ideas for icon, screenshots, preview video, or subtitle.
51
+ - Custom Product Page: one CPP angle mapped to a keyword or campaign.
52
+ - In-App Event: one IAE idea if relevant.
53
+
54
+ VISUAL + VIDEO BRIEF:
55
+ - Screenshot 1 hero caption and visual.
56
+ - Screenshots 2-5 feature captions and visuals.
57
+ - App preview/promo video concept with the first 3 seconds scripted.
58
+ - YouTube/short-form video distribution ideas if useful for the category.
59
+
60
+ GROWTH + OFF-STORE SEO:
61
+ - Google Play backlink/PR plan with safe contextual anchor examples.
62
+ - Landing page SEO angle and smart app banner/deep-link recommendation.
63
+ - Directory/community placements such as Product Hunt, AlternativeTo, G2, Capterra, or niche forums where appropriate.
64
+
65
+ RULES:
66
+ - Character limits are hard limits. Report character counts for every metadata field.
67
+ - Never use competitor names in keyword fields (App Store policy violation)
68
+ - Never use misleading superlatives like "best", "#1", or "world's leading" unless independently verifiable and policy-safe.
69
+ - Singular OR plural in keywords — not both (algorithm handles it)
70
+ - No emoji in Play Store title (against guidelines)
71
+ - Do not keyword-stuff. If density is too high, flag it before submission.
72
+ - Localize separately per market. Do not mix languages in one keyword field unless the market behavior supports it.
73
+
74
+ Flag any constraint violation before the developer submits.
75
+ ```
@@ -0,0 +1,32 @@
1
+ # Flutter Skills
2
+
3
+ Reusable skill prompt modules for Flutter (Dart 3.x) widget generation and code review.
4
+
5
+ ## Index
6
+
7
+ | Skill | File | When to Use |
8
+ |---|---|---|
9
+ | Flutter Widget Generation Rules | [widget-gen.md](widget-gen.md) | Before generating any widget — ensures null-safety, const constructors, theming, accessibility |
10
+
11
+ ## Usage
12
+
13
+ ```
14
+ # Prime any LLM session before widget generation
15
+ [paste skill prompt from widget-gen.md]
16
+
17
+ Generate a widget for: [describe the widget]
18
+ ```
19
+
20
+ ## Composable With
21
+
22
+ - [`agents/flutter/widget-generator`](../../agents/flutter/widget-generator/) — full structured widget generation
23
+ - [`agents/flutter/bloc-feature-builder`](../../agents/flutter/bloc-feature-builder/) — generate full feature layer
24
+
25
+ ## Contributing
26
+
27
+ High-value skills to add:
28
+ - `state-management-review.md` — review BLoC, Cubit, Riverpod, Provider patterns
29
+ - `navigation-review.md` — GoRouter, Navigator 2.0 patterns
30
+ - `performance-review.md` — `const` constructors, `ListView.builder`, `RepaintBoundary`
31
+
32
+ Copy `templates/skill-template.md` and open a PR.
@@ -0,0 +1,47 @@
1
+ # Skill — /dart-modernize
2
+
3
+ **Platform:** Flutter (Dart 3.x)
4
+ **Slash Command:** `/dart-modernize`
5
+
6
+ ---
7
+
8
+ ## Purpose
9
+
10
+ Upgrades pre-null-safety or Dart 2.x code to modern Dart 3.x patterns. Introduces records, patterns, sealed classes, and null safety best practices.
11
+
12
+ ---
13
+
14
+ ## Skill Prompt
15
+
16
+ ```
17
+ Modernize the provided Dart code to Dart 3.x idioms:
18
+
19
+ NULL SAFETY UPGRADES:
20
+ - Remove null assertions (!) where safe alternatives exist.
21
+ - Replace nullable + null check pattern with if-null operator ??.
22
+ - Replace nullable return types with Result<T> pattern or sealed class for error states.
23
+ - late variables: confirm they are always initialized before use; otherwise use nullable.
24
+
25
+ DART 3.x FEATURES:
26
+ 1. Records: replace multi-value tuples, Map<String, dynamic> returns, or pair classes.
27
+ Before: Map<String, dynamic> getCoords() => {'lat': 1.3, 'lng': 103.8}
28
+ After: (double lat, double lng) getCoords() => (1.3, 103.8)
29
+
30
+ 2. Patterns + switch expressions:
31
+ Before: String label(Shape s) { if (s is Circle) return 'circle'; ... }
32
+ After: String label(Shape s) => switch (s) {
33
+ Circle() => 'circle', Rectangle() => 'rectangle', _ => 'unknown'
34
+ };
35
+
36
+ 3. Sealed classes (Dart 3): replace abstract classes used for exhaustive matching.
37
+ sealed class ApiResult<T> { }
38
+ final class Success<T> extends ApiResult<T> { final T data; ... }
39
+ final class Failure<T> extends ApiResult<T> { final Exception error; ... }
40
+
41
+ 4. Class modifiers: add final, base, or interface where appropriate.
42
+
43
+ 5. Extension types: replace thin wrapper classes (value objects) with extension types
44
+ for zero-cost abstraction.
45
+
46
+ Show before and after for each transformation.
47
+ ```
@@ -0,0 +1,59 @@
1
+ # Skill — /flutter-review
2
+
3
+ **Platform:** Flutter (Dart 3.x)
4
+ **Slash Command:** `/flutter-review`
5
+ **Composable With:** agents/flutter/dart/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Widget tree audit covering const constructors, state management correctness, rebuild scope, and accessibility. Use before PR merge on any Flutter screen or widget.
12
+
13
+ ---
14
+
15
+ ## Skill Prompt
16
+
17
+ ```
18
+ Review the provided Flutter/Dart code for these issues:
19
+
20
+ CONST CONSTRUCTORS
21
+ - Every widget whose properties are all compile-time constants should be const.
22
+ - Flag every Text('literal'), Icon(Icons.x), SizedBox(height: N) that is missing const.
23
+ - Cost of missing const: unnecessary widget instantiation on every rebuild.
24
+
25
+ REBUILD SCOPE
26
+ - setState() in a large StatefulWidget that should be scoped to a smaller widget.
27
+ - Consumer/BlocBuilder/Selector wrapping the entire screen body.
28
+ Fix: wrap only the smallest subtree that actually depends on the changing state.
29
+ - AnimatedBuilder wrapping non-animated children.
30
+
31
+ STATE MANAGEMENT
32
+ - Business logic in build() method — flag and suggest moving to Bloc/Cubit/Notifier.
33
+ - BuildContext used after async gap without mounted check.
34
+ - StreamBuilder with no initialData and no error handler.
35
+
36
+ NULL SAFETY
37
+ - Late variables without clear initialization guarantee.
38
+ - ! operator on values that could realistically be null.
39
+ - Dynamic type used where a concrete type is known.
40
+
41
+ ACCESSIBILITY
42
+ - Images without semanticLabel.
43
+ - Tappable widgets without Semantics(button: true) or semanticsLabel.
44
+ - Touch targets smaller than 48×48dp.
45
+ - Text contrast — flag hardcoded colors that may fail WCAG AA.
46
+
47
+ DART 3.x PATTERNS
48
+ - switch expressions where applicable (replaces verbose if/else chains).
49
+ - Records for lightweight multi-value returns.
50
+ - Sealed classes for exhaustive state modeling.
51
+
52
+ For each issue: widget name, line if given, what causes the problem, and the fix.
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Demo
58
+
59
+ <img width="400" height="261" alt="flutter-review demo" src="https://github.com/user-attachments/assets/e0c1d9d8-f66e-4983-a60b-b3b515fa0de0" />
@@ -0,0 +1,73 @@
1
+ # Skill — /flutter-tdd
2
+
3
+ **Platform:** Flutter (Dart 3.x)
4
+ **Slash Command:** `/flutter-tdd`
5
+ **Composable With:** agents/flutter/dart/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Runs the red-green-refactor TDD loop for Flutter — widget tests, unit tests, and Bloc/Riverpod tests. Generates failing tests first, then the minimal implementation.
12
+
13
+ ---
14
+
15
+ ## Skill Prompt
16
+
17
+ ```
18
+ Run the Flutter TDD loop for the described feature or widget:
19
+
20
+ STEP 1 — RED: Write a failing test first.
21
+ - For Dart logic: flutter_test unit test using test(), setUp(), expect().
22
+ - For Widgets: WidgetTester with pumpWidget(), find.*, tap(), enterText().
23
+ - For Bloc: bloc_test package with blocTest<>() — seed state, act, expect.
24
+ - For Riverpod: ProviderContainer with overrides to test providers in isolation.
25
+
26
+ STEP 2 — GREEN: Write the minimal Dart/Flutter implementation to pass.
27
+ - Smallest possible code. No architecture yet.
28
+
29
+ STEP 3 — REFACTOR: Apply correct patterns.
30
+ - Extract StatelessWidget, add const, apply BLoC/Riverpod pattern properly.
31
+
32
+ Format:
33
+ --- RED ---
34
+ <test code>
35
+
36
+ --- GREEN ---
37
+ <minimal implementation>
38
+
39
+ --- REFACTOR ---
40
+ <final implementation>
41
+ ```
42
+
43
+ ---
44
+
45
+ ## Example
46
+
47
+ **Input:** "TDD a CartBloc that adds items and tracks total price"
48
+
49
+ **Output:**
50
+ ```dart
51
+ --- RED ---
52
+ blocTest<CartBloc, CartState>(
53
+ 'adding an item increases total price',
54
+ build: () => CartBloc(),
55
+ act: (bloc) => bloc.add(AddItem(Item(name: 'Book', price: 15.0))),
56
+ expect: () => [
57
+ CartState(items: [Item(name: 'Book', price: 15.0)], total: 15.0),
58
+ ],
59
+ );
60
+
61
+ --- GREEN ---
62
+ class CartBloc extends Bloc<CartEvent, CartState> {
63
+ CartBloc() : super(CartState(items: [], total: 0)) {
64
+ on<AddItem>((event, emit) {
65
+ final items = [...state.items, event.item];
66
+ emit(CartState(items: items, total: items.fold(0, (s, i) => s + i.price)));
67
+ });
68
+ }
69
+ }
70
+
71
+ --- REFACTOR ---
72
+ // Extract total calculation, add @freezed state, equatable events
73
+ ```
@@ -0,0 +1,41 @@
1
+ # Skill — /widget-extract
2
+
3
+ **Platform:** Flutter (Dart)
4
+ **Slash Command:** `/widget-extract`
5
+
6
+ ---
7
+
8
+ ## Purpose
9
+
10
+ Identifies oversized build() methods and extracts them into reusable, testable widget components. Applies the Flutter "extract widget" refactoring pattern correctly.
11
+
12
+ ---
13
+
14
+ ## Skill Prompt
15
+
16
+ ```
17
+ Analyze the provided Flutter widget and extract oversized build() methods into smaller components:
18
+
19
+ EXTRACTION CRITERIA:
20
+ - build() longer than 60 lines: candidate for extraction.
21
+ - Repeated patterns (2+ similar widget subtrees): candidate for a reusable component.
22
+ - Conditionally rendered subtrees: extract into separate named widgets.
23
+ - List item builder: extract into a dedicated ItemWidget.
24
+
25
+ EXTRACTION RULES:
26
+ 1. Prefer StatelessWidget over methods (extracting into a private _buildX() method is worse
27
+ than a separate widget — methods don't benefit from widget diffing and add noise).
28
+ 2. Pass only the data the child widget needs — not the parent's entire state/model.
29
+ 3. Add const constructor to the extracted widget if all fields are final.
30
+ 4. Name extracted widgets after their semantic role (not _MyWidgetHeader, but UserProfileHeader).
31
+
32
+ WHAT NOT TO EXTRACT:
33
+ - Modifier chains (Padding, SizedBox wrappers) — keep inline.
34
+ - Single-child wrappers with no reuse value.
35
+ - Subtrees under 5 lines with no reuse potential.
36
+
37
+ Output:
38
+ 1. List of extraction candidates with justification.
39
+ 2. Refactored parent widget.
40
+ 3. Each extracted widget as a separate, complete class.
41
+ ```
@@ -0,0 +1,131 @@
1
+ # Skill — Flutter Widget Generation Rules
2
+
3
+ **Platform:** Flutter (Dart)
4
+ **Category:** UI & Design
5
+ **Composable With:** agents/flutter/widget-generator/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Gives an LLM the rules needed to generate production-quality Flutter widget code. Use as a standalone primer or as a module inside the Widget Generator agent.
12
+
13
+ ## When to Use
14
+
15
+ - Before asking any LLM to write Flutter widget code
16
+ - When you want quick widget snippets without running the full agent
17
+ - As a quality gate when reviewing AI-generated Flutter code
18
+
19
+ ---
20
+
21
+ ## Skill Prompt
22
+
23
+ ```
24
+ When generating Flutter/Dart widget code, follow these rules:
25
+
26
+ CORRECTNESS
27
+ - All code must be null-safe (Dart 3.x). Never use the legacy ? suffix on non-nullable types.
28
+ - Prefer `const` constructors wherever possible — this is a Flutter performance requirement,
29
+ not a style preference. Mark widgets const when all fields are compile-time constants.
30
+ - Call `super.dispose()` in every dispose() override. Failure to do so is a memory leak.
31
+ - Use `super.key` parameter forwarding in constructors: MyWidget({super.key, ...}).
32
+
33
+ THEMING
34
+ - Never hardcode colors as hex literals (#FF5733) or RGB values (Colors.red). Always use:
35
+ Theme.of(context).colorScheme.primary (Material 3)
36
+ Theme.of(context).cardColor
37
+ Theme.of(context).textTheme.bodyMedium
38
+ - Never hardcode font sizes. Use Theme.of(context).textTheme styles.
39
+ - For spacing, prefer a consistent spacing system (e.g., multiples of 8) using const values.
40
+
41
+ RESPONSIVE LAYOUT
42
+ - Never hardcode pixel widths for layout. Use:
43
+ Flexible / Expanded for flex layouts
44
+ LayoutBuilder for container-relative sizing
45
+ MediaQuery.of(context).size for screen-relative sizing
46
+ - For text, let it wrap with softWrap: true (default) rather than fixed-width Text containers.
47
+
48
+ ANIMATIONS
49
+ - For simple show/hide or size changes: AnimatedContainer, AnimatedOpacity, AnimatedSize.
50
+ - For custom animations: AnimationController + SingleTickerProviderStateMixin.
51
+ Always cancel the controller in dispose(): _controller.dispose().
52
+ - Always check if mounted before calling setState() in async callbacks:
53
+ if (mounted) setState(() { ... });
54
+
55
+ ACCESSIBILITY
56
+ - Use Semantics widget to label non-text interactive elements.
57
+ - Ensure all tap targets are at least 48×48 dp (GestureDetector / InkWell padding).
58
+ - Use Tooltip for icon-only buttons.
59
+
60
+ STATE MANAGEMENT
61
+ - For local UI state: StatefulWidget + setState.
62
+ - For shared state across widgets: use the project's specified state management (Riverpod,
63
+ Bloc, Provider) — do not mix approaches.
64
+ - Do not put business logic in build(). Business logic belongs in a ViewModel/controller/notifier.
65
+ ```
66
+
67
+ ---
68
+
69
+ ## Example
70
+
71
+ **Input (after applying skill):**
72
+ ```
73
+ Write a Flutter button that shows a loading spinner while its async action runs.
74
+ ```
75
+
76
+ **Output:**
77
+ ```dart
78
+ class AsyncButton extends StatefulWidget {
79
+ const AsyncButton({super.key, required this.label, required this.onPressed});
80
+ final String label;
81
+ final Future<void> Function() onPressed;
82
+
83
+ @override
84
+ State<AsyncButton> createState() => _AsyncButtonState();
85
+ }
86
+
87
+ class _AsyncButtonState extends State<AsyncButton> {
88
+ bool _loading = false;
89
+
90
+ Future<void> _handlePress() async {
91
+ setState(() => _loading = true);
92
+ try {
93
+ await widget.onPressed();
94
+ } finally {
95
+ if (mounted) setState(() => _loading = false);
96
+ }
97
+ }
98
+
99
+ @override
100
+ Widget build(BuildContext context) {
101
+ return FilledButton(
102
+ onPressed: _loading ? null : _handlePress,
103
+ child: _loading
104
+ ? const SizedBox(
105
+ width: 18, height: 18,
106
+ child: CircularProgressIndicator(strokeWidth: 2),
107
+ )
108
+ : Text(widget.label),
109
+ );
110
+ }
111
+ }
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Composition Example
117
+
118
+ ```
119
+ Prepend this skill to any Flutter code generation request. Example:
120
+
121
+ "[paste skill prompt]
122
+
123
+ Now write a widget that shows a paginated list of products with pull-to-refresh."
124
+ ```
125
+
126
+ ---
127
+
128
+ ## Notes
129
+
130
+ - Material 3 is the default from Flutter 3.16. Use `colorScheme` properties, not deprecated `primaryColor`, `backgroundColor`, etc.
131
+ - `withOpacity()` is deprecated in Dart 3.3+ — use `withValues(alpha: ...)` or the `Color.fromRGBO` constructor for new code.
@@ -0,0 +1,51 @@
1
+ # Skill — /blueprint-to-cpp
2
+
3
+ **Platform:** Unreal Engine
4
+ **Slash Command:** `/blueprint-to-cpp`
5
+ **Composable With:** agents/gaming/unreal/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Converts Unreal Engine Blueprint logic to performant, idiomatic C++ with full explanation of why each node maps to each C++ construct.
12
+
13
+ ---
14
+
15
+ ## Skill Prompt
16
+
17
+ ```
18
+ Migrate the provided Unreal Blueprint logic to C++:
19
+
20
+ MIGRATION RULES:
21
+ 1. Identify Blueprint patterns that must move to C++ first:
22
+ - Logic called in Tick (every frame) → C++ mandatory.
23
+ - Math-heavy calculations (vector ops, lerps in loops) → C++ mandatory.
24
+ - Logic called > 10 times per second → strong candidate for C++.
25
+ - Event dispatchers with many subscribers → C++ delegates.
26
+ - Pure functions used in many places → static C++ utility function.
27
+
28
+ 2. Blueprint node → C++ mapping:
29
+ - Get Player Character → APlayerController::GetPawn() or Cast<>
30
+ - Branch → if/else or ternary
31
+ - For Each Loop → for (const auto& Item : Collection)
32
+ - Cast To → Cast<TargetType>(Object) with null check
33
+ - Delay → FTimerHandle + GetWorldTimerManager().SetTimer()
34
+ - Timeline → UCurveFloat + FTimeline
35
+ - Print String → UE_LOG(LogTemp, Log, TEXT("...")) — remove before ship
36
+ - Get All Actors Of Class → GetWorld()->GetAllActorsOfClass() — cache in BeginPlay
37
+ - Spawn Actor → GetWorld()->SpawnActor<AMyActor>(Class, Transform)
38
+ - Set Timer by Event → GetWorldTimerManager().SetTimer()
39
+
40
+ 3. UPROPERTY annotations for Blueprint exposure:
41
+ - BlueprintReadWrite → editable in BP and C++
42
+ - BlueprintReadOnly → read in BP, set in C++
43
+ - EditAnywhere, Category = "Config" → exposed in Details panel
44
+
45
+ 4. Output format per migrated function:
46
+ - Header declaration (.h)
47
+ - Implementation (.cpp)
48
+ - Explanation of why this moved to C++
49
+
50
+ Show the Blueprint pseudocode description alongside the C++ implementation.
51
+ ```
@@ -0,0 +1,54 @@
1
+ # Skill — /game-perf
2
+
3
+ **Platform:** Unity / Unreal
4
+ **Slash Command:** `/game-perf`
5
+ **Composable With:** agents/gaming/forge/agent.md, agents/gaming/unreal/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Frame budget audit for game scenes. Identifies draw call sources, GC allocation hotspots, physics overhead, and shader complexity. Produces a prioritized optimization plan.
12
+
13
+ ---
14
+
15
+ ## Skill Prompt
16
+
17
+ ```
18
+ Audit the provided game code or scene description for frame budget issues:
19
+
20
+ FRAME BUDGET REFERENCE:
21
+ - Mobile 60fps: 16.67ms total per frame
22
+ - CPU budget: ~8ms for game logic + physics
23
+ - GPU budget: ~6ms for rendering
24
+ - Rendering budget per call: 0.01–0.1ms on mobile
25
+
26
+ DRAW CALL ANALYSIS:
27
+ - Count unique materials (each unique material = potential draw call break).
28
+ - Dynamic vs static batching eligibility:
29
+ Static: non-moving objects with same material → enable static batching.
30
+ Dynamic: moving objects < 900 vertices, same material → Unity handles automatically.
31
+ - GPU Instancing: many identical meshes (trees, grass, enemies) → enable GPU Instancing on material.
32
+ - Atlas textures: multiple small textures → combine into texture atlas to reduce draw calls.
33
+
34
+ GC ALLOCATION AUDIT (Unity C#):
35
+ - foreach on List<T>: use for loop (foreach boxes the enumerator on older Unity versions).
36
+ - String operations in Update: build strings in Start or cache with StringBuilder.
37
+ - new MyStruct() in hot path: use object pools (ObjectPool<T> in Unity 2021+).
38
+ - LINQ in Update: pre-compute and cache results.
39
+ - GetComponent in Update: cache in Awake.
40
+
41
+ PHYSICS OPTIMIZATION:
42
+ - Layer collision matrix: disable collision between layers that never interact.
43
+ - Rigidbody Sleep: set rigidbodies to sleep when idle (Rigidbody.IsSleeping()).
44
+ - Collider complexity: use primitive colliders (Box, Sphere, Capsule) over MeshCollider.
45
+ - FixedUpdate rate: default 0.02 (50fps). Increase for smoother physics; decrease for performance.
46
+
47
+ RENDERING OPTIMIZATION:
48
+ - Shadow casters: disable shadows on small/distant objects.
49
+ - LOD groups: add LODGroup to complex meshes.
50
+ - Occlusion culling: bake occlusion for enclosed spaces.
51
+ - Shader complexity: mobile shaders should be < 30 instructions per pixel.
52
+
53
+ Output a prioritized list with estimated frame time saved per optimization.
54
+ ```
@@ -0,0 +1,44 @@
1
+ # Skill — /shader-gen
2
+
3
+ **Platform:** Unity (HLSL / ShaderLab) / Unreal (HLSL)
4
+ **Slash Command:** `/shader-gen`
5
+ **Composable With:** agents/gaming/forge/agent.md, agents/gaming/unreal/agent.md
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Generates HLSL/ShaderLab shader code from a plain English visual description. Covers URP, HDRP, and Built-in pipeline for Unity; material expressions for Unreal.
12
+
13
+ ---
14
+
15
+ ## Skill Prompt
16
+
17
+ ```
18
+ Generate shader code for the described visual effect:
19
+
20
+ INPUT FORMAT:
21
+ PLATFORM: <Unity-URP | Unity-HDRP | Unity-BuiltIn | Unreal>
22
+ EFFECT: <plain English description of the visual effect>
23
+ PERFORMANCE_TARGET: <Mobile | PC | Console>
24
+ PROPERTIES_NEEDED: <list any tweakable properties — colors, speeds, intensities>
25
+
26
+ GENERATION RULES:
27
+ 1. Minimize instruction count for mobile targets.
28
+ 2. Avoid dynamic branching (if/else in shader) on mobile — use step(), lerp(), saturate().
29
+ 3. Include fallback for mobile limitations (no geometry shaders on OpenGL ES 2.0).
30
+ 4. Expose meaningful properties to the Material Inspector via Properties block.
31
+ 5. Add ShaderLab properties with [HDR] for emissive colors, [Toggle] for booleans.
32
+
33
+ EFFECT PATTERNS:
34
+ - Dissolve effect: use noise texture + cutoff threshold + clip().
35
+ - Hologram: scanline UV offset + rim lighting + fresnel term.
36
+ - Water ripple: sin-based UV distortion + normal map.
37
+ - Outline: render back faces scaled along normal in separate pass.
38
+ - Glow/bloom: emissive color with HDR intensity > 1.
39
+ - Toon/cel shading: step() on diffuse lighting term.
40
+ - Fresnel rim light: pow(1 - dot(viewDir, normal), power) * rimColor.
41
+
42
+ Output complete ShaderLab (.shader) file or HLSL material function.
43
+ Note instruction count estimate and mobile compatibility.
44
+ ```