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,275 @@
1
+ # Vanilla JS/TS + Web Components Reference
2
+
3
+ > **Philosophy:** Zero dependencies. Platform APIs first.
4
+ > The best framework is the one you don't need.
5
+
6
+ ---
7
+
8
+ ## Project Setup & Detection
9
+
10
+ **Stack indicators:** No framework dependency in `package.json`. Plain `index.html` + `<script>` tags, or Vite with no framework plugin.
11
+
12
+ **Key config files:**
13
+
14
+ | File | Purpose |
15
+ |------|---------|
16
+ | `index.html` | Entry point |
17
+ | `vite.config.ts` | Build tool (if using Vite) |
18
+ | `tsconfig.json` | TypeScript configuration |
19
+ | `package.json` | Dependencies (minimal or none) |
20
+
21
+ **Recommended project structure:**
22
+
23
+ ```
24
+ src/
25
+ components/
26
+ header.ts # Custom elements / component modules
27
+ modal.ts
28
+ services/
29
+ api.ts # Fetch wrapper
30
+ storage.ts # localStorage abstraction
31
+ utils/
32
+ dom.ts # DOM utility functions
33
+ events.ts # Event system
34
+ styles/
35
+ main.css # Global styles
36
+ components/ # Component-scoped CSS
37
+ main.ts # Entry point
38
+ router.ts # Client-side router (if SPA)
39
+ index.html
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Architecture Patterns
45
+
46
+ ### Web Components (Custom Elements)
47
+
48
+ ```ts
49
+ class MyCounter extends HTMLElement {
50
+ #count = 0
51
+ #shadow: ShadowRoot
52
+
53
+ constructor() {
54
+ super()
55
+ this.#shadow = this.attachShadow({ mode: 'open' })
56
+ }
57
+
58
+ connectedCallback() {
59
+ this.render()
60
+ }
61
+
62
+ render() {
63
+ this.#shadow.innerHTML = `
64
+ <style>
65
+ button { font-size: 1rem; padding: 0.5rem 1rem; cursor: pointer; }
66
+ </style>
67
+ <button>${this.#count}</button>
68
+ `
69
+ this.#shadow.querySelector('button')!
70
+ .addEventListener('click', () => { this.#count++; this.render() })
71
+ }
72
+ }
73
+
74
+ customElements.define('my-counter', MyCounter)
75
+ ```
76
+
77
+ ### Module Pattern
78
+
79
+ ```ts
80
+ // services/api.ts
81
+ const BASE_URL = '/api'
82
+
83
+ export async function get<T>(path: string): Promise<T> {
84
+ const res = await fetch(`${BASE_URL}${path}`)
85
+ if (!res.ok) throw new Error(`HTTP ${res.status}`)
86
+ return res.json()
87
+ }
88
+
89
+ export async function post<T>(path: string, body: unknown): Promise<T> {
90
+ const res = await fetch(`${BASE_URL}${path}`, {
91
+ method: 'POST',
92
+ headers: { 'Content-Type': 'application/json' },
93
+ body: JSON.stringify(body),
94
+ })
95
+ if (!res.ok) throw new Error(`HTTP ${res.status}`)
96
+ return res.json()
97
+ }
98
+ ```
99
+
100
+ ### State Management
101
+
102
+ | Approach | Use When |
103
+ |----------|----------|
104
+ | **Module-level variables** | Simple state, single module access |
105
+ | **Custom EventTarget** | Pub/sub across modules |
106
+ | **Proxy-based reactivity** | Automatic DOM updates |
107
+ | **URL state** (`URLSearchParams`) | Shareable, bookmarkable state |
108
+
109
+ **Proxy-based reactivity:**
110
+
111
+ ```ts
112
+ function createStore<T extends object>(initial: T, onChange: () => void): T {
113
+ return new Proxy(initial, {
114
+ set(target, prop, value) {
115
+ Reflect.set(target, prop, value)
116
+ onChange()
117
+ return true
118
+ }
119
+ })
120
+ }
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Performance Optimization
126
+
127
+ ### Modern Browser APIs to Use
128
+
129
+ | API | Purpose |
130
+ |-----|---------|
131
+ | `fetch` | Network requests (replaces XMLHttpRequest) |
132
+ | `IntersectionObserver` | Lazy loading, infinite scroll |
133
+ | `ResizeObserver` | Responsive components |
134
+ | `MutationObserver` | DOM change detection |
135
+ | `requestIdleCallback` | Defer non-critical work |
136
+ | `requestAnimationFrame` | Smooth animations |
137
+ | `Web Workers` | Offload heavy computation |
138
+ | `AbortController` | Cancel fetch requests |
139
+ | `structuredClone` | Deep clone objects |
140
+ | `URLPattern` | URL matching/routing |
141
+ | `View Transitions API` | Page transition animations |
142
+ | `Popover API` | Native popovers (no JS library) |
143
+ | `<dialog>` | Native modal dialogs |
144
+
145
+ ### Key Optimizations
146
+
147
+ 1. **Event delegation** — one listener on parent, not N listeners on children.
148
+
149
+ ```ts
150
+ // ❌ Bad: N listeners
151
+ items.forEach(item => item.addEventListener('click', handler))
152
+
153
+ // ✅ Good: 1 listener with delegation
154
+ list.addEventListener('click', (e) => {
155
+ const item = (e.target as HTMLElement).closest('[data-id]')
156
+ if (item) handleClick(item.dataset.id!)
157
+ })
158
+ ```
159
+
160
+ 2. **`DocumentFragment`** — batch DOM insertions.
161
+
162
+ ```ts
163
+ const fragment = document.createDocumentFragment()
164
+ items.forEach(item => {
165
+ const li = document.createElement('li')
166
+ li.textContent = item.name
167
+ fragment.appendChild(li)
168
+ })
169
+ list.appendChild(fragment) // single reflow
170
+ ```
171
+
172
+ 3. **CSS `content-visibility: auto`** — skip rendering off-screen content.
173
+
174
+ 4. **`<link rel="modulepreload">`** — preload ES modules.
175
+
176
+ 5. **`loading="lazy"`** on images and iframes — native lazy loading.
177
+
178
+ ---
179
+
180
+ ## Common Libraries (Minimal Dependencies)
181
+
182
+ | Category | Lightweight Pick | Why Not Full Framework |
183
+ |----------|-----------------|----------------------|
184
+ | **Routing** | `navigo` / custom History API | 2KB vs router libraries |
185
+ | **HTTP** | `fetch` (built-in) | No library needed |
186
+ | **Templating** | `lit-html` | Tagged templates, 5KB |
187
+ | **State** | `nanostores` | Framework-agnostic, 1KB |
188
+ | **Build** | `vite` | Fast, ESM-native |
189
+ | **Testing** | `vitest` | Fast, compatible |
190
+ | **E2E** | `playwright` | Cross-browser |
191
+ | **CSS** | CSS custom properties | Native variables |
192
+
193
+ ---
194
+
195
+ ## Anti-Patterns & Gotchas
196
+
197
+ | ❌ Don't | Why | ✅ Do Instead |
198
+ |----------|-----|---------------|
199
+ | `innerHTML` with user input | XSS vulnerability | `textContent` or sanitize |
200
+ | `document.write()` | Blocks parsing, destroys page | DOM manipulation methods |
201
+ | jQuery for new projects | Unnecessary, browser APIs suffice | Native `querySelector`, `fetch` |
202
+ | Sync XHR | Blocks main thread | `fetch` with async/await |
203
+ | `var` declarations | Hoisting bugs, no block scope | `const` / `let` |
204
+ | `==` loose equality | Type coercion bugs | `===` strict equality |
205
+ | Missing `type="module"` on scripts | No ES module support | `<script type="module">` |
206
+ | Global variables | Namespace pollution | ES modules |
207
+ | Polling for DOM changes | Wasteful | `MutationObserver` |
208
+ | `setTimeout` for animations | Inconsistent frame rate | `requestAnimationFrame` |
209
+
210
+ ---
211
+
212
+ ## Testing
213
+
214
+ | Layer | Tool | Purpose |
215
+ |-------|------|---------|
216
+ | **Unit** | Vitest | Functions, modules |
217
+ | **DOM** | Vitest + `happy-dom` | Component rendering |
218
+ | **E2E** | Playwright | Full browser flows |
219
+
220
+ ```ts
221
+ import { describe, it, expect } from 'vitest'
222
+ import { createStore } from '../src/store'
223
+
224
+ describe('Store', () => {
225
+ it('notifies on change', () => {
226
+ let called = false
227
+ const store = createStore({ count: 0 }, () => { called = true })
228
+ store.count = 1
229
+ expect(called).toBe(true)
230
+ })
231
+ })
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Deployment & Distribution
237
+
238
+ ### Static Hosting (Most Common)
239
+
240
+ ```bash
241
+ # Build (Vite)
242
+ vite build
243
+
244
+ # Output: dist/
245
+ ```
246
+
247
+ Deploy `dist/` to any static host: Cloudflare Pages, Netlify, Vercel, GitHub Pages, S3 + CloudFront.
248
+
249
+ ### No-Build Option
250
+
251
+ For simple projects, no build step needed:
252
+
253
+ ```html
254
+ <!DOCTYPE html>
255
+ <html>
256
+ <head>
257
+ <link rel="stylesheet" href="styles/main.css">
258
+ </head>
259
+ <body>
260
+ <script type="module" src="src/main.ts"></script>
261
+ </body>
262
+ </html>
263
+ ```
264
+
265
+ Modern browsers support ES modules natively. Use import maps for bare specifiers:
266
+
267
+ ```html
268
+ <script type="importmap">
269
+ {
270
+ "imports": {
271
+ "lit-html": "https://esm.sh/lit-html"
272
+ }
273
+ }
274
+ </script>
275
+ ```
@@ -0,0 +1,289 @@
1
+ # Vue 3 + Nuxt Reference
2
+
3
+ > **Philosophy:** Progressive framework. Reactivity-first. Convention over configuration.
4
+ > Vue makes the simple things simple and the complex things manageable.
5
+
6
+ ---
7
+
8
+ ## Project Setup & Detection
9
+
10
+ **Stack indicators:** `nuxt.config.ts` / `vue.config.js`, `package.json` with `vue` or `nuxt` dependency.
11
+
12
+ **Key config files:**
13
+
14
+ | File | Purpose |
15
+ |------|---------|
16
+ | `nuxt.config.ts` | Nuxt configuration (modules, plugins, runtime config) |
17
+ | `app.config.ts` | App-level configuration (reactive, client-side) |
18
+ | `tsconfig.json` | TypeScript configuration |
19
+ | `.env` | Environment variables |
20
+
21
+ **Recommended project structure (Nuxt 3):**
22
+
23
+ ```
24
+ app/
25
+ pages/
26
+ index.vue # Home (/), file-based routing
27
+ about.vue # /about
28
+ users/
29
+ [id].vue # /users/:id (dynamic route)
30
+ layouts/
31
+ default.vue # Default layout
32
+ dashboard.vue # Dashboard layout
33
+ components/
34
+ ui/ # Reusable UI components
35
+ forms/ # Form components
36
+ composables/ # Auto-imported composables (useAuth, etc.)
37
+ stores/ # Pinia stores
38
+ server/
39
+ api/ # Server API routes
40
+ middleware/ # Server middleware
41
+ plugins/ # Vue plugins
42
+ middleware/ # Route middleware (auth guards)
43
+ utils/ # Auto-imported utility functions
44
+ assets/ # Styles, images (processed by Vite)
45
+ public/ # Static files (served as-is)
46
+ ```
47
+
48
+ ---
49
+
50
+ ## Architecture Patterns
51
+
52
+ ### Composition API (Default)
53
+
54
+ ```vue
55
+ <script setup lang="ts">
56
+ import { ref, computed, onMounted } from 'vue'
57
+
58
+ const count = ref(0)
59
+ const doubled = computed(() => count.value * 2)
60
+
61
+ function increment() {
62
+ count.value++
63
+ }
64
+
65
+ onMounted(() => {
66
+ console.log('Component mounted')
67
+ })
68
+ </script>
69
+
70
+ <template>
71
+ <button @click="increment">{{ count }} ({{ doubled }})</button>
72
+ </template>
73
+ ```
74
+
75
+ ### State Management
76
+
77
+ | Approach | Use When |
78
+ |----------|----------|
79
+ | **Pinia** (recommended) | Global/shared state — devtools, SSR, TypeScript |
80
+ | **Composables** (`useState` in Nuxt) | SSR-safe state shared across components |
81
+ | **`ref`/`reactive`** | Component-local state |
82
+ | **URL state** (`useRoute().query`) | Filters, pagination, shareable state |
83
+
84
+ **Pinia store:**
85
+
86
+ ```ts
87
+ // stores/auth.ts
88
+ export const useAuthStore = defineStore('auth', () => {
89
+ const user = ref<User | null>(null)
90
+ const isLoggedIn = computed(() => !!user.value)
91
+
92
+ async function login(credentials: Credentials) {
93
+ user.value = await $fetch('/api/auth/login', { method: 'POST', body: credentials })
94
+ }
95
+
96
+ return { user, isLoggedIn, login }
97
+ })
98
+ ```
99
+
100
+ ### Data Fetching (Nuxt)
101
+
102
+ | Composable | Use When |
103
+ |------------|----------|
104
+ | **`useFetch`** | SSR + client — auto-deduplication, caching |
105
+ | **`useAsyncData`** | Custom async logic, multiple sources |
106
+ | **`$fetch`** | Client-only calls, server API routes, event handlers |
107
+ | **`useLazyFetch`** | Non-blocking fetch (shows page immediately) |
108
+
109
+ ```vue
110
+ <script setup>
111
+ const { data: posts, pending, error } = await useFetch('/api/posts')
112
+ </script>
113
+ ```
114
+
115
+ ---
116
+
117
+ ## Performance Optimization
118
+
119
+ ### Key Optimizations
120
+
121
+ 1. **Auto-imports** — Nuxt auto-imports composables, components, and utils. No manual imports needed.
122
+
123
+ 2. **`<Suspense>` and `<NuxtLoadingIndicator>`** — built-in loading states.
124
+
125
+ 3. **`defineAsyncComponent`** — lazy load heavy components.
126
+
127
+ ```ts
128
+ const HeavyChart = defineAsyncComponent(() => import('~/components/Chart.vue'))
129
+ ```
130
+
131
+ 4. **`v-once`** — render static content once, skip future updates.
132
+
133
+ 5. **`v-memo`** — memoize template sub-trees (Vue 3.2+).
134
+
135
+ 6. **`shallowRef`** — avoid deep reactivity for large objects.
136
+
137
+ 7. **Route-based code splitting** — Nuxt splits by page automatically.
138
+
139
+ 8. **Image optimization** — use `nuxt/image` module for `<NuxtImg>` and `<NuxtPicture>`.
140
+
141
+ ---
142
+
143
+ ## Common Libraries Ecosystem
144
+
145
+ | Category | Recommended | Alternative |
146
+ |----------|-------------|-------------|
147
+ | **UI** | `nuxt-ui` / `primevue` | `vuetify`, `quasar` |
148
+ | **Styling** | `tailwindcss` (via `@nuxtjs/tailwindcss`) | `unocss` |
149
+ | **State** | `pinia` (built-in Nuxt module) | `vuex` (legacy) |
150
+ | **Forms** | `vee-validate` + `zod` | `formkit` |
151
+ | **Auth** | `sidebase/nuxt-auth` | `nuxt-auth-utils` |
152
+ | **Database** | `prisma` / `drizzle` | `nuxt-mongoose` |
153
+ | **i18n** | `@nuxtjs/i18n` | — |
154
+ | **Testing** | `vitest` + `@vue/test-utils` | — |
155
+ | **E2E** | `playwright` | `cypress` |
156
+ | **Icons** | `nuxt-icon` | `unplugin-icons` |
157
+ | **SEO** | `nuxt-seo` module suite | manual `useHead()` |
158
+
159
+ ---
160
+
161
+ ## Anti-Patterns & Gotchas
162
+
163
+ | ❌ Don't | Why | ✅ Do Instead |
164
+ |----------|-----|---------------|
165
+ | Options API for new code | Less composable, worse TypeScript | `<script setup>` Composition API |
166
+ | `this.$store` (Vuex) | Legacy, replaced by Pinia | Use Pinia stores |
167
+ | Mutating props | One-way data flow violation, bugs | Emit events or use `v-model` |
168
+ | `watch` for derived state | Extra re-render cycle | Use `computed` |
169
+ | `$fetch` in `setup` for SSR data | Runs on both server AND client (duplicate) | `useFetch` or `useAsyncData` |
170
+ | `ref.value` in template | `.value` is auto-unwrapped in templates | Just `{{ count }}`, not `{{ count.value }}` |
171
+ | Missing `key` on `v-for` | Re-render bugs, broken state | Always `:key="item.id"` |
172
+ | Barrel exports in composables | Nuxt auto-imports from `composables/` | One composable per file |
173
+ | `process.env` in client | Only works in Node.js | `useRuntimeConfig()` |
174
+
175
+ ---
176
+
177
+ ## Testing
178
+
179
+ | Layer | Tool | Purpose |
180
+ |-------|------|---------|
181
+ | **Unit** | Vitest + `@vue/test-utils` | Components, composables |
182
+ | **Component** | `@nuxt/test-utils` | Full Nuxt component context |
183
+ | **E2E** | Playwright | Full user flows |
184
+
185
+ ```ts
186
+ import { mount } from '@vue/test-utils'
187
+ import Counter from '~/components/Counter.vue'
188
+
189
+ test('increments', async () => {
190
+ const wrapper = mount(Counter)
191
+ await wrapper.find('button').trigger('click')
192
+ expect(wrapper.text()).toContain('1')
193
+ })
194
+ ```
195
+
196
+ ---
197
+
198
+ ## Deployment & Distribution
199
+
200
+ ### Nitro Server (Nuxt 3)
201
+
202
+ Nuxt 3 uses Nitro — deploy anywhere:
203
+
204
+ ```bash
205
+ # Build
206
+ nuxt build # Server (SSR)
207
+ nuxt generate # Static (SSG)
208
+
209
+ # Preview
210
+ nuxt preview
211
+ ```
212
+
213
+ | Platform | Preset |
214
+ |----------|--------|
215
+ | **Vercel** | `vercel` (auto-detected) |
216
+ | **Netlify** | `netlify` |
217
+ | **Cloudflare** | `cloudflare-pages` |
218
+ | **Node.js** | `node-server` |
219
+ | **Docker** | `node-server` + Dockerfile |
220
+ | **Static** | `nuxt generate` → any CDN |
221
+
222
+ ---
223
+
224
+ ## Quick Reference — Granular Rules
225
+
226
+ Individual rule files in `vue-rules/` with detailed code examples and best
227
+ practices from the Vue ecosystem. Read the specific rule when working in that area.
228
+
229
+ > Source: [antfu/skills](https://github.com/antfu/skills) (from [vuejs-ai/skills](https://github.com/vuejs-ai/skills))
230
+
231
+ ### Best Practices — Components
232
+
233
+ - [sfc.md](vue-rules/best-practices/sfc.md) — Single File Component patterns
234
+ - [component-data-flow.md](vue-rules/best-practices/component-data-flow.md) — Props, events, v-model
235
+ - [component-slots.md](vue-rules/best-practices/component-slots.md) — Slot patterns
236
+ - [component-fallthrough-attrs.md](vue-rules/best-practices/component-fallthrough-attrs.md) — Fallthrough attributes
237
+ - [component-async.md](vue-rules/best-practices/component-async.md) — Async components
238
+ - [component-keep-alive.md](vue-rules/best-practices/component-keep-alive.md) — KeepAlive caching
239
+ - [component-suspense.md](vue-rules/best-practices/component-suspense.md) — Suspense for async
240
+ - [component-teleport.md](vue-rules/best-practices/component-teleport.md) — Teleport for portals
241
+ - [component-transition.md](vue-rules/best-practices/component-transition.md) — Transition animations
242
+ - [component-transition-group.md](vue-rules/best-practices/component-transition-group.md) — TransitionGroup for lists
243
+
244
+ ### Best Practices — Core
245
+
246
+ - [reactivity.md](vue-rules/best-practices/reactivity.md) — Reactivity system deep dive
247
+ - [composables.md](vue-rules/best-practices/composables.md) — Composable patterns
248
+ - [state-management.md](vue-rules/best-practices/state-management.md) — State management approaches
249
+ - [directives.md](vue-rules/best-practices/directives.md) — Custom directives
250
+ - [plugins.md](vue-rules/best-practices/plugins.md) — Plugin architecture
251
+ - [render-functions.md](vue-rules/best-practices/render-functions.md) — Render functions & JSX
252
+
253
+ ### Best Practices — Performance
254
+
255
+ - [perf-virtualize-large-lists.md](vue-rules/best-practices/perf-virtualize-large-lists.md) — Virtualize large lists
256
+ - [perf-avoid-component-abstraction-in-lists.md](vue-rules/best-practices/perf-avoid-component-abstraction-in-lists.md) — Avoid abstraction in lists
257
+ - [perf-v-once-v-memo-directives.md](vue-rules/best-practices/perf-v-once-v-memo-directives.md) — v-once and v-memo
258
+ - [updated-hook-performance.md](vue-rules/best-practices/updated-hook-performance.md) — Updated hook pitfalls
259
+
260
+ ### Best Practices — Animation
261
+
262
+ - [animation-class-based-technique.md](vue-rules/best-practices/animation-class-based-technique.md) — CSS class-based animations
263
+ - [animation-state-driven-technique.md](vue-rules/best-practices/animation-state-driven-technique.md) — State-driven animations
264
+
265
+ ### Router
266
+
267
+ - [router-guard-async-await-pattern.md](vue-rules/router/router-guard-async-await-pattern.md) — Async guard pattern
268
+ - [router-navigation-guard-next-deprecated.md](vue-rules/router/router-navigation-guard-next-deprecated.md) — next() is deprecated
269
+ - [router-navigation-guard-infinite-loop.md](vue-rules/router/router-navigation-guard-infinite-loop.md) — Avoid guard infinite loops
270
+ - [router-param-change-no-lifecycle.md](vue-rules/router/router-param-change-no-lifecycle.md) — Param changes skip lifecycle
271
+ - [router-beforerouteenter-no-this.md](vue-rules/router/router-beforerouteenter-no-this.md) — No `this` in beforeRouteEnter
272
+ - [router-beforeenter-no-param-trigger.md](vue-rules/router/router-beforeenter-no-param-trigger.md) — beforeEnter vs param changes
273
+ - [router-simple-routing-cleanup.md](vue-rules/router/router-simple-routing-cleanup.md) — Simple routing cleanup
274
+ - [router-use-vue-router-for-production.md](vue-rules/router/router-use-vue-router-for-production.md) — Use Vue Router in production
275
+
276
+ ### Testing
277
+
278
+ - [testing-vitest-recommended-for-vue.md](vue-rules/testing/testing-vitest-recommended-for-vue.md) — Vitest is recommended
279
+ - [testing-component-blackbox-approach.md](vue-rules/testing/testing-component-blackbox-approach.md) — Black-box testing
280
+ - [testing-composables-helper-wrapper.md](vue-rules/testing/testing-composables-helper-wrapper.md) — Test composables with wrapper
281
+ - [testing-pinia-store-setup.md](vue-rules/testing/testing-pinia-store-setup.md) — Pinia store testing setup
282
+ - [testing-async-await-flushpromises.md](vue-rules/testing/testing-async-await-flushpromises.md) — Async testing patterns
283
+ - [testing-suspense-async-components.md](vue-rules/testing/testing-suspense-async-components.md) — Suspense testing
284
+ - [async-component-testing.md](vue-rules/testing/async-component-testing.md) — Async component testing
285
+ - [teleport-testing-complexity.md](vue-rules/testing/teleport-testing-complexity.md) — Teleport testing
286
+ - [testing-no-snapshot-only.md](vue-rules/testing/testing-no-snapshot-only.md) — Don't rely on snapshots only
287
+ - [testing-browser-vs-node-runners.md](vue-rules/testing/testing-browser-vs-node-runners.md) — Browser vs Node runners
288
+ - [testing-e2e-playwright-recommended.md](vue-rules/testing/testing-e2e-playwright-recommended.md) — Playwright for E2E
289
+