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,212 @@
1
+ ---
2
+ name: template-refs
3
+ description: Access DOM elements and child component instances directly
4
+ ---
5
+
6
+ # Template Refs
7
+
8
+ Template refs provide direct access to DOM elements and child component instances.
9
+
10
+ ## Basic Usage (3.5+)
11
+
12
+ Use `useTemplateRef()` for type-safe refs:
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { useTemplateRef, onMounted } from 'vue'
17
+
18
+ const inputRef = useTemplateRef<HTMLInputElement>('input')
19
+
20
+ onMounted(() => {
21
+ inputRef.value?.focus()
22
+ })
23
+ </script>
24
+
25
+ <template>
26
+ <input ref="input" />
27
+ </template>
28
+ ```
29
+
30
+ ## Legacy Approach (Pre-3.5)
31
+
32
+ Use a ref with matching name:
33
+
34
+ ```vue
35
+ <script setup lang="ts">
36
+ import { ref, onMounted } from 'vue'
37
+
38
+ const inputRef = ref<HTMLInputElement | null>(null)
39
+
40
+ onMounted(() => {
41
+ inputRef.value?.focus()
42
+ })
43
+ </script>
44
+
45
+ <template>
46
+ <input ref="inputRef" />
47
+ </template>
48
+ ```
49
+
50
+ ## Refs in v-for
51
+
52
+ Collect multiple refs into an array:
53
+
54
+ ```vue
55
+ <script setup lang="ts">
56
+ import { ref, onMounted } from 'vue'
57
+
58
+ const items = ref([1, 2, 3])
59
+ const itemRefs = ref<HTMLLIElement[]>([])
60
+ </script>
61
+
62
+ <template>
63
+ <ul>
64
+ <li v-for="item in items" ref="itemRefs">
65
+ {{ item }}
66
+ </li>
67
+ </ul>
68
+ </template>
69
+ ```
70
+
71
+ > Note: ref array order is not guaranteed to match source array order.
72
+
73
+ ## Function Refs
74
+
75
+ Use a function for full control:
76
+
77
+ ```vue
78
+ <script setup lang="ts">
79
+ const elements = new Map<number, HTMLElement>()
80
+
81
+ function setItemRef(el: HTMLElement | null, id: number) {
82
+ if (el) {
83
+ elements.set(id, el)
84
+ } else {
85
+ elements.delete(id)
86
+ }
87
+ }
88
+ </script>
89
+
90
+ <template>
91
+ <div v-for="item in items" :ref="(el) => setItemRef(el, item.id)">
92
+ {{ item.name }}
93
+ </div>
94
+ </template>
95
+ ```
96
+
97
+ ## Component Refs
98
+
99
+ Access child component instance:
100
+
101
+ ```vue
102
+ <script setup lang="ts">
103
+ import { useTemplateRef, onMounted } from 'vue'
104
+ import Child from './Child.vue'
105
+
106
+ type ChildInstance = InstanceType<typeof Child>
107
+ const childRef = useTemplateRef<ChildInstance>('child')
108
+
109
+ onMounted(() => {
110
+ // Access exposed properties/methods
111
+ childRef.value?.someMethod()
112
+ })
113
+ </script>
114
+
115
+ <template>
116
+ <Child ref="child" />
117
+ </template>
118
+ ```
119
+
120
+ ### Exposing Component Properties
121
+
122
+ By default, `<script setup>` components are closed. Use `defineExpose`:
123
+
124
+ ```vue
125
+ <!-- Child.vue -->
126
+ <script setup lang="ts">
127
+ import { ref } from 'vue'
128
+
129
+ const count = ref(0)
130
+ const increment = () => count.value++
131
+
132
+ // Only these are accessible via ref
133
+ defineExpose({
134
+ count,
135
+ increment
136
+ })
137
+ </script>
138
+ ```
139
+
140
+ ## Common Use Cases
141
+
142
+ ### Focus Management
143
+
144
+ ```vue
145
+ <script setup lang="ts">
146
+ import { useTemplateRef } from 'vue'
147
+
148
+ const inputRef = useTemplateRef<HTMLInputElement>('input')
149
+
150
+ function focusInput() {
151
+ inputRef.value?.focus()
152
+ }
153
+ </script>
154
+ ```
155
+
156
+ ### Scroll Control
157
+
158
+ ```vue
159
+ <script setup lang="ts">
160
+ import { useTemplateRef } from 'vue'
161
+
162
+ const containerRef = useTemplateRef<HTMLDivElement>('container')
163
+
164
+ function scrollToBottom() {
165
+ const el = containerRef.value
166
+ if (el) {
167
+ el.scrollTop = el.scrollHeight
168
+ }
169
+ }
170
+ </script>
171
+ ```
172
+
173
+ ### Third-Party Library Integration
174
+
175
+ ```vue
176
+ <script setup lang="ts">
177
+ import { useTemplateRef, onMounted, onUnmounted } from 'vue'
178
+ import Chart from 'chart.js'
179
+
180
+ const canvasRef = useTemplateRef<HTMLCanvasElement>('canvas')
181
+ let chart: Chart | null = null
182
+
183
+ onMounted(() => {
184
+ if (canvasRef.value) {
185
+ chart = new Chart(canvasRef.value, {
186
+ // options
187
+ })
188
+ }
189
+ })
190
+
191
+ onUnmounted(() => {
192
+ chart?.destroy()
193
+ })
194
+ </script>
195
+
196
+ <template>
197
+ <canvas ref="canvas"></canvas>
198
+ </template>
199
+ ```
200
+
201
+ ## Important Notes
202
+
203
+ 1. **Refs are null before mount** - access in `onMounted` or later
204
+ 2. **Conditional refs can be null** - elements with `v-if` may not exist
205
+ 3. **Use optional chaining** - `ref.value?.method()` for safety
206
+ 4. **Avoid overusing** - prefer declarative approaches when possible
207
+
208
+ <!--
209
+ Source references:
210
+ - https://vuejs.org/guide/essentials/template-refs.html
211
+ - https://vuejs.org/guide/typescript/composition-api.html#typing-template-refs
212
+ -->
@@ -0,0 +1,274 @@
1
+ ---
2
+ name: typescript-integration
3
+ description: Type Vue components with TypeScript in Composition API
4
+ ---
5
+
6
+ # TypeScript with Vue
7
+
8
+ Vue provides excellent TypeScript support in Composition API.
9
+
10
+ ## Typing Props
11
+
12
+ ### Type-based declaration (recommended)
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ interface Props {
17
+ title: string
18
+ count?: number
19
+ items: string[]
20
+ user: { name: string; age: number }
21
+ }
22
+
23
+ const props = defineProps<Props>()
24
+ ```
25
+
26
+ ### With defaults (3.5+)
27
+
28
+ ```vue
29
+ <script setup lang="ts">
30
+ interface Props {
31
+ msg?: string
32
+ labels?: string[]
33
+ }
34
+
35
+ const { msg = 'hello', labels = ['one'] } = defineProps<Props>()
36
+ ```
37
+
38
+ ### With withDefaults (3.4 and below)
39
+
40
+ ```vue
41
+ <script setup lang="ts">
42
+ interface Props {
43
+ msg?: string
44
+ labels?: string[]
45
+ }
46
+
47
+ const props = withDefaults(defineProps<Props>(), {
48
+ msg: 'hello',
49
+ labels: () => ['one', 'two']
50
+ })
51
+ ```
52
+
53
+ ### Complex prop types
54
+
55
+ ```vue
56
+ <script setup lang="ts">
57
+ interface Book {
58
+ title: string
59
+ author: string
60
+ year: number
61
+ }
62
+
63
+ const props = defineProps<{
64
+ book: Book
65
+ callback: (id: number) => void
66
+ }>()
67
+ ```
68
+
69
+ ## Typing Emits
70
+
71
+ ```vue
72
+ <script setup lang="ts">
73
+ // Call signature syntax
74
+ const emit = defineEmits<{
75
+ (e: 'change', id: number): void
76
+ (e: 'update', value: string): void
77
+ }>()
78
+
79
+ // Named tuple syntax (3.3+, more concise)
80
+ const emit = defineEmits<{
81
+ change: [id: number]
82
+ update: [value: string]
83
+ }>()
84
+ </script>
85
+ ```
86
+
87
+ ## Typing ref()
88
+
89
+ ```ts
90
+ import { ref } from 'vue'
91
+ import type { Ref } from 'vue'
92
+
93
+ // Inferred
94
+ const count = ref(0) // Ref<number>
95
+
96
+ // Explicit generic
97
+ const name = ref<string>() // Ref<string | undefined>
98
+
99
+ // Type annotation
100
+ const id: Ref<string | number> = ref('abc')
101
+ ```
102
+
103
+ ## Typing reactive()
104
+
105
+ ```ts
106
+ import { reactive } from 'vue'
107
+
108
+ interface State {
109
+ count: number
110
+ name: string
111
+ }
112
+
113
+ // Use interface on variable
114
+ const state: State = reactive({
115
+ count: 0,
116
+ name: 'Vue'
117
+ })
118
+ ```
119
+
120
+ ## Typing computed()
121
+
122
+ ```ts
123
+ import { computed } from 'vue'
124
+
125
+ // Inferred from getter
126
+ const double = computed(() => count.value * 2) // ComputedRef<number>
127
+
128
+ // Explicit generic
129
+ const result = computed<string>(() => {
130
+ return String(value.value)
131
+ })
132
+ ```
133
+
134
+ ## Typing Event Handlers
135
+
136
+ ```vue
137
+ <script setup lang="ts">
138
+ function handleChange(event: Event) {
139
+ const target = event.target as HTMLInputElement
140
+ console.log(target.value)
141
+ }
142
+ </script>
143
+
144
+ <template>
145
+ <input @change="handleChange" />
146
+ </template>
147
+ ```
148
+
149
+ ## Typing Template Refs
150
+
151
+ ### useTemplateRef (3.5+)
152
+
153
+ ```vue
154
+ <script setup lang="ts">
155
+ import { useTemplateRef, onMounted } from 'vue'
156
+
157
+ const inputRef = useTemplateRef<HTMLInputElement>('input')
158
+
159
+ onMounted(() => {
160
+ inputRef.value?.focus()
161
+ })
162
+ </script>
163
+
164
+ <template>
165
+ <input ref="input" />
166
+ </template>
167
+ ```
168
+
169
+ ### Legacy ref approach
170
+
171
+ ```vue
172
+ <script setup lang="ts">
173
+ import { ref, onMounted } from 'vue'
174
+
175
+ const inputRef = ref<HTMLInputElement | null>(null)
176
+
177
+ onMounted(() => {
178
+ inputRef.value?.focus()
179
+ })
180
+ </script>
181
+
182
+ <template>
183
+ <input ref="inputRef" />
184
+ </template>
185
+ ```
186
+
187
+ ## Typing Component Refs
188
+
189
+ ```vue
190
+ <script setup lang="ts">
191
+ import { useTemplateRef } from 'vue'
192
+ import MyComponent from './MyComponent.vue'
193
+
194
+ type MyComponentInstance = InstanceType<typeof MyComponent>
195
+ const compRef = useTemplateRef<MyComponentInstance>('comp')
196
+ </script>
197
+
198
+ <template>
199
+ <MyComponent ref="comp" />
200
+ </template>
201
+ ```
202
+
203
+ ## Typing Provide/Inject
204
+
205
+ ```ts
206
+ import { provide, inject } from 'vue'
207
+ import type { InjectionKey, Ref } from 'vue'
208
+
209
+ // Define typed key
210
+ const countKey = Symbol() as InjectionKey<Ref<number>>
211
+
212
+ // Provider
213
+ provide(countKey, ref(0))
214
+
215
+ // Injector
216
+ const count = inject(countKey) // Ref<number> | undefined
217
+
218
+ // With default
219
+ const count = inject(countKey, ref(0)) // Ref<number>
220
+
221
+ // String key with explicit type
222
+ const foo = inject<string>('foo')
223
+ ```
224
+
225
+ ## Typing defineModel (3.4+)
226
+
227
+ ```ts
228
+ // Basic
229
+ const model = defineModel<string>()
230
+ // ^? Ref<string | undefined>
231
+
232
+ // Required
233
+ const model = defineModel<string>({ required: true })
234
+ // ^? Ref<string>
235
+
236
+ // With modifiers
237
+ const [model, modifiers] = defineModel<string, 'trim' | 'uppercase'>()
238
+ // ^? Record<'trim' | 'uppercase', true | undefined>
239
+ ```
240
+
241
+ ## Global Custom Properties
242
+
243
+ Extend `ComponentCustomProperties` for global properties:
244
+
245
+ ```ts
246
+ // types/vue.d.ts
247
+ declare module 'vue' {
248
+ interface ComponentCustomProperties {
249
+ $http: typeof axios
250
+ $translate: (key: string) => string
251
+ }
252
+ }
253
+ ```
254
+
255
+ ## Generic Components
256
+
257
+ ```vue
258
+ <script setup lang="ts" generic="T">
259
+ defineProps<{
260
+ items: T[]
261
+ selected: T
262
+ }>()
263
+
264
+ defineEmits<{
265
+ select: [item: T]
266
+ }>()
267
+ </script>
268
+ ```
269
+
270
+ <!--
271
+ Source references:
272
+ - https://vuejs.org/guide/typescript/composition-api.html
273
+ - https://vuejs.org/guide/typescript/overview.html
274
+ -->
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 hyf0
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: vue-best-practices
3
+ description: Vue 3 and Vue.js best practices for TypeScript, vue-tsc, and Volar. This skill should be used when writing, reviewing, or refactoring Vue components to ensure correct typing patterns. Triggers on tasks involving Vue components, props extraction, wrapper components, template type checking, or Volar configuration.
4
+ license: MIT
5
+ metadata:
6
+ author: hyf0
7
+ version: "8.0.0"
8
+ ---
9
+
10
+ ## Capability Rules
11
+
12
+ | Rule | Keywords | Description |
13
+ |------|----------|-------------|
14
+ | [extract-component-props](rules/extract-component-props.md) | get props type, wrapper component, extend props, inherit props, ComponentProps | Extract types from .vue components |
15
+ | [vue-tsc-strict-templates](rules/vue-tsc-strict-templates.md) | undefined component, template error, strictTemplates | Catch undefined components in templates |
16
+ | [fallthrough-attributes](rules/fallthrough-attributes.md) | fallthrough, $attrs, wrapper component | Type-check fallthrough attributes |
17
+ | [strict-css-modules](rules/strict-css-modules.md) | css modules, $style, typo | Catch CSS module class typos |
18
+ | [data-attributes-config](rules/data-attributes-config.md) | data-*, strictTemplates, attribute | Allow data-* attributes |
19
+ | [volar-3-breaking-changes](rules/volar-3-breaking-changes.md) | volar, vue-language-server, editor | Fix Volar 3.0 upgrade issues |
20
+ | [module-resolution-bundler](rules/module-resolution-bundler.md) | cannot find module, @vue/tsconfig, moduleResolution | Fix module resolution errors |
21
+ | [define-model-update-event](rules/define-model-update-event.md) | defineModel, update event, undefined | Fix model update errors |
22
+ | [with-defaults-union-types](rules/with-defaults-union-types.md) | withDefaults, union type, default | Fix union type defaults |
23
+ | [deep-watch-numeric](rules/deep-watch-numeric.md) | watch, deep, array, Vue 3.5 | Efficient array watching |
24
+ | [vue-directive-comments](rules/vue-directive-comments.md) | @vue-ignore, @vue-skip, template | Control template type checking |
25
+ | [vue-router-typed-params](rules/vue-router-typed-params.md) | route params, typed router, unplugin | Fix route params typing |
26
+
27
+ ## Efficiency Rules
28
+
29
+ | Rule | Keywords | Description |
30
+ |------|----------|-------------|
31
+ | [hmr-vue-ssr](rules/hmr-vue-ssr.md) | hmr, ssr, hot reload | Fix HMR in SSR apps |
32
+ | [pinia-store-mocking](rules/pinia-store-mocking.md) | pinia, mock, vitest, store | Mock Pinia stores |
33
+
34
+ ## Reference
35
+
36
+ - [Vue Language Tools](https://github.com/vuejs/language-tools)
37
+ - [vue-component-type-helpers](https://github.com/vuejs/language-tools/tree/master/packages/component-type-helpers)
38
+ - [Vue 3 Documentation](https://vuejs.org/)
@@ -0,0 +1,5 @@
1
+ # Sync Info
2
+
3
+ - **Source:** `vendor/vue-best-practices/skills/vue-best-practices`
4
+ - **Git SHA:** `ee0ceda40b7fabeb0713caf8b4db5ea438069fb5`
5
+ - **Synced:** 2026-01-28
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: Fix Slow Save Times with Code Actions Setting
3
+ impact: HIGH
4
+ impactDescription: fixes 30-60 second save delays in large Vue projects
5
+ type: capability
6
+ tags: performance, save-time, vscode, code-actions, volar
7
+ ---
8
+
9
+ # Fix Slow Save Times with Code Actions Setting
10
+
11
+ **Impact: HIGH** - fixes 30-60 second save delays in large Vue projects
12
+
13
+ In large Vue projects, saving files can take 30-60+ seconds due to VSCode's code actions triggering expensive TypeScript state synchronization.
14
+
15
+ ## Problem
16
+
17
+ Symptoms:
18
+ - Save operation takes 30+ seconds
19
+ - Editor becomes unresponsive during save
20
+ - CPU spikes when saving Vue files
21
+ - Happens more in larger projects
22
+
23
+ ## Root Cause
24
+
25
+ VSCode emits document change events multiple times during save cycles. Each event triggers Volar to synchronize with TypeScript, causing expensive re-computation.
26
+
27
+ ## Solution
28
+
29
+ Disable code actions or limit their timeout:
30
+
31
+ **Option 1: Disable code actions (fastest)**
32
+ ```json
33
+ // .vscode/settings.json
34
+ {
35
+ "vue.codeActions.enabled": false
36
+ }
37
+ ```
38
+
39
+ **Option 2: Limit code action time**
40
+ ```json
41
+ // .vscode/settings.json
42
+ {
43
+ "vue.codeActions.savingTimeLimit": 1000
44
+ }
45
+ ```
46
+
47
+ **Option 3: Disable specific code actions**
48
+ ```json
49
+ // .vscode/settings.json
50
+ {
51
+ "vue.codeActions.enabled": true,
52
+ "editor.codeActionsOnSave": {
53
+ "source.organizeImports": "never"
54
+ }
55
+ }
56
+ ```
57
+
58
+ ## VSCode Version Requirement
59
+
60
+ VSCode 1.81.0+ includes fixes that reduce save time issues. Upgrade if using an older version.
61
+
62
+ ## Additional Optimizations
63
+
64
+ ```json
65
+ // .vscode/settings.json
66
+ {
67
+ "vue.codeActions.enabled": false,
68
+ "editor.formatOnSave": true,
69
+ "editor.codeActionsOnSave": {},
70
+ "[vue]": {
71
+ "editor.formatOnSave": true,
72
+ "editor.defaultFormatter": "Vue.volar"
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## Reference
78
+
79
+ - [Vue Language Tools Discussion #2740](https://github.com/vuejs/language-tools/discussions/2740)
@@ -0,0 +1,74 @@
1
+ ---
2
+ title: Allow Data Attributes with Strict Templates
3
+ impact: MEDIUM
4
+ impactDescription: fixes data-testid and data-* attribute errors in strict mode
5
+ type: capability
6
+ tags: dataAttributes, vueCompilerOptions, strictTemplates, data-testid, testing
7
+ ---
8
+
9
+ # Allow Data Attributes with Strict Templates
10
+
11
+ **Impact: MEDIUM** - fixes data-testid and data-* attribute errors in strict mode
12
+
13
+ With `strictTemplates` enabled, `data-*` attributes on components cause type errors. Use the `dataAttributes` option to allow specific patterns.
14
+
15
+ ## Problem
16
+
17
+ ```vue
18
+ <template>
19
+ <!-- Error: Property 'data-testid' does not exist on type... -->
20
+ <MyComponent data-testid="submit-button" />
21
+
22
+ <!-- Error: Property 'data-cy' does not exist on type... -->
23
+ <MyComponent data-cy="login-form" />
24
+ </template>
25
+ ```
26
+
27
+ ## Solution
28
+
29
+ Configure `dataAttributes` to allow specific patterns:
30
+
31
+ ```json
32
+ // tsconfig.json or tsconfig.app.json
33
+ {
34
+ "vueCompilerOptions": {
35
+ "strictTemplates": true,
36
+ "dataAttributes": ["data-*"]
37
+ }
38
+ }
39
+ ```
40
+
41
+ Now all `data-*` attributes are allowed on any component.
42
+
43
+ ## Specific Patterns
44
+
45
+ You can be more selective:
46
+
47
+ ```json
48
+ {
49
+ "vueCompilerOptions": {
50
+ "dataAttributes": [
51
+ "data-testid",
52
+ "data-cy",
53
+ "data-test-*"
54
+ ]
55
+ }
56
+ }
57
+ ```
58
+
59
+ This only allows the specified patterns, not all data attributes.
60
+
61
+ ## Common Testing Attributes
62
+
63
+ For testing libraries, allow their specific attributes:
64
+
65
+ | Library | Attribute | Pattern |
66
+ |---------|-----------|---------|
67
+ | Testing Library | `data-testid` | `"data-testid"` |
68
+ | Cypress | `data-cy` | `"data-cy"` |
69
+ | Playwright | `data-testid` | `"data-testid"` |
70
+ | Generic | All data attributes | `"data-*"` |
71
+
72
+ ## Reference
73
+
74
+ - [Vue Language Tools Wiki - Vue Compiler Options](https://github.com/vuejs/language-tools/wiki/Vue-Compiler-Options)