ads-fe 0.0.1

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 (608) hide show
  1. package/README.md +99 -0
  2. package/dist/cli.js +545 -0
  3. package/dist/meta.js +93 -0
  4. package/package.json +43 -0
  5. package/skill.md +66 -0
  6. package/skills/core/SKILL.md +66 -0
  7. package/skills/core/references/app-development.md +45 -0
  8. package/skills/core/references/git.md +66 -0
  9. package/skills/core/references/monorepo.md +124 -0
  10. package/skills/element-plus-vue3/LICENSE.md +405 -0
  11. package/skills/element-plus-vue3/LICENSE.txt +202 -0
  12. package/skills/element-plus-vue3/SKILL.md +218 -0
  13. package/skills/element-plus-vue3/SYNC.md +5 -0
  14. package/skills/element-plus-vue3/api/component-api.md +94 -0
  15. package/skills/element-plus-vue3/api/global-config.md +89 -0
  16. package/skills/element-plus-vue3/api/props-and-events.md +101 -0
  17. package/skills/element-plus-vue3/examples/components/button.md +99 -0
  18. package/skills/element-plus-vue3/examples/components/date-picker.md +115 -0
  19. package/skills/element-plus-vue3/examples/components/dialog.md +106 -0
  20. package/skills/element-plus-vue3/examples/components/form.md +127 -0
  21. package/skills/element-plus-vue3/examples/components/input.md +123 -0
  22. package/skills/element-plus-vue3/examples/components/message.md +93 -0
  23. package/skills/element-plus-vue3/examples/components/overview.md +59 -0
  24. package/skills/element-plus-vue3/examples/components/select.md +133 -0
  25. package/skills/element-plus-vue3/examples/components/table.md +166 -0
  26. package/skills/element-plus-vue3/examples/guide/design.md +68 -0
  27. package/skills/element-plus-vue3/examples/guide/global-config.md +95 -0
  28. package/skills/element-plus-vue3/examples/guide/i18n.md +95 -0
  29. package/skills/element-plus-vue3/examples/guide/installation.md +110 -0
  30. package/skills/element-plus-vue3/examples/guide/quick-start.md +103 -0
  31. package/skills/element-plus-vue3/examples/guide/theme.md +78 -0
  32. package/skills/element-plus-vue3/templates/component-usage.md +92 -0
  33. package/skills/element-plus-vue3/templates/installation.md +82 -0
  34. package/skills/element-plus-vue3/templates/project-setup.md +83 -0
  35. package/skills/node/LICENSE.md +21 -0
  36. package/skills/node/SKILL.md +94 -0
  37. package/skills/node/SYNC.md +5 -0
  38. package/skills/node/rules/assets/graceful-server.test.ts +88 -0
  39. package/skills/node/rules/assets/graceful-server.ts +80 -0
  40. package/skills/node/rules/async-patterns.md +136 -0
  41. package/skills/node/rules/caching.md +198 -0
  42. package/skills/node/rules/environment.md +253 -0
  43. package/skills/node/rules/error-handling.md +164 -0
  44. package/skills/node/rules/flaky-tests.md +439 -0
  45. package/skills/node/rules/graceful-shutdown.md +204 -0
  46. package/skills/node/rules/logging.md +205 -0
  47. package/skills/node/rules/modules.md +105 -0
  48. package/skills/node/rules/node-modules-exploration.md +172 -0
  49. package/skills/node/rules/performance.md +130 -0
  50. package/skills/node/rules/profiling.md +183 -0
  51. package/skills/node/rules/streams.md +213 -0
  52. package/skills/node/rules/stuck-processes-and-tests.md +124 -0
  53. package/skills/node/rules/testing.md +218 -0
  54. package/skills/node/rules/typescript.md +262 -0
  55. package/skills/node/tile.json +11 -0
  56. package/skills/nuxt/GENERATION.md +5 -0
  57. package/skills/nuxt/LICENSE.md +21 -0
  58. package/skills/nuxt/SKILL.md +55 -0
  59. package/skills/nuxt/SYNC.md +5 -0
  60. package/skills/nuxt/references/advanced-hooks.md +289 -0
  61. package/skills/nuxt/references/advanced-layers.md +299 -0
  62. package/skills/nuxt/references/advanced-module-authoring.md +554 -0
  63. package/skills/nuxt/references/best-practices-data-fetching.md +357 -0
  64. package/skills/nuxt/references/best-practices-ssr.md +355 -0
  65. package/skills/nuxt/references/core-cli.md +263 -0
  66. package/skills/nuxt/references/core-config.md +162 -0
  67. package/skills/nuxt/references/core-data-fetching.md +236 -0
  68. package/skills/nuxt/references/core-deployment.md +224 -0
  69. package/skills/nuxt/references/core-directory-structure.md +269 -0
  70. package/skills/nuxt/references/core-modules.md +292 -0
  71. package/skills/nuxt/references/core-routing.md +226 -0
  72. package/skills/nuxt/references/features-components-autoimport.md +328 -0
  73. package/skills/nuxt/references/features-components.md +264 -0
  74. package/skills/nuxt/references/features-composables.md +276 -0
  75. package/skills/nuxt/references/features-server.md +265 -0
  76. package/skills/nuxt/references/features-state.md +194 -0
  77. package/skills/nuxt/references/rendering-modes.md +237 -0
  78. package/skills/pinia/GENERATION.md +5 -0
  79. package/skills/pinia/LICENSE.md +21 -0
  80. package/skills/pinia/SKILL.md +59 -0
  81. package/skills/pinia/SYNC.md +5 -0
  82. package/skills/pinia/references/advanced-hmr.md +61 -0
  83. package/skills/pinia/references/advanced-nuxt.md +119 -0
  84. package/skills/pinia/references/advanced-ssr.md +121 -0
  85. package/skills/pinia/references/best-practices-outside-component.md +115 -0
  86. package/skills/pinia/references/best-practices-testing.md +212 -0
  87. package/skills/pinia/references/core-stores.md +389 -0
  88. package/skills/pinia/references/features-composables.md +114 -0
  89. package/skills/pinia/references/features-composing-stores.md +134 -0
  90. package/skills/pinia/references/features-plugins.md +203 -0
  91. package/skills/pnpm/GENERATION.md +5 -0
  92. package/skills/pnpm/LICENSE.md +21 -0
  93. package/skills/pnpm/SKILL.md +42 -0
  94. package/skills/pnpm/SYNC.md +5 -0
  95. package/skills/pnpm/references/best-practices-ci.md +285 -0
  96. package/skills/pnpm/references/best-practices-migration.md +291 -0
  97. package/skills/pnpm/references/best-practices-performance.md +284 -0
  98. package/skills/pnpm/references/core-cli.md +229 -0
  99. package/skills/pnpm/references/core-config.md +188 -0
  100. package/skills/pnpm/references/core-store.md +179 -0
  101. package/skills/pnpm/references/core-workspaces.md +205 -0
  102. package/skills/pnpm/references/features-aliases.md +168 -0
  103. package/skills/pnpm/references/features-catalogs.md +159 -0
  104. package/skills/pnpm/references/features-hooks.md +233 -0
  105. package/skills/pnpm/references/features-overrides.md +184 -0
  106. package/skills/pnpm/references/features-patches.md +201 -0
  107. package/skills/pnpm/references/features-peer-deps.md +250 -0
  108. package/skills/slidev/LICENSE.md +21 -0
  109. package/skills/slidev/README.md +61 -0
  110. package/skills/slidev/SKILL.md +189 -0
  111. package/skills/slidev/SYNC.md +5 -0
  112. package/skills/slidev/references/animation-click-marker.md +37 -0
  113. package/skills/slidev/references/animation-drawing.md +68 -0
  114. package/skills/slidev/references/animation-rough-marker.md +53 -0
  115. package/skills/slidev/references/api-slide-hooks.md +37 -0
  116. package/skills/slidev/references/build-og-image.md +36 -0
  117. package/skills/slidev/references/build-pdf.md +40 -0
  118. package/skills/slidev/references/build-remote-assets.md +34 -0
  119. package/skills/slidev/references/build-seo-meta.md +43 -0
  120. package/skills/slidev/references/code-groups.md +64 -0
  121. package/skills/slidev/references/code-import-snippet.md +55 -0
  122. package/skills/slidev/references/code-line-highlighting.md +50 -0
  123. package/skills/slidev/references/code-line-numbers.md +46 -0
  124. package/skills/slidev/references/code-magic-move.md +57 -0
  125. package/skills/slidev/references/code-max-height.md +37 -0
  126. package/skills/slidev/references/code-twoslash.md +42 -0
  127. package/skills/slidev/references/core-animations.md +196 -0
  128. package/skills/slidev/references/core-cli.md +140 -0
  129. package/skills/slidev/references/core-components.md +197 -0
  130. package/skills/slidev/references/core-exporting.md +148 -0
  131. package/skills/slidev/references/core-frontmatter.md +195 -0
  132. package/skills/slidev/references/core-global-context.md +155 -0
  133. package/skills/slidev/references/core-headmatter.md +188 -0
  134. package/skills/slidev/references/core-hosting.md +152 -0
  135. package/skills/slidev/references/core-layouts.md +286 -0
  136. package/skills/slidev/references/core-syntax.md +155 -0
  137. package/skills/slidev/references/diagram-latex.md +55 -0
  138. package/skills/slidev/references/diagram-mermaid.md +44 -0
  139. package/skills/slidev/references/diagram-plantuml.md +45 -0
  140. package/skills/slidev/references/editor-monaco-run.md +44 -0
  141. package/skills/slidev/references/editor-monaco-write.md +24 -0
  142. package/skills/slidev/references/editor-monaco.md +50 -0
  143. package/skills/slidev/references/editor-prettier.md +40 -0
  144. package/skills/slidev/references/editor-side.md +23 -0
  145. package/skills/slidev/references/editor-vscode.md +55 -0
  146. package/skills/slidev/references/layout-canvas-size.md +25 -0
  147. package/skills/slidev/references/layout-draggable.md +57 -0
  148. package/skills/slidev/references/layout-global-layers.md +50 -0
  149. package/skills/slidev/references/layout-slots.md +75 -0
  150. package/skills/slidev/references/layout-transform.md +33 -0
  151. package/skills/slidev/references/layout-zoom.md +39 -0
  152. package/skills/slidev/references/presenter-notes-ruby.md +35 -0
  153. package/skills/slidev/references/presenter-recording.md +30 -0
  154. package/skills/slidev/references/presenter-remote.md +40 -0
  155. package/skills/slidev/references/presenter-timer.md +34 -0
  156. package/skills/slidev/references/style-direction.md +34 -0
  157. package/skills/slidev/references/style-icons.md +46 -0
  158. package/skills/slidev/references/style-scoped.md +50 -0
  159. package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  160. package/skills/slidev/references/syntax-comark.md +51 -0
  161. package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  162. package/skills/slidev/references/syntax-importing-slides.md +60 -0
  163. package/skills/slidev/references/tool-eject-theme.md +27 -0
  164. package/skills/tsdown/LICENSE.md +22 -0
  165. package/skills/tsdown/README.md +77 -0
  166. package/skills/tsdown/SKILL.md +416 -0
  167. package/skills/tsdown/SYNC.md +5 -0
  168. package/skills/tsdown/references/README.md +139 -0
  169. package/skills/tsdown/references/advanced-benchmark.md +8 -0
  170. package/skills/tsdown/references/advanced-ci.md +89 -0
  171. package/skills/tsdown/references/advanced-hooks.md +363 -0
  172. package/skills/tsdown/references/advanced-plugins.md +381 -0
  173. package/skills/tsdown/references/advanced-programmatic.md +378 -0
  174. package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
  175. package/skills/tsdown/references/guide-getting-started.md +183 -0
  176. package/skills/tsdown/references/guide-introduction.md +42 -0
  177. package/skills/tsdown/references/guide-migrate-from-tsup.md +199 -0
  178. package/skills/tsdown/references/option-cjs-default.md +98 -0
  179. package/skills/tsdown/references/option-cleaning.md +275 -0
  180. package/skills/tsdown/references/option-config-file.md +291 -0
  181. package/skills/tsdown/references/option-css.md +301 -0
  182. package/skills/tsdown/references/option-dependencies.md +385 -0
  183. package/skills/tsdown/references/option-dts.md +251 -0
  184. package/skills/tsdown/references/option-entry.md +211 -0
  185. package/skills/tsdown/references/option-exe.md +120 -0
  186. package/skills/tsdown/references/option-lint.md +127 -0
  187. package/skills/tsdown/references/option-log-level.md +91 -0
  188. package/skills/tsdown/references/option-minification.md +177 -0
  189. package/skills/tsdown/references/option-output-directory.md +272 -0
  190. package/skills/tsdown/references/option-output-format.md +183 -0
  191. package/skills/tsdown/references/option-package-exports.md +320 -0
  192. package/skills/tsdown/references/option-platform.md +256 -0
  193. package/skills/tsdown/references/option-root.md +88 -0
  194. package/skills/tsdown/references/option-shims.md +299 -0
  195. package/skills/tsdown/references/option-sourcemap.md +301 -0
  196. package/skills/tsdown/references/option-target.md +222 -0
  197. package/skills/tsdown/references/option-tree-shaking.md +335 -0
  198. package/skills/tsdown/references/option-unbundle.md +310 -0
  199. package/skills/tsdown/references/option-watch-mode.md +261 -0
  200. package/skills/tsdown/references/recipe-react.md +338 -0
  201. package/skills/tsdown/references/recipe-solid.md +42 -0
  202. package/skills/tsdown/references/recipe-svelte.md +54 -0
  203. package/skills/tsdown/references/recipe-vue.md +387 -0
  204. package/skills/tsdown/references/recipe-wasm.md +125 -0
  205. package/skills/tsdown/references/reference-cli.md +472 -0
  206. package/skills/turborepo/LICENSE.md +7 -0
  207. package/skills/turborepo/SKILL.md +951 -0
  208. package/skills/turborepo/SYNC.md +5 -0
  209. package/skills/turborepo/command/turborepo.md +70 -0
  210. package/skills/turborepo/references/best-practices/RULE.md +241 -0
  211. package/skills/turborepo/references/best-practices/dependencies.md +246 -0
  212. package/skills/turborepo/references/best-practices/packages.md +335 -0
  213. package/skills/turborepo/references/best-practices/structure.md +297 -0
  214. package/skills/turborepo/references/boundaries/RULE.md +126 -0
  215. package/skills/turborepo/references/caching/RULE.md +153 -0
  216. package/skills/turborepo/references/caching/gotchas.md +190 -0
  217. package/skills/turborepo/references/caching/remote-cache.md +127 -0
  218. package/skills/turborepo/references/ci/RULE.md +79 -0
  219. package/skills/turborepo/references/ci/github-actions.md +162 -0
  220. package/skills/turborepo/references/ci/patterns.md +145 -0
  221. package/skills/turborepo/references/ci/vercel.md +103 -0
  222. package/skills/turborepo/references/cli/RULE.md +100 -0
  223. package/skills/turborepo/references/cli/commands.md +297 -0
  224. package/skills/turborepo/references/configuration/RULE.md +235 -0
  225. package/skills/turborepo/references/configuration/global-options.md +239 -0
  226. package/skills/turborepo/references/configuration/gotchas.md +368 -0
  227. package/skills/turborepo/references/configuration/tasks.md +325 -0
  228. package/skills/turborepo/references/environment/RULE.md +123 -0
  229. package/skills/turborepo/references/environment/gotchas.md +175 -0
  230. package/skills/turborepo/references/environment/modes.md +101 -0
  231. package/skills/turborepo/references/filtering/RULE.md +148 -0
  232. package/skills/turborepo/references/filtering/patterns.md +152 -0
  233. package/skills/turborepo/references/watch/RULE.md +99 -0
  234. package/skills/vite/GENERATION.md +5 -0
  235. package/skills/vite/LICENSE.md +21 -0
  236. package/skills/vite/SKILL.md +72 -0
  237. package/skills/vite/SYNC.md +5 -0
  238. package/skills/vite/references/build-and-ssr.md +164 -0
  239. package/skills/vite/references/core-config.md +162 -0
  240. package/skills/vite/references/core-features.md +205 -0
  241. package/skills/vite/references/core-plugin-api.md +235 -0
  242. package/skills/vite/references/environment-api.md +108 -0
  243. package/skills/vite/references/rolldown-migration.md +157 -0
  244. package/skills/vitepress/GENERATION.md +5 -0
  245. package/skills/vitepress/LICENSE.md +21 -0
  246. package/skills/vitepress/SKILL.md +65 -0
  247. package/skills/vitepress/SYNC.md +5 -0
  248. package/skills/vitepress/references/advanced-i18n.md +299 -0
  249. package/skills/vitepress/references/advanced-ssr.md +228 -0
  250. package/skills/vitepress/references/core-cli.md +119 -0
  251. package/skills/vitepress/references/core-config.md +189 -0
  252. package/skills/vitepress/references/core-markdown.md +277 -0
  253. package/skills/vitepress/references/core-routing.md +169 -0
  254. package/skills/vitepress/references/features-code-blocks.md +243 -0
  255. package/skills/vitepress/references/features-data-loading.md +220 -0
  256. package/skills/vitepress/references/features-dynamic-routes.md +235 -0
  257. package/skills/vitepress/references/features-vue.md +224 -0
  258. package/skills/vitepress/references/recipes-deploy.md +240 -0
  259. package/skills/vitepress/references/theme-config.md +315 -0
  260. package/skills/vitepress/references/theme-custom.md +269 -0
  261. package/skills/vitepress/references/theme-customization.md +290 -0
  262. package/skills/vitest/GENERATION.md +5 -0
  263. package/skills/vitest/LICENSE.md +21 -0
  264. package/skills/vitest/SKILL.md +52 -0
  265. package/skills/vitest/SYNC.md +5 -0
  266. package/skills/vitest/references/advanced-environments.md +264 -0
  267. package/skills/vitest/references/advanced-projects.md +300 -0
  268. package/skills/vitest/references/advanced-type-testing.md +237 -0
  269. package/skills/vitest/references/advanced-vi.md +249 -0
  270. package/skills/vitest/references/core-cli.md +166 -0
  271. package/skills/vitest/references/core-config.md +174 -0
  272. package/skills/vitest/references/core-describe.md +193 -0
  273. package/skills/vitest/references/core-expect.md +219 -0
  274. package/skills/vitest/references/core-hooks.md +244 -0
  275. package/skills/vitest/references/core-test-api.md +233 -0
  276. package/skills/vitest/references/features-concurrency.md +250 -0
  277. package/skills/vitest/references/features-context.md +238 -0
  278. package/skills/vitest/references/features-coverage.md +207 -0
  279. package/skills/vitest/references/features-filtering.md +211 -0
  280. package/skills/vitest/references/features-mocking.md +265 -0
  281. package/skills/vitest/references/features-snapshots.md +207 -0
  282. package/skills/vue/GENERATION.md +5 -0
  283. package/skills/vue/LICENSE.md +21 -0
  284. package/skills/vue/SKILL.md +84 -0
  285. package/skills/vue/SYNC.md +5 -0
  286. package/skills/vue/references/advanced-patterns.md +314 -0
  287. package/skills/vue/references/core-new-apis.md +264 -0
  288. package/skills/vue/references/script-setup-macros.md +204 -0
  289. package/skills/vue-best-practices/LICENSE.md +21 -0
  290. package/skills/vue-best-practices/SKILL.md +154 -0
  291. package/skills/vue-best-practices/SYNC.md +5 -0
  292. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  293. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  294. package/skills/vue-best-practices/references/component-async.md +97 -0
  295. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  296. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  297. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  298. package/skills/vue-best-practices/references/component-slots.md +216 -0
  299. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  300. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  301. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  302. package/skills/vue-best-practices/references/component-transition.md +125 -0
  303. package/skills/vue-best-practices/references/composables.md +290 -0
  304. package/skills/vue-best-practices/references/directives.md +162 -0
  305. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  306. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  307. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  308. package/skills/vue-best-practices/references/plugins.md +166 -0
  309. package/skills/vue-best-practices/references/reactivity.md +344 -0
  310. package/skills/vue-best-practices/references/render-functions.md +201 -0
  311. package/skills/vue-best-practices/references/sfc.md +310 -0
  312. package/skills/vue-best-practices/references/state-management.md +135 -0
  313. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  314. package/skills/vue-router-best-practices/LICENSE.md +21 -0
  315. package/skills/vue-router-best-practices/SKILL.md +23 -0
  316. package/skills/vue-router-best-practices/SYNC.md +5 -0
  317. package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
  318. package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
  319. package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
  320. package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
  321. package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
  322. package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
  323. package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
  324. package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
  325. package/skills/vue-testing-best-practices/LICENSE.md +21 -0
  326. package/skills/vue-testing-best-practices/SKILL.md +29 -0
  327. package/skills/vue-testing-best-practices/SYNC.md +5 -0
  328. package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
  329. package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
  330. package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
  331. package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
  332. package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
  333. package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
  334. package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
  335. package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
  336. package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
  337. package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
  338. package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
  339. package/skills/vueuse-functions/LICENSE.md +21 -0
  340. package/skills/vueuse-functions/SKILL.md +419 -0
  341. package/skills/vueuse-functions/SYNC.md +5 -0
  342. package/skills/vueuse-functions/references/computedAsync.md +195 -0
  343. package/skills/vueuse-functions/references/computedEager.md +62 -0
  344. package/skills/vueuse-functions/references/computedInject.md +137 -0
  345. package/skills/vueuse-functions/references/computedWithControl.md +98 -0
  346. package/skills/vueuse-functions/references/createEventHook.md +86 -0
  347. package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  348. package/skills/vueuse-functions/references/createGlobalState.md +95 -0
  349. package/skills/vueuse-functions/references/createInjectionState.md +226 -0
  350. package/skills/vueuse-functions/references/createProjection.md +31 -0
  351. package/skills/vueuse-functions/references/createRef.md +54 -0
  352. package/skills/vueuse-functions/references/createReusableTemplate.md +361 -0
  353. package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  354. package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
  355. package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  356. package/skills/vueuse-functions/references/extendRef.md +76 -0
  357. package/skills/vueuse-functions/references/from.md +80 -0
  358. package/skills/vueuse-functions/references/get.md +30 -0
  359. package/skills/vueuse-functions/references/injectLocal.md +35 -0
  360. package/skills/vueuse-functions/references/isDefined.md +31 -0
  361. package/skills/vueuse-functions/references/logicAnd.md +40 -0
  362. package/skills/vueuse-functions/references/logicNot.md +36 -0
  363. package/skills/vueuse-functions/references/logicOr.md +40 -0
  364. package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  365. package/skills/vueuse-functions/references/onClickOutside.md +228 -0
  366. package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
  367. package/skills/vueuse-functions/references/onKeyStroke.md +212 -0
  368. package/skills/vueuse-functions/references/onLongPress.md +235 -0
  369. package/skills/vueuse-functions/references/onStartTyping.md +53 -0
  370. package/skills/vueuse-functions/references/provideLocal.md +37 -0
  371. package/skills/vueuse-functions/references/reactify.md +144 -0
  372. package/skills/vueuse-functions/references/reactifyObject.md +62 -0
  373. package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  374. package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  375. package/skills/vueuse-functions/references/reactivePick.md +106 -0
  376. package/skills/vueuse-functions/references/refAutoReset.md +46 -0
  377. package/skills/vueuse-functions/references/refDebounced.md +81 -0
  378. package/skills/vueuse-functions/references/refDefault.md +36 -0
  379. package/skills/vueuse-functions/references/refManualReset.md +48 -0
  380. package/skills/vueuse-functions/references/refThrottled.md +99 -0
  381. package/skills/vueuse-functions/references/refWithControl.md +146 -0
  382. package/skills/vueuse-functions/references/set.md +30 -0
  383. package/skills/vueuse-functions/references/syncRef.md +195 -0
  384. package/skills/vueuse-functions/references/syncRefs.md +128 -0
  385. package/skills/vueuse-functions/references/templateRef.md +86 -0
  386. package/skills/vueuse-functions/references/toObserver.md +38 -0
  387. package/skills/vueuse-functions/references/toReactive.md +41 -0
  388. package/skills/vueuse-functions/references/toRef.md +74 -0
  389. package/skills/vueuse-functions/references/toRefs.md +78 -0
  390. package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  391. package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  392. package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  393. package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  394. package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  395. package/skills/vueuse-functions/references/unrefElement.md +54 -0
  396. package/skills/vueuse-functions/references/until.md +161 -0
  397. package/skills/vueuse-functions/references/useAbs.md +31 -0
  398. package/skills/vueuse-functions/references/useActiveElement.md +86 -0
  399. package/skills/vueuse-functions/references/useAnimate.md +180 -0
  400. package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  401. package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  402. package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  403. package/skills/vueuse-functions/references/useArrayFind.md +50 -0
  404. package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  405. package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  406. package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  407. package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  408. package/skills/vueuse-functions/references/useArrayMap.md +59 -0
  409. package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  410. package/skills/vueuse-functions/references/useArraySome.md +59 -0
  411. package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  412. package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
  413. package/skills/vueuse-functions/references/useAsyncState.md +185 -0
  414. package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  415. package/skills/vueuse-functions/references/useAuth.md +123 -0
  416. package/skills/vueuse-functions/references/useAverage.md +36 -0
  417. package/skills/vueuse-functions/references/useAxios.md +325 -0
  418. package/skills/vueuse-functions/references/useBase64.md +136 -0
  419. package/skills/vueuse-functions/references/useBattery.md +80 -0
  420. package/skills/vueuse-functions/references/useBluetooth.md +174 -0
  421. package/skills/vueuse-functions/references/useBreakpoints.md +176 -0
  422. package/skills/vueuse-functions/references/useBroadcastChannel.md +73 -0
  423. package/skills/vueuse-functions/references/useBrowserLocation.md +56 -0
  424. package/skills/vueuse-functions/references/useCached.md +52 -0
  425. package/skills/vueuse-functions/references/useCeil.md +31 -0
  426. package/skills/vueuse-functions/references/useChangeCase.md +79 -0
  427. package/skills/vueuse-functions/references/useClamp.md +85 -0
  428. package/skills/vueuse-functions/references/useClipboard.md +122 -0
  429. package/skills/vueuse-functions/references/useClipboardItems.md +93 -0
  430. package/skills/vueuse-functions/references/useCloned.md +91 -0
  431. package/skills/vueuse-functions/references/useColorMode.md +172 -0
  432. package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  433. package/skills/vueuse-functions/references/useCookies.md +162 -0
  434. package/skills/vueuse-functions/references/useCountdown.md +105 -0
  435. package/skills/vueuse-functions/references/useCounter.md +86 -0
  436. package/skills/vueuse-functions/references/useCssSupports.md +33 -0
  437. package/skills/vueuse-functions/references/useCssVar.md +50 -0
  438. package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  439. package/skills/vueuse-functions/references/useCycleList.md +75 -0
  440. package/skills/vueuse-functions/references/useDark.md +142 -0
  441. package/skills/vueuse-functions/references/useDateFormat.md +145 -0
  442. package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  443. package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  444. package/skills/vueuse-functions/references/useDeviceMotion.md +80 -0
  445. package/skills/vueuse-functions/references/useDeviceOrientation.md +64 -0
  446. package/skills/vueuse-functions/references/useDevicePixelRatio.md +47 -0
  447. package/skills/vueuse-functions/references/useDevicesList.md +89 -0
  448. package/skills/vueuse-functions/references/useDisplayMedia.md +67 -0
  449. package/skills/vueuse-functions/references/useDocumentVisibility.md +44 -0
  450. package/skills/vueuse-functions/references/useDraggable.md +289 -0
  451. package/skills/vueuse-functions/references/useDrauu.md +65 -0
  452. package/skills/vueuse-functions/references/useDropZone.md +83 -0
  453. package/skills/vueuse-functions/references/useElementBounding.md +131 -0
  454. package/skills/vueuse-functions/references/useElementByPoint.md +46 -0
  455. package/skills/vueuse-functions/references/useElementHover.md +79 -0
  456. package/skills/vueuse-functions/references/useElementSize.md +79 -0
  457. package/skills/vueuse-functions/references/useElementVisibility.md +163 -0
  458. package/skills/vueuse-functions/references/useEventBus.md +101 -0
  459. package/skills/vueuse-functions/references/useEventListener.md +226 -0
  460. package/skills/vueuse-functions/references/useEventSource.md +204 -0
  461. package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
  462. package/skills/vueuse-functions/references/useEyeDropper.md +72 -0
  463. package/skills/vueuse-functions/references/useFavicon.md +69 -0
  464. package/skills/vueuse-functions/references/useFetch.md +546 -0
  465. package/skills/vueuse-functions/references/useFileDialog.md +91 -0
  466. package/skills/vueuse-functions/references/useFileSystemAccess.md +161 -0
  467. package/skills/vueuse-functions/references/useFirestore.md +129 -0
  468. package/skills/vueuse-functions/references/useFloor.md +31 -0
  469. package/skills/vueuse-functions/references/useFocus.md +99 -0
  470. package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  471. package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  472. package/skills/vueuse-functions/references/useFps.md +28 -0
  473. package/skills/vueuse-functions/references/useFullscreen.md +74 -0
  474. package/skills/vueuse-functions/references/useFuse.md +75 -0
  475. package/skills/vueuse-functions/references/useGamepad.md +176 -0
  476. package/skills/vueuse-functions/references/useGeolocation.md +63 -0
  477. package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  478. package/skills/vueuse-functions/references/useIdle.md +88 -0
  479. package/skills/vueuse-functions/references/useImage.md +90 -0
  480. package/skills/vueuse-functions/references/useInfiniteScroll.md +156 -0
  481. package/skills/vueuse-functions/references/useIntersectionObserver.md +117 -0
  482. package/skills/vueuse-functions/references/useInterval.md +112 -0
  483. package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  484. package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
  485. package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  486. package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  487. package/skills/vueuse-functions/references/useJwt.md +57 -0
  488. package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  489. package/skills/vueuse-functions/references/useLastChanged.md +63 -0
  490. package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  491. package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
  492. package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  493. package/skills/vueuse-functions/references/useMath.md +47 -0
  494. package/skills/vueuse-functions/references/useMax.md +36 -0
  495. package/skills/vueuse-functions/references/useMediaControls.md +201 -0
  496. package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  497. package/skills/vueuse-functions/references/useMemoize.md +175 -0
  498. package/skills/vueuse-functions/references/useMemory.md +70 -0
  499. package/skills/vueuse-functions/references/useMin.md +36 -0
  500. package/skills/vueuse-functions/references/useMounted.md +38 -0
  501. package/skills/vueuse-functions/references/useMouse.md +113 -0
  502. package/skills/vueuse-functions/references/useMouseInElement.md +132 -0
  503. package/skills/vueuse-functions/references/useMousePressed.md +116 -0
  504. package/skills/vueuse-functions/references/useMutationObserver.md +60 -0
  505. package/skills/vueuse-functions/references/useNProgress.md +78 -0
  506. package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  507. package/skills/vueuse-functions/references/useNetwork.md +106 -0
  508. package/skills/vueuse-functions/references/useNow.md +83 -0
  509. package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  510. package/skills/vueuse-functions/references/useObservable.md +91 -0
  511. package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  512. package/skills/vueuse-functions/references/useOnline.md +41 -0
  513. package/skills/vueuse-functions/references/usePageLeave.md +43 -0
  514. package/skills/vueuse-functions/references/useParallax.md +58 -0
  515. package/skills/vueuse-functions/references/useParentElement.md +54 -0
  516. package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  517. package/skills/vueuse-functions/references/usePermission.md +78 -0
  518. package/skills/vueuse-functions/references/usePointer.md +91 -0
  519. package/skills/vueuse-functions/references/usePointerLock.md +59 -0
  520. package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  521. package/skills/vueuse-functions/references/usePrecision.md +49 -0
  522. package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  523. package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  524. package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  525. package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  526. package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  527. package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  528. package/skills/vueuse-functions/references/usePrevious.md +40 -0
  529. package/skills/vueuse-functions/references/useProjection.md +38 -0
  530. package/skills/vueuse-functions/references/useQRCode.md +53 -0
  531. package/skills/vueuse-functions/references/useRTDB.md +83 -0
  532. package/skills/vueuse-functions/references/useRafFn.md +68 -0
  533. package/skills/vueuse-functions/references/useRefHistory.md +285 -0
  534. package/skills/vueuse-functions/references/useResizeObserver.md +108 -0
  535. package/skills/vueuse-functions/references/useRound.md +31 -0
  536. package/skills/vueuse-functions/references/useRouteHash.md +27 -0
  537. package/skills/vueuse-functions/references/useRouteParams.md +38 -0
  538. package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
  539. package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  540. package/skills/vueuse-functions/references/useScreenOrientation.md +98 -0
  541. package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  542. package/skills/vueuse-functions/references/useScriptTag.md +116 -0
  543. package/skills/vueuse-functions/references/useScroll.md +238 -0
  544. package/skills/vueuse-functions/references/useScrollLock.md +66 -0
  545. package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  546. package/skills/vueuse-functions/references/useShare.md +67 -0
  547. package/skills/vueuse-functions/references/useSortable.md +276 -0
  548. package/skills/vueuse-functions/references/useSorted.md +90 -0
  549. package/skills/vueuse-functions/references/useSpeechRecognition.md +90 -0
  550. package/skills/vueuse-functions/references/useSpeechSynthesis.md +101 -0
  551. package/skills/vueuse-functions/references/useStepper.md +137 -0
  552. package/skills/vueuse-functions/references/useStorage.md +278 -0
  553. package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
  554. package/skills/vueuse-functions/references/useStyleTag.md +131 -0
  555. package/skills/vueuse-functions/references/useSubject.md +77 -0
  556. package/skills/vueuse-functions/references/useSubscription.md +33 -0
  557. package/skills/vueuse-functions/references/useSum.md +36 -0
  558. package/skills/vueuse-functions/references/useSupported.md +29 -0
  559. package/skills/vueuse-functions/references/useSwipe.md +75 -0
  560. package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  561. package/skills/vueuse-functions/references/useTextDirection.md +75 -0
  562. package/skills/vueuse-functions/references/useTextSelection.md +43 -0
  563. package/skills/vueuse-functions/references/useTextareaAutosize.md +94 -0
  564. package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  565. package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  566. package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
  567. package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
  568. package/skills/vueuse-functions/references/useTimeout.md +113 -0
  569. package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  570. package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  571. package/skills/vueuse-functions/references/useTimestamp.md +93 -0
  572. package/skills/vueuse-functions/references/useTitle.md +115 -0
  573. package/skills/vueuse-functions/references/useToNumber.md +54 -0
  574. package/skills/vueuse-functions/references/useToString.md +34 -0
  575. package/skills/vueuse-functions/references/useToggle.md +103 -0
  576. package/skills/vueuse-functions/references/useTransition.md +265 -0
  577. package/skills/vueuse-functions/references/useTrunc.md +33 -0
  578. package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  579. package/skills/vueuse-functions/references/useUserMedia.md +96 -0
  580. package/skills/vueuse-functions/references/useVModel.md +182 -0
  581. package/skills/vueuse-functions/references/useVModels.md +67 -0
  582. package/skills/vueuse-functions/references/useVibrate.md +86 -0
  583. package/skills/vueuse-functions/references/useVirtualList.md +182 -0
  584. package/skills/vueuse-functions/references/useWakeLock.md +51 -0
  585. package/skills/vueuse-functions/references/useWebNotification.md +175 -0
  586. package/skills/vueuse-functions/references/useWebSocket.md +299 -0
  587. package/skills/vueuse-functions/references/useWebWorker.md +60 -0
  588. package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  589. package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  590. package/skills/vueuse-functions/references/useWindowScroll.md +46 -0
  591. package/skills/vueuse-functions/references/useWindowSize.md +78 -0
  592. package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  593. package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  594. package/skills/vueuse-functions/references/watchArray.md +53 -0
  595. package/skills/vueuse-functions/references/watchAtMost.md +63 -0
  596. package/skills/vueuse-functions/references/watchDebounced.md +101 -0
  597. package/skills/vueuse-functions/references/watchDeep.md +54 -0
  598. package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
  599. package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  600. package/skills/vueuse-functions/references/watchImmediate.md +44 -0
  601. package/skills/vueuse-functions/references/watchOnce.md +41 -0
  602. package/skills/vueuse-functions/references/watchPausable.md +86 -0
  603. package/skills/vueuse-functions/references/watchThrottled.md +108 -0
  604. package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
  605. package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
  606. package/skills/vueuse-functions/references/whenever.md +108 -0
  607. package/skills/web-design-guidelines/SKILL.md +39 -0
  608. package/skills/web-design-guidelines/SYNC.md +5 -0
@@ -0,0 +1,276 @@
1
+ ---
2
+ name: composables-auto-imports
3
+ description: Auto-imported Vue APIs, Nuxt composables, and custom utilities
4
+ ---
5
+
6
+ # Composables Auto-imports
7
+
8
+ Nuxt automatically imports Vue APIs, Nuxt composables, and your custom composables/utilities.
9
+
10
+ ## Built-in Auto-imports
11
+
12
+ ### Vue APIs
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ // No imports needed - all auto-imported
17
+ const count = ref(0)
18
+ const doubled = computed(() => count.value * 2)
19
+
20
+ watch(count, (newVal) => {
21
+ console.log('Count changed:', newVal)
22
+ })
23
+
24
+ onMounted(() => {
25
+ console.log('Component mounted')
26
+ })
27
+
28
+ // Lifecycle hooks
29
+ onBeforeMount(() => {})
30
+ onUnmounted(() => {})
31
+ onBeforeUnmount(() => {})
32
+
33
+ // Reactivity
34
+ const state = reactive({ name: 'John' })
35
+ const shallow = shallowRef({ deep: 'object' })
36
+ </script>
37
+ ```
38
+
39
+ ### Nuxt Composables
40
+
41
+ ```vue
42
+ <script setup lang="ts">
43
+ // All auto-imported
44
+ const route = useRoute()
45
+ const router = useRouter()
46
+ const config = useRuntimeConfig()
47
+ const appConfig = useAppConfig()
48
+ const nuxtApp = useNuxtApp()
49
+
50
+ // Data fetching
51
+ const { data } = await useFetch('/api/data')
52
+ const { data: asyncData } = await useAsyncData('key', () => fetchData())
53
+
54
+ // State
55
+ const state = useState('key', () => 'initial')
56
+ const cookie = useCookie('token')
57
+
58
+ // Head/SEO
59
+ useHead({ title: 'My Page' })
60
+ useSeoMeta({ description: 'Page description' })
61
+
62
+ // Request helpers (SSR)
63
+ const headers = useRequestHeaders()
64
+ const event = useRequestEvent()
65
+ const url = useRequestURL()
66
+ </script>
67
+ ```
68
+
69
+ ## Custom Composables (`app/composables/`)
70
+
71
+ ### Creating Composables
72
+
73
+ ```ts
74
+ // composables/useCounter.ts
75
+ export function useCounter(initial = 0) {
76
+ const count = ref(initial)
77
+ const increment = () => count.value++
78
+ const decrement = () => count.value--
79
+ return { count, increment, decrement }
80
+ }
81
+ ```
82
+
83
+ ```ts
84
+ // composables/useAuth.ts
85
+ export function useAuth() {
86
+ const user = useState<User | null>('user', () => null)
87
+ const isLoggedIn = computed(() => !!user.value)
88
+
89
+ async function login(credentials: Credentials) {
90
+ user.value = await $fetch('/api/auth/login', {
91
+ method: 'POST',
92
+ body: credentials,
93
+ })
94
+ }
95
+
96
+ async function logout() {
97
+ await $fetch('/api/auth/logout', { method: 'POST' })
98
+ user.value = null
99
+ }
100
+
101
+ return { user, isLoggedIn, login, logout }
102
+ }
103
+ ```
104
+
105
+ ### Using Composables
106
+
107
+ ```vue
108
+ <script setup lang="ts">
109
+ // Auto-imported - no import statement needed
110
+ const { count, increment } = useCounter(10)
111
+ const { user, isLoggedIn, login } = useAuth()
112
+ </script>
113
+ ```
114
+
115
+ ### File Scanning Rules
116
+
117
+ Only top-level files are scanned:
118
+
119
+ ```
120
+ composables/
121
+ ├── useAuth.ts → useAuth() ✓
122
+ ├── useCounter.ts → useCounter() ✓
123
+ ├── index.ts → exports ✓
124
+ └── nested/
125
+ └── helper.ts → NOT auto-imported ✗
126
+ ```
127
+
128
+ Re-export nested composables:
129
+
130
+ ```ts
131
+ // composables/index.ts
132
+ export { useHelper } from './nested/helper'
133
+ ```
134
+
135
+ Or configure scanning:
136
+
137
+ ```ts
138
+ // nuxt.config.ts
139
+ export default defineNuxtConfig({
140
+ imports: {
141
+ dirs: [
142
+ 'composables',
143
+ 'composables/**', // Scan all nested
144
+ ],
145
+ },
146
+ })
147
+ ```
148
+
149
+ ## Utilities (`app/utils/`)
150
+
151
+ ```ts
152
+ // utils/format.ts
153
+ export function formatDate(date: Date) {
154
+ return date.toLocaleDateString()
155
+ }
156
+
157
+ export function formatCurrency(amount: number) {
158
+ return new Intl.NumberFormat('en-US', {
159
+ style: 'currency',
160
+ currency: 'USD',
161
+ }).format(amount)
162
+ }
163
+ ```
164
+
165
+ ```vue
166
+ <script setup lang="ts">
167
+ // Auto-imported
168
+ const date = formatDate(new Date())
169
+ const price = formatCurrency(99.99)
170
+ </script>
171
+ ```
172
+
173
+ ## Server Utils (`server/utils/`)
174
+
175
+ ```ts
176
+ // server/utils/db.ts
177
+ export function useDb() {
178
+ return createDbConnection()
179
+ }
180
+
181
+ // server/utils/auth.ts
182
+ export function verifyToken(token: string) {
183
+ return jwt.verify(token, process.env.JWT_SECRET)
184
+ }
185
+ ```
186
+
187
+ ```ts
188
+ // server/api/users.ts
189
+ export default defineEventHandler(() => {
190
+ const db = useDb() // Auto-imported
191
+ return db.query('SELECT * FROM users')
192
+ })
193
+ ```
194
+
195
+ ## Third-party Package Imports
196
+
197
+ ```ts
198
+ // nuxt.config.ts
199
+ export default defineNuxtConfig({
200
+ imports: {
201
+ presets: [
202
+ {
203
+ from: 'vue-i18n',
204
+ imports: ['useI18n'],
205
+ },
206
+ {
207
+ from: 'date-fns',
208
+ imports: ['format', 'parseISO', 'differenceInDays'],
209
+ },
210
+ {
211
+ from: '@vueuse/core',
212
+ imports: ['useMouse', 'useWindowSize'],
213
+ },
214
+ ],
215
+ },
216
+ })
217
+ ```
218
+
219
+ ## Explicit Imports
220
+
221
+ Use `#imports` alias when needed:
222
+
223
+ ```vue
224
+ <script setup lang="ts">
225
+ import { ref, computed, useFetch } from '#imports'
226
+ </script>
227
+ ```
228
+
229
+ ## Composable Context Rules
230
+
231
+ Nuxt composables must be called in valid context:
232
+
233
+ ```ts
234
+ // ❌ Wrong - module level
235
+ const config = useRuntimeConfig()
236
+
237
+ export function useMyComposable() {}
238
+ ```
239
+
240
+ ```ts
241
+ // ✅ Correct - inside function
242
+ export function useMyComposable() {
243
+ const config = useRuntimeConfig()
244
+ return { apiBase: config.public.apiBase }
245
+ }
246
+ ```
247
+
248
+ **Valid contexts:**
249
+ - `<script setup>` block
250
+ - `setup()` function
251
+ - `defineNuxtPlugin()` callback
252
+ - `defineNuxtRouteMiddleware()` callback
253
+
254
+ ## Disabling Auto-imports
255
+
256
+ ```ts
257
+ // nuxt.config.ts
258
+ export default defineNuxtConfig({
259
+ // Disable all auto-imports
260
+ imports: {
261
+ autoImport: false,
262
+ },
263
+
264
+ // Or disable only directory scanning (keep Vue/Nuxt imports)
265
+ imports: {
266
+ scan: false,
267
+ },
268
+ })
269
+ ```
270
+
271
+ <!--
272
+ Source references:
273
+ - https://nuxt.com/docs/guide/concepts/auto-imports
274
+ - https://nuxt.com/docs/directory-structure/app/composables
275
+ - https://nuxt.com/docs/directory-structure/app/utils
276
+ -->
@@ -0,0 +1,265 @@
1
+ ---
2
+ name: server-routes
3
+ description: API routes, server middleware, and Nitro server engine in Nuxt
4
+ ---
5
+
6
+ # Server Routes
7
+
8
+ Nuxt includes Nitro server engine for building full-stack applications with API routes and server middleware.
9
+
10
+ ## API Routes
11
+
12
+ Create files in `server/api/` directory:
13
+
14
+ ```ts
15
+ // server/api/hello.ts
16
+ export default defineEventHandler((event) => {
17
+ return { message: 'Hello World' }
18
+ })
19
+ ```
20
+
21
+ Access at `/api/hello`.
22
+
23
+ ### HTTP Methods
24
+
25
+ ```ts
26
+ // server/api/users.get.ts - GET /api/users
27
+ export default defineEventHandler(() => {
28
+ return getUsers()
29
+ })
30
+
31
+ // server/api/users.post.ts - POST /api/users
32
+ export default defineEventHandler(async (event) => {
33
+ const body = await readBody(event)
34
+ return createUser(body)
35
+ })
36
+
37
+ // server/api/users/[id].put.ts - PUT /api/users/:id
38
+ export default defineEventHandler(async (event) => {
39
+ const id = getRouterParam(event, 'id')
40
+ const body = await readBody(event)
41
+ return updateUser(id, body)
42
+ })
43
+
44
+ // server/api/users/[id].delete.ts - DELETE /api/users/:id
45
+ export default defineEventHandler((event) => {
46
+ const id = getRouterParam(event, 'id')
47
+ return deleteUser(id)
48
+ })
49
+ ```
50
+
51
+ ### Route Parameters
52
+
53
+ ```ts
54
+ // server/api/posts/[id].ts
55
+ export default defineEventHandler((event) => {
56
+ const id = getRouterParam(event, 'id')
57
+ return getPost(id)
58
+ })
59
+
60
+ // Catch-all: server/api/[...path].ts
61
+ export default defineEventHandler((event) => {
62
+ const path = getRouterParam(event, 'path')
63
+ return { path }
64
+ })
65
+ ```
66
+
67
+ ### Query Parameters
68
+
69
+ ```ts
70
+ // server/api/search.ts
71
+ // GET /api/search?q=nuxt&page=1
72
+ export default defineEventHandler((event) => {
73
+ const query = getQuery(event)
74
+ // { q: 'nuxt', page: '1' }
75
+ return search(query.q, Number(query.page))
76
+ })
77
+ ```
78
+
79
+ ### Request Body
80
+
81
+ ```ts
82
+ // server/api/submit.post.ts
83
+ export default defineEventHandler(async (event) => {
84
+ const body = await readBody(event)
85
+ // Validate and process body
86
+ return { success: true, data: body }
87
+ })
88
+ ```
89
+
90
+ ### Headers and Cookies
91
+
92
+ ```ts
93
+ // server/api/auth.ts
94
+ export default defineEventHandler((event) => {
95
+ // Read headers
96
+ const auth = getHeader(event, 'authorization')
97
+
98
+ // Read cookies
99
+ const cookies = parseCookies(event)
100
+ const token = getCookie(event, 'token')
101
+
102
+ // Set headers
103
+ setHeader(event, 'X-Custom-Header', 'value')
104
+
105
+ // Set cookies
106
+ setCookie(event, 'token', 'new-token', {
107
+ httpOnly: true,
108
+ secure: true,
109
+ maxAge: 60 * 60 * 24, // 1 day
110
+ })
111
+
112
+ return { authenticated: !!token }
113
+ })
114
+ ```
115
+
116
+ ## Server Middleware
117
+
118
+ Runs on every request before routes:
119
+
120
+ ```ts
121
+ // server/middleware/auth.ts
122
+ export default defineEventHandler((event) => {
123
+ const token = getCookie(event, 'token')
124
+
125
+ // Attach data to event context
126
+ event.context.user = token ? verifyToken(token) : null
127
+ })
128
+
129
+ // server/middleware/log.ts
130
+ export default defineEventHandler((event) => {
131
+ console.log(`${event.method} ${event.path}`)
132
+ })
133
+ ```
134
+
135
+ Access context in routes:
136
+
137
+ ```ts
138
+ // server/api/profile.ts
139
+ export default defineEventHandler((event) => {
140
+ const user = event.context.user
141
+ if (!user) {
142
+ throw createError({ statusCode: 401, message: 'Unauthorized' })
143
+ }
144
+ return user
145
+ })
146
+ ```
147
+
148
+ ## Error Handling
149
+
150
+ ```ts
151
+ // server/api/users/[id].ts
152
+ export default defineEventHandler((event) => {
153
+ const id = getRouterParam(event, 'id')
154
+ const user = findUser(id)
155
+
156
+ if (!user) {
157
+ throw createError({
158
+ statusCode: 404,
159
+ statusMessage: 'User not found',
160
+ })
161
+ }
162
+
163
+ return user
164
+ })
165
+ ```
166
+
167
+ ## Server Utils
168
+
169
+ Auto-imported in `server/utils/`:
170
+
171
+ ```ts
172
+ // server/utils/db.ts
173
+ export function useDb() {
174
+ return createDbConnection()
175
+ }
176
+ ```
177
+
178
+ ```ts
179
+ // server/api/users.ts
180
+ export default defineEventHandler(() => {
181
+ const db = useDb() // Auto-imported
182
+ return db.query('SELECT * FROM users')
183
+ })
184
+ ```
185
+
186
+ ## Server Plugins
187
+
188
+ Run once when server starts:
189
+
190
+ ```ts
191
+ // server/plugins/db.ts
192
+ export default defineNitroPlugin((nitroApp) => {
193
+ // Initialize database connection
194
+ const db = createDbConnection()
195
+
196
+ // Add to context
197
+ nitroApp.hooks.hook('request', (event) => {
198
+ event.context.db = db
199
+ })
200
+ })
201
+ ```
202
+
203
+ ## Streaming Responses
204
+
205
+ ```ts
206
+ // server/api/stream.ts
207
+ export default defineEventHandler((event) => {
208
+ setHeader(event, 'Content-Type', 'text/event-stream')
209
+ setHeader(event, 'Cache-Control', 'no-cache')
210
+ setHeader(event, 'Connection', 'keep-alive')
211
+
212
+ const stream = new ReadableStream({
213
+ async start(controller) {
214
+ for (let i = 0; i < 10; i++) {
215
+ controller.enqueue(`data: ${JSON.stringify({ count: i })}\n\n`)
216
+ await new Promise(r => setTimeout(r, 1000))
217
+ }
218
+ controller.close()
219
+ },
220
+ })
221
+
222
+ return stream
223
+ })
224
+ ```
225
+
226
+ ## Server Storage
227
+
228
+ Key-value storage with multiple drivers:
229
+
230
+ ```ts
231
+ // server/api/cache.ts
232
+ export default defineEventHandler(async (event) => {
233
+ const storage = useStorage()
234
+
235
+ // Set value
236
+ await storage.setItem('key', { data: 'value' })
237
+
238
+ // Get value
239
+ const data = await storage.getItem('key')
240
+
241
+ return data
242
+ })
243
+ ```
244
+
245
+ Configure storage drivers in `nuxt.config.ts`:
246
+
247
+ ```ts
248
+ export default defineNuxtConfig({
249
+ nitro: {
250
+ storage: {
251
+ redis: {
252
+ driver: 'redis',
253
+ url: 'redis://localhost:6379',
254
+ },
255
+ },
256
+ },
257
+ })
258
+ ```
259
+
260
+ <!--
261
+ Source references:
262
+ - https://nuxt.com/docs/getting-started/server
263
+ - https://nuxt.com/docs/directory-structure/server
264
+ - https://nitro.build/guide
265
+ -->
@@ -0,0 +1,194 @@
1
+ ---
2
+ name: state-management
3
+ description: useState composable and SSR-friendly state management in Nuxt
4
+ ---
5
+
6
+ # State Management
7
+
8
+ Nuxt provides `useState` for SSR-friendly reactive state that persists across components.
9
+
10
+ ## useState
11
+
12
+ SSR-safe replacement for `ref` that shares state across components:
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ // State is shared by key 'counter' across all components
17
+ const counter = useState('counter', () => 0)
18
+ </script>
19
+
20
+ <template>
21
+ <div>
22
+ Counter: {{ counter }}
23
+ <button @click="counter++">+</button>
24
+ <button @click="counter--">-</button>
25
+ </div>
26
+ </template>
27
+ ```
28
+
29
+ ## Creating Shared State
30
+
31
+ Define reusable state composables:
32
+
33
+ ```ts
34
+ // composables/useUser.ts
35
+ export function useUser() {
36
+ return useState<User | null>('user', () => null)
37
+ }
38
+
39
+ export function useLocale() {
40
+ return useState('locale', () => 'en')
41
+ }
42
+ ```
43
+
44
+ ```vue
45
+ <script setup lang="ts">
46
+ // Same state instance everywhere
47
+ const user = useUser()
48
+ const locale = useLocale()
49
+ </script>
50
+ ```
51
+
52
+ ## Initializing State
53
+
54
+ Use `callOnce` to initialize state with async data:
55
+
56
+ ```vue
57
+ <script setup lang="ts">
58
+ const config = useState('site-config')
59
+
60
+ await callOnce(async () => {
61
+ config.value = await $fetch('/api/config')
62
+ })
63
+ </script>
64
+ ```
65
+
66
+ ## Best Practices
67
+
68
+ ### ❌ Don't Define State Outside Setup
69
+
70
+ ```ts
71
+ // ❌ Wrong - causes memory leaks and shared state across requests
72
+ export const globalState = ref({ user: null })
73
+ ```
74
+
75
+ ### ✅ Use useState Instead
76
+
77
+ ```ts
78
+ // ✅ Correct - SSR-safe
79
+ export const useGlobalState = () => useState('global', () => ({ user: null }))
80
+ ```
81
+
82
+ ## Clearing State
83
+
84
+ ```ts
85
+ // Clear specific state
86
+ clearNuxtState('counter')
87
+
88
+ // Clear multiple states
89
+ clearNuxtState(['counter', 'user'])
90
+
91
+ // Clear all state (use with caution)
92
+ clearNuxtState()
93
+ ```
94
+
95
+ ## With Pinia
96
+
97
+ For complex state management, use Pinia:
98
+
99
+ ```bash
100
+ npx nuxi module add pinia
101
+ ```
102
+
103
+ ```ts
104
+ // stores/counter.ts
105
+ export const useCounterStore = defineStore('counter', {
106
+ state: () => ({
107
+ count: 0,
108
+ }),
109
+ actions: {
110
+ increment() {
111
+ this.count++
112
+ },
113
+ },
114
+ })
115
+ ```
116
+
117
+ ```ts
118
+ // stores/user.ts (Composition API style)
119
+ export const useUserStore = defineStore('user', () => {
120
+ const user = ref<User | null>(null)
121
+ const isLoggedIn = computed(() => !!user.value)
122
+
123
+ async function login(credentials: Credentials) {
124
+ user.value = await $fetch('/api/login', {
125
+ method: 'POST',
126
+ body: credentials,
127
+ })
128
+ }
129
+
130
+ return { user, isLoggedIn, login }
131
+ })
132
+ ```
133
+
134
+ ```vue
135
+ <script setup lang="ts">
136
+ const counterStore = useCounterStore()
137
+ const userStore = useUserStore()
138
+
139
+ // Initialize store data once
140
+ await callOnce(async () => {
141
+ await userStore.fetchUser()
142
+ })
143
+ </script>
144
+ ```
145
+
146
+ ## Advanced: Locale Example
147
+
148
+ ```ts
149
+ // composables/useLocale.ts
150
+ export function useLocale() {
151
+ return useState('locale', () => useDefaultLocale().value)
152
+ }
153
+
154
+ export function useDefaultLocale(fallback = 'en-US') {
155
+ const locale = ref(fallback)
156
+
157
+ if (import.meta.server) {
158
+ const reqLocale = useRequestHeaders()['accept-language']?.split(',')[0]
159
+ if (reqLocale) locale.value = reqLocale
160
+ }
161
+ else if (import.meta.client) {
162
+ const navLang = navigator.language
163
+ if (navLang) locale.value = navLang
164
+ }
165
+
166
+ return locale
167
+ }
168
+ ```
169
+
170
+ ## State Serialization
171
+
172
+ `useState` values are serialized to JSON. Avoid:
173
+
174
+ - Functions
175
+ - Classes
176
+ - Symbols
177
+ - Circular references
178
+
179
+ ```ts
180
+ // ❌ Won't work
181
+ useState('fn', () => () => console.log('hi'))
182
+ useState('instance', () => new MyClass())
183
+
184
+ // ✅ Works
185
+ useState('data', () => ({ name: 'John', age: 30 }))
186
+ useState('items', () => ['a', 'b', 'c'])
187
+ ```
188
+
189
+ <!--
190
+ Source references:
191
+ - https://nuxt.com/docs/getting-started/state-management
192
+ - https://nuxt.com/docs/api/composables/use-state
193
+ - https://nuxt.com/docs/api/utils/clear-nuxt-state
194
+ -->