aico-cli 2.1.7 → 2.1.23

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 (547) hide show
  1. package/bin/cli/README.md +1 -1
  2. package/bin/cli/cli.js +8672 -3345
  3. package/bin/cli/package.json +1 -1
  4. package/bin/cli/sdk-tools.d.ts +41 -5
  5. package/dist/chunks/simple-config.mjs +1 -1
  6. package/package.json +2 -2
  7. package/templates/skills/antfu/SKILL.md +222 -0
  8. package/templates/skills/antfu/references/antfu-eslint-config.md +328 -0
  9. package/templates/skills/antfu/references/app-development.md +60 -0
  10. package/templates/skills/antfu/references/github-actions.md +68 -0
  11. package/templates/skills/antfu/references/gitignore.md +29 -0
  12. package/templates/skills/antfu/references/library-development.md +85 -0
  13. package/templates/skills/antfu/references/monorepo.md +126 -0
  14. package/templates/skills/antfu/references/vscode-extensions.md +34 -0
  15. package/templates/skills/nuxt/GENERATION.md +5 -0
  16. package/templates/skills/nuxt/SKILL.md +55 -0
  17. package/templates/skills/nuxt/references/advanced-hooks.md +289 -0
  18. package/templates/skills/nuxt/references/advanced-layers.md +299 -0
  19. package/templates/skills/nuxt/references/advanced-module-authoring.md +554 -0
  20. package/templates/skills/nuxt/references/best-practices-data-fetching.md +357 -0
  21. package/templates/skills/nuxt/references/best-practices-ssr.md +355 -0
  22. package/templates/skills/nuxt/references/core-cli.md +263 -0
  23. package/templates/skills/nuxt/references/core-config.md +162 -0
  24. package/templates/skills/nuxt/references/core-data-fetching.md +236 -0
  25. package/templates/skills/nuxt/references/core-deployment.md +224 -0
  26. package/templates/skills/nuxt/references/core-directory-structure.md +269 -0
  27. package/templates/skills/nuxt/references/core-modules.md +292 -0
  28. package/templates/skills/nuxt/references/core-routing.md +226 -0
  29. package/templates/skills/nuxt/references/features-components-autoimport.md +328 -0
  30. package/templates/skills/nuxt/references/features-components.md +264 -0
  31. package/templates/skills/nuxt/references/features-composables.md +276 -0
  32. package/templates/skills/nuxt/references/features-server.md +265 -0
  33. package/templates/skills/nuxt/references/features-state.md +194 -0
  34. package/templates/skills/nuxt/references/rendering-modes.md +237 -0
  35. package/templates/skills/pinia/GENERATION.md +5 -0
  36. package/templates/skills/pinia/SKILL.md +59 -0
  37. package/templates/skills/pinia/references/advanced-hmr.md +61 -0
  38. package/templates/skills/pinia/references/advanced-nuxt.md +119 -0
  39. package/templates/skills/pinia/references/advanced-ssr.md +121 -0
  40. package/templates/skills/pinia/references/best-practices-outside-component.md +115 -0
  41. package/templates/skills/pinia/references/best-practices-testing.md +212 -0
  42. package/templates/skills/pinia/references/core-stores.md +389 -0
  43. package/templates/skills/pinia/references/features-composables.md +114 -0
  44. package/templates/skills/pinia/references/features-composing-stores.md +134 -0
  45. package/templates/skills/pinia/references/features-plugins.md +203 -0
  46. package/templates/skills/pnpm/GENERATION.md +5 -0
  47. package/templates/skills/pnpm/SKILL.md +42 -0
  48. package/templates/skills/pnpm/references/best-practices-ci.md +285 -0
  49. package/templates/skills/pnpm/references/best-practices-migration.md +291 -0
  50. package/templates/skills/pnpm/references/best-practices-performance.md +284 -0
  51. package/templates/skills/pnpm/references/core-cli.md +229 -0
  52. package/templates/skills/pnpm/references/core-config.md +188 -0
  53. package/templates/skills/pnpm/references/core-store.md +179 -0
  54. package/templates/skills/pnpm/references/core-workspaces.md +205 -0
  55. package/templates/skills/pnpm/references/features-aliases.md +168 -0
  56. package/templates/skills/pnpm/references/features-catalogs.md +159 -0
  57. package/templates/skills/pnpm/references/features-hooks.md +233 -0
  58. package/templates/skills/pnpm/references/features-overrides.md +184 -0
  59. package/templates/skills/pnpm/references/features-patches.md +201 -0
  60. package/templates/skills/pnpm/references/features-peer-deps.md +250 -0
  61. package/templates/skills/slidev/LICENSE.md +21 -0
  62. package/templates/skills/slidev/README.md +61 -0
  63. package/templates/skills/slidev/SKILL.md +183 -0
  64. package/templates/skills/slidev/SYNC.md +5 -0
  65. package/templates/skills/slidev/references/animation-click-marker.md +37 -0
  66. package/templates/skills/slidev/references/animation-drawing.md +68 -0
  67. package/templates/skills/slidev/references/animation-rough-marker.md +53 -0
  68. package/templates/skills/slidev/references/api-slide-hooks.md +37 -0
  69. package/templates/skills/slidev/references/build-og-image.md +36 -0
  70. package/templates/skills/slidev/references/build-pdf.md +40 -0
  71. package/templates/skills/slidev/references/build-remote-assets.md +34 -0
  72. package/templates/skills/slidev/references/build-seo-meta.md +43 -0
  73. package/templates/skills/slidev/references/code-groups.md +64 -0
  74. package/templates/skills/slidev/references/code-import-snippet.md +55 -0
  75. package/templates/skills/slidev/references/code-line-highlighting.md +50 -0
  76. package/templates/skills/slidev/references/code-line-numbers.md +46 -0
  77. package/templates/skills/slidev/references/code-magic-move.md +57 -0
  78. package/templates/skills/slidev/references/code-max-height.md +37 -0
  79. package/templates/skills/slidev/references/code-twoslash.md +42 -0
  80. package/templates/skills/slidev/references/core-animations.md +196 -0
  81. package/templates/skills/slidev/references/core-cli.md +140 -0
  82. package/templates/skills/slidev/references/core-components.md +197 -0
  83. package/templates/skills/slidev/references/core-exporting.md +148 -0
  84. package/templates/skills/slidev/references/core-frontmatter.md +195 -0
  85. package/templates/skills/slidev/references/core-global-context.md +155 -0
  86. package/templates/skills/slidev/references/core-headmatter.md +188 -0
  87. package/templates/skills/slidev/references/core-hosting.md +152 -0
  88. package/templates/skills/slidev/references/core-layouts.md +286 -0
  89. package/templates/skills/slidev/references/core-syntax.md +155 -0
  90. package/templates/skills/slidev/references/diagram-latex.md +55 -0
  91. package/templates/skills/slidev/references/diagram-mermaid.md +44 -0
  92. package/templates/skills/slidev/references/diagram-plantuml.md +45 -0
  93. package/templates/skills/slidev/references/editor-monaco-run.md +44 -0
  94. package/templates/skills/slidev/references/editor-monaco-write.md +24 -0
  95. package/templates/skills/slidev/references/editor-monaco.md +50 -0
  96. package/templates/skills/slidev/references/editor-prettier.md +40 -0
  97. package/templates/skills/slidev/references/editor-side.md +23 -0
  98. package/templates/skills/slidev/references/editor-vscode.md +55 -0
  99. package/templates/skills/slidev/references/layout-canvas-size.md +25 -0
  100. package/templates/skills/slidev/references/layout-draggable.md +57 -0
  101. package/templates/skills/slidev/references/layout-global-layers.md +50 -0
  102. package/templates/skills/slidev/references/layout-slots.md +75 -0
  103. package/templates/skills/slidev/references/layout-transform.md +33 -0
  104. package/templates/skills/slidev/references/layout-zoom.md +39 -0
  105. package/templates/skills/slidev/references/presenter-notes-ruby.md +35 -0
  106. package/templates/skills/slidev/references/presenter-recording.md +30 -0
  107. package/templates/skills/slidev/references/presenter-remote.md +40 -0
  108. package/templates/skills/slidev/references/presenter-timer.md +34 -0
  109. package/templates/skills/slidev/references/style-direction.md +34 -0
  110. package/templates/skills/slidev/references/style-icons.md +46 -0
  111. package/templates/skills/slidev/references/style-scoped.md +50 -0
  112. package/templates/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  113. package/templates/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  114. package/templates/skills/slidev/references/syntax-importing-slides.md +60 -0
  115. package/templates/skills/slidev/references/syntax-mdc.md +51 -0
  116. package/templates/skills/slidev/references/tool-eject-theme.md +27 -0
  117. package/templates/skills/tech-whitepaper/SKILL.md +102 -15
  118. package/templates/skills/tsdown/GENERATION.md +5 -0
  119. package/templates/skills/tsdown/SKILL.md +59 -0
  120. package/templates/skills/tsdown/references/advanced-hooks.md +87 -0
  121. package/templates/skills/tsdown/references/advanced-plugins.md +97 -0
  122. package/templates/skills/tsdown/references/advanced-programmatic.md +78 -0
  123. package/templates/skills/tsdown/references/advanced-rolldown-options.md +114 -0
  124. package/templates/skills/tsdown/references/core-cli.md +116 -0
  125. package/templates/skills/tsdown/references/core-config.md +86 -0
  126. package/templates/skills/tsdown/references/core-entry.md +74 -0
  127. package/templates/skills/tsdown/references/features-optimization.md +83 -0
  128. package/templates/skills/tsdown/references/features-shims.md +92 -0
  129. package/templates/skills/tsdown/references/features-unbundle.md +63 -0
  130. package/templates/skills/tsdown/references/features-watch.md +60 -0
  131. package/templates/skills/tsdown/references/options-dependencies.md +88 -0
  132. package/templates/skills/tsdown/references/options-dts.md +104 -0
  133. package/templates/skills/tsdown/references/options-output.md +124 -0
  134. package/templates/skills/tsdown/references/options-package-exports.md +114 -0
  135. package/templates/skills/tsdown/references/recipes-frameworks.md +109 -0
  136. package/templates/skills/tsdown/references/recipes-migration.md +84 -0
  137. package/templates/skills/turborepo/LICENSE.md +7 -0
  138. package/templates/skills/turborepo/SKILL.md +914 -0
  139. package/templates/skills/turborepo/SYNC.md +5 -0
  140. package/templates/skills/turborepo/command/turborepo.md +70 -0
  141. package/templates/skills/turborepo/references/best-practices/README.md +241 -0
  142. package/templates/skills/turborepo/references/best-practices/dependencies.md +246 -0
  143. package/templates/skills/turborepo/references/best-practices/packages.md +335 -0
  144. package/templates/skills/turborepo/references/best-practices/structure.md +269 -0
  145. package/templates/skills/turborepo/references/boundaries/README.md +126 -0
  146. package/templates/skills/turborepo/references/caching/README.md +107 -0
  147. package/templates/skills/turborepo/references/caching/gotchas.md +169 -0
  148. package/templates/skills/turborepo/references/caching/remote-cache.md +127 -0
  149. package/templates/skills/turborepo/references/ci/README.md +79 -0
  150. package/templates/skills/turborepo/references/ci/github-actions.md +162 -0
  151. package/templates/skills/turborepo/references/ci/patterns.md +145 -0
  152. package/templates/skills/turborepo/references/ci/vercel.md +103 -0
  153. package/templates/skills/turborepo/references/cli/README.md +100 -0
  154. package/templates/skills/turborepo/references/cli/commands.md +297 -0
  155. package/templates/skills/turborepo/references/configuration/README.md +211 -0
  156. package/templates/skills/turborepo/references/configuration/global-options.md +195 -0
  157. package/templates/skills/turborepo/references/configuration/gotchas.md +348 -0
  158. package/templates/skills/turborepo/references/configuration/tasks.md +285 -0
  159. package/templates/skills/turborepo/references/environment/README.md +96 -0
  160. package/templates/skills/turborepo/references/environment/gotchas.md +145 -0
  161. package/templates/skills/turborepo/references/environment/modes.md +101 -0
  162. package/templates/skills/turborepo/references/filtering/README.md +148 -0
  163. package/templates/skills/turborepo/references/filtering/patterns.md +152 -0
  164. package/templates/skills/turborepo/references/watch/README.md +99 -0
  165. package/templates/skills/unocss/GENERATION.md +5 -0
  166. package/templates/skills/unocss/SKILL.md +64 -0
  167. package/templates/skills/unocss/references/core-config.md +187 -0
  168. package/templates/skills/unocss/references/core-extracting.md +137 -0
  169. package/templates/skills/unocss/references/core-layers.md +104 -0
  170. package/templates/skills/unocss/references/core-rules.md +166 -0
  171. package/templates/skills/unocss/references/core-safelist.md +105 -0
  172. package/templates/skills/unocss/references/core-shortcuts.md +89 -0
  173. package/templates/skills/unocss/references/core-theme.md +172 -0
  174. package/templates/skills/unocss/references/core-variants.md +175 -0
  175. package/templates/skills/unocss/references/integrations-nuxt.md +199 -0
  176. package/templates/skills/unocss/references/integrations-vite.md +283 -0
  177. package/templates/skills/unocss/references/preset-attributify.md +142 -0
  178. package/templates/skills/unocss/references/preset-icons.md +184 -0
  179. package/templates/skills/unocss/references/preset-mini.md +158 -0
  180. package/templates/skills/unocss/references/preset-rem-to-px.md +97 -0
  181. package/templates/skills/unocss/references/preset-tagify.md +134 -0
  182. package/templates/skills/unocss/references/preset-typography.md +95 -0
  183. package/templates/skills/unocss/references/preset-web-fonts.md +91 -0
  184. package/templates/skills/unocss/references/preset-wind3.md +194 -0
  185. package/templates/skills/unocss/references/preset-wind4.md +247 -0
  186. package/templates/skills/unocss/references/transformer-attributify-jsx.md +156 -0
  187. package/templates/skills/unocss/references/transformer-compile-class.md +128 -0
  188. package/templates/skills/unocss/references/transformer-directives.md +157 -0
  189. package/templates/skills/unocss/references/transformer-variant-group.md +97 -0
  190. package/templates/skills/vite/GENERATION.md +5 -0
  191. package/templates/skills/vite/SKILL.md +50 -0
  192. package/templates/skills/vite/references/advanced-api.md +218 -0
  193. package/templates/skills/vite/references/advanced-backend.md +164 -0
  194. package/templates/skills/vite/references/advanced-performance.md +168 -0
  195. package/templates/skills/vite/references/advanced-plugin-api.md +258 -0
  196. package/templates/skills/vite/references/build-library.md +172 -0
  197. package/templates/skills/vite/references/build-production.md +220 -0
  198. package/templates/skills/vite/references/build-ssr.md +194 -0
  199. package/templates/skills/vite/references/core-cli.md +137 -0
  200. package/templates/skills/vite/references/core-config.md +176 -0
  201. package/templates/skills/vite/references/core-features.md +170 -0
  202. package/templates/skills/vite/references/core-plugins.md +154 -0
  203. package/templates/skills/vite/references/features-assets.md +138 -0
  204. package/templates/skills/vite/references/features-css.md +215 -0
  205. package/templates/skills/vite/references/features-dep-bundling.md +148 -0
  206. package/templates/skills/vite/references/features-env.md +161 -0
  207. package/templates/skills/vite/references/features-glob-import.md +161 -0
  208. package/templates/skills/vite/references/features-hmr.md +200 -0
  209. package/templates/skills/vite/references/features-workers.md +115 -0
  210. package/templates/skills/vitepress/GENERATION.md +5 -0
  211. package/templates/skills/vitepress/SKILL.md +65 -0
  212. package/templates/skills/vitepress/references/advanced-i18n.md +299 -0
  213. package/templates/skills/vitepress/references/advanced-ssr.md +228 -0
  214. package/templates/skills/vitepress/references/core-cli.md +119 -0
  215. package/templates/skills/vitepress/references/core-config.md +189 -0
  216. package/templates/skills/vitepress/references/core-markdown.md +277 -0
  217. package/templates/skills/vitepress/references/core-routing.md +169 -0
  218. package/templates/skills/vitepress/references/features-code-blocks.md +243 -0
  219. package/templates/skills/vitepress/references/features-data-loading.md +220 -0
  220. package/templates/skills/vitepress/references/features-dynamic-routes.md +235 -0
  221. package/templates/skills/vitepress/references/features-vue.md +224 -0
  222. package/templates/skills/vitepress/references/recipes-deploy.md +240 -0
  223. package/templates/skills/vitepress/references/theme-config.md +315 -0
  224. package/templates/skills/vitepress/references/theme-custom.md +269 -0
  225. package/templates/skills/vitepress/references/theme-customization.md +290 -0
  226. package/templates/skills/vitest/GENERATION.md +5 -0
  227. package/templates/skills/vitest/SKILL.md +52 -0
  228. package/templates/skills/vitest/references/advanced-environments.md +264 -0
  229. package/templates/skills/vitest/references/advanced-projects.md +300 -0
  230. package/templates/skills/vitest/references/advanced-type-testing.md +237 -0
  231. package/templates/skills/vitest/references/advanced-vi.md +249 -0
  232. package/templates/skills/vitest/references/core-cli.md +166 -0
  233. package/templates/skills/vitest/references/core-config.md +174 -0
  234. package/templates/skills/vitest/references/core-describe.md +193 -0
  235. package/templates/skills/vitest/references/core-expect.md +219 -0
  236. package/templates/skills/vitest/references/core-hooks.md +244 -0
  237. package/templates/skills/vitest/references/core-test-api.md +233 -0
  238. package/templates/skills/vitest/references/features-concurrency.md +250 -0
  239. package/templates/skills/vitest/references/features-context.md +238 -0
  240. package/templates/skills/vitest/references/features-coverage.md +207 -0
  241. package/templates/skills/vitest/references/features-filtering.md +211 -0
  242. package/templates/skills/vitest/references/features-mocking.md +265 -0
  243. package/templates/skills/vitest/references/features-snapshots.md +207 -0
  244. package/templates/skills/vue/GENERATION.md +5 -0
  245. package/templates/skills/vue/SKILL.md +63 -0
  246. package/templates/skills/vue/references/advanced-async-suspense.md +246 -0
  247. package/templates/skills/vue/references/advanced-provide-inject.md +174 -0
  248. package/templates/skills/vue/references/components-emits.md +139 -0
  249. package/templates/skills/vue/references/components-lifecycle.md +192 -0
  250. package/templates/skills/vue/references/components-props.md +211 -0
  251. package/templates/skills/vue/references/components-slots.md +201 -0
  252. package/templates/skills/vue/references/components-v-model.md +183 -0
  253. package/templates/skills/vue/references/core-reactivity.md +289 -0
  254. package/templates/skills/vue/references/features-composables.md +262 -0
  255. package/templates/skills/vue/references/features-directives.md +224 -0
  256. package/templates/skills/vue/references/features-script-setup.md +247 -0
  257. package/templates/skills/vue/references/features-template-refs.md +212 -0
  258. package/templates/skills/vue/references/features-typescript.md +274 -0
  259. package/templates/skills/vue-best-practices/LICENSE.md +21 -0
  260. package/templates/skills/vue-best-practices/SKILL.md +38 -0
  261. package/templates/skills/vue-best-practices/SYNC.md +5 -0
  262. package/templates/skills/vue-best-practices/rules/codeactions-save-performance.md +79 -0
  263. package/templates/skills/vue-best-practices/rules/data-attributes-config.md +74 -0
  264. package/templates/skills/vue-best-practices/rules/deep-watch-numeric.md +97 -0
  265. package/templates/skills/vue-best-practices/rules/define-model-update-event.md +79 -0
  266. package/templates/skills/vue-best-practices/rules/duplicate-plugin-detection.md +102 -0
  267. package/templates/skills/vue-best-practices/rules/extract-component-props.md +57 -0
  268. package/templates/skills/vue-best-practices/rules/fallthrough-attributes.md +63 -0
  269. package/templates/skills/vue-best-practices/rules/hmr-vue-ssr.md +124 -0
  270. package/templates/skills/vue-best-practices/rules/module-resolution-bundler.md +81 -0
  271. package/templates/skills/vue-best-practices/rules/pinia-store-mocking.md +159 -0
  272. package/templates/skills/vue-best-practices/rules/script-setup-jsdoc.md +85 -0
  273. package/templates/skills/vue-best-practices/rules/strict-css-modules.md +68 -0
  274. package/templates/skills/vue-best-practices/rules/volar-3-breaking-changes.md +65 -0
  275. package/templates/skills/vue-best-practices/rules/vue-directive-comments.md +73 -0
  276. package/templates/skills/vue-best-practices/rules/vue-router-typed-params.md +81 -0
  277. package/templates/skills/vue-best-practices/rules/vue-tsc-strict-templates.md +69 -0
  278. package/templates/skills/vue-best-practices/rules/with-defaults-union-types.md +102 -0
  279. package/templates/skills/vueuse-functions/LICENSE.md +21 -0
  280. package/templates/skills/vueuse-functions/SKILL.md +418 -0
  281. package/templates/skills/vueuse-functions/SYNC.md +5 -0
  282. package/templates/skills/vueuse-functions/references/computedAsync.md +159 -0
  283. package/templates/skills/vueuse-functions/references/computedEager.md +62 -0
  284. package/templates/skills/vueuse-functions/references/computedInject.md +86 -0
  285. package/templates/skills/vueuse-functions/references/computedWithControl.md +100 -0
  286. package/templates/skills/vueuse-functions/references/createEventHook.md +86 -0
  287. package/templates/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  288. package/templates/skills/vueuse-functions/references/createGlobalState.md +95 -0
  289. package/templates/skills/vueuse-functions/references/createInjectionState.md +215 -0
  290. package/templates/skills/vueuse-functions/references/createProjection.md +31 -0
  291. package/templates/skills/vueuse-functions/references/createRef.md +54 -0
  292. package/templates/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
  293. package/templates/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  294. package/templates/skills/vueuse-functions/references/createTemplatePromise.md +259 -0
  295. package/templates/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  296. package/templates/skills/vueuse-functions/references/extendRef.md +76 -0
  297. package/templates/skills/vueuse-functions/references/from.md +48 -0
  298. package/templates/skills/vueuse-functions/references/get.md +30 -0
  299. package/templates/skills/vueuse-functions/references/injectLocal.md +35 -0
  300. package/templates/skills/vueuse-functions/references/isDefined.md +31 -0
  301. package/templates/skills/vueuse-functions/references/logicAnd.md +40 -0
  302. package/templates/skills/vueuse-functions/references/logicNot.md +36 -0
  303. package/templates/skills/vueuse-functions/references/logicOr.md +40 -0
  304. package/templates/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  305. package/templates/skills/vueuse-functions/references/onClickOutside.md +187 -0
  306. package/templates/skills/vueuse-functions/references/onElementRemoval.md +64 -0
  307. package/templates/skills/vueuse-functions/references/onKeyStroke.md +176 -0
  308. package/templates/skills/vueuse-functions/references/onLongPress.md +170 -0
  309. package/templates/skills/vueuse-functions/references/onStartTyping.md +43 -0
  310. package/templates/skills/vueuse-functions/references/provideLocal.md +37 -0
  311. package/templates/skills/vueuse-functions/references/reactify.md +144 -0
  312. package/templates/skills/vueuse-functions/references/reactifyObject.md +61 -0
  313. package/templates/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  314. package/templates/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  315. package/templates/skills/vueuse-functions/references/reactivePick.md +106 -0
  316. package/templates/skills/vueuse-functions/references/refAutoReset.md +44 -0
  317. package/templates/skills/vueuse-functions/references/refDebounced.md +81 -0
  318. package/templates/skills/vueuse-functions/references/refDefault.md +36 -0
  319. package/templates/skills/vueuse-functions/references/refManualReset.md +44 -0
  320. package/templates/skills/vueuse-functions/references/refThrottled.md +99 -0
  321. package/templates/skills/vueuse-functions/references/refWithControl.md +146 -0
  322. package/templates/skills/vueuse-functions/references/set.md +30 -0
  323. package/templates/skills/vueuse-functions/references/syncRef.md +195 -0
  324. package/templates/skills/vueuse-functions/references/syncRefs.md +128 -0
  325. package/templates/skills/vueuse-functions/references/templateRef.md +86 -0
  326. package/templates/skills/vueuse-functions/references/toObserver.md +38 -0
  327. package/templates/skills/vueuse-functions/references/toReactive.md +41 -0
  328. package/templates/skills/vueuse-functions/references/toRef.md +75 -0
  329. package/templates/skills/vueuse-functions/references/toRefs.md +81 -0
  330. package/templates/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  331. package/templates/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  332. package/templates/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  333. package/templates/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  334. package/templates/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  335. package/templates/skills/vueuse-functions/references/unrefElement.md +54 -0
  336. package/templates/skills/vueuse-functions/references/until.md +165 -0
  337. package/templates/skills/vueuse-functions/references/useAbs.md +31 -0
  338. package/templates/skills/vueuse-functions/references/useActiveElement.md +65 -0
  339. package/templates/skills/vueuse-functions/references/useAnimate.md +140 -0
  340. package/templates/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  341. package/templates/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  342. package/templates/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  343. package/templates/skills/vueuse-functions/references/useArrayFind.md +50 -0
  344. package/templates/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  345. package/templates/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  346. package/templates/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  347. package/templates/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  348. package/templates/skills/vueuse-functions/references/useArrayMap.md +59 -0
  349. package/templates/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  350. package/templates/skills/vueuse-functions/references/useArraySome.md +59 -0
  351. package/templates/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  352. package/templates/skills/vueuse-functions/references/useAsyncQueue.md +87 -0
  353. package/templates/skills/vueuse-functions/references/useAsyncState.md +140 -0
  354. package/templates/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  355. package/templates/skills/vueuse-functions/references/useAuth.md +114 -0
  356. package/templates/skills/vueuse-functions/references/useAverage.md +36 -0
  357. package/templates/skills/vueuse-functions/references/useAxios.md +292 -0
  358. package/templates/skills/vueuse-functions/references/useBase64.md +88 -0
  359. package/templates/skills/vueuse-functions/references/useBattery.md +67 -0
  360. package/templates/skills/vueuse-functions/references/useBluetooth.md +161 -0
  361. package/templates/skills/vueuse-functions/references/useBreakpoints.md +128 -0
  362. package/templates/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
  363. package/templates/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
  364. package/templates/skills/vueuse-functions/references/useCached.md +53 -0
  365. package/templates/skills/vueuse-functions/references/useCeil.md +31 -0
  366. package/templates/skills/vueuse-functions/references/useChangeCase.md +79 -0
  367. package/templates/skills/vueuse-functions/references/useClamp.md +51 -0
  368. package/templates/skills/vueuse-functions/references/useClipboard.md +99 -0
  369. package/templates/skills/vueuse-functions/references/useClipboardItems.md +93 -0
  370. package/templates/skills/vueuse-functions/references/useCloned.md +91 -0
  371. package/templates/skills/vueuse-functions/references/useColorMode.md +171 -0
  372. package/templates/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  373. package/templates/skills/vueuse-functions/references/useCookies.md +162 -0
  374. package/templates/skills/vueuse-functions/references/useCountdown.md +102 -0
  375. package/templates/skills/vueuse-functions/references/useCounter.md +86 -0
  376. package/templates/skills/vueuse-functions/references/useCssVar.md +50 -0
  377. package/templates/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  378. package/templates/skills/vueuse-functions/references/useCycleList.md +75 -0
  379. package/templates/skills/vueuse-functions/references/useDark.md +142 -0
  380. package/templates/skills/vueuse-functions/references/useDateFormat.md +145 -0
  381. package/templates/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  382. package/templates/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  383. package/templates/skills/vueuse-functions/references/useDeviceMotion.md +87 -0
  384. package/templates/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
  385. package/templates/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
  386. package/templates/skills/vueuse-functions/references/useDevicesList.md +90 -0
  387. package/templates/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
  388. package/templates/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
  389. package/templates/skills/vueuse-functions/references/useDraggable.md +210 -0
  390. package/templates/skills/vueuse-functions/references/useDrauu.md +65 -0
  391. package/templates/skills/vueuse-functions/references/useDropZone.md +83 -0
  392. package/templates/skills/vueuse-functions/references/useElementBounding.md +131 -0
  393. package/templates/skills/vueuse-functions/references/useElementByPoint.md +45 -0
  394. package/templates/skills/vueuse-functions/references/useElementHover.md +79 -0
  395. package/templates/skills/vueuse-functions/references/useElementSize.md +78 -0
  396. package/templates/skills/vueuse-functions/references/useElementVisibility.md +126 -0
  397. package/templates/skills/vueuse-functions/references/useEventBus.md +101 -0
  398. package/templates/skills/vueuse-functions/references/useEventListener.md +184 -0
  399. package/templates/skills/vueuse-functions/references/useEventSource.md +204 -0
  400. package/templates/skills/vueuse-functions/references/useExtractedObservable.md +185 -0
  401. package/templates/skills/vueuse-functions/references/useEyeDropper.md +71 -0
  402. package/templates/skills/vueuse-functions/references/useFavicon.md +67 -0
  403. package/templates/skills/vueuse-functions/references/useFetch.md +546 -0
  404. package/templates/skills/vueuse-functions/references/useFileDialog.md +91 -0
  405. package/templates/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
  406. package/templates/skills/vueuse-functions/references/useFirestore.md +104 -0
  407. package/templates/skills/vueuse-functions/references/useFloor.md +31 -0
  408. package/templates/skills/vueuse-functions/references/useFocus.md +99 -0
  409. package/templates/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  410. package/templates/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  411. package/templates/skills/vueuse-functions/references/useFps.md +28 -0
  412. package/templates/skills/vueuse-functions/references/useFullscreen.md +75 -0
  413. package/templates/skills/vueuse-functions/references/useFuse.md +107 -0
  414. package/templates/skills/vueuse-functions/references/useGamepad.md +223 -0
  415. package/templates/skills/vueuse-functions/references/useGeolocation.md +86 -0
  416. package/templates/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  417. package/templates/skills/vueuse-functions/references/useIdle.md +89 -0
  418. package/templates/skills/vueuse-functions/references/useImage.md +86 -0
  419. package/templates/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
  420. package/templates/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
  421. package/templates/skills/vueuse-functions/references/useInterval.md +69 -0
  422. package/templates/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  423. package/templates/skills/vueuse-functions/references/useIpcRenderer.md +118 -0
  424. package/templates/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  425. package/templates/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  426. package/templates/skills/vueuse-functions/references/useJwt.md +57 -0
  427. package/templates/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  428. package/templates/skills/vueuse-functions/references/useLastChanged.md +63 -0
  429. package/templates/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  430. package/templates/skills/vueuse-functions/references/useMagicKeys.md +217 -0
  431. package/templates/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  432. package/templates/skills/vueuse-functions/references/useMath.md +47 -0
  433. package/templates/skills/vueuse-functions/references/useMax.md +36 -0
  434. package/templates/skills/vueuse-functions/references/useMediaControls.md +571 -0
  435. package/templates/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  436. package/templates/skills/vueuse-functions/references/useMemoize.md +175 -0
  437. package/templates/skills/vueuse-functions/references/useMemory.md +56 -0
  438. package/templates/skills/vueuse-functions/references/useMin.md +36 -0
  439. package/templates/skills/vueuse-functions/references/useMounted.md +38 -0
  440. package/templates/skills/vueuse-functions/references/useMouse.md +114 -0
  441. package/templates/skills/vueuse-functions/references/useMouseInElement.md +123 -0
  442. package/templates/skills/vueuse-functions/references/useMousePressed.md +112 -0
  443. package/templates/skills/vueuse-functions/references/useMutationObserver.md +62 -0
  444. package/templates/skills/vueuse-functions/references/useNProgress.md +78 -0
  445. package/templates/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  446. package/templates/skills/vueuse-functions/references/useNetwork.md +106 -0
  447. package/templates/skills/vueuse-functions/references/useNow.md +75 -0
  448. package/templates/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  449. package/templates/skills/vueuse-functions/references/useObservable.md +67 -0
  450. package/templates/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  451. package/templates/skills/vueuse-functions/references/useOnline.md +41 -0
  452. package/templates/skills/vueuse-functions/references/usePageLeave.md +42 -0
  453. package/templates/skills/vueuse-functions/references/useParallax.md +58 -0
  454. package/templates/skills/vueuse-functions/references/useParentElement.md +54 -0
  455. package/templates/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  456. package/templates/skills/vueuse-functions/references/usePermission.md +78 -0
  457. package/templates/skills/vueuse-functions/references/usePointer.md +89 -0
  458. package/templates/skills/vueuse-functions/references/usePointerLock.md +60 -0
  459. package/templates/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  460. package/templates/skills/vueuse-functions/references/usePrecision.md +49 -0
  461. package/templates/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  462. package/templates/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  463. package/templates/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  464. package/templates/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  465. package/templates/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  466. package/templates/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  467. package/templates/skills/vueuse-functions/references/usePrevious.md +40 -0
  468. package/templates/skills/vueuse-functions/references/useProjection.md +38 -0
  469. package/templates/skills/vueuse-functions/references/useQRCode.md +53 -0
  470. package/templates/skills/vueuse-functions/references/useRTDB.md +70 -0
  471. package/templates/skills/vueuse-functions/references/useRafFn.md +68 -0
  472. package/templates/skills/vueuse-functions/references/useRefHistory.md +292 -0
  473. package/templates/skills/vueuse-functions/references/useResizeObserver.md +110 -0
  474. package/templates/skills/vueuse-functions/references/useRound.md +31 -0
  475. package/templates/skills/vueuse-functions/references/useRouteHash.md +27 -0
  476. package/templates/skills/vueuse-functions/references/useRouteParams.md +38 -0
  477. package/templates/skills/vueuse-functions/references/useRouteQuery.md +38 -0
  478. package/templates/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  479. package/templates/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
  480. package/templates/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  481. package/templates/skills/vueuse-functions/references/useScriptTag.md +116 -0
  482. package/templates/skills/vueuse-functions/references/useScroll.md +238 -0
  483. package/templates/skills/vueuse-functions/references/useScrollLock.md +66 -0
  484. package/templates/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  485. package/templates/skills/vueuse-functions/references/useShare.md +68 -0
  486. package/templates/skills/vueuse-functions/references/useSortable.md +177 -0
  487. package/templates/skills/vueuse-functions/references/useSorted.md +90 -0
  488. package/templates/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
  489. package/templates/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
  490. package/templates/skills/vueuse-functions/references/useStepper.md +137 -0
  491. package/templates/skills/vueuse-functions/references/useStorage.md +219 -0
  492. package/templates/skills/vueuse-functions/references/useStorageAsync.md +134 -0
  493. package/templates/skills/vueuse-functions/references/useStyleTag.md +131 -0
  494. package/templates/skills/vueuse-functions/references/useSubject.md +52 -0
  495. package/templates/skills/vueuse-functions/references/useSubscription.md +33 -0
  496. package/templates/skills/vueuse-functions/references/useSum.md +36 -0
  497. package/templates/skills/vueuse-functions/references/useSupported.md +29 -0
  498. package/templates/skills/vueuse-functions/references/useSwipe.md +75 -0
  499. package/templates/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  500. package/templates/skills/vueuse-functions/references/useTextDirection.md +75 -0
  501. package/templates/skills/vueuse-functions/references/useTextSelection.md +40 -0
  502. package/templates/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
  503. package/templates/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  504. package/templates/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  505. package/templates/skills/vueuse-functions/references/useTimeAgo.md +152 -0
  506. package/templates/skills/vueuse-functions/references/useTimeAgoIntl.md +116 -0
  507. package/templates/skills/vueuse-functions/references/useTimeout.md +75 -0
  508. package/templates/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  509. package/templates/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  510. package/templates/skills/vueuse-functions/references/useTimestamp.md +85 -0
  511. package/templates/skills/vueuse-functions/references/useTitle.md +113 -0
  512. package/templates/skills/vueuse-functions/references/useToNumber.md +54 -0
  513. package/templates/skills/vueuse-functions/references/useToString.md +34 -0
  514. package/templates/skills/vueuse-functions/references/useToggle.md +56 -0
  515. package/templates/skills/vueuse-functions/references/useTransition.md +265 -0
  516. package/templates/skills/vueuse-functions/references/useTrunc.md +33 -0
  517. package/templates/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  518. package/templates/skills/vueuse-functions/references/useUserMedia.md +1138 -0
  519. package/templates/skills/vueuse-functions/references/useVModel.md +116 -0
  520. package/templates/skills/vueuse-functions/references/useVModels.md +67 -0
  521. package/templates/skills/vueuse-functions/references/useVibrate.md +83 -0
  522. package/templates/skills/vueuse-functions/references/useVirtualList.md +184 -0
  523. package/templates/skills/vueuse-functions/references/useWakeLock.md +50 -0
  524. package/templates/skills/vueuse-functions/references/useWebNotification.md +177 -0
  525. package/templates/skills/vueuse-functions/references/useWebSocket.md +268 -0
  526. package/templates/skills/vueuse-functions/references/useWebWorker.md +60 -0
  527. package/templates/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  528. package/templates/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  529. package/templates/skills/vueuse-functions/references/useWindowScroll.md +62 -0
  530. package/templates/skills/vueuse-functions/references/useWindowSize.md +76 -0
  531. package/templates/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  532. package/templates/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  533. package/templates/skills/vueuse-functions/references/watchArray.md +53 -0
  534. package/templates/skills/vueuse-functions/references/watchAtMost.md +54 -0
  535. package/templates/skills/vueuse-functions/references/watchDebounced.md +72 -0
  536. package/templates/skills/vueuse-functions/references/watchDeep.md +54 -0
  537. package/templates/skills/vueuse-functions/references/watchExtractedObservable.md +167 -0
  538. package/templates/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  539. package/templates/skills/vueuse-functions/references/watchImmediate.md +44 -0
  540. package/templates/skills/vueuse-functions/references/watchOnce.md +41 -0
  541. package/templates/skills/vueuse-functions/references/watchPausable.md +86 -0
  542. package/templates/skills/vueuse-functions/references/watchThrottled.md +73 -0
  543. package/templates/skills/vueuse-functions/references/watchTriggerable.md +97 -0
  544. package/templates/skills/vueuse-functions/references/watchWithFilter.md +55 -0
  545. package/templates/skills/vueuse-functions/references/whenever.md +100 -0
  546. package/templates/skills/web-design-guidelines/SKILL.md +39 -0
  547. package/templates/skills/web-design-guidelines/SYNC.md +5 -0
@@ -0,0 +1,207 @@
1
+ ---
2
+ name: snapshot-testing
3
+ description: Snapshot testing with file, inline, and file snapshots
4
+ ---
5
+
6
+ # Snapshot Testing
7
+
8
+ Snapshot tests capture output and compare against stored references.
9
+
10
+ ## Basic Snapshot
11
+
12
+ ```ts
13
+ import { expect, test } from 'vitest'
14
+
15
+ test('snapshot', () => {
16
+ const result = generateOutput()
17
+ expect(result).toMatchSnapshot()
18
+ })
19
+ ```
20
+
21
+ First run creates `.snap` file:
22
+
23
+ ```js
24
+ // __snapshots__/test.spec.ts.snap
25
+ exports['snapshot 1'] = `
26
+ {
27
+ "id": 1,
28
+ "name": "test"
29
+ }
30
+ `
31
+ ```
32
+
33
+ ## Inline Snapshots
34
+
35
+ Stored directly in test file:
36
+
37
+ ```ts
38
+ test('inline snapshot', () => {
39
+ const data = { foo: 'bar' }
40
+ expect(data).toMatchInlineSnapshot()
41
+ })
42
+ ```
43
+
44
+ Vitest updates the test file:
45
+
46
+ ```ts
47
+ test('inline snapshot', () => {
48
+ const data = { foo: 'bar' }
49
+ expect(data).toMatchInlineSnapshot(`
50
+ {
51
+ "foo": "bar",
52
+ }
53
+ `)
54
+ })
55
+ ```
56
+
57
+ ## File Snapshots
58
+
59
+ Compare against explicit file:
60
+
61
+ ```ts
62
+ test('render html', async () => {
63
+ const html = renderComponent()
64
+ await expect(html).toMatchFileSnapshot('./expected/component.html')
65
+ })
66
+ ```
67
+
68
+ ## Snapshot Hints
69
+
70
+ Add descriptive hints:
71
+
72
+ ```ts
73
+ test('multiple snapshots', () => {
74
+ expect(header).toMatchSnapshot('header')
75
+ expect(body).toMatchSnapshot('body content')
76
+ expect(footer).toMatchSnapshot('footer')
77
+ })
78
+ ```
79
+
80
+ ## Object Shape Matching
81
+
82
+ Match partial structure:
83
+
84
+ ```ts
85
+ test('shape snapshot', () => {
86
+ const data = {
87
+ id: Math.random(),
88
+ created: new Date(),
89
+ name: 'test'
90
+ }
91
+
92
+ expect(data).toMatchSnapshot({
93
+ id: expect.any(Number),
94
+ created: expect.any(Date),
95
+ })
96
+ })
97
+ ```
98
+
99
+ ## Error Snapshots
100
+
101
+ ```ts
102
+ test('error message', () => {
103
+ expect(() => {
104
+ throw new Error('Something went wrong')
105
+ }).toThrowErrorMatchingSnapshot()
106
+ })
107
+
108
+ test('inline error', () => {
109
+ expect(() => {
110
+ throw new Error('Bad input')
111
+ }).toThrowErrorMatchingInlineSnapshot(`[Error: Bad input]`)
112
+ })
113
+ ```
114
+
115
+ ## Updating Snapshots
116
+
117
+ ```bash
118
+ # Update all snapshots
119
+ vitest -u
120
+ vitest --update
121
+
122
+ # In watch mode, press 'u' to update failed snapshots
123
+ ```
124
+
125
+ ## Custom Serializers
126
+
127
+ Add custom snapshot formatting:
128
+
129
+ ```ts
130
+ expect.addSnapshotSerializer({
131
+ test(val) {
132
+ return val && typeof val.toJSON === 'function'
133
+ },
134
+ serialize(val, config, indentation, depth, refs, printer) {
135
+ return printer(val.toJSON(), config, indentation, depth, refs)
136
+ },
137
+ })
138
+ ```
139
+
140
+ Or via config:
141
+
142
+ ```ts
143
+ // vitest.config.ts
144
+ defineConfig({
145
+ test: {
146
+ snapshotSerializers: ['./my-serializer.ts'],
147
+ },
148
+ })
149
+ ```
150
+
151
+ ## Snapshot Format Options
152
+
153
+ ```ts
154
+ defineConfig({
155
+ test: {
156
+ snapshotFormat: {
157
+ printBasicPrototype: false, // Don't print Array/Object prototypes
158
+ escapeString: false,
159
+ },
160
+ },
161
+ })
162
+ ```
163
+
164
+ ## Concurrent Test Snapshots
165
+
166
+ Use context's expect:
167
+
168
+ ```ts
169
+ test.concurrent('concurrent 1', async ({ expect }) => {
170
+ expect(await getData()).toMatchSnapshot()
171
+ })
172
+
173
+ test.concurrent('concurrent 2', async ({ expect }) => {
174
+ expect(await getOther()).toMatchSnapshot()
175
+ })
176
+ ```
177
+
178
+ ## Snapshot File Location
179
+
180
+ Default: `__snapshots__/<test-file>.snap`
181
+
182
+ Customize:
183
+
184
+ ```ts
185
+ defineConfig({
186
+ test: {
187
+ resolveSnapshotPath: (testPath, snapExtension) => {
188
+ return testPath.replace('__tests__', '__snapshots__') + snapExtension
189
+ },
190
+ },
191
+ })
192
+ ```
193
+
194
+ ## Key Points
195
+
196
+ - Commit snapshot files to version control
197
+ - Review snapshot changes in code review
198
+ - Use hints for multiple snapshots in one test
199
+ - Use `toMatchFileSnapshot` for large outputs (HTML, JSON)
200
+ - Inline snapshots auto-update in test file
201
+ - Use context's `expect` for concurrent tests
202
+
203
+ <!--
204
+ Source references:
205
+ - https://vitest.dev/guide/snapshot.html
206
+ - https://vitest.dev/api/expect.html#tomatchsnapshot
207
+ -->
@@ -0,0 +1,5 @@
1
+ # Generation Info
2
+
3
+ - **Source:** `sources/vue`
4
+ - **Git SHA:** `dcf363038ab2f5b4571028669cf893d084b6b207`
5
+ - **Generated:** 2026-01-28
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: vue
3
+ description: Vue.js progressive JavaScript framework. Use when building Vue components, working with reactivity (ref, reactive, computed, watch), or implementing Vue Composition API patterns.
4
+ metadata:
5
+ author: Anthony Fu
6
+ version: "2026.1.28"
7
+ source: Generated from https://github.com/vuejs/docs, scripts located at https://github.com/antfu/skills
8
+ ---
9
+
10
+ # Vue
11
+
12
+ > The skill is based on Vue 3.5+, generated at 2026-01-28.
13
+
14
+ Vue is a progressive JavaScript framework for building user interfaces. It builds on standard HTML, CSS, and JavaScript with intuitive API and world-class documentation. The Composition API with `<script setup>` and TypeScript is the recommended approach for building Vue applications.
15
+
16
+ ## Core References
17
+
18
+ | Topic | Description | Reference |
19
+ |-------|-------------|-----------|
20
+ | Reactivity System | ref, reactive, computed, watch, and watchEffect | [core-reactivity](references/core-reactivity.md) |
21
+
22
+ ## Components
23
+
24
+ | Topic | Description | Reference |
25
+ |-------|-------------|-----------|
26
+ | Props | Declare and validate component props with TypeScript | [components-props](references/components-props.md) |
27
+ | Events (Emits) | Emit custom events from components | [components-emits](references/components-emits.md) |
28
+ | Slots | Pass template content to child components | [components-slots](references/components-slots.md) |
29
+ | v-model | Two-way binding on custom components | [components-v-model](references/components-v-model.md) |
30
+ | Lifecycle Hooks | Run code at specific component lifecycle stages | [components-lifecycle](references/components-lifecycle.md) |
31
+
32
+ ## Features
33
+
34
+ ### Script Setup & TypeScript
35
+
36
+ | Topic | Description | Reference |
37
+ |-------|-------------|-----------|
38
+ | Script Setup | Composition API syntactic sugar for SFCs | [features-script-setup](references/features-script-setup.md) |
39
+ | TypeScript | Type-safe Vue components with Composition API | [features-typescript](references/features-typescript.md) |
40
+
41
+ ### Reusability
42
+
43
+ | Topic | Description | Reference |
44
+ |-------|-------------|-----------|
45
+ | Composables | Encapsulate and reuse stateful logic | [features-composables](references/features-composables.md) |
46
+ | Custom Directives | Low-level DOM manipulation directives | [features-directives](references/features-directives.md) |
47
+ | Template Refs | Direct DOM and component instance access | [features-template-refs](references/features-template-refs.md) |
48
+
49
+ ## Advanced
50
+
51
+ | Topic | Description | Reference |
52
+ |-------|-------------|-----------|
53
+ | Provide/Inject | Dependency injection across component tree | [advanced-provide-inject](references/advanced-provide-inject.md) |
54
+ | Async & Suspense | Top-level await pitfalls, async components, Suspense | [advanced-async-suspense](references/advanced-async-suspense.md) |
55
+
56
+ ## Key Recommendations
57
+
58
+ - **Use `<script setup lang="ts">`** for all components
59
+ - **Prefer `ref()` over `reactive()`** for declaring state
60
+ - **Use type-based prop declarations** with interfaces
61
+ - **Use `defineModel()`** for v-model (3.4+)
62
+ - **Destructure props reactively** (3.5+) for cleaner code
63
+ - **Extract composables** for reusable stateful logic
@@ -0,0 +1,246 @@
1
+ ---
2
+ name: async-components-suspense
3
+ description: Handle async operations, top-level await, and Suspense boundaries
4
+ ---
5
+
6
+ # Async Components & Suspense
7
+
8
+ Vue provides patterns for handling asynchronous operations in components.
9
+
10
+ ## Top-Level await in Script Setup
11
+
12
+ `<script setup>` supports top-level `await`, making the component an async dependency:
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ const data = await fetch('/api/data').then(r => r.json())
17
+ </script>
18
+
19
+ <template>
20
+ <div>{{ data }}</div>
21
+ </template>
22
+ ```
23
+
24
+ **Important**: Components with top-level `await` **require a `<Suspense>` boundary** in a parent component, otherwise they won't render.
25
+
26
+ ## Suspense
27
+
28
+ `<Suspense>` is a built-in component for handling async dependencies in the component tree.
29
+
30
+ ```vue
31
+ <template>
32
+ <Suspense>
33
+ <!-- Component with async setup -->
34
+ <AsyncComponent />
35
+
36
+ <!-- Fallback while loading -->
37
+ <template #fallback>
38
+ <div>Loading...</div>
39
+ </template>
40
+ </Suspense>
41
+ </template>
42
+ ```
43
+
44
+ ### Suspense Slots
45
+
46
+ - **default**: The async content to render
47
+ - **fallback**: Content shown while async dependencies are resolving
48
+
49
+ ```vue
50
+ <Suspense>
51
+ <template #default>
52
+ <Dashboard />
53
+ </template>
54
+ <template #fallback>
55
+ <LoadingSpinner />
56
+ </template>
57
+ </Suspense>
58
+ ```
59
+
60
+ ## Async Components
61
+
62
+ Define components that are loaded asynchronously:
63
+
64
+ ```ts
65
+ import { defineAsyncComponent } from 'vue'
66
+
67
+ const AsyncModal = defineAsyncComponent(() =>
68
+ import('./components/Modal.vue')
69
+ )
70
+
71
+ // With options
72
+ const AsyncModalWithOptions = defineAsyncComponent({
73
+ loader: () => import('./components/Modal.vue'),
74
+ loadingComponent: LoadingSpinner,
75
+ errorComponent: ErrorDisplay,
76
+ delay: 200, // Delay before showing loading (ms)
77
+ timeout: 3000 // Timeout before showing error (ms)
78
+ })
79
+ ```
80
+
81
+ ## Common Async Pitfalls
82
+
83
+ ### Pitfall 1: Missing Suspense Boundary
84
+
85
+ ```vue
86
+ <!-- ❌ Won't work - no Suspense boundary -->
87
+ <template>
88
+ <AsyncComponent />
89
+ </template>
90
+
91
+ <!-- ✅ Works -->
92
+ <template>
93
+ <Suspense>
94
+ <AsyncComponent />
95
+ <template #fallback>Loading...</template>
96
+ </Suspense>
97
+ </template>
98
+ ```
99
+
100
+ ### Pitfall 2: Lifecycle Hooks After await
101
+
102
+ Lifecycle hooks must be registered synchronously, before any `await`:
103
+
104
+ ```vue
105
+ <script setup lang="ts">
106
+ import { onMounted, onUnmounted } from 'vue'
107
+
108
+ // ✅ Register hooks BEFORE await
109
+ onMounted(() => console.log('mounted'))
110
+ onUnmounted(() => console.log('unmounted'))
111
+
112
+ // Now you can await
113
+ const data = await fetchData()
114
+ </script>
115
+ ```
116
+
117
+ ```vue
118
+ <script setup lang="ts">
119
+ // ❌ WRONG - hooks after await won't work
120
+ const data = await fetchData()
121
+
122
+ onMounted(() => {
123
+ // This may not be called!
124
+ })
125
+ </script>
126
+ ```
127
+
128
+ ### Pitfall 3: Composables After await
129
+
130
+ Composables that use lifecycle hooks must be called before `await`:
131
+
132
+ ```vue
133
+ <script setup lang="ts">
134
+ import { useMouse } from '@/composables/useMouse'
135
+
136
+ // ✅ Call composables BEFORE await
137
+ const { x, y } = useMouse()
138
+
139
+ const data = await fetchData()
140
+ </script>
141
+ ```
142
+
143
+ ### Pitfall 4: Watchers Created in Async Callbacks
144
+
145
+ Watchers in async callbacks aren't auto-disposed:
146
+
147
+ ```ts
148
+ // ❌ Memory leak - watcher not auto-disposed
149
+ setTimeout(() => {
150
+ watch(source, callback) // Must be stopped manually
151
+ }, 1000)
152
+
153
+ // ✅ Watchers in setup are auto-disposed
154
+ watch(source, callback)
155
+ ```
156
+
157
+ ## Recommended Pattern: Avoid Top-Level await
158
+
159
+ Often better to handle async in `onMounted` or with watchers:
160
+
161
+ ```vue
162
+ <script setup lang="ts">
163
+ import { ref, onMounted } from 'vue'
164
+
165
+ const data = ref<Data | null>(null)
166
+ const isLoading = ref(true)
167
+ const error = ref<Error | null>(null)
168
+
169
+ onMounted(async () => {
170
+ try {
171
+ data.value = await fetchData()
172
+ } catch (e) {
173
+ error.value = e as Error
174
+ } finally {
175
+ isLoading.value = false
176
+ }
177
+ })
178
+ </script>
179
+
180
+ <template>
181
+ <div v-if="isLoading">Loading...</div>
182
+ <div v-else-if="error">Error: {{ error.message }}</div>
183
+ <div v-else>{{ data }}</div>
184
+ </template>
185
+ ```
186
+
187
+ This pattern:
188
+ - Doesn't require Suspense
189
+ - Gives you control over loading/error states
190
+ - Works everywhere without special parent setup
191
+
192
+ ## When to Use Suspense
193
+
194
+ Use Suspense when:
195
+ - You have nested async components
196
+ - You want coordinated loading states across multiple async children
197
+ - You're doing SSR with async data requirements
198
+
199
+ Avoid Suspense when:
200
+ - Simple single-component async loading
201
+ - You need fine-grained control over loading states
202
+ - You want to avoid Suspense complexity
203
+
204
+ ## Suspense Events
205
+
206
+ ```vue
207
+ <Suspense
208
+ @pending="onPending"
209
+ @resolve="onResolve"
210
+ @fallback="onFallback"
211
+ >
212
+ <AsyncComponent />
213
+ </Suspense>
214
+ ```
215
+
216
+ ## Error Handling with Suspense
217
+
218
+ Use `onErrorCaptured` or `<ErrorBoundary>` pattern:
219
+
220
+ ```vue
221
+ <script setup lang="ts">
222
+ import { onErrorCaptured, ref } from 'vue'
223
+
224
+ const error = ref<Error | null>(null)
225
+
226
+ onErrorCaptured((e) => {
227
+ error.value = e
228
+ return false // Prevent propagation
229
+ })
230
+ </script>
231
+
232
+ <template>
233
+ <div v-if="error">Error: {{ error.message }}</div>
234
+ <Suspense v-else>
235
+ <AsyncComponent />
236
+ <template #fallback>Loading...</template>
237
+ </Suspense>
238
+ </template>
239
+ ```
240
+
241
+ <!--
242
+ Source references:
243
+ - https://vuejs.org/guide/built-ins/suspense.html
244
+ - https://vuejs.org/guide/components/async.html
245
+ - https://vuejs.org/api/sfc-script-setup.html#top-level-await
246
+ -->
@@ -0,0 +1,174 @@
1
+ ---
2
+ name: provide-inject
3
+ description: Pass data through component tree without prop drilling
4
+ ---
5
+
6
+ # Provide / Inject
7
+
8
+ Provide data from ancestor components to any descendant, avoiding prop drilling.
9
+
10
+ ## Basic Usage
11
+
12
+ ```vue
13
+ <!-- Provider.vue -->
14
+ <script setup lang="ts">
15
+ import { provide, ref } from 'vue'
16
+
17
+ const message = ref('hello')
18
+ provide('message', message)
19
+ </script>
20
+ ```
21
+
22
+ ```vue
23
+ <!-- DeepChild.vue (any level deep) -->
24
+ <script setup lang="ts">
25
+ import { inject } from 'vue'
26
+
27
+ const message = inject('message')
28
+ </script>
29
+ ```
30
+
31
+ ## Typing with InjectionKey
32
+
33
+ Use `InjectionKey` for type safety between provider and injector:
34
+
35
+ ```ts
36
+ // keys.ts
37
+ import type { InjectionKey, Ref } from 'vue'
38
+
39
+ export const messageKey = Symbol() as InjectionKey<Ref<string>>
40
+ export const countKey = Symbol() as InjectionKey<number>
41
+ ```
42
+
43
+ ```vue
44
+ <!-- Provider.vue -->
45
+ <script setup lang="ts">
46
+ import { provide, ref } from 'vue'
47
+ import { messageKey } from './keys'
48
+
49
+ const message = ref('hello')
50
+ provide(messageKey, message)
51
+ </script>
52
+ ```
53
+
54
+ ```vue
55
+ <!-- Injector.vue -->
56
+ <script setup lang="ts">
57
+ import { inject } from 'vue'
58
+ import { messageKey } from './keys'
59
+
60
+ const message = inject(messageKey) // Ref<string> | undefined
61
+ </script>
62
+ ```
63
+
64
+ ## Default Values
65
+
66
+ ```ts
67
+ // Simple default
68
+ const value = inject('message', 'default value')
69
+
70
+ // Factory function (for expensive defaults)
71
+ const value = inject('key', () => new ExpensiveClass(), true)
72
+ // ^ treat as factory
73
+ ```
74
+
75
+ ## App-Level Provide
76
+
77
+ Available to all components:
78
+
79
+ ```ts
80
+ // main.ts
81
+ import { createApp } from 'vue'
82
+
83
+ const app = createApp(App)
84
+ app.provide('globalConfig', { theme: 'dark' })
85
+ ```
86
+
87
+ ## Reactive Provide/Inject
88
+
89
+ Provide reactive values for automatic updates:
90
+
91
+ ```vue
92
+ <!-- Provider.vue -->
93
+ <script setup lang="ts">
94
+ import { provide, ref } from 'vue'
95
+
96
+ const count = ref(0)
97
+ provide('count', count)
98
+ </script>
99
+ ```
100
+
101
+ The injected value maintains reactivity connection.
102
+
103
+ ## Mutations Best Practice
104
+
105
+ Keep mutations in the provider, expose update functions:
106
+
107
+ ```vue
108
+ <!-- Provider.vue -->
109
+ <script setup lang="ts">
110
+ import { provide, ref, readonly } from 'vue'
111
+
112
+ const location = ref('North Pole')
113
+
114
+ function updateLocation(newLocation: string) {
115
+ location.value = newLocation
116
+ }
117
+
118
+ provide('location', {
119
+ location: readonly(location), // Prevent direct mutation
120
+ updateLocation
121
+ })
122
+ </script>
123
+ ```
124
+
125
+ ```vue
126
+ <!-- Injector.vue -->
127
+ <script setup lang="ts">
128
+ import { inject } from 'vue'
129
+
130
+ const { location, updateLocation } = inject('location')!
131
+ </script>
132
+
133
+ <template>
134
+ <button @click="updateLocation('South Pole')">
135
+ {{ location }}
136
+ </button>
137
+ </template>
138
+ ```
139
+
140
+ ## Using Symbol Keys
141
+
142
+ Recommended for libraries and large apps to avoid collisions:
143
+
144
+ ```ts
145
+ // keys.ts
146
+ export const myKey = Symbol('myKey')
147
+
148
+ // provider
149
+ provide(myKey, value)
150
+
151
+ // injector
152
+ inject(myKey)
153
+ ```
154
+
155
+ ## Type Helpers
156
+
157
+ ```ts
158
+ // String key with explicit type
159
+ const foo = inject<string>('foo')
160
+ // ^? string | undefined
161
+
162
+ // With default (removes undefined)
163
+ const foo = inject<string>('foo', 'default')
164
+ // ^? string
165
+
166
+ // Force non-undefined (use when certain it's provided)
167
+ const foo = inject('foo') as string
168
+ ```
169
+
170
+ <!--
171
+ Source references:
172
+ - https://vuejs.org/guide/components/provide-inject.html
173
+ - https://vuejs.org/guide/typescript/composition-api.html#typing-provide-inject
174
+ -->