agy-superpowers 5.0.7 → 5.0.9

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 (232) hide show
  1. package/package.json +1 -1
  2. package/template/agent/rules/superpowers.md +54 -0
  3. package/template/agent/skills/api-design/SKILL.md +193 -0
  4. package/template/agent/skills/app-store-optimizer/SKILL.md +127 -0
  5. package/template/agent/skills/auth-and-identity/SKILL.md +167 -0
  6. package/template/agent/skills/backend-developer/SKILL.md +148 -0
  7. package/template/agent/skills/community-manager/SKILL.md +115 -0
  8. package/template/agent/skills/content-marketer/SKILL.md +111 -0
  9. package/template/agent/skills/conversion-optimizer/SKILL.md +142 -0
  10. package/template/agent/skills/copywriter/SKILL.md +114 -0
  11. package/template/agent/skills/cto-architect/SKILL.md +133 -0
  12. package/template/agent/skills/customer-success-manager/SKILL.md +126 -0
  13. package/template/agent/skills/data-analyst/SKILL.md +147 -0
  14. package/template/agent/skills/devops-engineer/SKILL.md +117 -0
  15. package/template/agent/skills/email-infrastructure/SKILL.md +164 -0
  16. package/template/agent/skills/frontend-developer/SKILL.md +172 -0
  17. package/template/agent/skills/frontend-developer/references/react-nextjs.md +343 -0
  18. package/template/agent/skills/frontend-developer/references/react-rules/_sections.md +46 -0
  19. package/template/agent/skills/frontend-developer/references/react-rules/_template.md +28 -0
  20. package/template/agent/skills/frontend-developer/references/react-rules/advanced-event-handler-refs.md +55 -0
  21. package/template/agent/skills/frontend-developer/references/react-rules/advanced-init-once.md +42 -0
  22. package/template/agent/skills/frontend-developer/references/react-rules/advanced-use-latest.md +39 -0
  23. package/template/agent/skills/frontend-developer/references/react-rules/async-api-routes.md +38 -0
  24. package/template/agent/skills/frontend-developer/references/react-rules/async-defer-await.md +80 -0
  25. package/template/agent/skills/frontend-developer/references/react-rules/async-dependencies.md +51 -0
  26. package/template/agent/skills/frontend-developer/references/react-rules/async-parallel.md +28 -0
  27. package/template/agent/skills/frontend-developer/references/react-rules/async-suspense-boundaries.md +99 -0
  28. package/template/agent/skills/frontend-developer/references/react-rules/bundle-barrel-imports.md +59 -0
  29. package/template/agent/skills/frontend-developer/references/react-rules/bundle-conditional.md +31 -0
  30. package/template/agent/skills/frontend-developer/references/react-rules/bundle-defer-third-party.md +49 -0
  31. package/template/agent/skills/frontend-developer/references/react-rules/bundle-dynamic-imports.md +35 -0
  32. package/template/agent/skills/frontend-developer/references/react-rules/bundle-preload.md +50 -0
  33. package/template/agent/skills/frontend-developer/references/react-rules/client-event-listeners.md +74 -0
  34. package/template/agent/skills/frontend-developer/references/react-rules/client-localstorage-schema.md +71 -0
  35. package/template/agent/skills/frontend-developer/references/react-rules/client-passive-event-listeners.md +48 -0
  36. package/template/agent/skills/frontend-developer/references/react-rules/client-swr-dedup.md +56 -0
  37. package/template/agent/skills/frontend-developer/references/react-rules/js-batch-dom-css.md +107 -0
  38. package/template/agent/skills/frontend-developer/references/react-rules/js-cache-function-results.md +80 -0
  39. package/template/agent/skills/frontend-developer/references/react-rules/js-cache-property-access.md +28 -0
  40. package/template/agent/skills/frontend-developer/references/react-rules/js-cache-storage.md +70 -0
  41. package/template/agent/skills/frontend-developer/references/react-rules/js-combine-iterations.md +32 -0
  42. package/template/agent/skills/frontend-developer/references/react-rules/js-early-exit.md +50 -0
  43. package/template/agent/skills/frontend-developer/references/react-rules/js-flatmap-filter.md +60 -0
  44. package/template/agent/skills/frontend-developer/references/react-rules/js-hoist-regexp.md +45 -0
  45. package/template/agent/skills/frontend-developer/references/react-rules/js-index-maps.md +37 -0
  46. package/template/agent/skills/frontend-developer/references/react-rules/js-length-check-first.md +49 -0
  47. package/template/agent/skills/frontend-developer/references/react-rules/js-min-max-loop.md +82 -0
  48. package/template/agent/skills/frontend-developer/references/react-rules/js-set-map-lookups.md +24 -0
  49. package/template/agent/skills/frontend-developer/references/react-rules/js-tosorted-immutable.md +57 -0
  50. package/template/agent/skills/frontend-developer/references/react-rules/rendering-activity.md +26 -0
  51. package/template/agent/skills/frontend-developer/references/react-rules/rendering-animate-svg-wrapper.md +47 -0
  52. package/template/agent/skills/frontend-developer/references/react-rules/rendering-conditional-render.md +40 -0
  53. package/template/agent/skills/frontend-developer/references/react-rules/rendering-content-visibility.md +38 -0
  54. package/template/agent/skills/frontend-developer/references/react-rules/rendering-hoist-jsx.md +46 -0
  55. package/template/agent/skills/frontend-developer/references/react-rules/rendering-hydration-no-flicker.md +82 -0
  56. package/template/agent/skills/frontend-developer/references/react-rules/rendering-hydration-suppress-warning.md +30 -0
  57. package/template/agent/skills/frontend-developer/references/react-rules/rendering-resource-hints.md +85 -0
  58. package/template/agent/skills/frontend-developer/references/react-rules/rendering-script-defer-async.md +68 -0
  59. package/template/agent/skills/frontend-developer/references/react-rules/rendering-svg-precision.md +28 -0
  60. package/template/agent/skills/frontend-developer/references/react-rules/rendering-usetransition-loading.md +75 -0
  61. package/template/agent/skills/frontend-developer/references/react-rules/rerender-defer-reads.md +39 -0
  62. package/template/agent/skills/frontend-developer/references/react-rules/rerender-dependencies.md +45 -0
  63. package/template/agent/skills/frontend-developer/references/react-rules/rerender-derived-state-no-effect.md +40 -0
  64. package/template/agent/skills/frontend-developer/references/react-rules/rerender-derived-state.md +29 -0
  65. package/template/agent/skills/frontend-developer/references/react-rules/rerender-functional-setstate.md +74 -0
  66. package/template/agent/skills/frontend-developer/references/react-rules/rerender-lazy-state-init.md +58 -0
  67. package/template/agent/skills/frontend-developer/references/react-rules/rerender-memo-with-default-value.md +38 -0
  68. package/template/agent/skills/frontend-developer/references/react-rules/rerender-memo.md +44 -0
  69. package/template/agent/skills/frontend-developer/references/react-rules/rerender-move-effect-to-event.md +45 -0
  70. package/template/agent/skills/frontend-developer/references/react-rules/rerender-no-inline-components.md +82 -0
  71. package/template/agent/skills/frontend-developer/references/react-rules/rerender-simple-expression-in-memo.md +35 -0
  72. package/template/agent/skills/frontend-developer/references/react-rules/rerender-split-combined-hooks.md +64 -0
  73. package/template/agent/skills/frontend-developer/references/react-rules/rerender-transitions.md +40 -0
  74. package/template/agent/skills/frontend-developer/references/react-rules/rerender-use-deferred-value.md +59 -0
  75. package/template/agent/skills/frontend-developer/references/react-rules/rerender-use-ref-transient-values.md +73 -0
  76. package/template/agent/skills/frontend-developer/references/react-rules/server-after-nonblocking.md +73 -0
  77. package/template/agent/skills/frontend-developer/references/react-rules/server-auth-actions.md +96 -0
  78. package/template/agent/skills/frontend-developer/references/react-rules/server-cache-lru.md +41 -0
  79. package/template/agent/skills/frontend-developer/references/react-rules/server-cache-react.md +76 -0
  80. package/template/agent/skills/frontend-developer/references/react-rules/server-dedup-props.md +65 -0
  81. package/template/agent/skills/frontend-developer/references/react-rules/server-hoist-static-io.md +142 -0
  82. package/template/agent/skills/frontend-developer/references/react-rules/server-parallel-fetching.md +83 -0
  83. package/template/agent/skills/frontend-developer/references/react-rules/server-serialization.md +38 -0
  84. package/template/agent/skills/frontend-developer/references/svelte-sveltekit.md +220 -0
  85. package/template/agent/skills/frontend-developer/references/vanilla.md +275 -0
  86. package/template/agent/skills/frontend-developer/references/vue-nuxt.md +289 -0
  87. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/_index.md +154 -0
  88. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/animation-class-based-technique.md +254 -0
  89. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/animation-state-driven-technique.md +291 -0
  90. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-async.md +97 -0
  91. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-data-flow.md +307 -0
  92. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-fallthrough-attrs.md +174 -0
  93. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-keep-alive.md +137 -0
  94. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-slots.md +216 -0
  95. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-suspense.md +228 -0
  96. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-teleport.md +108 -0
  97. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-transition-group.md +128 -0
  98. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/component-transition.md +125 -0
  99. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/composables.md +290 -0
  100. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/directives.md +162 -0
  101. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/perf-avoid-component-abstraction-in-lists.md +159 -0
  102. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/perf-v-once-v-memo-directives.md +182 -0
  103. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/perf-virtualize-large-lists.md +187 -0
  104. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/plugins.md +166 -0
  105. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/reactivity.md +344 -0
  106. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/render-functions.md +201 -0
  107. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/sfc.md +310 -0
  108. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/state-management.md +135 -0
  109. package/template/agent/skills/frontend-developer/references/vue-rules/best-practices/updated-hook-performance.md +187 -0
  110. package/template/agent/skills/frontend-developer/references/vue-rules/router/_index.md +23 -0
  111. package/template/agent/skills/frontend-developer/references/vue-rules/router/router-beforeenter-no-param-trigger.md +167 -0
  112. package/template/agent/skills/frontend-developer/references/vue-rules/router/router-beforerouteenter-no-this.md +176 -0
  113. package/template/agent/skills/frontend-developer/references/vue-rules/router/router-guard-async-await-pattern.md +227 -0
  114. package/template/agent/skills/frontend-developer/references/vue-rules/router/router-navigation-guard-infinite-loop.md +187 -0
  115. package/template/agent/skills/frontend-developer/references/vue-rules/router/router-navigation-guard-next-deprecated.md +150 -0
  116. package/template/agent/skills/frontend-developer/references/vue-rules/router/router-param-change-no-lifecycle.md +181 -0
  117. package/template/agent/skills/frontend-developer/references/vue-rules/router/router-simple-routing-cleanup.md +209 -0
  118. package/template/agent/skills/frontend-developer/references/vue-rules/router/router-use-vue-router-for-production.md +183 -0
  119. package/template/agent/skills/frontend-developer/references/vue-rules/testing/_index.md +29 -0
  120. package/template/agent/skills/frontend-developer/references/vue-rules/testing/async-component-testing.md +163 -0
  121. package/template/agent/skills/frontend-developer/references/vue-rules/testing/teleport-testing-complexity.md +158 -0
  122. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-async-await-flushpromises.md +175 -0
  123. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-browser-vs-node-runners.md +208 -0
  124. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-component-blackbox-approach.md +144 -0
  125. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-composables-helper-wrapper.md +238 -0
  126. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-e2e-playwright-recommended.md +242 -0
  127. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-no-snapshot-only.md +197 -0
  128. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-pinia-store-setup.md +228 -0
  129. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-suspense-async-components.md +229 -0
  130. package/template/agent/skills/frontend-developer/references/vue-rules/testing/testing-vitest-recommended-for-vue.md +204 -0
  131. package/template/agent/skills/game-design/SKILL.md +194 -0
  132. package/template/agent/skills/game-developer/SKILL.md +175 -0
  133. package/template/agent/skills/growth-hacker/SKILL.md +122 -0
  134. package/template/agent/skills/i18n-localization/SKILL.md +126 -0
  135. package/template/agent/skills/influencer-marketer/SKILL.md +141 -0
  136. package/template/agent/skills/mobile-developer/SKILL.md +194 -0
  137. package/template/agent/skills/mobile-developer/references/android-native.md +396 -0
  138. package/template/agent/skills/mobile-developer/references/android-rules/android-accessibility.md +36 -0
  139. package/template/agent/skills/mobile-developer/references/android-rules/android-architecture.md +52 -0
  140. package/template/agent/skills/mobile-developer/references/android-rules/android-coroutines.md +139 -0
  141. package/template/agent/skills/mobile-developer/references/android-rules/android-data-layer.md +51 -0
  142. package/template/agent/skills/mobile-developer/references/android-rules/android-emulator-skill.md +108 -0
  143. package/template/agent/skills/mobile-developer/references/android-rules/android-gradle-logic.md +126 -0
  144. package/template/agent/skills/mobile-developer/references/android-rules/android-retrofit.md +142 -0
  145. package/template/agent/skills/mobile-developer/references/android-rules/android-testing.md +102 -0
  146. package/template/agent/skills/mobile-developer/references/android-rules/android-viewmodel.md +43 -0
  147. package/template/agent/skills/mobile-developer/references/android-rules/coil-compose.md +74 -0
  148. package/template/agent/skills/mobile-developer/references/android-rules/compose-navigation.md +422 -0
  149. package/template/agent/skills/mobile-developer/references/android-rules/compose-performance-audit.md +199 -0
  150. package/template/agent/skills/mobile-developer/references/android-rules/compose-ui.md +49 -0
  151. package/template/agent/skills/mobile-developer/references/android-rules/gradle-build-performance.md +346 -0
  152. package/template/agent/skills/mobile-developer/references/android-rules/kotlin-concurrency-expert.md +169 -0
  153. package/template/agent/skills/mobile-developer/references/android-rules/rxjava-to-coroutines-migration.md +101 -0
  154. package/template/agent/skills/mobile-developer/references/android-rules/xml-to-compose-migration.md +338 -0
  155. package/template/agent/skills/mobile-developer/references/flutter-rules/dart-best-practices.md +52 -0
  156. package/template/agent/skills/mobile-developer/references/flutter-rules/dart-checks-migration.md +134 -0
  157. package/template/agent/skills/mobile-developer/references/flutter-rules/dart-cli-app-best-practices.md +123 -0
  158. package/template/agent/skills/mobile-developer/references/flutter-rules/dart-doc-validation.md +45 -0
  159. package/template/agent/skills/mobile-developer/references/flutter-rules/dart-matcher-best-practices.md +106 -0
  160. package/template/agent/skills/mobile-developer/references/flutter-rules/dart-modern-features.md +241 -0
  161. package/template/agent/skills/mobile-developer/references/flutter-rules/dart-package-maintenance.md +75 -0
  162. package/template/agent/skills/mobile-developer/references/flutter-rules/dart-test-fundamentals.md +124 -0
  163. package/template/agent/skills/mobile-developer/references/flutter.md +291 -0
  164. package/template/agent/skills/mobile-developer/references/ios-native.md +358 -0
  165. package/template/agent/skills/mobile-developer/references/ios-rules/accessibility-patterns.md +215 -0
  166. package/template/agent/skills/mobile-developer/references/ios-rules/animation-advanced.md +403 -0
  167. package/template/agent/skills/mobile-developer/references/ios-rules/animation-basics.md +284 -0
  168. package/template/agent/skills/mobile-developer/references/ios-rules/animation-transitions.md +326 -0
  169. package/template/agent/skills/mobile-developer/references/ios-rules/charts-accessibility.md +135 -0
  170. package/template/agent/skills/mobile-developer/references/ios-rules/charts.md +602 -0
  171. package/template/agent/skills/mobile-developer/references/ios-rules/image-optimization.md +203 -0
  172. package/template/agent/skills/mobile-developer/references/ios-rules/latest-apis.md +464 -0
  173. package/template/agent/skills/mobile-developer/references/ios-rules/layout-best-practices.md +266 -0
  174. package/template/agent/skills/mobile-developer/references/ios-rules/liquid-glass.md +416 -0
  175. package/template/agent/skills/mobile-developer/references/ios-rules/list-patterns.md +394 -0
  176. package/template/agent/skills/mobile-developer/references/ios-rules/macos-scenes.md +318 -0
  177. package/template/agent/skills/mobile-developer/references/ios-rules/macos-views.md +357 -0
  178. package/template/agent/skills/mobile-developer/references/ios-rules/macos-window-styling.md +303 -0
  179. package/template/agent/skills/mobile-developer/references/ios-rules/performance-patterns.md +403 -0
  180. package/template/agent/skills/mobile-developer/references/ios-rules/scroll-patterns.md +293 -0
  181. package/template/agent/skills/mobile-developer/references/ios-rules/sheet-navigation-patterns.md +363 -0
  182. package/template/agent/skills/mobile-developer/references/ios-rules/state-management.md +417 -0
  183. package/template/agent/skills/mobile-developer/references/ios-rules/view-structure.md +389 -0
  184. package/template/agent/skills/mobile-developer/references/react-native-rules/_sections.md +86 -0
  185. package/template/agent/skills/mobile-developer/references/react-native-rules/_template.md +28 -0
  186. package/template/agent/skills/mobile-developer/references/react-native-rules/animation-derived-value.md +53 -0
  187. package/template/agent/skills/mobile-developer/references/react-native-rules/animation-gesture-detector-press.md +95 -0
  188. package/template/agent/skills/mobile-developer/references/react-native-rules/animation-gpu-properties.md +65 -0
  189. package/template/agent/skills/mobile-developer/references/react-native-rules/design-system-compound-components.md +66 -0
  190. package/template/agent/skills/mobile-developer/references/react-native-rules/fonts-config-plugin.md +71 -0
  191. package/template/agent/skills/mobile-developer/references/react-native-rules/imports-design-system-folder.md +68 -0
  192. package/template/agent/skills/mobile-developer/references/react-native-rules/js-hoist-intl.md +61 -0
  193. package/template/agent/skills/mobile-developer/references/react-native-rules/list-performance-callbacks.md +44 -0
  194. package/template/agent/skills/mobile-developer/references/react-native-rules/list-performance-function-references.md +132 -0
  195. package/template/agent/skills/mobile-developer/references/react-native-rules/list-performance-images.md +53 -0
  196. package/template/agent/skills/mobile-developer/references/react-native-rules/list-performance-inline-objects.md +97 -0
  197. package/template/agent/skills/mobile-developer/references/react-native-rules/list-performance-item-expensive.md +94 -0
  198. package/template/agent/skills/mobile-developer/references/react-native-rules/list-performance-item-memo.md +82 -0
  199. package/template/agent/skills/mobile-developer/references/react-native-rules/list-performance-item-types.md +104 -0
  200. package/template/agent/skills/mobile-developer/references/react-native-rules/list-performance-virtualize.md +67 -0
  201. package/template/agent/skills/mobile-developer/references/react-native-rules/monorepo-native-deps-in-app.md +46 -0
  202. package/template/agent/skills/mobile-developer/references/react-native-rules/monorepo-single-dependency-versions.md +63 -0
  203. package/template/agent/skills/mobile-developer/references/react-native-rules/navigation-native-navigators.md +188 -0
  204. package/template/agent/skills/mobile-developer/references/react-native-rules/react-compiler-destructure-functions.md +50 -0
  205. package/template/agent/skills/mobile-developer/references/react-native-rules/react-compiler-reanimated-shared-values.md +48 -0
  206. package/template/agent/skills/mobile-developer/references/react-native-rules/react-state-dispatcher.md +91 -0
  207. package/template/agent/skills/mobile-developer/references/react-native-rules/react-state-fallback.md +56 -0
  208. package/template/agent/skills/mobile-developer/references/react-native-rules/react-state-minimize.md +65 -0
  209. package/template/agent/skills/mobile-developer/references/react-native-rules/rendering-no-falsy-and.md +74 -0
  210. package/template/agent/skills/mobile-developer/references/react-native-rules/rendering-text-in-text-component.md +36 -0
  211. package/template/agent/skills/mobile-developer/references/react-native-rules/scroll-position-no-state.md +82 -0
  212. package/template/agent/skills/mobile-developer/references/react-native-rules/state-ground-truth.md +80 -0
  213. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-expo-image.md +66 -0
  214. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-image-gallery.md +104 -0
  215. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-measure-views.md +78 -0
  216. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-menus.md +174 -0
  217. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-native-modals.md +77 -0
  218. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-pressable.md +61 -0
  219. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-safe-area-scroll.md +65 -0
  220. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-scrollview-content-inset.md +45 -0
  221. package/template/agent/skills/mobile-developer/references/react-native-rules/ui-styling.md +87 -0
  222. package/template/agent/skills/mobile-developer/references/react-native.md +345 -0
  223. package/template/agent/skills/monetization-strategist/SKILL.md +119 -0
  224. package/template/agent/skills/paid-acquisition-specialist/SKILL.md +119 -0
  225. package/template/agent/skills/product-manager/SKILL.md +105 -0
  226. package/template/agent/skills/real-time-features/SKILL.md +194 -0
  227. package/template/agent/skills/retention-specialist/SKILL.md +123 -0
  228. package/template/agent/skills/saas-architect/SKILL.md +139 -0
  229. package/template/agent/skills/security-engineer/SKILL.md +133 -0
  230. package/template/agent/skills/seo-specialist/SKILL.md +130 -0
  231. package/template/agent/skills/subscription-billing/SKILL.md +179 -0
  232. package/template/agent/skills/ux-designer/SKILL.md +128 -0
@@ -0,0 +1,345 @@
1
+ # React Native + Expo Reference
2
+
3
+ > **Philosophy:** JavaScript-first, native-quality. Ship fast with OTA updates, but never sacrifice 60fps.
4
+ > Expo is the default — eject only when you must.
5
+
6
+ ---
7
+
8
+ ## Project Setup & Detection
9
+
10
+ **Stack indicators:** `package.json` with `react-native` or `expo` dependency.
11
+
12
+ **Key config files:**
13
+
14
+ | File | Purpose |
15
+ |------|---------|
16
+ | `app.json` / `app.config.js` | Expo configuration (app name, version, plugins) |
17
+ | `metro.config.js` | Metro bundler configuration |
18
+ | `babel.config.js` | Babel presets and plugins |
19
+ | `tsconfig.json` | TypeScript configuration |
20
+ | `eas.json` | EAS Build/Submit/Update configuration |
21
+
22
+ **Recommended project structure (feature-based):**
23
+
24
+ ```
25
+ src/
26
+ features/
27
+ auth/
28
+ screens/LoginScreen.tsx
29
+ components/AuthForm.tsx
30
+ hooks/useAuth.ts
31
+ store/authStore.ts
32
+ home/
33
+ screens/HomeScreen.tsx
34
+ components/FeedList.tsx
35
+ shared/
36
+ components/ # Reusable UI components
37
+ hooks/ # Shared hooks
38
+ utils/ # Pure utility functions
39
+ services/ # API clients, storage wrappers
40
+ constants/ # Theme, config values
41
+ app/ # expo-router file-based routing
42
+ _layout.tsx
43
+ (tabs)/
44
+ _layout.tsx
45
+ index.tsx
46
+ settings.tsx
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Architecture Patterns
52
+
53
+ ### State Management
54
+
55
+ | Approach | Use When |
56
+ |----------|----------|
57
+ | **Zustand** (recommended) | Most apps — simple API, selector-based subscriptions, minimal boilerplate |
58
+ | **Redux Toolkit** | Large teams, complex state with many reducers, need Redux DevTools |
59
+ | **Jotai** | Atomic state, when individual pieces of state are independent |
60
+ | **React Context** | Infrequently-changing values (theme, locale, auth status) |
61
+
62
+ **State design principles:**
63
+ - State should be the **minimal source of truth**. If a value can be derived from other state or props, derive it during render — don't store it.
64
+ - Use **selector functions** in Zustand to subscribe to specific slices and avoid unnecessary re-renders.
65
+ - Keep UI state local (`useState`), share only what multiple components need.
66
+
67
+ ### Navigation
68
+
69
+ Use **native navigators** over JS-based navigators for performance:
70
+
71
+ | Navigator | Correct | Incorrect |
72
+ |-----------|---------|-----------|
73
+ | Stack | `createNativeStackNavigator` / `expo-router Stack` | `createStackNavigator` (JS-based, slow transitions) |
74
+ | Tabs | `createNativeBottomTabNavigator` / `expo-router NativeTabs` | `createBottomTabNavigator` (JS-based) |
75
+
76
+ Native navigators run transitions on the UI thread, provide platform-native gestures, large titles (iOS), search bars, and proper safe area handling automatically.
77
+
78
+ **Prefer native header options over custom header components.** Native headers support iOS large titles, blur effects, and search bars out of the box.
79
+
80
+ ### New Architecture
81
+
82
+ React Native's New Architecture includes:
83
+ - **TurboModules** — lazy-loaded, synchronous native module access (replaces Bridge)
84
+ - **Fabric** — concurrent renderer with synchronous layout (replaces old renderer)
85
+ - **Bridgeless mode** — eliminates the JS-native bridge entirely
86
+ - **React Compiler** — automatic memoization (eliminates `React.memo`, `useCallback`, `useMemo`)
87
+
88
+ When using **React Compiler**, `memo()` and `useCallback()` are unnecessary. However, **object reference stability** still matters for list virtualization.
89
+
90
+ ---
91
+
92
+ ## Performance Optimization
93
+
94
+ ### Critical Thresholds
95
+
96
+ | Metric | Target | Critical |
97
+ |--------|--------|----------|
98
+ | Cold start (JS bundle ready) | < 1s | > 2s |
99
+ | Time to interactive | < 2s | > 4s |
100
+ | List scroll frame rate | 60fps | < 45fps |
101
+ | JS bundle size (gzipped) | < 1MB | > 3MB |
102
+ | IPA/APK download size | < 30MB | > 100MB |
103
+
104
+ ### List Performance (CRITICAL)
105
+
106
+ **Always use a list virtualizer** — even for short lists. Virtualizers only render visible items, reducing memory and mount time.
107
+
108
+ | Library | When to Use |
109
+ |---------|------------|
110
+ | **LegendList** | Default choice — excellent recycling, great performance |
111
+ | **FlashList** (@shopify) | Alternative — well-tested, widely adopted |
112
+ | **FlatList** (built-in) | Legacy — avoid if possible, use LegendList/FlashList |
113
+
114
+ **Key rules for list performance:**
115
+
116
+ 1. **Stable object references** — don't `.map()` or `.filter()` data before passing to lists. Transform data inside list items instead.
117
+ 2. **Pass primitives to list items** — enables shallow comparison in `memo()`. Pass `id`, `name`, `email` instead of entire objects.
118
+ 3. **Hoist callbacks to list root** — extract `renderItem` and callbacks outside the component, or use `useCallback` if not using React Compiler.
119
+ 4. **No inline objects in renderItem** — every render creates new references, causing full re-renders of all visible items.
120
+ 5. **Use compressed images** — large images in lists destroy scroll performance.
121
+ 6. **Use item types** for heterogeneous lists — helps the virtualizer recycle views correctly.
122
+
123
+ ```tsx
124
+ // ❌ Bad: creates new references on every render
125
+ <LegendList
126
+ data={items.map(i => ({ ...i, label: i.name.toUpperCase() }))}
127
+ renderItem={({ item }) => <ItemCard item={item} />}
128
+ />
129
+
130
+ // ✅ Good: stable data, transform inside item
131
+ const renderItem = ({ item }) => <ItemCard item={item} />
132
+
133
+ <LegendList
134
+ data={items}
135
+ renderItem={renderItem}
136
+ keyExtractor={(item) => item.id}
137
+ estimatedItemSize={80}
138
+ />
139
+ ```
140
+
141
+ ### Animation (HIGH)
142
+
143
+ **Only animate GPU-accelerated properties:** `transform` (translate, scale, rotate) and `opacity`. Animating `width`, `height`, `top`, `left`, `margin`, `padding` triggers layout recalculation on every frame.
144
+
145
+ ```tsx
146
+ // ❌ Bad: animates height (layout recalc every frame)
147
+ useAnimatedStyle(() => ({ height: withTiming(expanded ? 200 : 0) }))
148
+
149
+ // ✅ Good: animates transform (GPU-accelerated)
150
+ useAnimatedStyle(() => ({
151
+ transform: [{ scaleY: withTiming(expanded ? 1 : 0) }],
152
+ opacity: withTiming(expanded ? 1 : 0),
153
+ }))
154
+ ```
155
+
156
+ - Use `useDerivedValue` over `useAnimatedReaction` for computed animations.
157
+ - Use `GestureDetector` (from `react-native-gesture-handler`) for press animations instead of `Pressable`.
158
+
159
+ ### Scroll Performance
160
+
161
+ **Never track scroll position in useState** — it triggers a JS re-render on every frame. Use `useSharedValue` from Reanimated instead.
162
+
163
+ ### Hermes Engine
164
+
165
+ Hermes is the default JS engine. It pre-compiles JavaScript to bytecode at build time, reducing cold start time and memory usage. Ensure Hermes is enabled in your project (`"jsEngine": "hermes"` in `app.json`).
166
+
167
+ ---
168
+
169
+ ## Common Libraries Ecosystem
170
+
171
+ | Category | Recommended | Alternative |
172
+ |----------|-------------|-------------|
173
+ | **Navigation** | `expo-router` (file-based) | `@react-navigation/native` (imperative) |
174
+ | **State** | `zustand` | `@reduxjs/toolkit`, `jotai` |
175
+ | **Server State** | `@tanstack/react-query` | `swr` |
176
+ | **HTTP** | `fetch` (built-in) | `axios`, `ky` |
177
+ | **Storage (non-sensitive)** | `react-native-mmkv` | `@react-native-async-storage/async-storage` |
178
+ | **Storage (sensitive)** | `expo-secure-store` | `react-native-keychain` |
179
+ | **Images** | `expo-image` | `react-native-fast-image` |
180
+ | **Animation** | `react-native-reanimated` | `react-native-animated` (built-in, limited) |
181
+ | **Gestures** | `react-native-gesture-handler` | — |
182
+ | **Lists** | `@legendapp/list` (LegendList) | `@shopify/flash-list` (FlashList) |
183
+ | **Forms** | `react-hook-form` | `formik` |
184
+ | **Modals** | Native `Modal` with `formSheet` | `react-native-bottom-sheet` |
185
+ | **Menus** | `zeego` (native context/dropdown) | — |
186
+ | **Image Gallery** | `galeria` | — |
187
+ | **Icons** | `expo-symbols` (SF Symbols) | `@expo/vector-icons` |
188
+ | **Fonts** | Config plugin (native load) | `expo-font` (runtime load) |
189
+
190
+ ---
191
+
192
+ ## Anti-Patterns & Gotchas
193
+
194
+ | ❌ Don't | Why | ✅ Do Instead |
195
+ |----------|-----|---------------|
196
+ | `ScrollView` with `.map()` for lists | Renders ALL items, memory explodes | `LegendList` / `FlashList` |
197
+ | `TouchableOpacity` for press | Legacy, limited API | `Pressable` — standard, more flexible |
198
+ | Text not wrapped in `<Text>` | Crashes on Android, undefined behavior | Always wrap strings in `<Text>` |
199
+ | `{condition && <Component/>}` with falsy value | `0` or `NaN` renders as text on Android | `{condition ? <Component/> : null}` |
200
+ | `useState` for scroll position | Re-renders on every frame, janky | `useSharedValue` from Reanimated |
201
+ | Inline objects in `style` prop | New reference every render | `StyleSheet.create()` or `borderCurve: 'continuous'` |
202
+ | `shadowColor`/`elevation` for shadows | Legacy, inconsistent cross-platform | CSS `boxShadow` string syntax |
203
+ | Margin between siblings | Fragile, breaks when children change | `gap` on parent container |
204
+ | `LinearGradient` third-party | Extra dependency | `experimental_backgroundImage: 'linear-gradient(...)'` |
205
+ | Custom header components | Misses native features (large titles, blur) | Native header `options` |
206
+ | `{ borderRadius: 12 }` alone | Sharp iOS corners | Add `borderCurve: 'continuous'` for smooth corners |
207
+ | Import entire lodash | Bundle bloat | `import debounce from 'lodash/debounce'` |
208
+ | `console.log` in production | Blocks JS thread, leaks data | Use a logger with levels, strip in release |
209
+ | Tokens in `AsyncStorage` | Plaintext, exposed on rooted device | `expo-secure-store` / Keychain |
210
+
211
+ ### React Compiler Gotchas
212
+
213
+ When React Compiler is enabled:
214
+ - **Destructure functions early** — the compiler optimizes better with destructured function references.
215
+ - **Use `.get()`/`.set()` for Reanimated shared values** — the compiler cannot optimize `.value` property access patterns.
216
+
217
+ ---
218
+
219
+ ## Testing
220
+
221
+ | Layer | Tool | Purpose |
222
+ |-------|------|---------|
223
+ | **Unit** | Jest + React Native Testing Library | Component logic, hooks, utils |
224
+ | **Component** | `@testing-library/react-native` | Render + interact with components |
225
+ | **E2E** | Maestro | Full flow testing, easy YAML syntax |
226
+ | **E2E (alt)** | Detox (Wix) | Full flow testing, JS-based |
227
+
228
+ **Testing principles:**
229
+ - Test behavior, not implementation (don't test component internals)
230
+ - Use `screen.getByRole()` and `getByText()` over `getByTestId()`
231
+ - Mock native modules at the module level (`jest.mock('expo-secure-store')`)
232
+ - Test loading, error, and empty states for every async component
233
+
234
+ ---
235
+
236
+ ## Deployment & Distribution
237
+
238
+ ### EAS (Expo Application Services)
239
+
240
+ | Service | Purpose |
241
+ |---------|---------|
242
+ | **EAS Build** | Cloud builds for iOS and Android (no local Xcode/Android Studio needed) |
243
+ | **EAS Submit** | Publish to App Store / Google Play directly from CLI |
244
+ | **EAS Update** | OTA JavaScript updates (code push without app store review) |
245
+
246
+ **OTA update strategy:**
247
+ - Use `expo-updates` for JS-only changes (bug fixes, UI tweaks)
248
+ - Native changes (new native modules, SDK version bump) require a full build + store submission
249
+ - Set update channels: `production`, `staging`, `preview`
250
+
251
+ ### Build commands
252
+
253
+ ```bash
254
+ # Development build (with dev client)
255
+ eas build --profile development --platform ios
256
+
257
+ # Production build
258
+ eas build --profile production --platform all
259
+
260
+ # Submit to stores
261
+ eas submit --platform ios
262
+ eas submit --platform android
263
+
264
+ # OTA update
265
+ eas update --branch production --message "Fix login bug"
266
+ ```
267
+
268
+ ### App size optimization
269
+ - Enable Hermes (pre-compiled bytecode, smaller bundle)
270
+ - Use `expo-image` instead of `Image` (optimized loading)
271
+ - Tree-shake unused code with Metro bundler
272
+ - Use `expo-asset` for preloading critical assets
273
+ - Audit dependencies with `npx expo-doctor`
274
+
275
+ ---
276
+
277
+ ## Quick Reference — Granular Rules
278
+
279
+ Individual rule files in `react-native-rules/` with detailed incorrect/correct
280
+ code examples. Read the specific rule when working in that area.
281
+
282
+ > Source: [Vercel agent-skills](https://github.com/vercel-labs/agent-skills/tree/main/skills/react-native-skills)
283
+
284
+ ### CRITICAL — Core Rendering
285
+
286
+ - [rendering-text-in-text-component.md](react-native-rules/rendering-text-in-text-component.md) — All text must be inside `<Text>`
287
+ - [rendering-no-falsy-and.md](react-native-rules/rendering-no-falsy-and.md) — Avoid falsy `&&` rendering
288
+
289
+ ### HIGH — List Performance
290
+
291
+ - [list-performance-virtualize.md](react-native-rules/list-performance-virtualize.md) — Always use LegendList/FlashList
292
+ - [list-performance-function-references.md](react-native-rules/list-performance-function-references.md) — Stable object references
293
+ - [list-performance-item-memo.md](react-native-rules/list-performance-item-memo.md) — Pass primitives for memo
294
+ - [list-performance-callbacks.md](react-native-rules/list-performance-callbacks.md) — Hoist callbacks
295
+ - [list-performance-inline-objects.md](react-native-rules/list-performance-inline-objects.md) — No inline objects
296
+ - [list-performance-images.md](react-native-rules/list-performance-images.md) — Compressed images in lists
297
+ - [list-performance-item-types.md](react-native-rules/list-performance-item-types.md) — Item types for recycling
298
+ - [list-performance-item-expensive.md](react-native-rules/list-performance-item-expensive.md) — Defer expensive items
299
+
300
+ ### HIGH — Animation
301
+
302
+ - [animation-gpu-properties.md](react-native-rules/animation-gpu-properties.md) — GPU-only properties (transform, opacity)
303
+ - [animation-derived-value.md](react-native-rules/animation-derived-value.md) — useDerivedValue over useAnimatedReaction
304
+ - [animation-gesture-detector-press.md](react-native-rules/animation-gesture-detector-press.md) — GestureDetector for press animations
305
+
306
+ ### HIGH — Scroll & Navigation
307
+
308
+ - [scroll-position-no-state.md](react-native-rules/scroll-position-no-state.md) — Never track scroll in useState
309
+ - [navigation-native-navigators.md](react-native-rules/navigation-native-navigators.md) — Native stack/tab navigators
310
+
311
+ ### MEDIUM — React State
312
+
313
+ - [react-state-minimize.md](react-native-rules/react-state-minimize.md) — Minimize state, derive values
314
+ - [react-state-dispatcher.md](react-native-rules/react-state-dispatcher.md) — Dispatch pattern for state
315
+ - [react-state-fallback.md](react-native-rules/react-state-fallback.md) — Fallback rendering pattern
316
+ - [state-ground-truth.md](react-native-rules/state-ground-truth.md) — State ground truth principles
317
+
318
+ ### MEDIUM — React Compiler
319
+
320
+ - [react-compiler-destructure-functions.md](react-native-rules/react-compiler-destructure-functions.md) — Destructure functions early
321
+ - [react-compiler-reanimated-shared-values.md](react-native-rules/react-compiler-reanimated-shared-values.md) — .get()/.set() for shared values
322
+
323
+ ### MEDIUM — UI Patterns
324
+
325
+ - [ui-expo-image.md](react-native-rules/ui-expo-image.md) — Use expo-image
326
+ - [ui-pressable.md](react-native-rules/ui-pressable.md) — Pressable over TouchableOpacity
327
+ - [ui-native-modals.md](react-native-rules/ui-native-modals.md) — Native modal presentations
328
+ - [ui-menus.md](react-native-rules/ui-menus.md) — Native context/dropdown menus (zeego)
329
+ - [ui-image-gallery.md](react-native-rules/ui-image-gallery.md) — Native image gallery (galeria)
330
+ - [ui-measure-views.md](react-native-rules/ui-measure-views.md) — Measure views correctly
331
+ - [ui-safe-area-scroll.md](react-native-rules/ui-safe-area-scroll.md) — Safe area with scroll
332
+ - [ui-scrollview-content-inset.md](react-native-rules/ui-scrollview-content-inset.md) — ScrollView content inset
333
+ - [ui-styling.md](react-native-rules/ui-styling.md) — Modern styling patterns (gap, boxShadow, borderCurve)
334
+
335
+ ### MEDIUM — Design System
336
+
337
+ - [design-system-compound-components.md](react-native-rules/design-system-compound-components.md) — Compound component pattern
338
+
339
+ ### LOW — Monorepo, Dependencies, JS, Fonts
340
+
341
+ - [monorepo-native-deps-in-app.md](react-native-rules/monorepo-native-deps-in-app.md) — Native deps in app package
342
+ - [monorepo-single-dependency-versions.md](react-native-rules/monorepo-single-dependency-versions.md) — Single dependency versions
343
+ - [imports-design-system-folder.md](react-native-rules/imports-design-system-folder.md) — Re-export third-party deps
344
+ - [js-hoist-intl.md](react-native-rules/js-hoist-intl.md) — Hoist Intl formatters
345
+ - [fonts-config-plugin.md](react-native-rules/fonts-config-plugin.md) — Config plugin for fonts
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: monetization-strategist
3
+ description: Use when designing pricing models, planning freemium strategy, setting up IAP, optimizing upgrade flows, or modeling unit economics
4
+ ---
5
+
6
+ # Monetization Strategist Lens
7
+
8
+ > **Philosophy:** Pricing is product strategy. How you charge shapes who uses you and how.
9
+ > Charge too little = sustainability problem. Charge too late = habit without payment.
10
+
11
+ ---
12
+
13
+ ## Core Instincts
14
+
15
+ - **Price is positioning** — low price signals low value; premium price signals quality
16
+ - **Willingness to pay > cost-plus pricing** — price based on value delivered, not cost of building
17
+ - **Free trial ≠ free forever** — time-limit trials; gate meaningful features behind paywall
18
+ - **Upgrade at the aha moment** — show the paywall after users experience value, not before
19
+ - **Churn is a pricing signal** — high churn often means price/value mismatch, not product failure
20
+
21
+ ---
22
+
23
+ ## Pricing Model Comparison
24
+
25
+ | Model | Best for | Risk |
26
+ |-------|----------|------|
27
+ | **One-time purchase** | Tools, utilities; no recurring infrastructure | Hard to sustain; no expansion revenue |
28
+ | **Subscription (monthly)** | SaaS, apps with ongoing value | High churn pressure; needs retention |
29
+ | **Subscription (annual)** | SaaS with sticky users | Lower churn; requires trust upfront |
30
+ | **Freemium** | Network effects, viral products | Conversion typically 2–5% free → paid |
31
+ | **Usage-based** | APIs, infrastructure, variable-value products | Revenue unpredictability |
32
+ | **IAP (consumable)** | Games, one-time unlocks | Requires volume; App Store cut (15–30%) |
33
+
34
+ **Indie hacker default:** Subscription (monthly + annual discount) or one-time if the product is a clear tool.
35
+
36
+ ---
37
+
38
+ ## Freemium Design Rules
39
+
40
+ - **Free tier must be genuinely useful** — users who don't get value won't upgrade
41
+ - **Paid tier must be obviously better** — upgrade should feel like an obvious next step
42
+ - **Free-to-paid conversion benchmark:** 2–5% is typical; > 5% is strong
43
+ - **Don't give away features that should be paid** — you're training users to expect them free
44
+ - **Paywall trigger:** after activation event, not first open; after Nth use, not immediately
45
+
46
+ ---
47
+
48
+ ## Pricing Thresholds (Mobile Apps, 2024 benchmarks)
49
+
50
+ | Tier | Monthly | Annual | One-time |
51
+ |------|---------|--------|----------|
52
+ | Entry | $2.99–$4.99 | $19.99–$29.99 | $9.99 |
53
+ | Mid | $7.99–$9.99 | $49.99–$69.99 | $19.99–$29.99 |
54
+ | Premium | $14.99–$19.99 | $99.99–$149.99 | $49.99–$99.99 |
55
+
56
+ **Annual discount should be ~40–50% off monthly** to incentivize without undermining monthly revenue.
57
+
58
+ ---
59
+
60
+ ## Key Formulas
61
+
62
+ ```
63
+ LTV = ARPU / monthly_churn_rate
64
+ LTV:CAC ≥ 3:1 (sustainable), ≥ 5:1 (great)
65
+ Payback = CAC / monthly_gross_margin_per_customer (target < 12 months)
66
+ MRR = paying_users × ARPU
67
+ ARR = MRR × 12
68
+ Churn = churned_users_this_month / users_at_start_of_month
69
+ ```
70
+
71
+ ---
72
+
73
+ ## ❌ Anti-Patterns to Avoid
74
+
75
+ | ❌ NEVER DO | Why | ✅ DO INSTEAD |
76
+ |------------|-----|--------------|
77
+ | Paywall on first open | Users leave before experiencing value | Paywall after activation event |
78
+ | Pricing without testing | First price is almost always wrong | A/B test 2–3 price points |
79
+ | One price tier only | No upgrade path, no upsell | 2–3 tiers (entry, pro, enterprise/lifetime) |
80
+ | Free trial < 7 days | Not enough time to build habit | 14 days minimum; 30 for complex products |
81
+ | Grandfathering everyone on price increases | Unsustainable | Clear communication + fair grandfathering period |
82
+ | Hiding pricing | Kills trust, attracts wrong users | Show pricing clearly on landing page |
83
+
84
+ ---
85
+
86
+ ## Questions You Always Ask
87
+
88
+ **When designing pricing:**
89
+ - What's the activation event after which users clearly understand value?
90
+ - What's the minimum viable paid tier — what features justify the price?
91
+ - What's the churn rate, and does it suggest a pricing mismatch?
92
+ - Is there an annual plan? (Annual users churn 3–5× less than monthly)
93
+
94
+ **When reviewing monetization:**
95
+ - What % of users convert free → paid? What's the target?
96
+ - What's the most common reason users cancel? (Exit survey data)
97
+ - Is LTV:CAC ≥ 3:1?
98
+
99
+ ---
100
+
101
+ ## Red Flags
102
+
103
+ **Must fix:**
104
+ - [ ] No pricing page / pricing hidden
105
+ - [ ] Paywall shown before any activation event
106
+ - [ ] LTV:CAC < 1:1 (actively losing money per customer)
107
+ - [ ] No annual plan option
108
+
109
+ **Should fix:**
110
+ - [ ] Only one pricing tier (no upgrade path)
111
+ - [ ] No exit survey on cancellation
112
+ - [ ] Free trial < 7 days
113
+
114
+ ---
115
+
116
+ ## Who to Pair With
117
+ - `conversion-optimizer` — for paywall design and trial-to-paid optimization
118
+ - `retention-specialist` — for reducing churn after conversion
119
+ - `data-analyst` — for LTV modeling and cohort revenue analysis
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: paid-acquisition-specialist
3
+ description: Use when running Meta Ads, Google Ads, Apple Search Ads, or any paid user acquisition channel — including creative strategy, ROAS optimization, and CAC management
4
+ ---
5
+
6
+ # Paid Acquisition Specialist Lens
7
+
8
+ > **Philosophy:** Paid acquisition amplifies what already works — it can't fix a leaky product.
9
+ > Never scale spend before unit economics are positive. Fast money in, faster money out.
10
+
11
+ ---
12
+
13
+ ## Core Instincts
14
+
15
+ - **Validate organic before paying** — paid should scale a channel that already converts
16
+ - **Creative is the primary variable** — in Meta/TikTok, the ad creative drives 70%+ of performance
17
+ - **Kill losers fast, scale winners slowly** — most ad sets fail; iterate quickly
18
+ - **Attribution is broken** — last-click undervalues upper-funnel; triangulate with incrementality tests
19
+ - **Never scale a channel where LTV:CAC < 3:1**
20
+
21
+ ---
22
+
23
+ ## Platform Comparison
24
+
25
+ | Platform | Best for | Typical CAC | Targeting |
26
+ |----------|----------|-------------|-----------|
27
+ | **Apple Search Ads** | iOS apps, high-intent | High | Keyword-based |
28
+ | **Google UAC** | Android + iOS apps | Medium-high | AI-driven, broad |
29
+ | **Meta Ads** | B2C, consumer apps | Medium | Interest + lookalike |
30
+ | **TikTok Ads** | Consumer, Gen Z | Low-medium | Interest + algorithmic |
31
+ | **Google Search** | High-intent SaaS | High | Keyword-based |
32
+
33
+ ---
34
+
35
+ ## Key Metrics & Benchmarks
36
+
37
+ | Metric | Formula | Target |
38
+ |--------|---------|--------|
39
+ | **ROAS** | Revenue / Ad Spend | ≥ 3× (sustainable) |
40
+ | **CAC** | Ad Spend / New Customers | < LTV / 3 |
41
+ | **LTV:CAC** | LTV / CAC | ≥ 3:1 |
42
+ | **CTR** (Meta display) | Clicks / Impressions | > 1% (good), > 3% (great) |
43
+ | **CTR** (Apple Search Ads) | Taps / Impressions (TTR) | > 3% |
44
+ | **CPM** (Meta) | Cost per 1000 impressions | $5–$15 (varies by niche) |
45
+ | **Install-to-trial rate** | Trials / Installs | > 30% |
46
+ | **Trial-to-paid rate** | Paid / Trials | > 15% |
47
+
48
+ ---
49
+
50
+ ## Apple Search Ads Quick Reference
51
+
52
+ - **Campaign types:** Search Results, Today Tab, Search Tab, Product Page
53
+ - **Bidding:** CPT (Cost Per Tap) — start at 2× category average, adjust by TTR
54
+ - **TTR (Tap-Through Rate):** > 3% is healthy; < 1% = keyword mismatch
55
+ - **Search Match:** start on, refine with exact match after data
56
+ - **Negative keywords:** critical — prevents spend on competitor brand terms
57
+
58
+ ---
59
+
60
+ ## Creative Testing Framework
61
+
62
+ ```
63
+ Week 1–2: Test hooks (3–5 different opening scenes/hooks)
64
+ Week 3–4: Test formats (UGC vs animation vs screen recording vs testimonial)
65
+ Week 5–6: Scale winner + test CTAs and landing pages
66
+ Ongoing: Refresh winning creative every 4–6 weeks (creative fatigue)
67
+ ```
68
+
69
+ **Creative fatigue signal:** Frequency > 3 AND CTR dropping week-over-week → pause and refresh.
70
+
71
+ ---
72
+
73
+ ## ❌ Anti-Patterns to Avoid
74
+
75
+ | ❌ NEVER DO | Why | ✅ DO INSTEAD |
76
+ |------------|-----|--------------|
77
+ | Scale before ROAS > 2× | Scaling losses faster | Validate at $500–$1000 budget first |
78
+ | Change multiple ad variables at once | Can't isolate what worked | One variable per test |
79
+ | Run ads with no landing page match | Message mismatch kills conversion | Dedicated landing page per ad creative |
80
+ | Ignore creative refresh | Creative fatigue → CPM rises, CTR falls | Replace winning creatives every 4–6 weeks |
81
+ | Use broad targeting from day 1 (Google) | Burn budget on irrelevant users | Start with exact/phrase match, expand |
82
+ | Scale too fast | Algorithm destabilizes, CPM spikes | Max 2× budget increase per week |
83
+
84
+ ---
85
+
86
+ ## Questions You Always Ask
87
+
88
+ **Before launching:**
89
+ - Is the organic conversion rate strong enough to justify paid amplification?
90
+ - What is our target CAC, based on LTV?
91
+ - Is the landing page / App Store listing optimized for conversion?
92
+ - What's the attribution setup — are we tracking installs, activations, or purchases?
93
+
94
+ **When scaling:**
95
+ - Is ROAS ≥ 3× at current spend level?
96
+ - Is creative frequency > 3 (signal of fatigue)?
97
+ - What's the paid CAC vs organic CAC ratio?
98
+
99
+ ---
100
+
101
+ ## Red Flags
102
+
103
+ **Must fix:**
104
+ - [ ] Scaling spend with ROAS < 2× (burning money)
105
+ - [ ] No conversion tracking set up (flying blind)
106
+ - [ ] Single ad creative with no testing
107
+ - [ ] No daily budget cap per campaign
108
+
109
+ **Should fix:**
110
+ - [ ] No negative keyword list (Apple Search Ads / Google)
111
+ - [ ] No creative refresh in > 6 weeks
112
+ - [ ] Attribution only from last-click (misses upper-funnel contribution)
113
+
114
+ ---
115
+
116
+ ## Who to Pair With
117
+ - `conversion-optimizer` — for landing page and paywall optimization
118
+ - `app-store-optimizer` — for Apple Search Ads + product page optimization
119
+ - `data-analyst` — for attribution modeling and ROAS analysis
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: product-manager
3
+ description: Use when defining product requirements, prioritizing features, planning a roadmap, validating user problems, or making build/buy/don't-build decisions
4
+ ---
5
+
6
+ # Product Manager Lens
7
+
8
+ > **Philosophy:** Build outcomes, not outputs. Ship learning, not just features.
9
+ > The best feature is often the one you decide not to build.
10
+
11
+ ---
12
+
13
+ ## ⚠️ ASK BEFORE ASSUMING
14
+
15
+ | What | Why it matters |
16
+ |------|----------------|
17
+ | **Stage?** Pre-PMF / Post-PMF / Scaling | Changes everything about what to build |
18
+ | **Who is the user?** | Can't prioritize without knowing whose problem |
19
+ | **What outcome matters?** Revenue / retention / activation | Determines what "done" looks like |
20
+ | **Existing data?** | Don't hypothesize what you can measure |
21
+
22
+ ---
23
+
24
+ ## Core Instincts
25
+
26
+ - **Jobs-to-be-done (JTBD)** — users don't want features; they want to make progress in their lives
27
+ - **Outcome over output** — "MAU +20%" beats "shipped 10 features"
28
+ - **Pareto ruthlessness** — 20% of features deliver 80% of value; cut the rest
29
+ - **Small bets, fast learning** — ship to learn, not to finish
30
+ - **Pre-PMF: talk to users; post-PMF: read the data**
31
+
32
+ ---
33
+
34
+ ## Prioritization Frameworks
35
+
36
+ | Framework | When to use |
37
+ |-----------|-------------|
38
+ | **ICE** (Impact × Confidence × Ease) | Quick scoring across many ideas |
39
+ | **RICE** (Reach × Impact × Confidence ÷ Effort) | When reach varies significantly |
40
+ | **MoSCoW** (Must/Should/Could/Won't) | Scoping a release |
41
+ | **Opportunity Scoring** | When you have survey data on importance vs satisfaction |
42
+
43
+ **Indie hacker rule:** If a feature doesn't directly help activation, retention, or revenue — it's probably a "Won't" for now.
44
+
45
+ ---
46
+
47
+ ## ❌ Anti-Patterns to Avoid
48
+
49
+ | ❌ NEVER DO | Why | ✅ DO INSTEAD |
50
+ |------------|-----|--------------|
51
+ | Build based on one user request | 1 user ≠ your market | Find the pattern across 5+ interviews |
52
+ | Big bang launch | Months of work, one chance to be right | Shape → Bet → Ship → Learn loop |
53
+ | Vanity metrics as goals | Page views don't pay rent | Retention, activation, revenue |
54
+ | Feature factory (output focus) | Team ships but nothing improves | Set outcome targets, measure impact |
55
+ | Build before validating | Wasted dev weeks | Fake door test, landing page, prototype first |
56
+ | Roadmap spans > 3 months | World changes faster than plans | 6-week cycles max for indie hackers |
57
+
58
+ ---
59
+
60
+ ## Questions You Always Ask
61
+
62
+ **When defining a feature:**
63
+ - What job is the user trying to get done? What's the progress they want to make?
64
+ - What's the smallest thing we can ship to learn whether this matters?
65
+ - How will we know if this worked? What metric moves?
66
+ - What do we NOT build as a result of building this?
67
+
68
+ **When reviewing a backlog:**
69
+ - Is this tied to a measurable outcome?
70
+ - Have we talked to users about this problem recently?
71
+ - What happens if we don't build this?
72
+
73
+ ---
74
+
75
+ ## Red Flags
76
+
77
+ **Must address:**
78
+ - [ ] No acceptance criteria on tickets ("done" is undefined)
79
+ - [ ] Features queued without a linked success metric
80
+ - [ ] No user research backing a major feature bet
81
+ - [ ] Roadmap has no "don't build" list
82
+
83
+ **Should address:**
84
+ - [ ] Sprint reviews with no outcome data (only feature demos)
85
+ - [ ] No documented JTBD for core user segments
86
+ - [ ] Team can't articulate current North Star Metric
87
+
88
+ ---
89
+
90
+ ## Who to Pair With
91
+ - `copywriter` — to translate features into user-facing language
92
+ - `growth-hacker` — for activation and acquisition loop design
93
+ - `data-analyst` — for outcome measurement and funnel analysis
94
+
95
+ ---
96
+
97
+ ## Key Formulas
98
+
99
+ ```
100
+ North Star Metric = 1 metric that best represents delivered value to users
101
+
102
+ Activation rate = users who hit "aha moment" / total signups
103
+ Retention = users still active at day N / users who signed up N days ago
104
+ PMF signal = >40% of users would be "very disappointed" if product disappeared (Sean Ellis test)
105
+ ```