devskill 2.0.2

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 (654) hide show
  1. package/README.md +123 -0
  2. package/README.vn.md +104 -0
  3. package/SKILL_GUIDE.vn.md +252 -0
  4. package/bin/devskill.js +11 -0
  5. package/meta.ts +123 -0
  6. package/package.json +21 -0
  7. package/publish.sh +50 -0
  8. package/scripts/cli.ts +556 -0
  9. package/skills/builderx_api-contexts/SKILL.md +63 -0
  10. package/skills/builderx_api-contexts/references/core-multi-outbox.md +57 -0
  11. package/skills/builderx_api-controllers/SKILL.md +49 -0
  12. package/skills/builderx_api-controllers/references/core-fallback.md +62 -0
  13. package/skills/builderx_api-schemas/SKILL.md +76 -0
  14. package/skills/builderx_api-schemas/references/core-schema.md +78 -0
  15. package/skills/builderx_spa-api/SKILL.md +67 -0
  16. package/skills/builderx_spa-api/references/base-api.md +97 -0
  17. package/skills/builderx_spa-api/references/fetch.md +70 -0
  18. package/skills/builderx_spa-design/SKILL.md +82 -0
  19. package/skills/builderx_spa-design/references/core-text-design.md +64 -0
  20. package/skills/builderx_spa-design/references/features-feedback-actions.md +76 -0
  21. package/skills/builderx_spa-design/references/features-forms.md +91 -0
  22. package/skills/builderx_spa-design/references/features-layout-navigation.md +121 -0
  23. package/skills/builderx_spa-permission/SKILL.md +38 -0
  24. package/skills/builderx_spa-permission/references/has-permission.md +34 -0
  25. package/skills/composition-patterns/AGENTS.md +946 -0
  26. package/skills/composition-patterns/README.md +60 -0
  27. package/skills/composition-patterns/SKILL.md +89 -0
  28. package/skills/composition-patterns/SYNC.md +5 -0
  29. package/skills/composition-patterns/metadata.json +11 -0
  30. package/skills/composition-patterns/rules/_sections.md +29 -0
  31. package/skills/composition-patterns/rules/_template.md +24 -0
  32. package/skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  33. package/skills/composition-patterns/rules/architecture-compound-components.md +112 -0
  34. package/skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  35. package/skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  36. package/skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
  37. package/skills/composition-patterns/rules/state-context-interface.md +191 -0
  38. package/skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
  39. package/skills/composition-patterns/rules/state-lift-state.md +125 -0
  40. package/skills/deploy-to-vercel/Archive.zip +0 -0
  41. package/skills/deploy-to-vercel/SKILL.md +296 -0
  42. package/skills/deploy-to-vercel/SYNC.md +5 -0
  43. package/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
  44. package/skills/deploy-to-vercel/resources/deploy.sh +301 -0
  45. package/skills/pinia/SKILL.md +105 -0
  46. package/skills/pinia/references/api-in-composables.md +139 -0
  47. package/skills/pinia/references/setup-stores.md +105 -0
  48. package/skills/pinia/references/using-in-components.md +91 -0
  49. package/skills/pinia-options/SKILL.md +72 -0
  50. package/skills/pinia-options/references/core-option-stores.md +149 -0
  51. package/skills/pinia-options/references/using-in-options-api.md +105 -0
  52. package/skills/react-best-practices/AGENTS.md +3373 -0
  53. package/skills/react-best-practices/README.md +123 -0
  54. package/skills/react-best-practices/SKILL.md +143 -0
  55. package/skills/react-best-practices/SYNC.md +5 -0
  56. package/skills/react-best-practices/metadata.json +15 -0
  57. package/skills/react-best-practices/rules/_sections.md +46 -0
  58. package/skills/react-best-practices/rules/_template.md +28 -0
  59. package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  60. package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  61. package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  62. package/skills/react-best-practices/rules/async-api-routes.md +38 -0
  63. package/skills/react-best-practices/rules/async-defer-await.md +80 -0
  64. package/skills/react-best-practices/rules/async-dependencies.md +51 -0
  65. package/skills/react-best-practices/rules/async-parallel.md +28 -0
  66. package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  67. package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  68. package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  69. package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  70. package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  71. package/skills/react-best-practices/rules/bundle-preload.md +50 -0
  72. package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  73. package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  74. package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  75. package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  76. package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  77. package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  78. package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  79. package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  80. package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  81. package/skills/react-best-practices/rules/js-early-exit.md +50 -0
  82. package/skills/react-best-practices/rules/js-flatmap-filter.md +60 -0
  83. package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  84. package/skills/react-best-practices/rules/js-index-maps.md +37 -0
  85. package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  86. package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  87. package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  88. package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  89. package/skills/react-best-practices/rules/rendering-activity.md +26 -0
  90. package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  91. package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  92. package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  93. package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  94. package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  95. package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  96. package/skills/react-best-practices/rules/rendering-resource-hints.md +85 -0
  97. package/skills/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  98. package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  99. package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  100. package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  101. package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  102. package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  103. package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  104. package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  105. package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  106. package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  107. package/skills/react-best-practices/rules/rerender-memo.md +44 -0
  108. package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  109. package/skills/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  110. package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  111. package/skills/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  112. package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  113. package/skills/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  114. package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  115. package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  116. package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  117. package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  118. package/skills/react-best-practices/rules/server-cache-react.md +76 -0
  119. package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  120. package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
  121. package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  122. package/skills/react-best-practices/rules/server-serialization.md +38 -0
  123. package/skills/react-native-skills/AGENTS.md +2897 -0
  124. package/skills/react-native-skills/README.md +165 -0
  125. package/skills/react-native-skills/SKILL.md +121 -0
  126. package/skills/react-native-skills/SYNC.md +5 -0
  127. package/skills/react-native-skills/metadata.json +16 -0
  128. package/skills/react-native-skills/rules/_sections.md +86 -0
  129. package/skills/react-native-skills/rules/_template.md +28 -0
  130. package/skills/react-native-skills/rules/animation-derived-value.md +53 -0
  131. package/skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  132. package/skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
  133. package/skills/react-native-skills/rules/design-system-compound-components.md +66 -0
  134. package/skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
  135. package/skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
  136. package/skills/react-native-skills/rules/js-hoist-intl.md +61 -0
  137. package/skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
  138. package/skills/react-native-skills/rules/list-performance-function-references.md +132 -0
  139. package/skills/react-native-skills/rules/list-performance-images.md +53 -0
  140. package/skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
  141. package/skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
  142. package/skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
  143. package/skills/react-native-skills/rules/list-performance-item-types.md +104 -0
  144. package/skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
  145. package/skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  146. package/skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  147. package/skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
  148. package/skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  149. package/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  150. package/skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
  151. package/skills/react-native-skills/rules/react-state-fallback.md +56 -0
  152. package/skills/react-native-skills/rules/react-state-minimize.md +65 -0
  153. package/skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  154. package/skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  155. package/skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
  156. package/skills/react-native-skills/rules/state-ground-truth.md +80 -0
  157. package/skills/react-native-skills/rules/ui-expo-image.md +66 -0
  158. package/skills/react-native-skills/rules/ui-image-gallery.md +104 -0
  159. package/skills/react-native-skills/rules/ui-measure-views.md +78 -0
  160. package/skills/react-native-skills/rules/ui-menus.md +174 -0
  161. package/skills/react-native-skills/rules/ui-native-modals.md +77 -0
  162. package/skills/react-native-skills/rules/ui-pressable.md +61 -0
  163. package/skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  164. package/skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  165. package/skills/react-native-skills/rules/ui-styling.md +87 -0
  166. package/skills/slidev/LICENSE.md +21 -0
  167. package/skills/slidev/README.md +61 -0
  168. package/skills/slidev/SKILL.md +189 -0
  169. package/skills/slidev/SYNC.md +5 -0
  170. package/skills/slidev/references/animation-click-marker.md +37 -0
  171. package/skills/slidev/references/animation-drawing.md +68 -0
  172. package/skills/slidev/references/animation-rough-marker.md +53 -0
  173. package/skills/slidev/references/api-slide-hooks.md +37 -0
  174. package/skills/slidev/references/build-og-image.md +36 -0
  175. package/skills/slidev/references/build-pdf.md +40 -0
  176. package/skills/slidev/references/build-remote-assets.md +34 -0
  177. package/skills/slidev/references/build-seo-meta.md +43 -0
  178. package/skills/slidev/references/code-groups.md +64 -0
  179. package/skills/slidev/references/code-import-snippet.md +55 -0
  180. package/skills/slidev/references/code-line-highlighting.md +50 -0
  181. package/skills/slidev/references/code-line-numbers.md +46 -0
  182. package/skills/slidev/references/code-magic-move.md +57 -0
  183. package/skills/slidev/references/code-max-height.md +37 -0
  184. package/skills/slidev/references/code-twoslash.md +42 -0
  185. package/skills/slidev/references/core-animations.md +196 -0
  186. package/skills/slidev/references/core-cli.md +140 -0
  187. package/skills/slidev/references/core-components.md +197 -0
  188. package/skills/slidev/references/core-exporting.md +148 -0
  189. package/skills/slidev/references/core-frontmatter.md +195 -0
  190. package/skills/slidev/references/core-global-context.md +155 -0
  191. package/skills/slidev/references/core-headmatter.md +188 -0
  192. package/skills/slidev/references/core-hosting.md +152 -0
  193. package/skills/slidev/references/core-layouts.md +286 -0
  194. package/skills/slidev/references/core-syntax.md +155 -0
  195. package/skills/slidev/references/diagram-latex.md +55 -0
  196. package/skills/slidev/references/diagram-mermaid.md +44 -0
  197. package/skills/slidev/references/diagram-plantuml.md +45 -0
  198. package/skills/slidev/references/editor-monaco-run.md +44 -0
  199. package/skills/slidev/references/editor-monaco-write.md +24 -0
  200. package/skills/slidev/references/editor-monaco.md +50 -0
  201. package/skills/slidev/references/editor-prettier.md +40 -0
  202. package/skills/slidev/references/editor-side.md +23 -0
  203. package/skills/slidev/references/editor-vscode.md +55 -0
  204. package/skills/slidev/references/layout-canvas-size.md +25 -0
  205. package/skills/slidev/references/layout-draggable.md +57 -0
  206. package/skills/slidev/references/layout-global-layers.md +50 -0
  207. package/skills/slidev/references/layout-slots.md +75 -0
  208. package/skills/slidev/references/layout-transform.md +33 -0
  209. package/skills/slidev/references/layout-zoom.md +39 -0
  210. package/skills/slidev/references/presenter-notes-ruby.md +35 -0
  211. package/skills/slidev/references/presenter-recording.md +30 -0
  212. package/skills/slidev/references/presenter-remote.md +40 -0
  213. package/skills/slidev/references/presenter-timer.md +34 -0
  214. package/skills/slidev/references/style-direction.md +34 -0
  215. package/skills/slidev/references/style-icons.md +46 -0
  216. package/skills/slidev/references/style-scoped.md +50 -0
  217. package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  218. package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  219. package/skills/slidev/references/syntax-importing-slides.md +60 -0
  220. package/skills/slidev/references/syntax-mdc.md +51 -0
  221. package/skills/slidev/references/tool-eject-theme.md +27 -0
  222. package/skills/tsdown/LICENSE.md +22 -0
  223. package/skills/tsdown/README.md +77 -0
  224. package/skills/tsdown/SKILL.md +407 -0
  225. package/skills/tsdown/SYNC.md +5 -0
  226. package/skills/tsdown/references/README.md +139 -0
  227. package/skills/tsdown/references/advanced-benchmark.md +8 -0
  228. package/skills/tsdown/references/advanced-ci.md +89 -0
  229. package/skills/tsdown/references/advanced-hooks.md +363 -0
  230. package/skills/tsdown/references/advanced-plugins.md +381 -0
  231. package/skills/tsdown/references/advanced-programmatic.md +378 -0
  232. package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
  233. package/skills/tsdown/references/guide-getting-started.md +178 -0
  234. package/skills/tsdown/references/guide-introduction.md +42 -0
  235. package/skills/tsdown/references/guide-migrate-from-tsup.md +189 -0
  236. package/skills/tsdown/references/option-cjs-default.md +98 -0
  237. package/skills/tsdown/references/option-cleaning.md +275 -0
  238. package/skills/tsdown/references/option-config-file.md +281 -0
  239. package/skills/tsdown/references/option-css.md +301 -0
  240. package/skills/tsdown/references/option-dependencies.md +385 -0
  241. package/skills/tsdown/references/option-dts.md +251 -0
  242. package/skills/tsdown/references/option-entry.md +211 -0
  243. package/skills/tsdown/references/option-exe.md +120 -0
  244. package/skills/tsdown/references/option-lint.md +127 -0
  245. package/skills/tsdown/references/option-log-level.md +91 -0
  246. package/skills/tsdown/references/option-minification.md +177 -0
  247. package/skills/tsdown/references/option-output-directory.md +270 -0
  248. package/skills/tsdown/references/option-output-format.md +181 -0
  249. package/skills/tsdown/references/option-package-exports.md +320 -0
  250. package/skills/tsdown/references/option-platform.md +256 -0
  251. package/skills/tsdown/references/option-root.md +88 -0
  252. package/skills/tsdown/references/option-shims.md +299 -0
  253. package/skills/tsdown/references/option-sourcemap.md +301 -0
  254. package/skills/tsdown/references/option-target.md +222 -0
  255. package/skills/tsdown/references/option-tree-shaking.md +335 -0
  256. package/skills/tsdown/references/option-unbundle.md +310 -0
  257. package/skills/tsdown/references/option-watch-mode.md +261 -0
  258. package/skills/tsdown/references/recipe-react.md +338 -0
  259. package/skills/tsdown/references/recipe-solid.md +46 -0
  260. package/skills/tsdown/references/recipe-svelte.md +54 -0
  261. package/skills/tsdown/references/recipe-vue.md +387 -0
  262. package/skills/tsdown/references/recipe-wasm.md +125 -0
  263. package/skills/tsdown/references/reference-cli.md +472 -0
  264. package/skills/turborepo/LICENSE.md +7 -0
  265. package/skills/turborepo/SKILL.md +951 -0
  266. package/skills/turborepo/SYNC.md +5 -0
  267. package/skills/turborepo/command/turborepo.md +70 -0
  268. package/skills/turborepo/references/best-practices/RULE.md +241 -0
  269. package/skills/turborepo/references/best-practices/dependencies.md +246 -0
  270. package/skills/turborepo/references/best-practices/packages.md +335 -0
  271. package/skills/turborepo/references/best-practices/structure.md +297 -0
  272. package/skills/turborepo/references/boundaries/RULE.md +126 -0
  273. package/skills/turborepo/references/caching/RULE.md +153 -0
  274. package/skills/turborepo/references/caching/gotchas.md +190 -0
  275. package/skills/turborepo/references/caching/remote-cache.md +127 -0
  276. package/skills/turborepo/references/ci/RULE.md +79 -0
  277. package/skills/turborepo/references/ci/github-actions.md +162 -0
  278. package/skills/turborepo/references/ci/patterns.md +145 -0
  279. package/skills/turborepo/references/ci/vercel.md +103 -0
  280. package/skills/turborepo/references/cli/RULE.md +100 -0
  281. package/skills/turborepo/references/cli/commands.md +297 -0
  282. package/skills/turborepo/references/configuration/RULE.md +235 -0
  283. package/skills/turborepo/references/configuration/global-options.md +239 -0
  284. package/skills/turborepo/references/configuration/gotchas.md +368 -0
  285. package/skills/turborepo/references/configuration/tasks.md +325 -0
  286. package/skills/turborepo/references/environment/RULE.md +123 -0
  287. package/skills/turborepo/references/environment/gotchas.md +175 -0
  288. package/skills/turborepo/references/environment/modes.md +101 -0
  289. package/skills/turborepo/references/filtering/RULE.md +148 -0
  290. package/skills/turborepo/references/filtering/patterns.md +152 -0
  291. package/skills/turborepo/references/watch/RULE.md +99 -0
  292. package/skills/vercel-cli-with-tokens/SKILL.md +328 -0
  293. package/skills/vercel-cli-with-tokens/SYNC.md +5 -0
  294. package/skills/vue/SKILL.md +90 -0
  295. package/skills/vue/references/composables.md +54 -0
  296. package/skills/vue/references/lifecycle.md +31 -0
  297. package/skills/vue/references/props-emits.md +62 -0
  298. package/skills/vue/references/provide-inject.md +47 -0
  299. package/skills/vue/references/state.md +65 -0
  300. package/skills/vue-antdv-tailwind/SKILL.md +33 -0
  301. package/skills/vue-antdv-tailwind/references/styling-rules.md +61 -0
  302. package/skills/vue-best-practices/LICENSE.md +21 -0
  303. package/skills/vue-best-practices/SKILL.md +154 -0
  304. package/skills/vue-best-practices/SYNC.md +5 -0
  305. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  306. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  307. package/skills/vue-best-practices/references/component-async.md +97 -0
  308. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  309. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  310. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  311. package/skills/vue-best-practices/references/component-slots.md +216 -0
  312. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  313. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  314. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  315. package/skills/vue-best-practices/references/component-transition.md +125 -0
  316. package/skills/vue-best-practices/references/composables.md +290 -0
  317. package/skills/vue-best-practices/references/directives.md +162 -0
  318. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  319. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  320. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  321. package/skills/vue-best-practices/references/plugins.md +166 -0
  322. package/skills/vue-best-practices/references/reactivity.md +344 -0
  323. package/skills/vue-best-practices/references/render-functions.md +201 -0
  324. package/skills/vue-best-practices/references/sfc.md +310 -0
  325. package/skills/vue-best-practices/references/state-management.md +135 -0
  326. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  327. package/skills/vue-jsx-best-practices/LICENSE.md +21 -0
  328. package/skills/vue-jsx-best-practices/SKILL.md +12 -0
  329. package/skills/vue-jsx-best-practices/SYNC.md +5 -0
  330. package/skills/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
  331. package/skills/vue-options/SKILL.md +98 -0
  332. package/skills/vue-options/references/lifecycle.md +107 -0
  333. package/skills/vue-options/references/mixins.md +96 -0
  334. package/skills/vue-options/references/props-emits.md +106 -0
  335. package/skills/vue-options/references/provide-inject.md +92 -0
  336. package/skills/vue-options/references/state.md +115 -0
  337. package/skills/vue-options-api-best-practices/LICENSE.md +21 -0
  338. package/skills/vue-options-api-best-practices/SKILL.md +23 -0
  339. package/skills/vue-options-api-best-practices/SYNC.md +5 -0
  340. package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
  341. package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
  342. package/skills/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
  343. package/skills/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
  344. package/skills/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
  345. package/skills/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
  346. package/skills/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
  347. package/skills/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
  348. package/skills/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
  349. package/skills/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
  350. package/skills/vue-pinia-best-practices/LICENSE.md +21 -0
  351. package/skills/vue-pinia-best-practices/SKILL.md +21 -0
  352. package/skills/vue-pinia-best-practices/SYNC.md +5 -0
  353. package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
  354. package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
  355. package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
  356. package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
  357. package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
  358. package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
  359. package/skills/vue-router-best-practices/LICENSE.md +21 -0
  360. package/skills/vue-router-best-practices/SKILL.md +23 -0
  361. package/skills/vue-router-best-practices/SYNC.md +5 -0
  362. package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
  363. package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
  364. package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
  365. package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
  366. package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
  367. package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
  368. package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
  369. package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
  370. package/skills/vue-testing-best-practices/LICENSE.md +21 -0
  371. package/skills/vue-testing-best-practices/SKILL.md +29 -0
  372. package/skills/vue-testing-best-practices/SYNC.md +5 -0
  373. package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
  374. package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
  375. package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
  376. package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
  377. package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
  378. package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
  379. package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
  380. package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
  381. package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
  382. package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
  383. package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
  384. package/skills/vueuse-functions/LICENSE.md +21 -0
  385. package/skills/vueuse-functions/SKILL.md +419 -0
  386. package/skills/vueuse-functions/SYNC.md +5 -0
  387. package/skills/vueuse-functions/references/computedAsync.md +195 -0
  388. package/skills/vueuse-functions/references/computedEager.md +62 -0
  389. package/skills/vueuse-functions/references/computedInject.md +137 -0
  390. package/skills/vueuse-functions/references/computedWithControl.md +98 -0
  391. package/skills/vueuse-functions/references/createEventHook.md +86 -0
  392. package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  393. package/skills/vueuse-functions/references/createGlobalState.md +95 -0
  394. package/skills/vueuse-functions/references/createInjectionState.md +215 -0
  395. package/skills/vueuse-functions/references/createProjection.md +31 -0
  396. package/skills/vueuse-functions/references/createRef.md +54 -0
  397. package/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
  398. package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  399. package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
  400. package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  401. package/skills/vueuse-functions/references/extendRef.md +76 -0
  402. package/skills/vueuse-functions/references/from.md +80 -0
  403. package/skills/vueuse-functions/references/get.md +30 -0
  404. package/skills/vueuse-functions/references/injectLocal.md +35 -0
  405. package/skills/vueuse-functions/references/isDefined.md +31 -0
  406. package/skills/vueuse-functions/references/logicAnd.md +40 -0
  407. package/skills/vueuse-functions/references/logicNot.md +36 -0
  408. package/skills/vueuse-functions/references/logicOr.md +40 -0
  409. package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  410. package/skills/vueuse-functions/references/onClickOutside.md +221 -0
  411. package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
  412. package/skills/vueuse-functions/references/onKeyStroke.md +211 -0
  413. package/skills/vueuse-functions/references/onLongPress.md +227 -0
  414. package/skills/vueuse-functions/references/onStartTyping.md +53 -0
  415. package/skills/vueuse-functions/references/provideLocal.md +37 -0
  416. package/skills/vueuse-functions/references/reactify.md +144 -0
  417. package/skills/vueuse-functions/references/reactifyObject.md +62 -0
  418. package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  419. package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  420. package/skills/vueuse-functions/references/reactivePick.md +106 -0
  421. package/skills/vueuse-functions/references/refAutoReset.md +46 -0
  422. package/skills/vueuse-functions/references/refDebounced.md +81 -0
  423. package/skills/vueuse-functions/references/refDefault.md +36 -0
  424. package/skills/vueuse-functions/references/refManualReset.md +44 -0
  425. package/skills/vueuse-functions/references/refThrottled.md +99 -0
  426. package/skills/vueuse-functions/references/refWithControl.md +146 -0
  427. package/skills/vueuse-functions/references/set.md +30 -0
  428. package/skills/vueuse-functions/references/syncRef.md +195 -0
  429. package/skills/vueuse-functions/references/syncRefs.md +128 -0
  430. package/skills/vueuse-functions/references/templateRef.md +86 -0
  431. package/skills/vueuse-functions/references/toObserver.md +38 -0
  432. package/skills/vueuse-functions/references/toReactive.md +41 -0
  433. package/skills/vueuse-functions/references/toRef.md +75 -0
  434. package/skills/vueuse-functions/references/toRefs.md +81 -0
  435. package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  436. package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  437. package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  438. package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  439. package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  440. package/skills/vueuse-functions/references/unrefElement.md +54 -0
  441. package/skills/vueuse-functions/references/until.md +161 -0
  442. package/skills/vueuse-functions/references/useAbs.md +31 -0
  443. package/skills/vueuse-functions/references/useActiveElement.md +85 -0
  444. package/skills/vueuse-functions/references/useAnimate.md +181 -0
  445. package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  446. package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  447. package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  448. package/skills/vueuse-functions/references/useArrayFind.md +50 -0
  449. package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  450. package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  451. package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  452. package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  453. package/skills/vueuse-functions/references/useArrayMap.md +59 -0
  454. package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  455. package/skills/vueuse-functions/references/useArraySome.md +59 -0
  456. package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  457. package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
  458. package/skills/vueuse-functions/references/useAsyncState.md +185 -0
  459. package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  460. package/skills/vueuse-functions/references/useAuth.md +123 -0
  461. package/skills/vueuse-functions/references/useAverage.md +36 -0
  462. package/skills/vueuse-functions/references/useAxios.md +325 -0
  463. package/skills/vueuse-functions/references/useBase64.md +136 -0
  464. package/skills/vueuse-functions/references/useBattery.md +78 -0
  465. package/skills/vueuse-functions/references/useBluetooth.md +175 -0
  466. package/skills/vueuse-functions/references/useBreakpoints.md +172 -0
  467. package/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
  468. package/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
  469. package/skills/vueuse-functions/references/useCached.md +52 -0
  470. package/skills/vueuse-functions/references/useCeil.md +31 -0
  471. package/skills/vueuse-functions/references/useChangeCase.md +79 -0
  472. package/skills/vueuse-functions/references/useClamp.md +85 -0
  473. package/skills/vueuse-functions/references/useClipboard.md +123 -0
  474. package/skills/vueuse-functions/references/useClipboardItems.md +94 -0
  475. package/skills/vueuse-functions/references/useCloned.md +91 -0
  476. package/skills/vueuse-functions/references/useColorMode.md +172 -0
  477. package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  478. package/skills/vueuse-functions/references/useCookies.md +162 -0
  479. package/skills/vueuse-functions/references/useCountdown.md +105 -0
  480. package/skills/vueuse-functions/references/useCounter.md +86 -0
  481. package/skills/vueuse-functions/references/useCssSupports.md +35 -0
  482. package/skills/vueuse-functions/references/useCssVar.md +50 -0
  483. package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  484. package/skills/vueuse-functions/references/useCycleList.md +75 -0
  485. package/skills/vueuse-functions/references/useDark.md +144 -0
  486. package/skills/vueuse-functions/references/useDateFormat.md +145 -0
  487. package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  488. package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  489. package/skills/vueuse-functions/references/useDeviceMotion.md +86 -0
  490. package/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
  491. package/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
  492. package/skills/vueuse-functions/references/useDevicesList.md +90 -0
  493. package/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
  494. package/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
  495. package/skills/vueuse-functions/references/useDraggable.md +317 -0
  496. package/skills/vueuse-functions/references/useDrauu.md +65 -0
  497. package/skills/vueuse-functions/references/useDropZone.md +83 -0
  498. package/skills/vueuse-functions/references/useElementBounding.md +131 -0
  499. package/skills/vueuse-functions/references/useElementByPoint.md +48 -0
  500. package/skills/vueuse-functions/references/useElementHover.md +79 -0
  501. package/skills/vueuse-functions/references/useElementSize.md +78 -0
  502. package/skills/vueuse-functions/references/useElementVisibility.md +123 -0
  503. package/skills/vueuse-functions/references/useEventBus.md +101 -0
  504. package/skills/vueuse-functions/references/useEventListener.md +226 -0
  505. package/skills/vueuse-functions/references/useEventSource.md +204 -0
  506. package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
  507. package/skills/vueuse-functions/references/useEyeDropper.md +71 -0
  508. package/skills/vueuse-functions/references/useFavicon.md +67 -0
  509. package/skills/vueuse-functions/references/useFetch.md +546 -0
  510. package/skills/vueuse-functions/references/useFileDialog.md +91 -0
  511. package/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
  512. package/skills/vueuse-functions/references/useFirestore.md +129 -0
  513. package/skills/vueuse-functions/references/useFloor.md +31 -0
  514. package/skills/vueuse-functions/references/useFocus.md +99 -0
  515. package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  516. package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  517. package/skills/vueuse-functions/references/useFps.md +28 -0
  518. package/skills/vueuse-functions/references/useFullscreen.md +75 -0
  519. package/skills/vueuse-functions/references/useFuse.md +107 -0
  520. package/skills/vueuse-functions/references/useGamepad.md +222 -0
  521. package/skills/vueuse-functions/references/useGeolocation.md +85 -0
  522. package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  523. package/skills/vueuse-functions/references/useIdle.md +88 -0
  524. package/skills/vueuse-functions/references/useImage.md +86 -0
  525. package/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
  526. package/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
  527. package/skills/vueuse-functions/references/useInterval.md +112 -0
  528. package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  529. package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
  530. package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  531. package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  532. package/skills/vueuse-functions/references/useJwt.md +57 -0
  533. package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  534. package/skills/vueuse-functions/references/useLastChanged.md +63 -0
  535. package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  536. package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
  537. package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  538. package/skills/vueuse-functions/references/useMath.md +47 -0
  539. package/skills/vueuse-functions/references/useMax.md +36 -0
  540. package/skills/vueuse-functions/references/useMediaControls.md +571 -0
  541. package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  542. package/skills/vueuse-functions/references/useMemoize.md +175 -0
  543. package/skills/vueuse-functions/references/useMemory.md +71 -0
  544. package/skills/vueuse-functions/references/useMin.md +36 -0
  545. package/skills/vueuse-functions/references/useMounted.md +38 -0
  546. package/skills/vueuse-functions/references/useMouse.md +113 -0
  547. package/skills/vueuse-functions/references/useMouseInElement.md +123 -0
  548. package/skills/vueuse-functions/references/useMousePressed.md +112 -0
  549. package/skills/vueuse-functions/references/useMutationObserver.md +61 -0
  550. package/skills/vueuse-functions/references/useNProgress.md +78 -0
  551. package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  552. package/skills/vueuse-functions/references/useNetwork.md +106 -0
  553. package/skills/vueuse-functions/references/useNow.md +79 -0
  554. package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  555. package/skills/vueuse-functions/references/useObservable.md +91 -0
  556. package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  557. package/skills/vueuse-functions/references/useOnline.md +41 -0
  558. package/skills/vueuse-functions/references/usePageLeave.md +42 -0
  559. package/skills/vueuse-functions/references/useParallax.md +58 -0
  560. package/skills/vueuse-functions/references/useParentElement.md +54 -0
  561. package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  562. package/skills/vueuse-functions/references/usePermission.md +79 -0
  563. package/skills/vueuse-functions/references/usePointer.md +89 -0
  564. package/skills/vueuse-functions/references/usePointerLock.md +60 -0
  565. package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  566. package/skills/vueuse-functions/references/usePrecision.md +49 -0
  567. package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  568. package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  569. package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  570. package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  571. package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  572. package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  573. package/skills/vueuse-functions/references/usePrevious.md +40 -0
  574. package/skills/vueuse-functions/references/useProjection.md +38 -0
  575. package/skills/vueuse-functions/references/useQRCode.md +53 -0
  576. package/skills/vueuse-functions/references/useRTDB.md +83 -0
  577. package/skills/vueuse-functions/references/useRafFn.md +68 -0
  578. package/skills/vueuse-functions/references/useRefHistory.md +285 -0
  579. package/skills/vueuse-functions/references/useResizeObserver.md +109 -0
  580. package/skills/vueuse-functions/references/useRound.md +31 -0
  581. package/skills/vueuse-functions/references/useRouteHash.md +27 -0
  582. package/skills/vueuse-functions/references/useRouteParams.md +38 -0
  583. package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
  584. package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  585. package/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
  586. package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  587. package/skills/vueuse-functions/references/useScriptTag.md +116 -0
  588. package/skills/vueuse-functions/references/useScroll.md +238 -0
  589. package/skills/vueuse-functions/references/useScrollLock.md +66 -0
  590. package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  591. package/skills/vueuse-functions/references/useShare.md +68 -0
  592. package/skills/vueuse-functions/references/useSortable.md +235 -0
  593. package/skills/vueuse-functions/references/useSorted.md +90 -0
  594. package/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
  595. package/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
  596. package/skills/vueuse-functions/references/useStepper.md +137 -0
  597. package/skills/vueuse-functions/references/useStorage.md +278 -0
  598. package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
  599. package/skills/vueuse-functions/references/useStyleTag.md +131 -0
  600. package/skills/vueuse-functions/references/useSubject.md +77 -0
  601. package/skills/vueuse-functions/references/useSubscription.md +33 -0
  602. package/skills/vueuse-functions/references/useSum.md +36 -0
  603. package/skills/vueuse-functions/references/useSupported.md +29 -0
  604. package/skills/vueuse-functions/references/useSwipe.md +75 -0
  605. package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  606. package/skills/vueuse-functions/references/useTextDirection.md +75 -0
  607. package/skills/vueuse-functions/references/useTextSelection.md +40 -0
  608. package/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
  609. package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  610. package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  611. package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
  612. package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
  613. package/skills/vueuse-functions/references/useTimeout.md +113 -0
  614. package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  615. package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  616. package/skills/vueuse-functions/references/useTimestamp.md +89 -0
  617. package/skills/vueuse-functions/references/useTitle.md +113 -0
  618. package/skills/vueuse-functions/references/useToNumber.md +54 -0
  619. package/skills/vueuse-functions/references/useToString.md +34 -0
  620. package/skills/vueuse-functions/references/useToggle.md +103 -0
  621. package/skills/vueuse-functions/references/useTransition.md +265 -0
  622. package/skills/vueuse-functions/references/useTrunc.md +33 -0
  623. package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  624. package/skills/vueuse-functions/references/useUserMedia.md +1138 -0
  625. package/skills/vueuse-functions/references/useVModel.md +182 -0
  626. package/skills/vueuse-functions/references/useVModels.md +67 -0
  627. package/skills/vueuse-functions/references/useVibrate.md +87 -0
  628. package/skills/vueuse-functions/references/useVirtualList.md +182 -0
  629. package/skills/vueuse-functions/references/useWakeLock.md +50 -0
  630. package/skills/vueuse-functions/references/useWebNotification.md +176 -0
  631. package/skills/vueuse-functions/references/useWebSocket.md +299 -0
  632. package/skills/vueuse-functions/references/useWebWorker.md +60 -0
  633. package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  634. package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  635. package/skills/vueuse-functions/references/useWindowScroll.md +61 -0
  636. package/skills/vueuse-functions/references/useWindowSize.md +76 -0
  637. package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  638. package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  639. package/skills/vueuse-functions/references/watchArray.md +53 -0
  640. package/skills/vueuse-functions/references/watchAtMost.md +55 -0
  641. package/skills/vueuse-functions/references/watchDebounced.md +101 -0
  642. package/skills/vueuse-functions/references/watchDeep.md +54 -0
  643. package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
  644. package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  645. package/skills/vueuse-functions/references/watchImmediate.md +44 -0
  646. package/skills/vueuse-functions/references/watchOnce.md +41 -0
  647. package/skills/vueuse-functions/references/watchPausable.md +86 -0
  648. package/skills/vueuse-functions/references/watchThrottled.md +108 -0
  649. package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
  650. package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
  651. package/skills/vueuse-functions/references/whenever.md +100 -0
  652. package/skills/web-design-guidelines/SKILL.md +39 -0
  653. package/skills/web-design-guidelines/SYNC.md +5 -0
  654. package/tsconfig.json +17 -0
@@ -0,0 +1,278 @@
1
+ ---
2
+ category: State
3
+ related: useLocalStorage, useSessionStorage, useStorageAsync
4
+ ---
5
+
6
+ # useStorage
7
+
8
+ Create a reactive ref that can be used to access & modify [LocalStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) or [SessionStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage).
9
+
10
+ Uses localStorage by default, other storage sources be specified via third argument.
11
+
12
+ ## Usage
13
+
14
+ ::: tip
15
+ When using with Nuxt 3, this function will **NOT** be auto imported in favor of Nitro's built-in [`useStorage()`](https://nitro.unjs.io/guide/storage). Use explicit import if you want to use the function from VueUse.
16
+ :::
17
+
18
+ ```ts
19
+ import { useStorage } from '@vueuse/core'
20
+
21
+ // bind object
22
+ const state = useStorage('my-store', { hello: 'hi', greeting: 'Hello' })
23
+
24
+ // bind boolean
25
+ const flag = useStorage('my-flag', true) // returns Ref<boolean>
26
+
27
+ // bind number
28
+ const count = useStorage('my-count', 0) // returns Ref<number>
29
+
30
+ // bind string with SessionStorage
31
+ const id = useStorage('my-id', 'some-string-id', sessionStorage) // returns Ref<string>
32
+
33
+ // delete data from storage
34
+ state.value = null
35
+ ```
36
+
37
+ ## Merge Defaults
38
+
39
+ By default, `useStorage` will use the value from storage if it is present and ignores the default value. Be aware that when you are adding more properties to the default value, the key might be `undefined` if client's storage does not have that key.
40
+
41
+ ```ts
42
+ import { useStorage } from '@vueuse/core'
43
+ // ---cut---
44
+ localStorage.setItem('my-store', '{"hello": "hello"}')
45
+
46
+ const state = useStorage('my-store', { hello: 'hi', greeting: 'hello' }, localStorage)
47
+
48
+ console.log(state.value.greeting) // undefined, since the value is not presented in storage
49
+ ```
50
+
51
+ To solve that, you can enable `mergeDefaults` option.
52
+
53
+ ```ts
54
+ import { useStorage } from '@vueuse/core'
55
+ // ---cut---
56
+ localStorage.setItem('my-store', '{"hello": "nihao"}')
57
+
58
+ const state = useStorage(
59
+ 'my-store',
60
+ { hello: 'hi', greeting: 'hello' },
61
+ localStorage,
62
+ { mergeDefaults: true } // <--
63
+ )
64
+
65
+ console.log(state.value.hello) // 'nihao', from storage
66
+ console.log(state.value.greeting) // 'hello', from merged default value
67
+ ```
68
+
69
+ When setting it to true, it will perform a **shallow merge** for objects. You can pass a function to perform custom merge (e.g. deep merge), for example:
70
+
71
+ ```ts
72
+ import { useStorage } from '@vueuse/core'
73
+ // ---cut---
74
+ const state = useStorage(
75
+ 'my-store',
76
+ { hello: 'hi', greeting: 'hello' },
77
+ localStorage,
78
+ { mergeDefaults: (storageValue, defaults) => deepMerge(defaults, storageValue) } // <--
79
+ )
80
+ ```
81
+
82
+ ## Custom Serialization
83
+
84
+ By default, `useStorage` will smartly use the corresponding serializer based on the data type of provided default value. For example, `JSON.stringify` / `JSON.parse` will be used for objects, `Number.toString` / `parseFloat` for numbers, etc.
85
+
86
+ You can also provide your own serialization function to `useStorage`:
87
+
88
+ ```ts
89
+ import { useStorage } from '@vueuse/core'
90
+
91
+ useStorage(
92
+ 'key',
93
+ {},
94
+ undefined,
95
+ {
96
+ serializer: {
97
+ read: (v: any) => v ? JSON.parse(v) : null,
98
+ write: (v: any) => JSON.stringify(v),
99
+ },
100
+ },
101
+ )
102
+ ```
103
+
104
+ Please note when you provide `null` as the default value, `useStorage` can't assume the data type from it. In this case, you can provide a custom serializer or reuse the built-in ones explicitly.
105
+
106
+ ```ts
107
+ import { StorageSerializers, useStorage } from '@vueuse/core'
108
+
109
+ const objectLike = useStorage('key', null, undefined, { serializer: StorageSerializers.object })
110
+ objectLike.value = { foo: 'bar' }
111
+ ```
112
+
113
+ ### Built-in Serializers
114
+
115
+ The following serializers are available via `StorageSerializers`:
116
+
117
+ | Type | Description |
118
+ | --------- | ------------------------------------- |
119
+ | `string` | Plain string |
120
+ | `number` | Number (via `parseFloat`) |
121
+ | `boolean` | Boolean |
122
+ | `object` | JSON object/array |
123
+ | `map` | JavaScript `Map` |
124
+ | `set` | JavaScript `Set` |
125
+ | `date` | JavaScript `Date` (via `toISOString`) |
126
+ | `any` | Raw string passthrough |
127
+
128
+ ```ts
129
+ import { StorageSerializers, useStorage } from '@vueuse/core'
130
+
131
+ const myMap = useStorage('my-map', new Map(), undefined, {
132
+ serializer: StorageSerializers.map,
133
+ })
134
+ ```
135
+
136
+ ## Options
137
+
138
+ ```ts
139
+ useStorage('key', defaults, storage, {
140
+ // Watch for deep changes in objects/arrays (default: true)
141
+ deep: true,
142
+ // Sync across tabs via storage events (default: true)
143
+ listenToStorageChanges: true,
144
+ // Write default value to storage if not present (default: true)
145
+ writeDefaults: true,
146
+ // Use shallowRef instead of ref (default: false)
147
+ shallow: false,
148
+ // Initialize only after component is mounted (default: false)
149
+ initOnMounted: false,
150
+ // Custom error handler (default: console.error)
151
+ onError: e => console.error(e),
152
+ // Watch flush timing (default: 'pre')
153
+ flush: 'pre',
154
+ })
155
+ ```
156
+
157
+ ## Reactive Key
158
+
159
+ The storage key can be a ref or getter, and the data will be updated when the key changes:
160
+
161
+ ```ts
162
+ import { useStorage } from '@vueuse/core'
163
+
164
+ const userId = ref('user-1')
165
+ const userData = useStorage(
166
+ () => `user-data-${userId.value}`,
167
+ { name: '' },
168
+ )
169
+
170
+ // Changing the key will read from the new storage location
171
+ userId.value = 'user-2'
172
+ ```
173
+
174
+ ## Type Declarations
175
+
176
+ ```ts
177
+ export interface Serializer<T> {
178
+ read: (raw: string) => T
179
+ write: (value: T) => string
180
+ }
181
+ export interface SerializerAsync<T> {
182
+ read: (raw: string) => Awaitable<T>
183
+ write: (value: T) => Awaitable<string>
184
+ }
185
+ export declare const StorageSerializers: Record<
186
+ "boolean" | "object" | "number" | "any" | "string" | "map" | "set" | "date",
187
+ Serializer<any>
188
+ >
189
+ export declare const customStorageEventName = "vueuse-storage"
190
+ export interface StorageEventLike {
191
+ storageArea: StorageLike | null
192
+ key: StorageEvent["key"]
193
+ oldValue: StorageEvent["oldValue"]
194
+ newValue: StorageEvent["newValue"]
195
+ }
196
+ export interface UseStorageOptions<T>
197
+ extends ConfigurableEventFilter, ConfigurableWindow, ConfigurableFlush {
198
+ /**
199
+ * Watch for deep changes
200
+ *
201
+ * @default true
202
+ */
203
+ deep?: boolean
204
+ /**
205
+ * Listen to storage changes, useful for multiple tabs application
206
+ *
207
+ * @default true
208
+ */
209
+ listenToStorageChanges?: boolean
210
+ /**
211
+ * Write the default value to the storage when it does not exist
212
+ *
213
+ * @default true
214
+ */
215
+ writeDefaults?: boolean
216
+ /**
217
+ * Merge the default value with the value read from the storage.
218
+ *
219
+ * When setting it to true, it will perform a **shallow merge** for objects.
220
+ * You can pass a function to perform custom merge (e.g. deep merge), for example:
221
+ *
222
+ * @default false
223
+ */
224
+ mergeDefaults?: boolean | ((storageValue: T, defaults: T) => T)
225
+ /**
226
+ * Custom data serialization
227
+ */
228
+ serializer?: Serializer<T>
229
+ /**
230
+ * On error callback
231
+ *
232
+ * Default log error to `console.error`
233
+ */
234
+ onError?: (error: unknown) => void
235
+ /**
236
+ * Use shallow ref as reference
237
+ *
238
+ * @default false
239
+ */
240
+ shallow?: boolean
241
+ /**
242
+ * Wait for the component to be mounted before reading the storage.
243
+ *
244
+ * @default false
245
+ */
246
+ initOnMounted?: boolean
247
+ }
248
+ export declare function useStorage(
249
+ key: MaybeRefOrGetter<string>,
250
+ defaults: MaybeRefOrGetter<string>,
251
+ storage?: StorageLike,
252
+ options?: UseStorageOptions<string>,
253
+ ): RemovableRef<string>
254
+ export declare function useStorage(
255
+ key: MaybeRefOrGetter<string>,
256
+ defaults: MaybeRefOrGetter<boolean>,
257
+ storage?: StorageLike,
258
+ options?: UseStorageOptions<boolean>,
259
+ ): RemovableRef<boolean>
260
+ export declare function useStorage(
261
+ key: MaybeRefOrGetter<string>,
262
+ defaults: MaybeRefOrGetter<number>,
263
+ storage?: StorageLike,
264
+ options?: UseStorageOptions<number>,
265
+ ): RemovableRef<number>
266
+ export declare function useStorage<T>(
267
+ key: MaybeRefOrGetter<string>,
268
+ defaults: MaybeRefOrGetter<T>,
269
+ storage?: StorageLike,
270
+ options?: UseStorageOptions<T>,
271
+ ): RemovableRef<T>
272
+ export declare function useStorage<T = unknown>(
273
+ key: MaybeRefOrGetter<string>,
274
+ defaults: MaybeRefOrGetter<null>,
275
+ storage?: StorageLike,
276
+ options?: UseStorageOptions<T>,
277
+ ): RemovableRef<T>
278
+ ```
@@ -0,0 +1,136 @@
1
+ ---
2
+ category: State
3
+ ---
4
+
5
+ # useStorageAsync
6
+
7
+ Reactive Storage in with async support.
8
+
9
+ ## Usage
10
+
11
+ The basic usage please refer to `useStorage`.
12
+
13
+ ## Wait First Loaded
14
+
15
+ When user entering your app, `useStorageAsync()` will start loading value from an async storage,
16
+ sometimes you may get the default initial value, not the real value stored in storage at the very
17
+ beginning.
18
+
19
+ ```ts
20
+ import { useStorageAsync } from '@vueuse/core'
21
+
22
+ const accessToken = useStorageAsync('access.token', '', SomeAsyncStorage)
23
+
24
+ // accessToken.value may be empty before the async storage is ready
25
+ console.log(accessToken.value) // ""
26
+
27
+ setTimeout(() => {
28
+ // After some time, the async storage is ready
29
+ console.log(accessToken.value) // "the real value stored in storage"
30
+ }, 500)
31
+ ```
32
+
33
+ In this case, you can wait the storage prepared, the returned value is also a `Promise`,
34
+ so you can wait it resolved in your template or script.
35
+
36
+ ```ts
37
+ // Use top-level await if your environment supports it
38
+ const accessToken = await useStorageAsync('access.token', '', SomeAsyncStorage)
39
+
40
+ console.log(accessToken.value) // "the real value stored in storage"
41
+ ```
42
+
43
+ If you must wait multiple storages, put them into a `Promise.allSettled()`
44
+
45
+ ```ts
46
+ router.onReady(async () => {
47
+ await Promise.allSettled([
48
+ accessToken,
49
+ refreshToken,
50
+ userData,
51
+ ])
52
+
53
+ app.mount('app')
54
+ })
55
+ ```
56
+
57
+ There is a callback named `onReady` in options:
58
+
59
+ ```ts
60
+ import { useStorageAsync } from '@vueuse/core'
61
+
62
+ // Use ES2024 Promise.withResolvers, you may use any Deferred object or EventBus to do same thing.
63
+ const { promise, resolve } = Promise.withResolvers()
64
+
65
+ const accessToken = useStorageAsync('access.token', '', SomeAsyncStorage, {
66
+ onReady(value) {
67
+ resolve(value)
68
+ }
69
+ })
70
+
71
+ // At main.ts
72
+ router.onReady(async () => {
73
+ // Let's wait accessToken loaded
74
+ await promise
75
+
76
+ // Now accessToken has loaded, we can safely mount our app
77
+
78
+ app.mount('app')
79
+ })
80
+ ```
81
+
82
+ Simply use `resolve` as callback:
83
+
84
+ ```ts
85
+ const accessToken = useStorageAsync('access.token', '', SomeAsyncStorage, {
86
+ onReady: resolve
87
+ })
88
+ ```
89
+
90
+ ## Type Declarations
91
+
92
+ ```ts
93
+ export interface UseStorageAsyncOptions<T> extends Omit<
94
+ UseStorageOptions<T>,
95
+ "serializer"
96
+ > {
97
+ /**
98
+ * Custom data serialization
99
+ */
100
+ serializer?: SerializerAsync<T>
101
+ /**
102
+ * On first value loaded hook.
103
+ */
104
+ onReady?: (value: T) => void
105
+ }
106
+ export declare function useStorageAsync(
107
+ key: string,
108
+ initialValue: MaybeRefOrGetter<string>,
109
+ storage?: StorageLikeAsync,
110
+ options?: UseStorageAsyncOptions<string>,
111
+ ): RemovableRef<string> & Promise<RemovableRef<string>>
112
+ export declare function useStorageAsync(
113
+ key: string,
114
+ initialValue: MaybeRefOrGetter<boolean>,
115
+ storage?: StorageLikeAsync,
116
+ options?: UseStorageAsyncOptions<boolean>,
117
+ ): RemovableRef<boolean> & Promise<RemovableRef<boolean>>
118
+ export declare function useStorageAsync(
119
+ key: string,
120
+ initialValue: MaybeRefOrGetter<number>,
121
+ storage?: StorageLikeAsync,
122
+ options?: UseStorageAsyncOptions<number>,
123
+ ): RemovableRef<number> & Promise<RemovableRef<number>>
124
+ export declare function useStorageAsync<T>(
125
+ key: string,
126
+ initialValue: MaybeRefOrGetter<T>,
127
+ storage?: StorageLikeAsync,
128
+ options?: UseStorageAsyncOptions<T>,
129
+ ): RemovableRef<T> & Promise<RemovableRef<T>>
130
+ export declare function useStorageAsync<T = unknown>(
131
+ key: string,
132
+ initialValue: MaybeRefOrGetter<null>,
133
+ storage?: StorageLikeAsync,
134
+ options?: UseStorageAsyncOptions<T>,
135
+ ): RemovableRef<T> & Promise<RemovableRef<T>>
136
+ ```
@@ -0,0 +1,131 @@
1
+ ---
2
+ category: Browser
3
+ ---
4
+
5
+ # useStyleTag
6
+
7
+ Inject reactive `style` element in head.
8
+
9
+ ## Usage
10
+
11
+ ### Basic usage
12
+
13
+ Provide a CSS string, then `useStyleTag` will automatically generate an id and inject it in `<head>`.
14
+
15
+ ```ts
16
+ import { useStyleTag } from '@vueuse/core'
17
+
18
+ const {
19
+ id,
20
+ css,
21
+ load,
22
+ unload,
23
+ isLoaded,
24
+ } = useStyleTag('.foo { margin-top: 32px; }')
25
+
26
+ // Later you can modify styles
27
+ css.value = '.foo { margin-top: 64px; }'
28
+ ```
29
+
30
+ This code will be injected to `<head>`:
31
+
32
+ ```html
33
+ <style id="vueuse_styletag_1">
34
+ .foo {
35
+ margin-top: 64px;
36
+ }
37
+ </style>
38
+ ```
39
+
40
+ ### Custom ID
41
+
42
+ If you need to define your own id, you can pass `id` as first argument.
43
+
44
+ ```ts
45
+ import { useStyleTag } from '@vueuse/core'
46
+ // ---cut---
47
+ useStyleTag('.foo { margin-top: 32px; }', { id: 'custom-id' })
48
+ ```
49
+
50
+ ```html
51
+ <!-- injected to <head> -->
52
+ <style id="custom-id">
53
+ .foo {
54
+ margin-top: 32px;
55
+ }
56
+ </style>
57
+ ```
58
+
59
+ ### Media query
60
+
61
+ You can pass media attributes as last argument within object.
62
+
63
+ ```ts
64
+ import { useStyleTag } from '@vueuse/core'
65
+ // ---cut---
66
+ useStyleTag('.foo { margin-top: 32px; }', { media: 'print' })
67
+ ```
68
+
69
+ ```html
70
+ <!-- injected to <head> -->
71
+ <style id="vueuse_styletag_1" media="print">
72
+ .foo {
73
+ margin-top: 32px;
74
+ }
75
+ </style>
76
+ ```
77
+
78
+ ## Type Declarations
79
+
80
+ ```ts
81
+ export interface UseStyleTagOptions extends ConfigurableDocument {
82
+ /**
83
+ * Media query for styles to apply
84
+ */
85
+ media?: string
86
+ /**
87
+ * Load the style immediately
88
+ *
89
+ * @default true
90
+ */
91
+ immediate?: boolean
92
+ /**
93
+ * Manual controls the timing of loading and unloading
94
+ *
95
+ * @default false
96
+ */
97
+ manual?: boolean
98
+ /**
99
+ * DOM id of the style tag
100
+ *
101
+ * @default auto-incremented
102
+ */
103
+ id?: string
104
+ /**
105
+ * Nonce value for CSP (Content Security Policy)
106
+ *
107
+ * @default undefined
108
+ */
109
+ nonce?: string
110
+ }
111
+ export interface UseStyleTagReturn {
112
+ id: string
113
+ css: ShallowRef<string>
114
+ load: () => void
115
+ unload: () => void
116
+ isLoaded: Readonly<ShallowRef<boolean>>
117
+ }
118
+ /**
119
+ * Inject <style> element in head.
120
+ *
121
+ * Overload: Omitted id
122
+ *
123
+ * @see https://vueuse.org/useStyleTag
124
+ * @param css
125
+ * @param options
126
+ */
127
+ export declare function useStyleTag(
128
+ css: MaybeRef<string>,
129
+ options?: UseStyleTagOptions,
130
+ ): UseStyleTagReturn
131
+ ```
@@ -0,0 +1,77 @@
1
+ ---
2
+ category: '@RxJS'
3
+ ---
4
+
5
+ # useSubject
6
+
7
+ Bind an RxJS [`Subject`](https://rxjs.dev/guide/subject) to a `ref` and propagate value changes both ways.
8
+
9
+ ## Usage
10
+
11
+ <!-- TODO: import rxjs error if enable twoslash -->
12
+
13
+ ```ts no-twoslash
14
+ import { useSubject } from '@vueuse/rxjs'
15
+ import { Subject } from 'rxjs'
16
+
17
+ const subject = new Subject()
18
+
19
+ // setup()
20
+ const subjectRef = useSubject(subject)
21
+
22
+ // Changes to subjectRef.value will be pushed to the subject
23
+ subjectRef.value = 'new value'
24
+
25
+ // Values emitted by the subject will update subjectRef
26
+ subject.next('from subject')
27
+ ```
28
+
29
+ ### With BehaviorSubject
30
+
31
+ When using a `BehaviorSubject`, the returned ref is initialized with the subject's current value and the type does not include `undefined`:
32
+
33
+ ```ts no-twoslash
34
+ import { useSubject } from '@vueuse/rxjs'
35
+ import { BehaviorSubject } from 'rxjs'
36
+
37
+ const subject = new BehaviorSubject('initial')
38
+
39
+ // setup()
40
+ const subjectRef = useSubject(subject) // Ref<string>, not Ref<string | undefined>
41
+ console.log(subjectRef.value) // 'initial'
42
+ ```
43
+
44
+ ### Error Handling
45
+
46
+ If you want to add custom error handling to a Subject that might error, you can supply an optional `onError` configuration. Without this, RxJS will treat any error in the supplied observable as an "unhandled error" and it will be thrown in a new call stack and reported to `window.onerror` (or `process.on('error')` if you happen to be in node).
47
+
48
+ ```ts no-twoslash
49
+ import { useSubject } from '@vueuse/rxjs'
50
+ import { Subject } from 'rxjs'
51
+
52
+ const subject = new Subject()
53
+
54
+ // setup()
55
+ const subjectRef = useSubject(subject, {
56
+ onError: (err) => {
57
+ console.log(err.message) // "oops"
58
+ },
59
+ },)
60
+ ```
61
+
62
+ ## Type Declarations
63
+
64
+ ```ts
65
+ export interface UseSubjectOptions<I = undefined> extends Omit<
66
+ UseObservableOptions<I>,
67
+ "initialValue"
68
+ > {}
69
+ export declare function useSubject<H>(
70
+ subject: BehaviorSubject<H>,
71
+ options?: UseSubjectOptions,
72
+ ): Ref<H>
73
+ export declare function useSubject<H>(
74
+ subject: Subject<H>,
75
+ options?: UseSubjectOptions,
76
+ ): Ref<H | undefined>
77
+ ```
@@ -0,0 +1,33 @@
1
+ ---
2
+ category: '@RxJS'
3
+ ---
4
+
5
+ # useSubscription
6
+
7
+ Use an RxJS [`Subscription`](https://rxjs.dev/guide/subscription) without worrying about unsubscribing from it or creating memory leaks.
8
+
9
+ ## Usage
10
+
11
+ <!-- TODO: import rxjs error if enable twoslash -->
12
+
13
+ ```ts no-twoslash
14
+ import { useSubscription } from '@vueuse/rxjs'
15
+ import { interval } from 'rxjs'
16
+
17
+ const count = ref(0)
18
+
19
+ // useSubscription call unsubscribe method before unmount the component
20
+ useSubscription(
21
+ interval(1000)
22
+ .subscribe(() => {
23
+ count.value++
24
+ console.log(count)
25
+ }),
26
+ )
27
+ ```
28
+
29
+ ## Type Declarations
30
+
31
+ ```ts
32
+ export declare function useSubscription(subscription: Unsubscribable): void
33
+ ```
@@ -0,0 +1,36 @@
1
+ ---
2
+ category: '@Math'
3
+ ---
4
+
5
+ # useSum
6
+
7
+ Get the sum of an array reactively
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useSum } from '@vueuse/math'
13
+
14
+ const array = ref([1, 2, 3, 4])
15
+ const sum = useSum(array) // Ref<10>
16
+ ```
17
+
18
+ ```ts
19
+ import { useSum } from '@vueuse/math'
20
+
21
+ const a = ref(1)
22
+ const b = ref(3)
23
+
24
+ const sum = useSum(a, b, 2) // Ref<6>
25
+ ```
26
+
27
+ ## Type Declarations
28
+
29
+ ```ts
30
+ export declare function useSum(
31
+ array: MaybeRefOrGetter<MaybeRefOrGetter<number>[]>,
32
+ ): ComputedRef<number>
33
+ export declare function useSum(
34
+ ...args: MaybeRefOrGetter<number>[]
35
+ ): ComputedRef<number>
36
+ ```