aico-cli 2.1.1 → 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 (549) hide show
  1. package/bin/cli/README.md +1 -1
  2. package/bin/cli/cli.js +9391 -3999
  3. package/bin/cli/package.json +1 -1
  4. package/bin/cli/sdk-tools.d.ts +83 -15
  5. package/dist/chunks/simple-config.mjs +1 -1
  6. package/package.json +2 -2
  7. package/templates/cursor.md +72 -15
  8. package/templates/personality.md +37 -13
  9. package/templates/skills/antfu/SKILL.md +222 -0
  10. package/templates/skills/antfu/references/antfu-eslint-config.md +328 -0
  11. package/templates/skills/antfu/references/app-development.md +60 -0
  12. package/templates/skills/antfu/references/github-actions.md +68 -0
  13. package/templates/skills/antfu/references/gitignore.md +29 -0
  14. package/templates/skills/antfu/references/library-development.md +85 -0
  15. package/templates/skills/antfu/references/monorepo.md +126 -0
  16. package/templates/skills/antfu/references/vscode-extensions.md +34 -0
  17. package/templates/skills/nuxt/GENERATION.md +5 -0
  18. package/templates/skills/nuxt/SKILL.md +55 -0
  19. package/templates/skills/nuxt/references/advanced-hooks.md +289 -0
  20. package/templates/skills/nuxt/references/advanced-layers.md +299 -0
  21. package/templates/skills/nuxt/references/advanced-module-authoring.md +554 -0
  22. package/templates/skills/nuxt/references/best-practices-data-fetching.md +357 -0
  23. package/templates/skills/nuxt/references/best-practices-ssr.md +355 -0
  24. package/templates/skills/nuxt/references/core-cli.md +263 -0
  25. package/templates/skills/nuxt/references/core-config.md +162 -0
  26. package/templates/skills/nuxt/references/core-data-fetching.md +236 -0
  27. package/templates/skills/nuxt/references/core-deployment.md +224 -0
  28. package/templates/skills/nuxt/references/core-directory-structure.md +269 -0
  29. package/templates/skills/nuxt/references/core-modules.md +292 -0
  30. package/templates/skills/nuxt/references/core-routing.md +226 -0
  31. package/templates/skills/nuxt/references/features-components-autoimport.md +328 -0
  32. package/templates/skills/nuxt/references/features-components.md +264 -0
  33. package/templates/skills/nuxt/references/features-composables.md +276 -0
  34. package/templates/skills/nuxt/references/features-server.md +265 -0
  35. package/templates/skills/nuxt/references/features-state.md +194 -0
  36. package/templates/skills/nuxt/references/rendering-modes.md +237 -0
  37. package/templates/skills/pinia/GENERATION.md +5 -0
  38. package/templates/skills/pinia/SKILL.md +59 -0
  39. package/templates/skills/pinia/references/advanced-hmr.md +61 -0
  40. package/templates/skills/pinia/references/advanced-nuxt.md +119 -0
  41. package/templates/skills/pinia/references/advanced-ssr.md +121 -0
  42. package/templates/skills/pinia/references/best-practices-outside-component.md +115 -0
  43. package/templates/skills/pinia/references/best-practices-testing.md +212 -0
  44. package/templates/skills/pinia/references/core-stores.md +389 -0
  45. package/templates/skills/pinia/references/features-composables.md +114 -0
  46. package/templates/skills/pinia/references/features-composing-stores.md +134 -0
  47. package/templates/skills/pinia/references/features-plugins.md +203 -0
  48. package/templates/skills/pnpm/GENERATION.md +5 -0
  49. package/templates/skills/pnpm/SKILL.md +42 -0
  50. package/templates/skills/pnpm/references/best-practices-ci.md +285 -0
  51. package/templates/skills/pnpm/references/best-practices-migration.md +291 -0
  52. package/templates/skills/pnpm/references/best-practices-performance.md +284 -0
  53. package/templates/skills/pnpm/references/core-cli.md +229 -0
  54. package/templates/skills/pnpm/references/core-config.md +188 -0
  55. package/templates/skills/pnpm/references/core-store.md +179 -0
  56. package/templates/skills/pnpm/references/core-workspaces.md +205 -0
  57. package/templates/skills/pnpm/references/features-aliases.md +168 -0
  58. package/templates/skills/pnpm/references/features-catalogs.md +159 -0
  59. package/templates/skills/pnpm/references/features-hooks.md +233 -0
  60. package/templates/skills/pnpm/references/features-overrides.md +184 -0
  61. package/templates/skills/pnpm/references/features-patches.md +201 -0
  62. package/templates/skills/pnpm/references/features-peer-deps.md +250 -0
  63. package/templates/skills/slidev/LICENSE.md +21 -0
  64. package/templates/skills/slidev/README.md +61 -0
  65. package/templates/skills/slidev/SKILL.md +183 -0
  66. package/templates/skills/slidev/SYNC.md +5 -0
  67. package/templates/skills/slidev/references/animation-click-marker.md +37 -0
  68. package/templates/skills/slidev/references/animation-drawing.md +68 -0
  69. package/templates/skills/slidev/references/animation-rough-marker.md +53 -0
  70. package/templates/skills/slidev/references/api-slide-hooks.md +37 -0
  71. package/templates/skills/slidev/references/build-og-image.md +36 -0
  72. package/templates/skills/slidev/references/build-pdf.md +40 -0
  73. package/templates/skills/slidev/references/build-remote-assets.md +34 -0
  74. package/templates/skills/slidev/references/build-seo-meta.md +43 -0
  75. package/templates/skills/slidev/references/code-groups.md +64 -0
  76. package/templates/skills/slidev/references/code-import-snippet.md +55 -0
  77. package/templates/skills/slidev/references/code-line-highlighting.md +50 -0
  78. package/templates/skills/slidev/references/code-line-numbers.md +46 -0
  79. package/templates/skills/slidev/references/code-magic-move.md +57 -0
  80. package/templates/skills/slidev/references/code-max-height.md +37 -0
  81. package/templates/skills/slidev/references/code-twoslash.md +42 -0
  82. package/templates/skills/slidev/references/core-animations.md +196 -0
  83. package/templates/skills/slidev/references/core-cli.md +140 -0
  84. package/templates/skills/slidev/references/core-components.md +197 -0
  85. package/templates/skills/slidev/references/core-exporting.md +148 -0
  86. package/templates/skills/slidev/references/core-frontmatter.md +195 -0
  87. package/templates/skills/slidev/references/core-global-context.md +155 -0
  88. package/templates/skills/slidev/references/core-headmatter.md +188 -0
  89. package/templates/skills/slidev/references/core-hosting.md +152 -0
  90. package/templates/skills/slidev/references/core-layouts.md +286 -0
  91. package/templates/skills/slidev/references/core-syntax.md +155 -0
  92. package/templates/skills/slidev/references/diagram-latex.md +55 -0
  93. package/templates/skills/slidev/references/diagram-mermaid.md +44 -0
  94. package/templates/skills/slidev/references/diagram-plantuml.md +45 -0
  95. package/templates/skills/slidev/references/editor-monaco-run.md +44 -0
  96. package/templates/skills/slidev/references/editor-monaco-write.md +24 -0
  97. package/templates/skills/slidev/references/editor-monaco.md +50 -0
  98. package/templates/skills/slidev/references/editor-prettier.md +40 -0
  99. package/templates/skills/slidev/references/editor-side.md +23 -0
  100. package/templates/skills/slidev/references/editor-vscode.md +55 -0
  101. package/templates/skills/slidev/references/layout-canvas-size.md +25 -0
  102. package/templates/skills/slidev/references/layout-draggable.md +57 -0
  103. package/templates/skills/slidev/references/layout-global-layers.md +50 -0
  104. package/templates/skills/slidev/references/layout-slots.md +75 -0
  105. package/templates/skills/slidev/references/layout-transform.md +33 -0
  106. package/templates/skills/slidev/references/layout-zoom.md +39 -0
  107. package/templates/skills/slidev/references/presenter-notes-ruby.md +35 -0
  108. package/templates/skills/slidev/references/presenter-recording.md +30 -0
  109. package/templates/skills/slidev/references/presenter-remote.md +40 -0
  110. package/templates/skills/slidev/references/presenter-timer.md +34 -0
  111. package/templates/skills/slidev/references/style-direction.md +34 -0
  112. package/templates/skills/slidev/references/style-icons.md +46 -0
  113. package/templates/skills/slidev/references/style-scoped.md +50 -0
  114. package/templates/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  115. package/templates/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  116. package/templates/skills/slidev/references/syntax-importing-slides.md +60 -0
  117. package/templates/skills/slidev/references/syntax-mdc.md +51 -0
  118. package/templates/skills/slidev/references/tool-eject-theme.md +27 -0
  119. package/templates/skills/tech-whitepaper/SKILL.md +102 -15
  120. package/templates/skills/tsdown/GENERATION.md +5 -0
  121. package/templates/skills/tsdown/SKILL.md +59 -0
  122. package/templates/skills/tsdown/references/advanced-hooks.md +87 -0
  123. package/templates/skills/tsdown/references/advanced-plugins.md +97 -0
  124. package/templates/skills/tsdown/references/advanced-programmatic.md +78 -0
  125. package/templates/skills/tsdown/references/advanced-rolldown-options.md +114 -0
  126. package/templates/skills/tsdown/references/core-cli.md +116 -0
  127. package/templates/skills/tsdown/references/core-config.md +86 -0
  128. package/templates/skills/tsdown/references/core-entry.md +74 -0
  129. package/templates/skills/tsdown/references/features-optimization.md +83 -0
  130. package/templates/skills/tsdown/references/features-shims.md +92 -0
  131. package/templates/skills/tsdown/references/features-unbundle.md +63 -0
  132. package/templates/skills/tsdown/references/features-watch.md +60 -0
  133. package/templates/skills/tsdown/references/options-dependencies.md +88 -0
  134. package/templates/skills/tsdown/references/options-dts.md +104 -0
  135. package/templates/skills/tsdown/references/options-output.md +124 -0
  136. package/templates/skills/tsdown/references/options-package-exports.md +114 -0
  137. package/templates/skills/tsdown/references/recipes-frameworks.md +109 -0
  138. package/templates/skills/tsdown/references/recipes-migration.md +84 -0
  139. package/templates/skills/turborepo/LICENSE.md +7 -0
  140. package/templates/skills/turborepo/SKILL.md +914 -0
  141. package/templates/skills/turborepo/SYNC.md +5 -0
  142. package/templates/skills/turborepo/command/turborepo.md +70 -0
  143. package/templates/skills/turborepo/references/best-practices/README.md +241 -0
  144. package/templates/skills/turborepo/references/best-practices/dependencies.md +246 -0
  145. package/templates/skills/turborepo/references/best-practices/packages.md +335 -0
  146. package/templates/skills/turborepo/references/best-practices/structure.md +269 -0
  147. package/templates/skills/turborepo/references/boundaries/README.md +126 -0
  148. package/templates/skills/turborepo/references/caching/README.md +107 -0
  149. package/templates/skills/turborepo/references/caching/gotchas.md +169 -0
  150. package/templates/skills/turborepo/references/caching/remote-cache.md +127 -0
  151. package/templates/skills/turborepo/references/ci/README.md +79 -0
  152. package/templates/skills/turborepo/references/ci/github-actions.md +162 -0
  153. package/templates/skills/turborepo/references/ci/patterns.md +145 -0
  154. package/templates/skills/turborepo/references/ci/vercel.md +103 -0
  155. package/templates/skills/turborepo/references/cli/README.md +100 -0
  156. package/templates/skills/turborepo/references/cli/commands.md +297 -0
  157. package/templates/skills/turborepo/references/configuration/README.md +211 -0
  158. package/templates/skills/turborepo/references/configuration/global-options.md +195 -0
  159. package/templates/skills/turborepo/references/configuration/gotchas.md +348 -0
  160. package/templates/skills/turborepo/references/configuration/tasks.md +285 -0
  161. package/templates/skills/turborepo/references/environment/README.md +96 -0
  162. package/templates/skills/turborepo/references/environment/gotchas.md +145 -0
  163. package/templates/skills/turborepo/references/environment/modes.md +101 -0
  164. package/templates/skills/turborepo/references/filtering/README.md +148 -0
  165. package/templates/skills/turborepo/references/filtering/patterns.md +152 -0
  166. package/templates/skills/turborepo/references/watch/README.md +99 -0
  167. package/templates/skills/unocss/GENERATION.md +5 -0
  168. package/templates/skills/unocss/SKILL.md +64 -0
  169. package/templates/skills/unocss/references/core-config.md +187 -0
  170. package/templates/skills/unocss/references/core-extracting.md +137 -0
  171. package/templates/skills/unocss/references/core-layers.md +104 -0
  172. package/templates/skills/unocss/references/core-rules.md +166 -0
  173. package/templates/skills/unocss/references/core-safelist.md +105 -0
  174. package/templates/skills/unocss/references/core-shortcuts.md +89 -0
  175. package/templates/skills/unocss/references/core-theme.md +172 -0
  176. package/templates/skills/unocss/references/core-variants.md +175 -0
  177. package/templates/skills/unocss/references/integrations-nuxt.md +199 -0
  178. package/templates/skills/unocss/references/integrations-vite.md +283 -0
  179. package/templates/skills/unocss/references/preset-attributify.md +142 -0
  180. package/templates/skills/unocss/references/preset-icons.md +184 -0
  181. package/templates/skills/unocss/references/preset-mini.md +158 -0
  182. package/templates/skills/unocss/references/preset-rem-to-px.md +97 -0
  183. package/templates/skills/unocss/references/preset-tagify.md +134 -0
  184. package/templates/skills/unocss/references/preset-typography.md +95 -0
  185. package/templates/skills/unocss/references/preset-web-fonts.md +91 -0
  186. package/templates/skills/unocss/references/preset-wind3.md +194 -0
  187. package/templates/skills/unocss/references/preset-wind4.md +247 -0
  188. package/templates/skills/unocss/references/transformer-attributify-jsx.md +156 -0
  189. package/templates/skills/unocss/references/transformer-compile-class.md +128 -0
  190. package/templates/skills/unocss/references/transformer-directives.md +157 -0
  191. package/templates/skills/unocss/references/transformer-variant-group.md +97 -0
  192. package/templates/skills/vite/GENERATION.md +5 -0
  193. package/templates/skills/vite/SKILL.md +50 -0
  194. package/templates/skills/vite/references/advanced-api.md +218 -0
  195. package/templates/skills/vite/references/advanced-backend.md +164 -0
  196. package/templates/skills/vite/references/advanced-performance.md +168 -0
  197. package/templates/skills/vite/references/advanced-plugin-api.md +258 -0
  198. package/templates/skills/vite/references/build-library.md +172 -0
  199. package/templates/skills/vite/references/build-production.md +220 -0
  200. package/templates/skills/vite/references/build-ssr.md +194 -0
  201. package/templates/skills/vite/references/core-cli.md +137 -0
  202. package/templates/skills/vite/references/core-config.md +176 -0
  203. package/templates/skills/vite/references/core-features.md +170 -0
  204. package/templates/skills/vite/references/core-plugins.md +154 -0
  205. package/templates/skills/vite/references/features-assets.md +138 -0
  206. package/templates/skills/vite/references/features-css.md +215 -0
  207. package/templates/skills/vite/references/features-dep-bundling.md +148 -0
  208. package/templates/skills/vite/references/features-env.md +161 -0
  209. package/templates/skills/vite/references/features-glob-import.md +161 -0
  210. package/templates/skills/vite/references/features-hmr.md +200 -0
  211. package/templates/skills/vite/references/features-workers.md +115 -0
  212. package/templates/skills/vitepress/GENERATION.md +5 -0
  213. package/templates/skills/vitepress/SKILL.md +65 -0
  214. package/templates/skills/vitepress/references/advanced-i18n.md +299 -0
  215. package/templates/skills/vitepress/references/advanced-ssr.md +228 -0
  216. package/templates/skills/vitepress/references/core-cli.md +119 -0
  217. package/templates/skills/vitepress/references/core-config.md +189 -0
  218. package/templates/skills/vitepress/references/core-markdown.md +277 -0
  219. package/templates/skills/vitepress/references/core-routing.md +169 -0
  220. package/templates/skills/vitepress/references/features-code-blocks.md +243 -0
  221. package/templates/skills/vitepress/references/features-data-loading.md +220 -0
  222. package/templates/skills/vitepress/references/features-dynamic-routes.md +235 -0
  223. package/templates/skills/vitepress/references/features-vue.md +224 -0
  224. package/templates/skills/vitepress/references/recipes-deploy.md +240 -0
  225. package/templates/skills/vitepress/references/theme-config.md +315 -0
  226. package/templates/skills/vitepress/references/theme-custom.md +269 -0
  227. package/templates/skills/vitepress/references/theme-customization.md +290 -0
  228. package/templates/skills/vitest/GENERATION.md +5 -0
  229. package/templates/skills/vitest/SKILL.md +52 -0
  230. package/templates/skills/vitest/references/advanced-environments.md +264 -0
  231. package/templates/skills/vitest/references/advanced-projects.md +300 -0
  232. package/templates/skills/vitest/references/advanced-type-testing.md +237 -0
  233. package/templates/skills/vitest/references/advanced-vi.md +249 -0
  234. package/templates/skills/vitest/references/core-cli.md +166 -0
  235. package/templates/skills/vitest/references/core-config.md +174 -0
  236. package/templates/skills/vitest/references/core-describe.md +193 -0
  237. package/templates/skills/vitest/references/core-expect.md +219 -0
  238. package/templates/skills/vitest/references/core-hooks.md +244 -0
  239. package/templates/skills/vitest/references/core-test-api.md +233 -0
  240. package/templates/skills/vitest/references/features-concurrency.md +250 -0
  241. package/templates/skills/vitest/references/features-context.md +238 -0
  242. package/templates/skills/vitest/references/features-coverage.md +207 -0
  243. package/templates/skills/vitest/references/features-filtering.md +211 -0
  244. package/templates/skills/vitest/references/features-mocking.md +265 -0
  245. package/templates/skills/vitest/references/features-snapshots.md +207 -0
  246. package/templates/skills/vue/GENERATION.md +5 -0
  247. package/templates/skills/vue/SKILL.md +63 -0
  248. package/templates/skills/vue/references/advanced-async-suspense.md +246 -0
  249. package/templates/skills/vue/references/advanced-provide-inject.md +174 -0
  250. package/templates/skills/vue/references/components-emits.md +139 -0
  251. package/templates/skills/vue/references/components-lifecycle.md +192 -0
  252. package/templates/skills/vue/references/components-props.md +211 -0
  253. package/templates/skills/vue/references/components-slots.md +201 -0
  254. package/templates/skills/vue/references/components-v-model.md +183 -0
  255. package/templates/skills/vue/references/core-reactivity.md +289 -0
  256. package/templates/skills/vue/references/features-composables.md +262 -0
  257. package/templates/skills/vue/references/features-directives.md +224 -0
  258. package/templates/skills/vue/references/features-script-setup.md +247 -0
  259. package/templates/skills/vue/references/features-template-refs.md +212 -0
  260. package/templates/skills/vue/references/features-typescript.md +274 -0
  261. package/templates/skills/vue-best-practices/LICENSE.md +21 -0
  262. package/templates/skills/vue-best-practices/SKILL.md +38 -0
  263. package/templates/skills/vue-best-practices/SYNC.md +5 -0
  264. package/templates/skills/vue-best-practices/rules/codeactions-save-performance.md +79 -0
  265. package/templates/skills/vue-best-practices/rules/data-attributes-config.md +74 -0
  266. package/templates/skills/vue-best-practices/rules/deep-watch-numeric.md +97 -0
  267. package/templates/skills/vue-best-practices/rules/define-model-update-event.md +79 -0
  268. package/templates/skills/vue-best-practices/rules/duplicate-plugin-detection.md +102 -0
  269. package/templates/skills/vue-best-practices/rules/extract-component-props.md +57 -0
  270. package/templates/skills/vue-best-practices/rules/fallthrough-attributes.md +63 -0
  271. package/templates/skills/vue-best-practices/rules/hmr-vue-ssr.md +124 -0
  272. package/templates/skills/vue-best-practices/rules/module-resolution-bundler.md +81 -0
  273. package/templates/skills/vue-best-practices/rules/pinia-store-mocking.md +159 -0
  274. package/templates/skills/vue-best-practices/rules/script-setup-jsdoc.md +85 -0
  275. package/templates/skills/vue-best-practices/rules/strict-css-modules.md +68 -0
  276. package/templates/skills/vue-best-practices/rules/volar-3-breaking-changes.md +65 -0
  277. package/templates/skills/vue-best-practices/rules/vue-directive-comments.md +73 -0
  278. package/templates/skills/vue-best-practices/rules/vue-router-typed-params.md +81 -0
  279. package/templates/skills/vue-best-practices/rules/vue-tsc-strict-templates.md +69 -0
  280. package/templates/skills/vue-best-practices/rules/with-defaults-union-types.md +102 -0
  281. package/templates/skills/vueuse-functions/LICENSE.md +21 -0
  282. package/templates/skills/vueuse-functions/SKILL.md +418 -0
  283. package/templates/skills/vueuse-functions/SYNC.md +5 -0
  284. package/templates/skills/vueuse-functions/references/computedAsync.md +159 -0
  285. package/templates/skills/vueuse-functions/references/computedEager.md +62 -0
  286. package/templates/skills/vueuse-functions/references/computedInject.md +86 -0
  287. package/templates/skills/vueuse-functions/references/computedWithControl.md +100 -0
  288. package/templates/skills/vueuse-functions/references/createEventHook.md +86 -0
  289. package/templates/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  290. package/templates/skills/vueuse-functions/references/createGlobalState.md +95 -0
  291. package/templates/skills/vueuse-functions/references/createInjectionState.md +215 -0
  292. package/templates/skills/vueuse-functions/references/createProjection.md +31 -0
  293. package/templates/skills/vueuse-functions/references/createRef.md +54 -0
  294. package/templates/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
  295. package/templates/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  296. package/templates/skills/vueuse-functions/references/createTemplatePromise.md +259 -0
  297. package/templates/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  298. package/templates/skills/vueuse-functions/references/extendRef.md +76 -0
  299. package/templates/skills/vueuse-functions/references/from.md +48 -0
  300. package/templates/skills/vueuse-functions/references/get.md +30 -0
  301. package/templates/skills/vueuse-functions/references/injectLocal.md +35 -0
  302. package/templates/skills/vueuse-functions/references/isDefined.md +31 -0
  303. package/templates/skills/vueuse-functions/references/logicAnd.md +40 -0
  304. package/templates/skills/vueuse-functions/references/logicNot.md +36 -0
  305. package/templates/skills/vueuse-functions/references/logicOr.md +40 -0
  306. package/templates/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  307. package/templates/skills/vueuse-functions/references/onClickOutside.md +187 -0
  308. package/templates/skills/vueuse-functions/references/onElementRemoval.md +64 -0
  309. package/templates/skills/vueuse-functions/references/onKeyStroke.md +176 -0
  310. package/templates/skills/vueuse-functions/references/onLongPress.md +170 -0
  311. package/templates/skills/vueuse-functions/references/onStartTyping.md +43 -0
  312. package/templates/skills/vueuse-functions/references/provideLocal.md +37 -0
  313. package/templates/skills/vueuse-functions/references/reactify.md +144 -0
  314. package/templates/skills/vueuse-functions/references/reactifyObject.md +61 -0
  315. package/templates/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  316. package/templates/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  317. package/templates/skills/vueuse-functions/references/reactivePick.md +106 -0
  318. package/templates/skills/vueuse-functions/references/refAutoReset.md +44 -0
  319. package/templates/skills/vueuse-functions/references/refDebounced.md +81 -0
  320. package/templates/skills/vueuse-functions/references/refDefault.md +36 -0
  321. package/templates/skills/vueuse-functions/references/refManualReset.md +44 -0
  322. package/templates/skills/vueuse-functions/references/refThrottled.md +99 -0
  323. package/templates/skills/vueuse-functions/references/refWithControl.md +146 -0
  324. package/templates/skills/vueuse-functions/references/set.md +30 -0
  325. package/templates/skills/vueuse-functions/references/syncRef.md +195 -0
  326. package/templates/skills/vueuse-functions/references/syncRefs.md +128 -0
  327. package/templates/skills/vueuse-functions/references/templateRef.md +86 -0
  328. package/templates/skills/vueuse-functions/references/toObserver.md +38 -0
  329. package/templates/skills/vueuse-functions/references/toReactive.md +41 -0
  330. package/templates/skills/vueuse-functions/references/toRef.md +75 -0
  331. package/templates/skills/vueuse-functions/references/toRefs.md +81 -0
  332. package/templates/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  333. package/templates/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  334. package/templates/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  335. package/templates/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  336. package/templates/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  337. package/templates/skills/vueuse-functions/references/unrefElement.md +54 -0
  338. package/templates/skills/vueuse-functions/references/until.md +165 -0
  339. package/templates/skills/vueuse-functions/references/useAbs.md +31 -0
  340. package/templates/skills/vueuse-functions/references/useActiveElement.md +65 -0
  341. package/templates/skills/vueuse-functions/references/useAnimate.md +140 -0
  342. package/templates/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  343. package/templates/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  344. package/templates/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  345. package/templates/skills/vueuse-functions/references/useArrayFind.md +50 -0
  346. package/templates/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  347. package/templates/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  348. package/templates/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  349. package/templates/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  350. package/templates/skills/vueuse-functions/references/useArrayMap.md +59 -0
  351. package/templates/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  352. package/templates/skills/vueuse-functions/references/useArraySome.md +59 -0
  353. package/templates/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  354. package/templates/skills/vueuse-functions/references/useAsyncQueue.md +87 -0
  355. package/templates/skills/vueuse-functions/references/useAsyncState.md +140 -0
  356. package/templates/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  357. package/templates/skills/vueuse-functions/references/useAuth.md +114 -0
  358. package/templates/skills/vueuse-functions/references/useAverage.md +36 -0
  359. package/templates/skills/vueuse-functions/references/useAxios.md +292 -0
  360. package/templates/skills/vueuse-functions/references/useBase64.md +88 -0
  361. package/templates/skills/vueuse-functions/references/useBattery.md +67 -0
  362. package/templates/skills/vueuse-functions/references/useBluetooth.md +161 -0
  363. package/templates/skills/vueuse-functions/references/useBreakpoints.md +128 -0
  364. package/templates/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
  365. package/templates/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
  366. package/templates/skills/vueuse-functions/references/useCached.md +53 -0
  367. package/templates/skills/vueuse-functions/references/useCeil.md +31 -0
  368. package/templates/skills/vueuse-functions/references/useChangeCase.md +79 -0
  369. package/templates/skills/vueuse-functions/references/useClamp.md +51 -0
  370. package/templates/skills/vueuse-functions/references/useClipboard.md +99 -0
  371. package/templates/skills/vueuse-functions/references/useClipboardItems.md +93 -0
  372. package/templates/skills/vueuse-functions/references/useCloned.md +91 -0
  373. package/templates/skills/vueuse-functions/references/useColorMode.md +171 -0
  374. package/templates/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  375. package/templates/skills/vueuse-functions/references/useCookies.md +162 -0
  376. package/templates/skills/vueuse-functions/references/useCountdown.md +102 -0
  377. package/templates/skills/vueuse-functions/references/useCounter.md +86 -0
  378. package/templates/skills/vueuse-functions/references/useCssVar.md +50 -0
  379. package/templates/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  380. package/templates/skills/vueuse-functions/references/useCycleList.md +75 -0
  381. package/templates/skills/vueuse-functions/references/useDark.md +142 -0
  382. package/templates/skills/vueuse-functions/references/useDateFormat.md +145 -0
  383. package/templates/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  384. package/templates/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  385. package/templates/skills/vueuse-functions/references/useDeviceMotion.md +87 -0
  386. package/templates/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
  387. package/templates/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
  388. package/templates/skills/vueuse-functions/references/useDevicesList.md +90 -0
  389. package/templates/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
  390. package/templates/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
  391. package/templates/skills/vueuse-functions/references/useDraggable.md +210 -0
  392. package/templates/skills/vueuse-functions/references/useDrauu.md +65 -0
  393. package/templates/skills/vueuse-functions/references/useDropZone.md +83 -0
  394. package/templates/skills/vueuse-functions/references/useElementBounding.md +131 -0
  395. package/templates/skills/vueuse-functions/references/useElementByPoint.md +45 -0
  396. package/templates/skills/vueuse-functions/references/useElementHover.md +79 -0
  397. package/templates/skills/vueuse-functions/references/useElementSize.md +78 -0
  398. package/templates/skills/vueuse-functions/references/useElementVisibility.md +126 -0
  399. package/templates/skills/vueuse-functions/references/useEventBus.md +101 -0
  400. package/templates/skills/vueuse-functions/references/useEventListener.md +184 -0
  401. package/templates/skills/vueuse-functions/references/useEventSource.md +204 -0
  402. package/templates/skills/vueuse-functions/references/useExtractedObservable.md +185 -0
  403. package/templates/skills/vueuse-functions/references/useEyeDropper.md +71 -0
  404. package/templates/skills/vueuse-functions/references/useFavicon.md +67 -0
  405. package/templates/skills/vueuse-functions/references/useFetch.md +546 -0
  406. package/templates/skills/vueuse-functions/references/useFileDialog.md +91 -0
  407. package/templates/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
  408. package/templates/skills/vueuse-functions/references/useFirestore.md +104 -0
  409. package/templates/skills/vueuse-functions/references/useFloor.md +31 -0
  410. package/templates/skills/vueuse-functions/references/useFocus.md +99 -0
  411. package/templates/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  412. package/templates/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  413. package/templates/skills/vueuse-functions/references/useFps.md +28 -0
  414. package/templates/skills/vueuse-functions/references/useFullscreen.md +75 -0
  415. package/templates/skills/vueuse-functions/references/useFuse.md +107 -0
  416. package/templates/skills/vueuse-functions/references/useGamepad.md +223 -0
  417. package/templates/skills/vueuse-functions/references/useGeolocation.md +86 -0
  418. package/templates/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  419. package/templates/skills/vueuse-functions/references/useIdle.md +89 -0
  420. package/templates/skills/vueuse-functions/references/useImage.md +86 -0
  421. package/templates/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
  422. package/templates/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
  423. package/templates/skills/vueuse-functions/references/useInterval.md +69 -0
  424. package/templates/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  425. package/templates/skills/vueuse-functions/references/useIpcRenderer.md +118 -0
  426. package/templates/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  427. package/templates/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  428. package/templates/skills/vueuse-functions/references/useJwt.md +57 -0
  429. package/templates/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  430. package/templates/skills/vueuse-functions/references/useLastChanged.md +63 -0
  431. package/templates/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  432. package/templates/skills/vueuse-functions/references/useMagicKeys.md +217 -0
  433. package/templates/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  434. package/templates/skills/vueuse-functions/references/useMath.md +47 -0
  435. package/templates/skills/vueuse-functions/references/useMax.md +36 -0
  436. package/templates/skills/vueuse-functions/references/useMediaControls.md +571 -0
  437. package/templates/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  438. package/templates/skills/vueuse-functions/references/useMemoize.md +175 -0
  439. package/templates/skills/vueuse-functions/references/useMemory.md +56 -0
  440. package/templates/skills/vueuse-functions/references/useMin.md +36 -0
  441. package/templates/skills/vueuse-functions/references/useMounted.md +38 -0
  442. package/templates/skills/vueuse-functions/references/useMouse.md +114 -0
  443. package/templates/skills/vueuse-functions/references/useMouseInElement.md +123 -0
  444. package/templates/skills/vueuse-functions/references/useMousePressed.md +112 -0
  445. package/templates/skills/vueuse-functions/references/useMutationObserver.md +62 -0
  446. package/templates/skills/vueuse-functions/references/useNProgress.md +78 -0
  447. package/templates/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  448. package/templates/skills/vueuse-functions/references/useNetwork.md +106 -0
  449. package/templates/skills/vueuse-functions/references/useNow.md +75 -0
  450. package/templates/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  451. package/templates/skills/vueuse-functions/references/useObservable.md +67 -0
  452. package/templates/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  453. package/templates/skills/vueuse-functions/references/useOnline.md +41 -0
  454. package/templates/skills/vueuse-functions/references/usePageLeave.md +42 -0
  455. package/templates/skills/vueuse-functions/references/useParallax.md +58 -0
  456. package/templates/skills/vueuse-functions/references/useParentElement.md +54 -0
  457. package/templates/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  458. package/templates/skills/vueuse-functions/references/usePermission.md +78 -0
  459. package/templates/skills/vueuse-functions/references/usePointer.md +89 -0
  460. package/templates/skills/vueuse-functions/references/usePointerLock.md +60 -0
  461. package/templates/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  462. package/templates/skills/vueuse-functions/references/usePrecision.md +49 -0
  463. package/templates/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  464. package/templates/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  465. package/templates/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  466. package/templates/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  467. package/templates/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  468. package/templates/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  469. package/templates/skills/vueuse-functions/references/usePrevious.md +40 -0
  470. package/templates/skills/vueuse-functions/references/useProjection.md +38 -0
  471. package/templates/skills/vueuse-functions/references/useQRCode.md +53 -0
  472. package/templates/skills/vueuse-functions/references/useRTDB.md +70 -0
  473. package/templates/skills/vueuse-functions/references/useRafFn.md +68 -0
  474. package/templates/skills/vueuse-functions/references/useRefHistory.md +292 -0
  475. package/templates/skills/vueuse-functions/references/useResizeObserver.md +110 -0
  476. package/templates/skills/vueuse-functions/references/useRound.md +31 -0
  477. package/templates/skills/vueuse-functions/references/useRouteHash.md +27 -0
  478. package/templates/skills/vueuse-functions/references/useRouteParams.md +38 -0
  479. package/templates/skills/vueuse-functions/references/useRouteQuery.md +38 -0
  480. package/templates/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  481. package/templates/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
  482. package/templates/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  483. package/templates/skills/vueuse-functions/references/useScriptTag.md +116 -0
  484. package/templates/skills/vueuse-functions/references/useScroll.md +238 -0
  485. package/templates/skills/vueuse-functions/references/useScrollLock.md +66 -0
  486. package/templates/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  487. package/templates/skills/vueuse-functions/references/useShare.md +68 -0
  488. package/templates/skills/vueuse-functions/references/useSortable.md +177 -0
  489. package/templates/skills/vueuse-functions/references/useSorted.md +90 -0
  490. package/templates/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
  491. package/templates/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
  492. package/templates/skills/vueuse-functions/references/useStepper.md +137 -0
  493. package/templates/skills/vueuse-functions/references/useStorage.md +219 -0
  494. package/templates/skills/vueuse-functions/references/useStorageAsync.md +134 -0
  495. package/templates/skills/vueuse-functions/references/useStyleTag.md +131 -0
  496. package/templates/skills/vueuse-functions/references/useSubject.md +52 -0
  497. package/templates/skills/vueuse-functions/references/useSubscription.md +33 -0
  498. package/templates/skills/vueuse-functions/references/useSum.md +36 -0
  499. package/templates/skills/vueuse-functions/references/useSupported.md +29 -0
  500. package/templates/skills/vueuse-functions/references/useSwipe.md +75 -0
  501. package/templates/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  502. package/templates/skills/vueuse-functions/references/useTextDirection.md +75 -0
  503. package/templates/skills/vueuse-functions/references/useTextSelection.md +40 -0
  504. package/templates/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
  505. package/templates/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  506. package/templates/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  507. package/templates/skills/vueuse-functions/references/useTimeAgo.md +152 -0
  508. package/templates/skills/vueuse-functions/references/useTimeAgoIntl.md +116 -0
  509. package/templates/skills/vueuse-functions/references/useTimeout.md +75 -0
  510. package/templates/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  511. package/templates/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  512. package/templates/skills/vueuse-functions/references/useTimestamp.md +85 -0
  513. package/templates/skills/vueuse-functions/references/useTitle.md +113 -0
  514. package/templates/skills/vueuse-functions/references/useToNumber.md +54 -0
  515. package/templates/skills/vueuse-functions/references/useToString.md +34 -0
  516. package/templates/skills/vueuse-functions/references/useToggle.md +56 -0
  517. package/templates/skills/vueuse-functions/references/useTransition.md +265 -0
  518. package/templates/skills/vueuse-functions/references/useTrunc.md +33 -0
  519. package/templates/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  520. package/templates/skills/vueuse-functions/references/useUserMedia.md +1138 -0
  521. package/templates/skills/vueuse-functions/references/useVModel.md +116 -0
  522. package/templates/skills/vueuse-functions/references/useVModels.md +67 -0
  523. package/templates/skills/vueuse-functions/references/useVibrate.md +83 -0
  524. package/templates/skills/vueuse-functions/references/useVirtualList.md +184 -0
  525. package/templates/skills/vueuse-functions/references/useWakeLock.md +50 -0
  526. package/templates/skills/vueuse-functions/references/useWebNotification.md +177 -0
  527. package/templates/skills/vueuse-functions/references/useWebSocket.md +268 -0
  528. package/templates/skills/vueuse-functions/references/useWebWorker.md +60 -0
  529. package/templates/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  530. package/templates/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  531. package/templates/skills/vueuse-functions/references/useWindowScroll.md +62 -0
  532. package/templates/skills/vueuse-functions/references/useWindowSize.md +76 -0
  533. package/templates/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  534. package/templates/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  535. package/templates/skills/vueuse-functions/references/watchArray.md +53 -0
  536. package/templates/skills/vueuse-functions/references/watchAtMost.md +54 -0
  537. package/templates/skills/vueuse-functions/references/watchDebounced.md +72 -0
  538. package/templates/skills/vueuse-functions/references/watchDeep.md +54 -0
  539. package/templates/skills/vueuse-functions/references/watchExtractedObservable.md +167 -0
  540. package/templates/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  541. package/templates/skills/vueuse-functions/references/watchImmediate.md +44 -0
  542. package/templates/skills/vueuse-functions/references/watchOnce.md +41 -0
  543. package/templates/skills/vueuse-functions/references/watchPausable.md +86 -0
  544. package/templates/skills/vueuse-functions/references/watchThrottled.md +73 -0
  545. package/templates/skills/vueuse-functions/references/watchTriggerable.md +97 -0
  546. package/templates/skills/vueuse-functions/references/watchWithFilter.md +55 -0
  547. package/templates/skills/vueuse-functions/references/whenever.md +100 -0
  548. package/templates/skills/web-design-guidelines/SKILL.md +39 -0
  549. package/templates/skills/web-design-guidelines/SYNC.md +5 -0
@@ -0,0 +1,159 @@
1
+ ---
2
+ title: Mocking Pinia Stores with Vitest
3
+ impact: HIGH
4
+ impactDescription: properly mocks Pinia stores in component tests
5
+ type: efficiency
6
+ tags: pinia, vitest, testing, mock, createTestingPinia, store
7
+ ---
8
+
9
+ # Mocking Pinia Stores with Vitest
10
+
11
+ **Impact: HIGH** - properly mocks Pinia stores in component tests
12
+
13
+ Developers struggle to properly mock Pinia stores: `createTestingPinia` requires explicit `createSpy` configuration, and "injection Symbol(pinia) not found" errors occur without proper setup.
14
+
15
+ > **Important (@pinia/testing 1.0+):** The `createSpy` option is **REQUIRED**, not optional. Omitting it throws an error: "You must configure the `createSpy` option."
16
+
17
+ ## Symptoms
18
+
19
+ - "injection Symbol(pinia) not found" error
20
+ - "You must configure the `createSpy` option" error
21
+ - Actions not properly mocked
22
+ - Store state not reset between tests
23
+
24
+ ## Fix
25
+
26
+ **Pattern 1: Basic setup with createTestingPinia**
27
+ ```typescript
28
+ import { mount } from '@vue/test-utils'
29
+ import { createTestingPinia } from '@pinia/testing'
30
+ import { vi } from 'vitest'
31
+ import MyComponent from './MyComponent.vue'
32
+ import { useCounterStore } from '@/stores/counter'
33
+
34
+ test('component uses store', async () => {
35
+ const wrapper = mount(MyComponent, {
36
+ global: {
37
+ plugins: [
38
+ createTestingPinia({
39
+ createSpy: vi.fn, // REQUIRED in @pinia/testing 1.0+
40
+ initialState: {
41
+ counter: { count: 10 } // Set initial state
42
+ }
43
+ })
44
+ ]
45
+ }
46
+ })
47
+
48
+ // Get the store instance AFTER mounting
49
+ const store = useCounterStore()
50
+
51
+ // Actions are automatically stubbed
52
+ await wrapper.find('button').trigger('click')
53
+ expect(store.increment).toHaveBeenCalled()
54
+ })
55
+ ```
56
+
57
+ **Pattern 2: Customize action behavior**
58
+ ```typescript
59
+ test('component handles async action', async () => {
60
+ const wrapper = mount(MyComponent, {
61
+ global: {
62
+ plugins: [
63
+ createTestingPinia({
64
+ createSpy: vi.fn,
65
+ stubActions: false // Don't stub, use real actions
66
+ })
67
+ ]
68
+ }
69
+ })
70
+
71
+ const store = useCounterStore()
72
+
73
+ // Override specific action
74
+ store.fetchData = vi.fn().mockResolvedValue({ items: [] })
75
+
76
+ await wrapper.find('.load-button').trigger('click')
77
+ expect(store.fetchData).toHaveBeenCalled()
78
+ })
79
+ ```
80
+
81
+ **Pattern 3: Testing store directly**
82
+ ```typescript
83
+ import { setActivePinia, createPinia } from 'pinia'
84
+ import { useCounterStore } from '@/stores/counter'
85
+
86
+ describe('Counter Store', () => {
87
+ beforeEach(() => {
88
+ setActivePinia(createPinia())
89
+ })
90
+
91
+ test('increments count', () => {
92
+ const store = useCounterStore()
93
+ expect(store.count).toBe(0)
94
+
95
+ store.increment()
96
+ expect(store.count).toBe(1)
97
+ })
98
+ })
99
+ ```
100
+
101
+ ## Setup Store with Vitest
102
+
103
+ ```typescript
104
+ // stores/counter.ts - Setup store syntax
105
+ export const useCounterStore = defineStore('counter', () => {
106
+ const count = ref(0)
107
+ const doubleCount = computed(() => count.value * 2)
108
+
109
+ function increment() {
110
+ count.value++
111
+ }
112
+
113
+ return { count, doubleCount, increment }
114
+ })
115
+
116
+ // Test file
117
+ test('setup store works', async () => {
118
+ const pinia = createTestingPinia({
119
+ createSpy: vi.fn,
120
+ initialState: {
121
+ counter: { count: 5 }
122
+ }
123
+ })
124
+
125
+ const wrapper = mount(MyComponent, {
126
+ global: { plugins: [pinia] }
127
+ })
128
+
129
+ const store = useCounterStore()
130
+ expect(store.count).toBe(5)
131
+ expect(store.doubleCount).toBe(10)
132
+ })
133
+ ```
134
+
135
+ ## Reset Between Tests
136
+
137
+ ```typescript
138
+ describe('Store Tests', () => {
139
+ let pinia: Pinia
140
+
141
+ beforeEach(() => {
142
+ pinia = createTestingPinia({
143
+ createSpy: vi.fn
144
+ })
145
+ })
146
+
147
+ afterEach(() => {
148
+ vi.clearAllMocks()
149
+ })
150
+
151
+ test('test 1', () => { /* ... */ })
152
+ test('test 2', () => { /* ... */ })
153
+ })
154
+ ```
155
+
156
+ ## Reference
157
+
158
+ - [Pinia Testing Guide](https://pinia.vuejs.org/cookbook/testing.html)
159
+ - [Pinia Discussion #2092](https://github.com/vuejs/pinia/discussions/2092)
@@ -0,0 +1,85 @@
1
+ ---
2
+ title: JSDoc Documentation for Script Setup Components
3
+ impact: MEDIUM
4
+ impactDescription: enables proper documentation for composition API components
5
+ type: capability
6
+ tags: jsdoc, script-setup, documentation, composition-api, component
7
+ ---
8
+
9
+ # JSDoc Documentation for Script Setup Components
10
+
11
+ **Impact: MEDIUM** - enables proper documentation for composition API components
12
+
13
+ `<script setup>` doesn't have an obvious place to attach JSDoc comments for the component itself. Use a dual-script pattern.
14
+
15
+ ## Problem
16
+
17
+ **Incorrect:**
18
+ ```vue
19
+ <script setup lang="ts">
20
+ /**
21
+ * This comment doesn't appear in IDE hover or docs
22
+ * @component
23
+ */
24
+ import { ref } from 'vue'
25
+
26
+ const count = ref(0)
27
+ </script>
28
+ ```
29
+
30
+ JSDoc comments inside `<script setup>` don't attach to the component export because there's no explicit export statement.
31
+
32
+ ## Solution
33
+
34
+ Use both `<script>` and `<script setup>` blocks:
35
+
36
+ **Correct:**
37
+ ```vue
38
+ <script lang="ts">
39
+ /**
40
+ * A counter component that displays and increments a value.
41
+ *
42
+ * @example
43
+ * ```vue
44
+ * <Counter :initial="5" @update="handleUpdate" />
45
+ * ```
46
+ *
47
+ * @component
48
+ */
49
+ export default {}
50
+ </script>
51
+
52
+ <script setup lang="ts">
53
+ import { ref } from 'vue'
54
+
55
+ const props = defineProps<{
56
+ /** Starting value for the counter */
57
+ initial?: number
58
+ }>()
59
+
60
+ const emit = defineEmits<{
61
+ /** Emitted when counter value changes */
62
+ update: [value: number]
63
+ }>()
64
+
65
+ const count = ref(props.initial ?? 0)
66
+ </script>
67
+ ```
68
+
69
+ ## How It Works
70
+
71
+ - The regular `<script>` block's default export is merged with `<script setup>`
72
+ - JSDoc on `export default {}` attaches to the component
73
+ - Props and emits JSDoc in `<script setup>` still work normally
74
+
75
+ ## What Gets Documented
76
+
77
+ | Location | Shows In |
78
+ |----------|----------|
79
+ | `export default {}` JSDoc | Component import hover |
80
+ | `defineProps` JSDoc | Prop hover in templates |
81
+ | `defineEmits` JSDoc | Event handler hover |
82
+
83
+ ## Reference
84
+
85
+ - [Vue Language Tools Discussion #5932](https://github.com/vuejs/language-tools/discussions/5932)
@@ -0,0 +1,68 @@
1
+ ---
2
+ title: Enable Strict CSS Modules Type Checking
3
+ impact: MEDIUM
4
+ impactDescription: catches typos in CSS module class names at compile time
5
+ type: capability
6
+ tags: strictCssModules, vueCompilerOptions, css-modules, style-module
7
+ ---
8
+
9
+ # Enable Strict CSS Modules Type Checking
10
+
11
+ **Impact: MEDIUM** - catches typos in CSS module class names at compile time
12
+
13
+ When using CSS modules with `<style module>`, Vue doesn't validate class names by default. Enable `strictCssModules` to catch typos and undefined classes.
14
+
15
+ ## Problem
16
+
17
+ CSS module class name errors go undetected:
18
+
19
+ ```vue
20
+ <script setup lang="ts">
21
+ // No error for typo in class name
22
+ </script>
23
+
24
+ <template>
25
+ <div :class="$style.buttn">Click me</div>
26
+ </template>
27
+
28
+ <style module>
29
+ .button {
30
+ background: blue;
31
+ }
32
+ </style>
33
+ ```
34
+
35
+ The typo `buttn` instead of `button` silently fails at runtime.
36
+
37
+ ## Solution
38
+
39
+ Enable `strictCssModules` in your tsconfig:
40
+
41
+ ```json
42
+ // tsconfig.json or tsconfig.app.json
43
+ {
44
+ "vueCompilerOptions": {
45
+ "strictCssModules": true
46
+ }
47
+ }
48
+ ```
49
+
50
+ Now `$style.buttn` will show a type error because `buttn` doesn't exist in the CSS module.
51
+
52
+ ## What Gets Checked
53
+
54
+ | Access | With strictCssModules |
55
+ |--------|----------------------|
56
+ | `$style.validClass` | OK |
57
+ | `$style.typo` | Error: Property 'typo' does not exist |
58
+ | `$style['dynamic']` | OK (dynamic access not checked) |
59
+
60
+ ## Limitations
61
+
62
+ - Only checks static property access (`$style.className`)
63
+ - Dynamic access (`$style[variable]`) is not validated
64
+ - Only works with `<style module>`, not external CSS files
65
+
66
+ ## Reference
67
+
68
+ - [Vue Language Tools Wiki - Vue Compiler Options](https://github.com/vuejs/language-tools/wiki/Vue-Compiler-Options)
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: Volar 3.0 Breaking Changes
3
+ impact: HIGH
4
+ impactDescription: fixes editor integration after Volar/vue-language-server upgrade
5
+ type: capability
6
+ tags: volar, vue-language-server, neovim, vscode, ide, ts_ls, vtsls
7
+ ---
8
+
9
+ # Volar 3.0 Breaking Changes
10
+
11
+ **Impact: HIGH** - fixes editor integration after Volar/vue-language-server upgrade
12
+
13
+ Volar 3.0 (vue-language-server 3.x) introduced breaking changes to the language server protocol. Editors configured for Volar 2.x will break with errors like "vue_ls doesn't work with ts_ls.. it expects vtsls".
14
+
15
+ ## Symptoms
16
+
17
+ - `vue_ls doesn't work with ts_ls`
18
+ - TypeScript features stop working in Vue files
19
+ - No autocomplete, type hints, or error highlighting
20
+ - Editor shows "Language server initialization failed"
21
+
22
+ ## Fix by Editor
23
+
24
+ ### VSCode
25
+
26
+ Update the "Vue - Official" extension to latest version. It manages the language server automatically.
27
+
28
+ ### NeoVim (nvim-lspconfig)
29
+
30
+ **Option 1: Use vtsls instead of ts_ls**
31
+ ```lua
32
+ -- Replace ts_ls/tsserver with vtsls
33
+ require('lspconfig').vtsls.setup({})
34
+ require('lspconfig').volar.setup({})
35
+ ```
36
+
37
+ **Option 2: Downgrade vue-language-server**
38
+ ```bash
39
+ npm install -g @vue/language-server@2.1.10
40
+ ```
41
+
42
+ ### JetBrains IDEs
43
+
44
+ Update to latest Vue plugin. If issues persist, disable and re-enable the Vue plugin.
45
+
46
+ ## What Changed in 3.0
47
+
48
+ | Feature | Volar 2.x | Volar 3.0 |
49
+ |---------|-----------|-----------|
50
+ | TypeScript integration | ts_ls/tsserver | vtsls recommended (Neovim) |
51
+ | Hybrid mode | Optional | Default |
52
+
53
+ ## Workaround: Stay on 2.x
54
+
55
+ If upgrading is not possible:
56
+ ```bash
57
+ npm install -g @vue/language-server@^2.0.0
58
+ ```
59
+
60
+ Pin in your project's package.json to prevent accidental upgrades.
61
+
62
+ ## Reference
63
+
64
+ - [vuejs/language-tools#5598](https://github.com/vuejs/language-tools/issues/5598)
65
+ - [NeoVim Vue Setup Guide](https://dev.to/danwalsh/solved-vue-3-typescript-inlay-hint-support-in-neovim-53ej)
@@ -0,0 +1,73 @@
1
+ ---
2
+ title: Vue Template Directive Comments
3
+ impact: HIGH
4
+ impactDescription: enables fine-grained control over template type checking
5
+ type: capability
6
+ tags: vue-directive, vue-ignore, vue-expect-error, vue-skip, template, type-checking
7
+ ---
8
+
9
+ # Vue Template Directive Comments
10
+
11
+ **Impact: HIGH** - enables fine-grained control over template type checking
12
+
13
+ Vue Language Tools supports special directive comments to control type checking behavior in templates.
14
+
15
+ ## Available Directives
16
+
17
+ ### @vue-ignore
18
+
19
+ Suppress type errors for the next line:
20
+
21
+ ```vue
22
+ <template>
23
+ <!-- @vue-ignore -->
24
+ <Component :prop="valueWithTypeError" />
25
+ </template>
26
+ ```
27
+
28
+ ### @vue-expect-error
29
+
30
+ Assert that the next line should have a type error (useful for testing):
31
+
32
+ ```vue
33
+ <template>
34
+ <!-- @vue-expect-error -->
35
+ <Component :invalid-prop="value" />
36
+ </template>
37
+ ```
38
+
39
+ ### @vue-skip
40
+
41
+ Skip type checking for an entire block:
42
+
43
+ ```vue
44
+ <template>
45
+ <!-- @vue-skip -->
46
+ <div>
47
+ <!-- Everything in here is not type-checked -->
48
+ <LegacyComponent :any="props" :go="here" />
49
+ </div>
50
+ </template>
51
+ ```
52
+
53
+ ### @vue-generic
54
+
55
+ Declare template-level generic types:
56
+
57
+ ```vue
58
+ <template>
59
+ <!-- @vue-generic {T extends string} -->
60
+ <GenericList :items="items as T[]" />
61
+ </template>
62
+ ```
63
+
64
+ ## Use Cases
65
+
66
+ - Migrating legacy components with incomplete types
67
+ - Working with third-party components that have incorrect type definitions
68
+ - Temporarily suppressing errors during refactoring
69
+ - Testing that certain patterns produce expected type errors
70
+
71
+ ## Reference
72
+
73
+ - [Vue Language Tools Wiki - Directive Comments](https://github.com/vuejs/language-tools/wiki/Directive-Comments)
@@ -0,0 +1,81 @@
1
+ ---
2
+ title: Vue Router useRoute Params Union Type Narrowing
3
+ impact: MEDIUM
4
+ impactDescription: fixes "Property does not exist" errors with typed route params
5
+ type: capability
6
+ tags: vue-router, useRoute, unplugin-vue-router, typed-routes, params
7
+ ---
8
+
9
+ # Vue Router useRoute Params Union Type Narrowing
10
+
11
+ **Impact: MEDIUM** - fixes "Property does not exist" errors with typed route params
12
+
13
+ With `unplugin-vue-router` typed routes, `route.params` becomes a union of ALL page param types. TypeScript cannot narrow `Record<never, never> | { id: string }` properly, causing "Property 'id' does not exist" errors even on the correct page.
14
+
15
+ ## Symptoms
16
+
17
+ - "Property 'id' does not exist on type 'RouteParams'"
18
+ - `route.params.id` shows as `string | undefined` everywhere
19
+ - Union type of all route params instead of specific route
20
+ - Type narrowing with `if (route.name === 'users-id')` doesn't work
21
+
22
+ ## Root Cause
23
+
24
+ `unplugin-vue-router` generates a union type of all possible route params. TypeScript's control flow analysis can't narrow this union based on route name checks.
25
+
26
+ ## Fix
27
+
28
+ **Option 1: Pass route name to useRoute (recommended)**
29
+ ```typescript
30
+ // pages/users/[id].vue
31
+ import { useRoute } from 'vue-router/auto'
32
+
33
+ // Specify the route path for proper typing
34
+ const route = useRoute('/users/[id]')
35
+
36
+ // Now properly typed as { id: string }
37
+ console.log(route.params.id) // string, not string | undefined
38
+ ```
39
+
40
+ **Option 2: Type assertion with specific route**
41
+ ```typescript
42
+ import { useRoute } from 'vue-router'
43
+ import type { RouteLocationNormalized } from 'vue-router/auto-routes'
44
+
45
+ const route = useRoute() as RouteLocationNormalized<'/users/[id]'>
46
+ route.params.id // Properly typed
47
+ ```
48
+
49
+ **Option 3: Define route-specific param type**
50
+ ```typescript
51
+ // In your page component
52
+ interface UserRouteParams {
53
+ id: string
54
+ }
55
+
56
+ const route = useRoute()
57
+ const { id } = route.params as UserRouteParams
58
+ ```
59
+
60
+ ## Required tsconfig Setting
61
+
62
+ Ensure `moduleResolution: "bundler"` for unplugin-vue-router:
63
+ ```json
64
+ {
65
+ "compilerOptions": {
66
+ "moduleResolution": "bundler"
67
+ }
68
+ }
69
+ ```
70
+
71
+ ## Caveat: Route Name Format
72
+
73
+ The route name matches the file path pattern:
74
+ - `pages/users/[id].vue` → `/users/[id]`
75
+ - `pages/posts/[slug]/comments.vue` → `/posts/[slug]/comments`
76
+
77
+ ## Reference
78
+
79
+ - [unplugin-vue-router#337](https://github.com/posva/unplugin-vue-router/issues/337)
80
+ - [unplugin-vue-router#176](https://github.com/posva/unplugin-vue-router/discussions/176)
81
+ - [unplugin-vue-router TypeScript docs](https://uvr.esm.is/guide/typescript.html)
@@ -0,0 +1,69 @@
1
+ ---
2
+ title: Enable Strict Template Checking
3
+ impact: HIGH
4
+ impactDescription: catches undefined components and props at compile time
5
+ type: capability
6
+ tags: vue-tsc, typescript, type-checking, templates, vueCompilerOptions
7
+ ---
8
+
9
+ # Enable Strict Template Checking
10
+
11
+ **Impact: HIGH** - catches undefined components and props at compile time
12
+
13
+ By default, vue-tsc does not report errors for undefined components in templates. Enable `strictTemplates` to catch these issues during type checking.
14
+
15
+ ## Which tsconfig?
16
+
17
+ Add `vueCompilerOptions` to the tsconfig that includes Vue source files. In projects with multiple tsconfigs (like those created with `create-vue`), this is typically `tsconfig.app.json`, not the root `tsconfig.json` or `tsconfig.node.json`.
18
+
19
+ **Incorrect (missing strict checking):**
20
+
21
+ ```json
22
+ {
23
+ "compilerOptions": {
24
+ "strict": true
25
+ }
26
+ // vueCompilerOptions not configured - undefined components won't error
27
+ }
28
+ ```
29
+
30
+ **Correct (strict template checking enabled):**
31
+
32
+ ```json
33
+ {
34
+ "compilerOptions": {
35
+ "strict": true
36
+ },
37
+ "vueCompilerOptions": {
38
+ "strictTemplates": true
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Available Options
44
+
45
+ | Option | Default | Effect |
46
+ |--------|---------|--------|
47
+ | `strictTemplates` | `false` | Enables all checkUnknown* options below |
48
+ | `checkUnknownComponents` | `false` | Error on undefined/unregistered components |
49
+ | `checkUnknownProps` | `false` | Error on props not declared in component definition |
50
+ | `checkUnknownEvents` | `false` | Error on events not declared via `defineEmits` |
51
+ | `checkUnknownDirectives` | `false` | Error on unregistered custom directives |
52
+
53
+ ## Granular Control
54
+
55
+ If `strictTemplates` is too strict, enable individual checks:
56
+
57
+ ```json
58
+ {
59
+ "vueCompilerOptions": {
60
+ "checkUnknownComponents": true,
61
+ "checkUnknownProps": false
62
+ }
63
+ }
64
+ ```
65
+
66
+ ## Reference
67
+
68
+ - [Vue Compiler Options](https://github.com/vuejs/language-tools/wiki/Vue-Compiler-Options)
69
+ - [Vite Vue+TS Template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-vue-ts)
@@ -0,0 +1,102 @@
1
+ ---
2
+ title: withDefaults Incorrect Default with Union Types
3
+ impact: MEDIUM
4
+ impactDescription: fixes spurious "Missing required prop" warning with union type props
5
+ type: capability
6
+ tags: withDefaults, defineProps, union-types, defaults, vue-3.5
7
+ ---
8
+
9
+ # withDefaults Incorrect Default with Union Types
10
+
11
+ **Impact: MEDIUM** - fixes spurious "Missing required prop" warning with union type props
12
+
13
+ Using `withDefaults` with union types like `false | string` may produce a Vue runtime warning "Missing required prop" even when a default is provided. The runtime value IS applied correctly, but the warning can be confusing.
14
+
15
+ ## Symptoms
16
+
17
+ - Vue warns "Missing required prop" despite default being set
18
+ - Warning appears only with union types like `false | string`
19
+ - TypeScript types are correct
20
+ - Runtime value IS correct (the default is applied)
21
+
22
+ ## Problematic Pattern
23
+
24
+ ```typescript
25
+ // This produces a spurious warning (but works at runtime)
26
+ interface Props {
27
+ value: false | string // Union type
28
+ }
29
+
30
+ const props = withDefaults(defineProps<Props>(), {
31
+ value: 'default' // Runtime value IS correct, but Vue warns about missing prop
32
+ })
33
+ ```
34
+
35
+ ## Fix
36
+
37
+ **Option 1: Use Reactive Props Destructure (Vue 3.5+)**
38
+ ```vue
39
+ <script setup lang="ts">
40
+ interface Props {
41
+ value: false | string
42
+ }
43
+
44
+ // Preferred in Vue 3.5+
45
+ const { value = 'default' } = defineProps<Props>()
46
+ </script>
47
+ ```
48
+
49
+ **Option 2: Use runtime declaration**
50
+ ```vue
51
+ <script setup lang="ts">
52
+ const props = defineProps({
53
+ value: {
54
+ type: [Boolean, String] as PropType<false | string>,
55
+ default: 'default'
56
+ }
57
+ })
58
+ </script>
59
+ ```
60
+
61
+ **Option 3: Split into separate props**
62
+ ```typescript
63
+ interface Props {
64
+ enabled: boolean
65
+ customValue?: string
66
+ }
67
+
68
+ const props = withDefaults(defineProps<Props>(), {
69
+ enabled: false,
70
+ customValue: 'default'
71
+ })
72
+ ```
73
+
74
+ ## Why Reactive Props Destructure Works
75
+
76
+ Vue 3.5's Reactive Props Destructure handles default values at the destructuring level, bypassing the type inference issues with `withDefaults`.
77
+
78
+ ```typescript
79
+ // The default is applied during destructuring, not type inference
80
+ const { prop = 'default' } = defineProps<{ prop?: string }>()
81
+ ```
82
+
83
+ ## Enable Reactive Props Destructure
84
+
85
+ This is enabled by default in Vue 3.5+. For older versions:
86
+ ```javascript
87
+ // vite.config.js
88
+ export default {
89
+ plugins: [
90
+ vue({
91
+ script: {
92
+ propsDestructure: true
93
+ }
94
+ })
95
+ ]
96
+ }
97
+ ```
98
+
99
+ ## Reference
100
+
101
+ - [vuejs/core#12897](https://github.com/vuejs/core/issues/12897)
102
+ - [Reactive Props Destructure RFC](https://github.com/vuejs/rfcs/discussions/502)