agy-superpowers 5.2.2 → 5.2.4

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 (231) hide show
  1. package/README.md +47 -150
  2. package/package.json +1 -1
  3. package/template/agent/rules/CLAUDE.md +80 -0
  4. package/template/agent/rules/code-styles.md +31 -32
  5. package/template/agent/rules/debug-confirmation-policy.md +2 -0
  6. package/template/agent/rules/file-length-policy.md +2 -0
  7. package/template/agent/rules/git-policy.md +7 -0
  8. package/template/agent/rules/language-matching.md +2 -0
  9. package/template/agent/rules/scratch-scripts.md +39 -0
  10. package/template/agent/rules/superpowers.md +8 -51
  11. package/template/agent/skills/executing-plans/SKILL.md +17 -0
  12. package/template/agent/skills/systematic-debugging/SKILL.md +16 -0
  13. package/template/agent/skills/test-driven-development/SKILL.md +16 -0
  14. package/template/agent/skills/verification-before-completion/SKILL.md +22 -0
  15. package/template/agent/skills/writing-plans/SKILL.md +16 -0
  16. package/template/agent/skills/ai-integrated-product/SKILL.md +0 -57
  17. package/template/agent/skills/analytics-setup/SKILL.md +0 -51
  18. package/template/agent/skills/api-design/SKILL.md +0 -193
  19. package/template/agent/skills/app-store-optimizer/SKILL.md +0 -127
  20. package/template/agent/skills/auth-and-identity/SKILL.md +0 -167
  21. package/template/agent/skills/backend-developer/SKILL.md +0 -148
  22. package/template/agent/skills/bootstrapper-finance/SKILL.md +0 -55
  23. package/template/agent/skills/chrome-extension-developer/SKILL.md +0 -53
  24. package/template/agent/skills/community-manager/SKILL.md +0 -115
  25. package/template/agent/skills/content-marketer/SKILL.md +0 -111
  26. package/template/agent/skills/conversion-optimizer/SKILL.md +0 -142
  27. package/template/agent/skills/cto-architect/SKILL.md +0 -133
  28. package/template/agent/skills/customer-success-manager/SKILL.md +0 -126
  29. package/template/agent/skills/data-analyst/SKILL.md +0 -147
  30. package/template/agent/skills/devops-engineer/SKILL.md +0 -117
  31. package/template/agent/skills/email-infrastructure/SKILL.md +0 -164
  32. package/template/agent/skills/game-design/SKILL.md +0 -194
  33. package/template/agent/skills/game-developer/SKILL.md +0 -175
  34. package/template/agent/skills/growth-hacker/SKILL.md +0 -122
  35. package/template/agent/skills/idea-validator/SKILL.md +0 -55
  36. package/template/agent/skills/indie-legal/SKILL.md +0 -53
  37. package/template/agent/skills/influencer-marketer/SKILL.md +0 -141
  38. package/template/agent/skills/landing-page-builder/SKILL.md +0 -59
  39. package/template/agent/skills/launch-strategist/SKILL.md +0 -62
  40. package/template/agent/skills/market-researcher/SKILL.md +0 -53
  41. package/template/agent/skills/micro-saas-builder/SKILL.md +0 -56
  42. package/template/agent/skills/monetization-strategist/SKILL.md +0 -119
  43. package/template/agent/skills/paid-acquisition-specialist/SKILL.md +0 -119
  44. package/template/agent/skills/pricing-psychologist/SKILL.md +0 -58
  45. package/template/agent/skills/real-time-features/SKILL.md +0 -194
  46. package/template/agent/skills/retention-specialist/SKILL.md +0 -123
  47. package/template/agent/skills/rust-developer/SKILL.md +0 -281
  48. package/template/agent/skills/rust-developer/references/rust-rules/_sections.md +0 -231
  49. package/template/agent/skills/rust-developer/references/rust-rules/anti-clone-excessive.md +0 -124
  50. package/template/agent/skills/rust-developer/references/rust-rules/anti-collect-intermediate.md +0 -131
  51. package/template/agent/skills/rust-developer/references/rust-rules/anti-empty-catch.md +0 -132
  52. package/template/agent/skills/rust-developer/references/rust-rules/anti-expect-lazy.md +0 -95
  53. package/template/agent/skills/rust-developer/references/rust-rules/anti-format-hot-path.md +0 -141
  54. package/template/agent/skills/rust-developer/references/rust-rules/anti-index-over-iter.md +0 -125
  55. package/template/agent/skills/rust-developer/references/rust-rules/anti-lock-across-await.md +0 -127
  56. package/template/agent/skills/rust-developer/references/rust-rules/anti-over-abstraction.md +0 -120
  57. package/template/agent/skills/rust-developer/references/rust-rules/anti-panic-expected.md +0 -131
  58. package/template/agent/skills/rust-developer/references/rust-rules/anti-premature-optimize.md +0 -156
  59. package/template/agent/skills/rust-developer/references/rust-rules/anti-string-for-str.md +0 -122
  60. package/template/agent/skills/rust-developer/references/rust-rules/anti-stringly-typed.md +0 -167
  61. package/template/agent/skills/rust-developer/references/rust-rules/anti-type-erasure.md +0 -134
  62. package/template/agent/skills/rust-developer/references/rust-rules/anti-unwrap-abuse.md +0 -143
  63. package/template/agent/skills/rust-developer/references/rust-rules/anti-vec-for-slice.md +0 -121
  64. package/template/agent/skills/rust-developer/references/rust-rules/api-builder-must-use.md +0 -143
  65. package/template/agent/skills/rust-developer/references/rust-rules/api-builder-pattern.md +0 -187
  66. package/template/agent/skills/rust-developer/references/rust-rules/api-common-traits.md +0 -165
  67. package/template/agent/skills/rust-developer/references/rust-rules/api-default-impl.md +0 -177
  68. package/template/agent/skills/rust-developer/references/rust-rules/api-extension-trait.md +0 -163
  69. package/template/agent/skills/rust-developer/references/rust-rules/api-from-not-into.md +0 -146
  70. package/template/agent/skills/rust-developer/references/rust-rules/api-impl-asref.md +0 -142
  71. package/template/agent/skills/rust-developer/references/rust-rules/api-impl-into.md +0 -160
  72. package/template/agent/skills/rust-developer/references/rust-rules/api-must-use.md +0 -125
  73. package/template/agent/skills/rust-developer/references/rust-rules/api-newtype-safety.md +0 -162
  74. package/template/agent/skills/rust-developer/references/rust-rules/api-non-exhaustive.md +0 -177
  75. package/template/agent/skills/rust-developer/references/rust-rules/api-parse-dont-validate.md +0 -184
  76. package/template/agent/skills/rust-developer/references/rust-rules/api-sealed-trait.md +0 -168
  77. package/template/agent/skills/rust-developer/references/rust-rules/api-serde-optional.md +0 -182
  78. package/template/agent/skills/rust-developer/references/rust-rules/api-typestate.md +0 -199
  79. package/template/agent/skills/rust-developer/references/rust-rules/async-bounded-channel.md +0 -175
  80. package/template/agent/skills/rust-developer/references/rust-rules/async-broadcast-pubsub.md +0 -185
  81. package/template/agent/skills/rust-developer/references/rust-rules/async-cancellation-token.md +0 -203
  82. package/template/agent/skills/rust-developer/references/rust-rules/async-clone-before-await.md +0 -171
  83. package/template/agent/skills/rust-developer/references/rust-rules/async-join-parallel.md +0 -158
  84. package/template/agent/skills/rust-developer/references/rust-rules/async-joinset-structured.md +0 -195
  85. package/template/agent/skills/rust-developer/references/rust-rules/async-mpsc-queue.md +0 -171
  86. package/template/agent/skills/rust-developer/references/rust-rules/async-no-lock-await.md +0 -156
  87. package/template/agent/skills/rust-developer/references/rust-rules/async-oneshot-response.md +0 -191
  88. package/template/agent/skills/rust-developer/references/rust-rules/async-select-racing.md +0 -198
  89. package/template/agent/skills/rust-developer/references/rust-rules/async-spawn-blocking.md +0 -154
  90. package/template/agent/skills/rust-developer/references/rust-rules/async-tokio-fs.md +0 -167
  91. package/template/agent/skills/rust-developer/references/rust-rules/async-tokio-runtime.md +0 -169
  92. package/template/agent/skills/rust-developer/references/rust-rules/async-try-join.md +0 -172
  93. package/template/agent/skills/rust-developer/references/rust-rules/async-watch-latest.md +0 -189
  94. package/template/agent/skills/rust-developer/references/rust-rules/doc-all-public.md +0 -113
  95. package/template/agent/skills/rust-developer/references/rust-rules/doc-cargo-metadata.md +0 -147
  96. package/template/agent/skills/rust-developer/references/rust-rules/doc-errors-section.md +0 -122
  97. package/template/agent/skills/rust-developer/references/rust-rules/doc-examples-section.md +0 -161
  98. package/template/agent/skills/rust-developer/references/rust-rules/doc-hidden-setup.md +0 -149
  99. package/template/agent/skills/rust-developer/references/rust-rules/doc-intra-links.md +0 -138
  100. package/template/agent/skills/rust-developer/references/rust-rules/doc-link-types.md +0 -169
  101. package/template/agent/skills/rust-developer/references/rust-rules/doc-module-inner.md +0 -116
  102. package/template/agent/skills/rust-developer/references/rust-rules/doc-panics-section.md +0 -128
  103. package/template/agent/skills/rust-developer/references/rust-rules/doc-question-mark.md +0 -136
  104. package/template/agent/skills/rust-developer/references/rust-rules/doc-safety-section.md +0 -131
  105. package/template/agent/skills/rust-developer/references/rust-rules/err-anyhow-app.md +0 -179
  106. package/template/agent/skills/rust-developer/references/rust-rules/err-context-chain.md +0 -144
  107. package/template/agent/skills/rust-developer/references/rust-rules/err-custom-type.md +0 -152
  108. package/template/agent/skills/rust-developer/references/rust-rules/err-doc-errors.md +0 -145
  109. package/template/agent/skills/rust-developer/references/rust-rules/err-expect-bugs-only.md +0 -133
  110. package/template/agent/skills/rust-developer/references/rust-rules/err-from-impl.md +0 -152
  111. package/template/agent/skills/rust-developer/references/rust-rules/err-lowercase-msg.md +0 -124
  112. package/template/agent/skills/rust-developer/references/rust-rules/err-no-unwrap-prod.md +0 -115
  113. package/template/agent/skills/rust-developer/references/rust-rules/err-question-mark.md +0 -151
  114. package/template/agent/skills/rust-developer/references/rust-rules/err-result-over-panic.md +0 -130
  115. package/template/agent/skills/rust-developer/references/rust-rules/err-source-chain.md +0 -155
  116. package/template/agent/skills/rust-developer/references/rust-rules/err-thiserror-lib.md +0 -171
  117. package/template/agent/skills/rust-developer/references/rust-rules/lint-cargo-metadata.md +0 -138
  118. package/template/agent/skills/rust-developer/references/rust-rules/lint-deny-correctness.md +0 -107
  119. package/template/agent/skills/rust-developer/references/rust-rules/lint-missing-docs.md +0 -154
  120. package/template/agent/skills/rust-developer/references/rust-rules/lint-pedantic-selective.md +0 -118
  121. package/template/agent/skills/rust-developer/references/rust-rules/lint-rustfmt-check.md +0 -157
  122. package/template/agent/skills/rust-developer/references/rust-rules/lint-unsafe-doc.md +0 -133
  123. package/template/agent/skills/rust-developer/references/rust-rules/lint-warn-complexity.md +0 -131
  124. package/template/agent/skills/rust-developer/references/rust-rules/lint-warn-perf.md +0 -136
  125. package/template/agent/skills/rust-developer/references/rust-rules/lint-warn-style.md +0 -135
  126. package/template/agent/skills/rust-developer/references/rust-rules/lint-warn-suspicious.md +0 -122
  127. package/template/agent/skills/rust-developer/references/rust-rules/lint-workspace-lints.md +0 -172
  128. package/template/agent/skills/rust-developer/references/rust-rules/mem-arena-allocator.md +0 -168
  129. package/template/agent/skills/rust-developer/references/rust-rules/mem-arrayvec.md +0 -142
  130. package/template/agent/skills/rust-developer/references/rust-rules/mem-assert-type-size.md +0 -168
  131. package/template/agent/skills/rust-developer/references/rust-rules/mem-avoid-format.md +0 -147
  132. package/template/agent/skills/rust-developer/references/rust-rules/mem-box-large-variant.md +0 -158
  133. package/template/agent/skills/rust-developer/references/rust-rules/mem-boxed-slice.md +0 -139
  134. package/template/agent/skills/rust-developer/references/rust-rules/mem-clone-from.md +0 -147
  135. package/template/agent/skills/rust-developer/references/rust-rules/mem-compact-string.md +0 -149
  136. package/template/agent/skills/rust-developer/references/rust-rules/mem-reuse-collections.md +0 -174
  137. package/template/agent/skills/rust-developer/references/rust-rules/mem-smaller-integers.md +0 -159
  138. package/template/agent/skills/rust-developer/references/rust-rules/mem-smallvec.md +0 -138
  139. package/template/agent/skills/rust-developer/references/rust-rules/mem-thinvec.md +0 -142
  140. package/template/agent/skills/rust-developer/references/rust-rules/mem-with-capacity.md +0 -156
  141. package/template/agent/skills/rust-developer/references/rust-rules/mem-write-over-format.md +0 -172
  142. package/template/agent/skills/rust-developer/references/rust-rules/mem-zero-copy.md +0 -164
  143. package/template/agent/skills/rust-developer/references/rust-rules/name-acronym-word.md +0 -99
  144. package/template/agent/skills/rust-developer/references/rust-rules/name-as-free.md +0 -104
  145. package/template/agent/skills/rust-developer/references/rust-rules/name-consts-screaming.md +0 -94
  146. package/template/agent/skills/rust-developer/references/rust-rules/name-crate-no-rs.md +0 -78
  147. package/template/agent/skills/rust-developer/references/rust-rules/name-funcs-snake.md +0 -76
  148. package/template/agent/skills/rust-developer/references/rust-rules/name-into-ownership.md +0 -123
  149. package/template/agent/skills/rust-developer/references/rust-rules/name-is-has-bool.md +0 -127
  150. package/template/agent/skills/rust-developer/references/rust-rules/name-iter-convention.md +0 -129
  151. package/template/agent/skills/rust-developer/references/rust-rules/name-iter-method.md +0 -131
  152. package/template/agent/skills/rust-developer/references/rust-rules/name-iter-type-match.md +0 -142
  153. package/template/agent/skills/rust-developer/references/rust-rules/name-lifetime-short.md +0 -86
  154. package/template/agent/skills/rust-developer/references/rust-rules/name-no-get-prefix.md +0 -154
  155. package/template/agent/skills/rust-developer/references/rust-rules/name-to-expensive.md +0 -118
  156. package/template/agent/skills/rust-developer/references/rust-rules/name-type-param-single.md +0 -92
  157. package/template/agent/skills/rust-developer/references/rust-rules/name-types-camel.md +0 -65
  158. package/template/agent/skills/rust-developer/references/rust-rules/name-variants-camel.md +0 -101
  159. package/template/agent/skills/rust-developer/references/rust-rules/opt-bounds-check.md +0 -161
  160. package/template/agent/skills/rust-developer/references/rust-rules/opt-cache-friendly.md +0 -187
  161. package/template/agent/skills/rust-developer/references/rust-rules/opt-codegen-units.md +0 -142
  162. package/template/agent/skills/rust-developer/references/rust-rules/opt-cold-unlikely.md +0 -152
  163. package/template/agent/skills/rust-developer/references/rust-rules/opt-inline-always-rare.md +0 -141
  164. package/template/agent/skills/rust-developer/references/rust-rules/opt-inline-never-cold.md +0 -181
  165. package/template/agent/skills/rust-developer/references/rust-rules/opt-inline-small.md +0 -160
  166. package/template/agent/skills/rust-developer/references/rust-rules/opt-likely-hint.md +0 -171
  167. package/template/agent/skills/rust-developer/references/rust-rules/opt-lto-release.md +0 -130
  168. package/template/agent/skills/rust-developer/references/rust-rules/opt-pgo-profile.md +0 -167
  169. package/template/agent/skills/rust-developer/references/rust-rules/opt-simd-portable.md +0 -144
  170. package/template/agent/skills/rust-developer/references/rust-rules/opt-target-cpu.md +0 -154
  171. package/template/agent/skills/rust-developer/references/rust-rules/own-arc-shared.md +0 -141
  172. package/template/agent/skills/rust-developer/references/rust-rules/own-borrow-over-clone.md +0 -95
  173. package/template/agent/skills/rust-developer/references/rust-rules/own-clone-explicit.md +0 -135
  174. package/template/agent/skills/rust-developer/references/rust-rules/own-copy-small.md +0 -124
  175. package/template/agent/skills/rust-developer/references/rust-rules/own-cow-conditional.md +0 -135
  176. package/template/agent/skills/rust-developer/references/rust-rules/own-lifetime-elision.md +0 -134
  177. package/template/agent/skills/rust-developer/references/rust-rules/own-move-large.md +0 -134
  178. package/template/agent/skills/rust-developer/references/rust-rules/own-mutex-interior.md +0 -105
  179. package/template/agent/skills/rust-developer/references/rust-rules/own-rc-single-thread.md +0 -65
  180. package/template/agent/skills/rust-developer/references/rust-rules/own-refcell-interior.md +0 -97
  181. package/template/agent/skills/rust-developer/references/rust-rules/own-rwlock-readers.md +0 -122
  182. package/template/agent/skills/rust-developer/references/rust-rules/own-slice-over-vec.md +0 -119
  183. package/template/agent/skills/rust-developer/references/rust-rules/perf-black-box-bench.md +0 -153
  184. package/template/agent/skills/rust-developer/references/rust-rules/perf-chain-avoid.md +0 -136
  185. package/template/agent/skills/rust-developer/references/rust-rules/perf-collect-into.md +0 -133
  186. package/template/agent/skills/rust-developer/references/rust-rules/perf-collect-once.md +0 -120
  187. package/template/agent/skills/rust-developer/references/rust-rules/perf-drain-reuse.md +0 -137
  188. package/template/agent/skills/rust-developer/references/rust-rules/perf-entry-api.md +0 -134
  189. package/template/agent/skills/rust-developer/references/rust-rules/perf-extend-batch.md +0 -150
  190. package/template/agent/skills/rust-developer/references/rust-rules/perf-iter-lazy.md +0 -123
  191. package/template/agent/skills/rust-developer/references/rust-rules/perf-iter-over-index.md +0 -113
  192. package/template/agent/skills/rust-developer/references/rust-rules/perf-profile-first.md +0 -175
  193. package/template/agent/skills/rust-developer/references/rust-rules/perf-release-profile.md +0 -149
  194. package/template/agent/skills/rust-developer/references/rust-rules/proj-bin-dir.md +0 -142
  195. package/template/agent/skills/rust-developer/references/rust-rules/proj-flat-small.md +0 -133
  196. package/template/agent/skills/rust-developer/references/rust-rules/proj-lib-main-split.md +0 -148
  197. package/template/agent/skills/rust-developer/references/rust-rules/proj-mod-by-feature.md +0 -130
  198. package/template/agent/skills/rust-developer/references/rust-rules/proj-mod-rs-dir.md +0 -120
  199. package/template/agent/skills/rust-developer/references/rust-rules/proj-prelude-module.md +0 -155
  200. package/template/agent/skills/rust-developer/references/rust-rules/proj-pub-crate-internal.md +0 -139
  201. package/template/agent/skills/rust-developer/references/rust-rules/proj-pub-super-parent.md +0 -135
  202. package/template/agent/skills/rust-developer/references/rust-rules/proj-pub-use-reexport.md +0 -162
  203. package/template/agent/skills/rust-developer/references/rust-rules/proj-workspace-deps.md +0 -186
  204. package/template/agent/skills/rust-developer/references/rust-rules/proj-workspace-large.md +0 -162
  205. package/template/agent/skills/rust-developer/references/rust-rules/test-arrange-act-assert.md +0 -160
  206. package/template/agent/skills/rust-developer/references/rust-rules/test-cfg-test-module.md +0 -151
  207. package/template/agent/skills/rust-developer/references/rust-rules/test-criterion-bench.md +0 -171
  208. package/template/agent/skills/rust-developer/references/rust-rules/test-descriptive-names.md +0 -142
  209. package/template/agent/skills/rust-developer/references/rust-rules/test-doctest-examples.md +0 -168
  210. package/template/agent/skills/rust-developer/references/rust-rules/test-fixture-raii.md +0 -151
  211. package/template/agent/skills/rust-developer/references/rust-rules/test-integration-dir.md +0 -144
  212. package/template/agent/skills/rust-developer/references/rust-rules/test-mock-traits.md +0 -189
  213. package/template/agent/skills/rust-developer/references/rust-rules/test-mockall-mocking.md +0 -226
  214. package/template/agent/skills/rust-developer/references/rust-rules/test-proptest-properties.md +0 -161
  215. package/template/agent/skills/rust-developer/references/rust-rules/test-should-panic.md +0 -130
  216. package/template/agent/skills/rust-developer/references/rust-rules/test-tokio-async.md +0 -154
  217. package/template/agent/skills/rust-developer/references/rust-rules/test-use-super.md +0 -127
  218. package/template/agent/skills/rust-developer/references/rust-rules/type-enum-states.md +0 -154
  219. package/template/agent/skills/rust-developer/references/rust-rules/type-generic-bounds.md +0 -142
  220. package/template/agent/skills/rust-developer/references/rust-rules/type-never-diverge.md +0 -146
  221. package/template/agent/skills/rust-developer/references/rust-rules/type-newtype-ids.md +0 -160
  222. package/template/agent/skills/rust-developer/references/rust-rules/type-newtype-validated.md +0 -159
  223. package/template/agent/skills/rust-developer/references/rust-rules/type-no-stringly.md +0 -144
  224. package/template/agent/skills/rust-developer/references/rust-rules/type-option-nullable.md +0 -137
  225. package/template/agent/skills/rust-developer/references/rust-rules/type-phantom-marker.md +0 -188
  226. package/template/agent/skills/rust-developer/references/rust-rules/type-repr-transparent.md +0 -143
  227. package/template/agent/skills/rust-developer/references/rust-rules/type-result-fallible.md +0 -131
  228. package/template/agent/skills/saas-architect/SKILL.md +0 -139
  229. package/template/agent/skills/security-engineer/SKILL.md +0 -133
  230. package/template/agent/skills/seo-specialist/SKILL.md +0 -130
  231. package/template/agent/skills/solo-founder-ops/SKILL.md +0 -56
@@ -1,119 +0,0 @@
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
@@ -1,58 +0,0 @@
1
- ---
2
- name: pricing-psychologist
3
- description: Use when designing pricing, paywalls, free-to-paid conversion, or optimizing upgrade flows
4
- ---
5
-
6
- # Pricing Psychologist Lens
7
-
8
- ## Identity
9
- You focus on value capture, anchoring, and conversion math. You believe pricing is a feature, not an afterthought. You optimize for revenue and retention, not just user acquisition.
10
-
11
- ## Core Instincts
12
- - **Value dictates price** — charge based on the value delivered, not the cost to build it
13
- - **Friction is the enemy of conversion** — every extra step in the checkout flow kills conversion
14
- - **Perception is reality** — how a price is presented matters as much as the amount itself
15
- - **Different products need different models** — a mobile app paywall requires a different strategy than a B2B SaaS
16
-
17
- ## Core Knowledge
18
-
19
- **Pricing Models by Product Type:**
20
- - **Mobile app:** Freemium + subscription ($2.99-$9.99/mo) or one-time IAP ($4.99-$29.99)
21
- - **SaaS:** Free tier → $9-$29/mo starter → $49-$99/mo pro (3-tier standard is best)
22
- - **Chrome extension:** Freemium most common; premium at $3-$10/mo or $29-$99 lifetime
23
-
24
- **Pricing Page Psychology:**
25
- - **Anchoring:** Show the most expensive plan first or highlight the middle plan
26
- - **Decoy pricing:** Add a plan that makes the target plan look like a no-brainer deal
27
- - **Annual discount:** Show explicit savings (e.g., "Save 20%", "2 months free") for annual plans
28
-
29
- **Free-to-Paid Strategy:**
30
- - **Feature gating:** Lock premium features (best for mobile and extensions)
31
- - **Usage limits:** E.g., 5 free uses/day (excellent for AI wrappers and utilities)
32
- - **Time trials:** 7/14/30 days (time trials convert better for SaaS products)
33
-
34
- **Price Testing Shortcuts:**
35
- - For low traffic: sequential A/B testing (change price for 2 weeks, measure) or customer interviews ("Would you pay $X?")
36
- - For high traffic: Stripe test mode with active price variations
37
-
38
- **Upgrade Triggers:**
39
- - Hit usage limit
40
- - Discover locked feature
41
- - In-app prompt following an "Aha!" value moment
42
- - Email sequence after trial day 3/7/12
43
-
44
- **Key Formulas:**
45
- - Trial-to-paid conversion: target > 15% (SaaS), > 5% (mobile)
46
- - LTV = ARPU × (1 / monthly_churn_rate)
47
- - Payback period = CAC / monthly_revenue_per_user (Target < 3 months for indie)
48
-
49
- ## Questions You Always Ask
50
- - What is the specific product type (SaaS, mobile, extension, info product)?
51
- - What is the "Aha!" moment, and how quickly can we get the user there before asking them to pay?
52
- - Are we using Stripe Purchasing Power Parity (PPP) or Apple's regional pricing tiers?
53
-
54
- ## Red Flags / Anti-Patterns
55
- - [ ] Asking a user to pay before they've experienced any value
56
- - [ ] Over-complicating tiers with too many variables
57
- - [ ] Not offering an annual subscription discount
58
- - [ ] Building custom billing infrastructure instead of using Stripe Checkout/Customer Portal
@@ -1,194 +0,0 @@
1
- ---
2
- name: real-time-features
3
- description: Use when implementing WebSockets, Server-Sent Events (SSE), live collaboration, presence indicators, real-time notifications, or choosing between real-time transport options
4
- ---
5
-
6
- # Real-Time Features Lens
7
-
8
- > **Philosophy:** Real-time is expensive infrastructure. Use it only where it's perceptibly better than polling.
9
- > The cheapest real-time solution is a fast refresh interval with good UX.
10
-
11
- ---
12
-
13
- ## Core Instincts
14
-
15
- - **Start with polling** — 5-second polling covers 90% of "live" use cases with zero infra complexity
16
- - **SSE before WebSockets** — SSE is simpler, HTTP/2-compatible, easy to scale; use WebSockets only for bidirectional needs
17
- - **Connection lifecycle is state** — track connect/disconnect, handle reconnects, never assume connection is alive
18
- - **Scale out = sticky sessions or pub/sub** — WebSockets break horizontal scaling without Redis Pub/Sub or a broker
19
- - **Real-time is optional** — always design a fallback (last-write-wins, reconciliation on reconnect)
20
-
21
- ---
22
-
23
- ## Technology Selection
24
-
25
- ```
26
- Which real-time tech to use?
27
-
28
- Need bidirectional (client AND server send)?
29
- ├── YES → WebSocket
30
- │ (chat, collaborative editing, gaming, live cursors)
31
- └── NO → Server-Sent Events (SSE) or Polling
32
-
33
- └── Data changes frequently + immediate delivery matters?
34
- ├── YES → SSE
35
- │ (live notifications, dashboards, feeds)
36
- └── NO → Long polling or periodic polling
37
- (< 5 changes/min: just poll every 5s)
38
- ```
39
-
40
- ---
41
-
42
- ## Technology Comparison
43
-
44
- | Feature | Polling | SSE | WebSocket |
45
- |---------|---------|-----|-----------|
46
- | Complexity | ⭐ Low | ⭐⭐ Medium | ⭐⭐⭐ High |
47
- | Bidirectional | ❌ | ❌ | ✅ |
48
- | HTTP/2 compatible | ✅ | ✅ | ❌ |
49
- | Horizontal scaling | ✅ Easy | ⚠️ Sticky sessions | ⚠️ Redis Pub/Sub needed |
50
- | Firewall / proxy friendly | ✅ | ✅ | ⚠️ Sometimes blocked |
51
- | Browser reconnect | N/A | ✅ Automatic (EventSource) | Manual |
52
- | Use case | Dashboards, status | Notifications, feeds | Chat, collab |
53
-
54
- ---
55
-
56
- ## SSE Implementation Pattern
57
-
58
- ```javascript
59
- // Server (Node.js / Express)
60
- app.get('/events', (req, res) => {
61
- // Auth first!
62
- if (!req.user) return res.sendStatus(401);
63
-
64
- res.writeHead(200, {
65
- 'Content-Type': 'text/event-stream',
66
- 'Cache-Control': 'no-cache',
67
- 'Connection': 'keep-alive',
68
- });
69
-
70
- // Send keepalive every 15s (prevents proxy timeout at 30s)
71
- const keepalive = setInterval(() => res.write(': keepalive\n\n'), 15000);
72
-
73
- // Register client
74
- clients.set(req.user.id, res);
75
-
76
- // Cleanup on disconnect
77
- req.on('close', () => {
78
- clearInterval(keepalive);
79
- clients.delete(req.user.id);
80
- });
81
- });
82
-
83
- // Push to client
84
- function pushToUser(userId, event, data) {
85
- const client = clients.get(userId);
86
- if (client) client.write(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`);
87
- }
88
- ```
89
-
90
- ---
91
-
92
- ## WebSocket Scaling Pattern
93
-
94
- ```
95
- Single server: Direct WebSocket connection works fine
96
- Multi-server: Client connects to Server A, event fires on Server B
97
- → Server B can't reach Server A's client
98
- → Solution: Redis Pub/Sub
99
-
100
- Architecture:
101
- [Client] ←WS→ [Server A] ←→ [Redis Pub/Sub] ←→ [Server B] ←WS→ [Client]
102
-
103
- Server publishes to Redis channel:
104
- await redis.publish(`user:${userId}`, JSON.stringify(event))
105
-
106
- Server subscribes on connect:
107
- await redis.subscribe(`user:${userId}`, (message) => {
108
- ws.send(message)
109
- })
110
- ```
111
-
112
- ---
113
-
114
- ## Reconnection & State Reconciliation
115
-
116
- ```javascript
117
- // Client-side: always implement reconnect with backoff
118
- const MAX_RETRIES = 5;
119
- let retries = 0;
120
-
121
- function connect() {
122
- const ws = new WebSocket(url);
123
-
124
- ws.onopen = () => { retries = 0; };
125
-
126
- ws.onclose = () => {
127
- if (retries < MAX_RETRIES) {
128
- setTimeout(connect, Math.min(1000 * 2 ** retries, 30000));
129
- retries++;
130
- }
131
- };
132
- }
133
-
134
- // Server-side: on reconnect, send missed events since lastEventId
135
- // SSE: browser sends Last-Event-ID header automatically
136
- // WebSocket: client sends lastEventId on connect message
137
- ```
138
-
139
- ---
140
-
141
- ## ❌ Anti-Patterns to Avoid
142
-
143
- | ❌ NEVER DO | Why | ✅ DO INSTEAD |
144
- |------------|-----|--------------|
145
- | WebSocket for unidirectional updates | SSE is simpler for same use case | Use SSE for server→client only |
146
- | In-memory client registry | Breaks on horizontal scale | Redis Pub/Sub for multi-instance |
147
- | No keepalive messages | Proxy kills idle connections at 30–60s | Send `: keepalive` every 15s |
148
- | No reconnect logic on client | Single network hiccup = broken UI | Exponential backoff reconnect |
149
- | Auth skipped on WebSocket handshake | WS connections are permanent — auth must be first | Auth during HTTP upgrade (before WS established) |
150
- | Sending all state on every event | Expensive; clients drift on missed events | Send diffs; reconcile on reconnect |
151
-
152
- ---
153
-
154
- ## Questions You Always Ask
155
-
156
- **When choosing real-time:**
157
- - Does this require bidirectional communication, or is server→client enough?
158
- - Would polling every 5–10 seconds give acceptable UX?
159
- - How many concurrent connections do we expect at peak? (Connection limit planning)
160
-
161
- **When implementing:**
162
- - Is there auth on the WebSocket handshake/SSE endpoint?
163
- - Is there a keepalive to prevent proxy timeouts?
164
- - What's the reconnection strategy on the client?
165
- - How is this scaled across multiple server instances?
166
-
167
- ---
168
-
169
- ## Red Flags
170
-
171
- **Must fix:**
172
- - [ ] No auth on WebSocket / SSE endpoint
173
- - [ ] In-memory client registry on multi-instance deployment
174
- - [ ] No keepalive (proxy will terminate idle connections)
175
-
176
- **Should fix:**
177
- - [ ] No reconnect logic on client
178
- - [ ] WebSocket used where SSE would suffice
179
- - [ ] No strategy for clients that miss events while disconnected
180
-
181
- ---
182
-
183
- ## Who to Pair With
184
- - `backend-developer` — for server architecture and Redis Pub/Sub
185
- - `frontend-developer` — for client-side connection management
186
- - `devops-engineer` — for WebSocket-aware load balancer config
187
-
188
- ---
189
-
190
- ## Tools
191
- **Managed:** Supabase Realtime · Pusher · Ably · Liveblocks (collaboration)
192
- **Self-hosted:** Socket.IO (WebSocket + SSE fallback) · ws (raw WebSocket)
193
- **Browser:** `EventSource` (SSE, built-in) · `WebSocket` (built-in)
194
- **Scaling:** Upstash Redis · Redis with ioredis
@@ -1,123 +0,0 @@
1
- ---
2
- name: retention-specialist
3
- description: Use when improving user retention, designing onboarding flows, reducing churn, analyzing engagement, or building re-engagement campaigns
4
- ---
5
-
6
- # Retention Specialist Lens
7
-
8
- > **Philosophy:** Retention is the multiplier on everything else. Double retention = double LTV.
9
- > Acquisition brings users in; retention determines if your business exists in 12 months.
10
-
11
- ---
12
-
13
- ## Core Instincts
14
-
15
- - **Retention is a product problem, not a marketing problem** — you can't lifecycle-email your way out of a bad product
16
- - **Find the aha moment first** — the single action most correlated with long-term retention
17
- - **Day 1 retention is the most important** — users who don't return on Day 1 rarely return at all
18
- - **Habit formation takes 21–66 days** — retention strategy must operate over weeks, not days
19
- - **Segment by engagement tier** — power users, casual users, and at-risk users need different interventions
20
-
21
- ---
22
-
23
- ## Retention Benchmarks
24
-
25
- ### Mobile Apps (by category) — 2024 benchmarks
26
-
27
- | Category | D1 (good) | D7 (good) | D30 (good) |
28
- |----------|-----------|-----------|------------|
29
- | Games | > 28% | > 12% | > 6% |
30
- | Finance / Fintech | > 25% | > 16% | > 10% |
31
- | Education | > 26% | > 16% | > 7% |
32
- | Entertainment | > 27% | > 16% | > 5% |
33
- | Health & Fitness | > 25% | > 10% | > 5% |
34
- | Social / Messaging | > 27% | > 11% | > 6% |
35
- | Productivity / Utilities | > 24% | > 15% | > 5% |
36
-
37
- **Context:** Industry-wide D1 average is ~25–28%; D7 ~13–18%; D30 ~5–8%. Apps hitting D30 > 15% are genuinely strong performers.
38
- **General rule:** D30 < 5% = investigate immediately. D30 > 12% = strong. D30 > 20% = exceptional.
39
-
40
- ### SaaS / Web Apps — 2024 benchmarks
41
- | Metric | Poor | Average | Good |
42
- |--------|------|---------|------|
43
- | Monthly churn (B2B SaaS) | > 8% | 3.5–5% | < 2% |
44
- | Monthly churn (B2C / consumer) | > 10% | 5–8% | < 3% |
45
- | Annual churn (B2B) | > 60% | 30–50% | < 20% |
46
- | NPS | < 20 | 30–50 | > 50 |
47
-
48
- **Context:** Industry average B2B SaaS monthly churn is ~4.2% (Recurly 2024). "< 2% monthly" is excellent / enterprise-level, not just "good".
49
-
50
- ---
51
-
52
- ## Push Notification Benchmarks
53
-
54
- | Platform | Average open rate | Good open rate |
55
- |----------|------------------|---------------|
56
- | iOS | 3–5% | > 7% |
57
- | Android | 4–7% | > 10% |
58
- | Email re-engagement | 10–15% | > 20% |
59
-
60
- **Push notification rules:**
61
- - Personalized > generic (2–3× higher open rate)
62
- - Time-based (sent at user's local peak usage time) > blast sends
63
- - Opt-in rate drops if you send > 1 notification/day
64
-
65
- ---
66
-
67
- ## ❌ Anti-Patterns to Avoid
68
-
69
- | ❌ NEVER DO | Why | ✅ DO INSTEAD |
70
- |------------|-----|--------------|
71
- | Lifecycle emails before finding aha moment | Emails can't fix a broken product | Find and shorten path to aha moment first |
72
- | Generic "come back" push notifications | Low open rate, high unsubscribe | Trigger-based, personalized context |
73
- | Daily active user target only | DAU ignores depth of engagement | Track DAU + session depth + feature usage |
74
- | Ignore Day 1 drop-off | 60–80% of users churn on Day 1 | Instrument and fix Day 1 experience first |
75
- | Same onboarding for all user types | Different users need different paths | Personalize onboarding from first question |
76
- | Cancel flow with no save attempt | 20–40% of cancellers are saveable | Offer pause, downgrade, or discount before cancel |
77
-
78
- ---
79
-
80
- ## Questions You Always Ask
81
-
82
- **When diagnosing retention:**
83
- - What does the Day 1/7/30 retention curve look like? Where's the steepest drop?
84
- - What's the aha moment, and what % of users reach it in session 1?
85
- - What do retained users do differently from churned users in week 1?
86
-
87
- **When designing retention interventions:**
88
- - Is this a product problem (users don't understand value) or a habit problem (value understood, not habitual)?
89
- - What's the churn reason? (Run exit survey — "I didn't use it enough" vs "too expensive" vs "found alternative")
90
-
91
- ---
92
-
93
- ## Red Flags
94
-
95
- **Must fix:**
96
- - [ ] Day 1 retention < 20% (broken first experience)
97
- - [ ] No aha moment defined or instrumented
98
- - [ ] Monthly churn > 8% with no active investigation
99
- - [ ] No exit survey / churn reason tracking
100
-
101
- **Should fix:**
102
- - [ ] No push notification strategy (relying only on email)
103
- - [ ] No in-app re-engagement for users inactive > 7 days
104
- - [ ] Onboarding identical for all user segments
105
- - [ ] No cancel flow / save attempt
106
-
107
- ---
108
-
109
- ## Who to Pair With
110
- - `product-manager` — for aha moment and activation event design
111
- - `growth-hacker` — for AARRR funnel optimization
112
- - `data-analyst` — for cohort analysis and retention curve modeling
113
-
114
- ---
115
-
116
- ## Key Formulas
117
-
118
- ```
119
- Retention rate (Day N) = users_still_active_on_day_N / users_who_signed_up_N_days_ago
120
- Monthly churn = churned_users_this_month / users_at_start_of_month
121
- Annual churn ≈ 1 - (1 - monthly_churn)^12
122
- NPS = % Promoters (9–10) - % Detractors (0–6)
123
- ```