devskill 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. package/README.md +123 -0
  2. package/README.vn.md +104 -0
  3. package/SKILL_GUIDE.vn.md +252 -0
  4. package/bin/devskill.js +11 -0
  5. package/meta.ts +123 -0
  6. package/package.json +21 -0
  7. package/publish.sh +50 -0
  8. package/scripts/cli.ts +556 -0
  9. package/skills/builderx_api-contexts/SKILL.md +63 -0
  10. package/skills/builderx_api-contexts/references/core-multi-outbox.md +57 -0
  11. package/skills/builderx_api-controllers/SKILL.md +49 -0
  12. package/skills/builderx_api-controllers/references/core-fallback.md +62 -0
  13. package/skills/builderx_api-schemas/SKILL.md +76 -0
  14. package/skills/builderx_api-schemas/references/core-schema.md +78 -0
  15. package/skills/builderx_spa-api/SKILL.md +67 -0
  16. package/skills/builderx_spa-api/references/base-api.md +97 -0
  17. package/skills/builderx_spa-api/references/fetch.md +70 -0
  18. package/skills/builderx_spa-design/SKILL.md +82 -0
  19. package/skills/builderx_spa-design/references/core-text-design.md +64 -0
  20. package/skills/builderx_spa-design/references/features-feedback-actions.md +76 -0
  21. package/skills/builderx_spa-design/references/features-forms.md +91 -0
  22. package/skills/builderx_spa-design/references/features-layout-navigation.md +121 -0
  23. package/skills/builderx_spa-permission/SKILL.md +38 -0
  24. package/skills/builderx_spa-permission/references/has-permission.md +34 -0
  25. package/skills/composition-patterns/AGENTS.md +946 -0
  26. package/skills/composition-patterns/README.md +60 -0
  27. package/skills/composition-patterns/SKILL.md +89 -0
  28. package/skills/composition-patterns/SYNC.md +5 -0
  29. package/skills/composition-patterns/metadata.json +11 -0
  30. package/skills/composition-patterns/rules/_sections.md +29 -0
  31. package/skills/composition-patterns/rules/_template.md +24 -0
  32. package/skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  33. package/skills/composition-patterns/rules/architecture-compound-components.md +112 -0
  34. package/skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  35. package/skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  36. package/skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
  37. package/skills/composition-patterns/rules/state-context-interface.md +191 -0
  38. package/skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
  39. package/skills/composition-patterns/rules/state-lift-state.md +125 -0
  40. package/skills/deploy-to-vercel/Archive.zip +0 -0
  41. package/skills/deploy-to-vercel/SKILL.md +296 -0
  42. package/skills/deploy-to-vercel/SYNC.md +5 -0
  43. package/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
  44. package/skills/deploy-to-vercel/resources/deploy.sh +301 -0
  45. package/skills/pinia/SKILL.md +105 -0
  46. package/skills/pinia/references/api-in-composables.md +139 -0
  47. package/skills/pinia/references/setup-stores.md +105 -0
  48. package/skills/pinia/references/using-in-components.md +91 -0
  49. package/skills/pinia-options/SKILL.md +72 -0
  50. package/skills/pinia-options/references/core-option-stores.md +149 -0
  51. package/skills/pinia-options/references/using-in-options-api.md +105 -0
  52. package/skills/react-best-practices/AGENTS.md +3373 -0
  53. package/skills/react-best-practices/README.md +123 -0
  54. package/skills/react-best-practices/SKILL.md +143 -0
  55. package/skills/react-best-practices/SYNC.md +5 -0
  56. package/skills/react-best-practices/metadata.json +15 -0
  57. package/skills/react-best-practices/rules/_sections.md +46 -0
  58. package/skills/react-best-practices/rules/_template.md +28 -0
  59. package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  60. package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  61. package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  62. package/skills/react-best-practices/rules/async-api-routes.md +38 -0
  63. package/skills/react-best-practices/rules/async-defer-await.md +80 -0
  64. package/skills/react-best-practices/rules/async-dependencies.md +51 -0
  65. package/skills/react-best-practices/rules/async-parallel.md +28 -0
  66. package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  67. package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  68. package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  69. package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  70. package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  71. package/skills/react-best-practices/rules/bundle-preload.md +50 -0
  72. package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  73. package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  74. package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  75. package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  76. package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  77. package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  78. package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  79. package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  80. package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  81. package/skills/react-best-practices/rules/js-early-exit.md +50 -0
  82. package/skills/react-best-practices/rules/js-flatmap-filter.md +60 -0
  83. package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  84. package/skills/react-best-practices/rules/js-index-maps.md +37 -0
  85. package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  86. package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  87. package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  88. package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  89. package/skills/react-best-practices/rules/rendering-activity.md +26 -0
  90. package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  91. package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  92. package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  93. package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  94. package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  95. package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  96. package/skills/react-best-practices/rules/rendering-resource-hints.md +85 -0
  97. package/skills/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  98. package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  99. package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  100. package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  101. package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  102. package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  103. package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  104. package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  105. package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  106. package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  107. package/skills/react-best-practices/rules/rerender-memo.md +44 -0
  108. package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  109. package/skills/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  110. package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  111. package/skills/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  112. package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  113. package/skills/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  114. package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  115. package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  116. package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  117. package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  118. package/skills/react-best-practices/rules/server-cache-react.md +76 -0
  119. package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  120. package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
  121. package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  122. package/skills/react-best-practices/rules/server-serialization.md +38 -0
  123. package/skills/react-native-skills/AGENTS.md +2897 -0
  124. package/skills/react-native-skills/README.md +165 -0
  125. package/skills/react-native-skills/SKILL.md +121 -0
  126. package/skills/react-native-skills/SYNC.md +5 -0
  127. package/skills/react-native-skills/metadata.json +16 -0
  128. package/skills/react-native-skills/rules/_sections.md +86 -0
  129. package/skills/react-native-skills/rules/_template.md +28 -0
  130. package/skills/react-native-skills/rules/animation-derived-value.md +53 -0
  131. package/skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  132. package/skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
  133. package/skills/react-native-skills/rules/design-system-compound-components.md +66 -0
  134. package/skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
  135. package/skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
  136. package/skills/react-native-skills/rules/js-hoist-intl.md +61 -0
  137. package/skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
  138. package/skills/react-native-skills/rules/list-performance-function-references.md +132 -0
  139. package/skills/react-native-skills/rules/list-performance-images.md +53 -0
  140. package/skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
  141. package/skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
  142. package/skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
  143. package/skills/react-native-skills/rules/list-performance-item-types.md +104 -0
  144. package/skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
  145. package/skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  146. package/skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  147. package/skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
  148. package/skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  149. package/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  150. package/skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
  151. package/skills/react-native-skills/rules/react-state-fallback.md +56 -0
  152. package/skills/react-native-skills/rules/react-state-minimize.md +65 -0
  153. package/skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  154. package/skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  155. package/skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
  156. package/skills/react-native-skills/rules/state-ground-truth.md +80 -0
  157. package/skills/react-native-skills/rules/ui-expo-image.md +66 -0
  158. package/skills/react-native-skills/rules/ui-image-gallery.md +104 -0
  159. package/skills/react-native-skills/rules/ui-measure-views.md +78 -0
  160. package/skills/react-native-skills/rules/ui-menus.md +174 -0
  161. package/skills/react-native-skills/rules/ui-native-modals.md +77 -0
  162. package/skills/react-native-skills/rules/ui-pressable.md +61 -0
  163. package/skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  164. package/skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  165. package/skills/react-native-skills/rules/ui-styling.md +87 -0
  166. package/skills/slidev/LICENSE.md +21 -0
  167. package/skills/slidev/README.md +61 -0
  168. package/skills/slidev/SKILL.md +189 -0
  169. package/skills/slidev/SYNC.md +5 -0
  170. package/skills/slidev/references/animation-click-marker.md +37 -0
  171. package/skills/slidev/references/animation-drawing.md +68 -0
  172. package/skills/slidev/references/animation-rough-marker.md +53 -0
  173. package/skills/slidev/references/api-slide-hooks.md +37 -0
  174. package/skills/slidev/references/build-og-image.md +36 -0
  175. package/skills/slidev/references/build-pdf.md +40 -0
  176. package/skills/slidev/references/build-remote-assets.md +34 -0
  177. package/skills/slidev/references/build-seo-meta.md +43 -0
  178. package/skills/slidev/references/code-groups.md +64 -0
  179. package/skills/slidev/references/code-import-snippet.md +55 -0
  180. package/skills/slidev/references/code-line-highlighting.md +50 -0
  181. package/skills/slidev/references/code-line-numbers.md +46 -0
  182. package/skills/slidev/references/code-magic-move.md +57 -0
  183. package/skills/slidev/references/code-max-height.md +37 -0
  184. package/skills/slidev/references/code-twoslash.md +42 -0
  185. package/skills/slidev/references/core-animations.md +196 -0
  186. package/skills/slidev/references/core-cli.md +140 -0
  187. package/skills/slidev/references/core-components.md +197 -0
  188. package/skills/slidev/references/core-exporting.md +148 -0
  189. package/skills/slidev/references/core-frontmatter.md +195 -0
  190. package/skills/slidev/references/core-global-context.md +155 -0
  191. package/skills/slidev/references/core-headmatter.md +188 -0
  192. package/skills/slidev/references/core-hosting.md +152 -0
  193. package/skills/slidev/references/core-layouts.md +286 -0
  194. package/skills/slidev/references/core-syntax.md +155 -0
  195. package/skills/slidev/references/diagram-latex.md +55 -0
  196. package/skills/slidev/references/diagram-mermaid.md +44 -0
  197. package/skills/slidev/references/diagram-plantuml.md +45 -0
  198. package/skills/slidev/references/editor-monaco-run.md +44 -0
  199. package/skills/slidev/references/editor-monaco-write.md +24 -0
  200. package/skills/slidev/references/editor-monaco.md +50 -0
  201. package/skills/slidev/references/editor-prettier.md +40 -0
  202. package/skills/slidev/references/editor-side.md +23 -0
  203. package/skills/slidev/references/editor-vscode.md +55 -0
  204. package/skills/slidev/references/layout-canvas-size.md +25 -0
  205. package/skills/slidev/references/layout-draggable.md +57 -0
  206. package/skills/slidev/references/layout-global-layers.md +50 -0
  207. package/skills/slidev/references/layout-slots.md +75 -0
  208. package/skills/slidev/references/layout-transform.md +33 -0
  209. package/skills/slidev/references/layout-zoom.md +39 -0
  210. package/skills/slidev/references/presenter-notes-ruby.md +35 -0
  211. package/skills/slidev/references/presenter-recording.md +30 -0
  212. package/skills/slidev/references/presenter-remote.md +40 -0
  213. package/skills/slidev/references/presenter-timer.md +34 -0
  214. package/skills/slidev/references/style-direction.md +34 -0
  215. package/skills/slidev/references/style-icons.md +46 -0
  216. package/skills/slidev/references/style-scoped.md +50 -0
  217. package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  218. package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  219. package/skills/slidev/references/syntax-importing-slides.md +60 -0
  220. package/skills/slidev/references/syntax-mdc.md +51 -0
  221. package/skills/slidev/references/tool-eject-theme.md +27 -0
  222. package/skills/tsdown/LICENSE.md +22 -0
  223. package/skills/tsdown/README.md +77 -0
  224. package/skills/tsdown/SKILL.md +407 -0
  225. package/skills/tsdown/SYNC.md +5 -0
  226. package/skills/tsdown/references/README.md +139 -0
  227. package/skills/tsdown/references/advanced-benchmark.md +8 -0
  228. package/skills/tsdown/references/advanced-ci.md +89 -0
  229. package/skills/tsdown/references/advanced-hooks.md +363 -0
  230. package/skills/tsdown/references/advanced-plugins.md +381 -0
  231. package/skills/tsdown/references/advanced-programmatic.md +378 -0
  232. package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
  233. package/skills/tsdown/references/guide-getting-started.md +178 -0
  234. package/skills/tsdown/references/guide-introduction.md +42 -0
  235. package/skills/tsdown/references/guide-migrate-from-tsup.md +189 -0
  236. package/skills/tsdown/references/option-cjs-default.md +98 -0
  237. package/skills/tsdown/references/option-cleaning.md +275 -0
  238. package/skills/tsdown/references/option-config-file.md +281 -0
  239. package/skills/tsdown/references/option-css.md +301 -0
  240. package/skills/tsdown/references/option-dependencies.md +385 -0
  241. package/skills/tsdown/references/option-dts.md +251 -0
  242. package/skills/tsdown/references/option-entry.md +211 -0
  243. package/skills/tsdown/references/option-exe.md +120 -0
  244. package/skills/tsdown/references/option-lint.md +127 -0
  245. package/skills/tsdown/references/option-log-level.md +91 -0
  246. package/skills/tsdown/references/option-minification.md +177 -0
  247. package/skills/tsdown/references/option-output-directory.md +270 -0
  248. package/skills/tsdown/references/option-output-format.md +181 -0
  249. package/skills/tsdown/references/option-package-exports.md +320 -0
  250. package/skills/tsdown/references/option-platform.md +256 -0
  251. package/skills/tsdown/references/option-root.md +88 -0
  252. package/skills/tsdown/references/option-shims.md +299 -0
  253. package/skills/tsdown/references/option-sourcemap.md +301 -0
  254. package/skills/tsdown/references/option-target.md +222 -0
  255. package/skills/tsdown/references/option-tree-shaking.md +335 -0
  256. package/skills/tsdown/references/option-unbundle.md +310 -0
  257. package/skills/tsdown/references/option-watch-mode.md +261 -0
  258. package/skills/tsdown/references/recipe-react.md +338 -0
  259. package/skills/tsdown/references/recipe-solid.md +46 -0
  260. package/skills/tsdown/references/recipe-svelte.md +54 -0
  261. package/skills/tsdown/references/recipe-vue.md +387 -0
  262. package/skills/tsdown/references/recipe-wasm.md +125 -0
  263. package/skills/tsdown/references/reference-cli.md +472 -0
  264. package/skills/turborepo/LICENSE.md +7 -0
  265. package/skills/turborepo/SKILL.md +951 -0
  266. package/skills/turborepo/SYNC.md +5 -0
  267. package/skills/turborepo/command/turborepo.md +70 -0
  268. package/skills/turborepo/references/best-practices/RULE.md +241 -0
  269. package/skills/turborepo/references/best-practices/dependencies.md +246 -0
  270. package/skills/turborepo/references/best-practices/packages.md +335 -0
  271. package/skills/turborepo/references/best-practices/structure.md +297 -0
  272. package/skills/turborepo/references/boundaries/RULE.md +126 -0
  273. package/skills/turborepo/references/caching/RULE.md +153 -0
  274. package/skills/turborepo/references/caching/gotchas.md +190 -0
  275. package/skills/turborepo/references/caching/remote-cache.md +127 -0
  276. package/skills/turborepo/references/ci/RULE.md +79 -0
  277. package/skills/turborepo/references/ci/github-actions.md +162 -0
  278. package/skills/turborepo/references/ci/patterns.md +145 -0
  279. package/skills/turborepo/references/ci/vercel.md +103 -0
  280. package/skills/turborepo/references/cli/RULE.md +100 -0
  281. package/skills/turborepo/references/cli/commands.md +297 -0
  282. package/skills/turborepo/references/configuration/RULE.md +235 -0
  283. package/skills/turborepo/references/configuration/global-options.md +239 -0
  284. package/skills/turborepo/references/configuration/gotchas.md +368 -0
  285. package/skills/turborepo/references/configuration/tasks.md +325 -0
  286. package/skills/turborepo/references/environment/RULE.md +123 -0
  287. package/skills/turborepo/references/environment/gotchas.md +175 -0
  288. package/skills/turborepo/references/environment/modes.md +101 -0
  289. package/skills/turborepo/references/filtering/RULE.md +148 -0
  290. package/skills/turborepo/references/filtering/patterns.md +152 -0
  291. package/skills/turborepo/references/watch/RULE.md +99 -0
  292. package/skills/vercel-cli-with-tokens/SKILL.md +328 -0
  293. package/skills/vercel-cli-with-tokens/SYNC.md +5 -0
  294. package/skills/vue/SKILL.md +90 -0
  295. package/skills/vue/references/composables.md +54 -0
  296. package/skills/vue/references/lifecycle.md +31 -0
  297. package/skills/vue/references/props-emits.md +62 -0
  298. package/skills/vue/references/provide-inject.md +47 -0
  299. package/skills/vue/references/state.md +65 -0
  300. package/skills/vue-antdv-tailwind/SKILL.md +33 -0
  301. package/skills/vue-antdv-tailwind/references/styling-rules.md +61 -0
  302. package/skills/vue-best-practices/LICENSE.md +21 -0
  303. package/skills/vue-best-practices/SKILL.md +154 -0
  304. package/skills/vue-best-practices/SYNC.md +5 -0
  305. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  306. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  307. package/skills/vue-best-practices/references/component-async.md +97 -0
  308. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  309. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  310. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  311. package/skills/vue-best-practices/references/component-slots.md +216 -0
  312. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  313. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  314. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  315. package/skills/vue-best-practices/references/component-transition.md +125 -0
  316. package/skills/vue-best-practices/references/composables.md +290 -0
  317. package/skills/vue-best-practices/references/directives.md +162 -0
  318. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  319. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  320. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  321. package/skills/vue-best-practices/references/plugins.md +166 -0
  322. package/skills/vue-best-practices/references/reactivity.md +344 -0
  323. package/skills/vue-best-practices/references/render-functions.md +201 -0
  324. package/skills/vue-best-practices/references/sfc.md +310 -0
  325. package/skills/vue-best-practices/references/state-management.md +135 -0
  326. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  327. package/skills/vue-jsx-best-practices/LICENSE.md +21 -0
  328. package/skills/vue-jsx-best-practices/SKILL.md +12 -0
  329. package/skills/vue-jsx-best-practices/SYNC.md +5 -0
  330. package/skills/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
  331. package/skills/vue-options/SKILL.md +98 -0
  332. package/skills/vue-options/references/lifecycle.md +107 -0
  333. package/skills/vue-options/references/mixins.md +96 -0
  334. package/skills/vue-options/references/props-emits.md +106 -0
  335. package/skills/vue-options/references/provide-inject.md +92 -0
  336. package/skills/vue-options/references/state.md +115 -0
  337. package/skills/vue-options-api-best-practices/LICENSE.md +21 -0
  338. package/skills/vue-options-api-best-practices/SKILL.md +23 -0
  339. package/skills/vue-options-api-best-practices/SYNC.md +5 -0
  340. package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
  341. package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
  342. package/skills/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
  343. package/skills/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
  344. package/skills/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
  345. package/skills/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
  346. package/skills/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
  347. package/skills/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
  348. package/skills/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
  349. package/skills/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
  350. package/skills/vue-pinia-best-practices/LICENSE.md +21 -0
  351. package/skills/vue-pinia-best-practices/SKILL.md +21 -0
  352. package/skills/vue-pinia-best-practices/SYNC.md +5 -0
  353. package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
  354. package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
  355. package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
  356. package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
  357. package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
  358. package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
  359. package/skills/vue-router-best-practices/LICENSE.md +21 -0
  360. package/skills/vue-router-best-practices/SKILL.md +23 -0
  361. package/skills/vue-router-best-practices/SYNC.md +5 -0
  362. package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
  363. package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
  364. package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
  365. package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
  366. package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
  367. package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
  368. package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
  369. package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
  370. package/skills/vue-testing-best-practices/LICENSE.md +21 -0
  371. package/skills/vue-testing-best-practices/SKILL.md +29 -0
  372. package/skills/vue-testing-best-practices/SYNC.md +5 -0
  373. package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
  374. package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
  375. package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
  376. package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
  377. package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
  378. package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
  379. package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
  380. package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
  381. package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
  382. package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
  383. package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
  384. package/skills/vueuse-functions/LICENSE.md +21 -0
  385. package/skills/vueuse-functions/SKILL.md +419 -0
  386. package/skills/vueuse-functions/SYNC.md +5 -0
  387. package/skills/vueuse-functions/references/computedAsync.md +195 -0
  388. package/skills/vueuse-functions/references/computedEager.md +62 -0
  389. package/skills/vueuse-functions/references/computedInject.md +137 -0
  390. package/skills/vueuse-functions/references/computedWithControl.md +98 -0
  391. package/skills/vueuse-functions/references/createEventHook.md +86 -0
  392. package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  393. package/skills/vueuse-functions/references/createGlobalState.md +95 -0
  394. package/skills/vueuse-functions/references/createInjectionState.md +215 -0
  395. package/skills/vueuse-functions/references/createProjection.md +31 -0
  396. package/skills/vueuse-functions/references/createRef.md +54 -0
  397. package/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
  398. package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  399. package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
  400. package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  401. package/skills/vueuse-functions/references/extendRef.md +76 -0
  402. package/skills/vueuse-functions/references/from.md +80 -0
  403. package/skills/vueuse-functions/references/get.md +30 -0
  404. package/skills/vueuse-functions/references/injectLocal.md +35 -0
  405. package/skills/vueuse-functions/references/isDefined.md +31 -0
  406. package/skills/vueuse-functions/references/logicAnd.md +40 -0
  407. package/skills/vueuse-functions/references/logicNot.md +36 -0
  408. package/skills/vueuse-functions/references/logicOr.md +40 -0
  409. package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  410. package/skills/vueuse-functions/references/onClickOutside.md +221 -0
  411. package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
  412. package/skills/vueuse-functions/references/onKeyStroke.md +211 -0
  413. package/skills/vueuse-functions/references/onLongPress.md +227 -0
  414. package/skills/vueuse-functions/references/onStartTyping.md +53 -0
  415. package/skills/vueuse-functions/references/provideLocal.md +37 -0
  416. package/skills/vueuse-functions/references/reactify.md +144 -0
  417. package/skills/vueuse-functions/references/reactifyObject.md +62 -0
  418. package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  419. package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  420. package/skills/vueuse-functions/references/reactivePick.md +106 -0
  421. package/skills/vueuse-functions/references/refAutoReset.md +46 -0
  422. package/skills/vueuse-functions/references/refDebounced.md +81 -0
  423. package/skills/vueuse-functions/references/refDefault.md +36 -0
  424. package/skills/vueuse-functions/references/refManualReset.md +44 -0
  425. package/skills/vueuse-functions/references/refThrottled.md +99 -0
  426. package/skills/vueuse-functions/references/refWithControl.md +146 -0
  427. package/skills/vueuse-functions/references/set.md +30 -0
  428. package/skills/vueuse-functions/references/syncRef.md +195 -0
  429. package/skills/vueuse-functions/references/syncRefs.md +128 -0
  430. package/skills/vueuse-functions/references/templateRef.md +86 -0
  431. package/skills/vueuse-functions/references/toObserver.md +38 -0
  432. package/skills/vueuse-functions/references/toReactive.md +41 -0
  433. package/skills/vueuse-functions/references/toRef.md +75 -0
  434. package/skills/vueuse-functions/references/toRefs.md +81 -0
  435. package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  436. package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  437. package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  438. package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  439. package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  440. package/skills/vueuse-functions/references/unrefElement.md +54 -0
  441. package/skills/vueuse-functions/references/until.md +161 -0
  442. package/skills/vueuse-functions/references/useAbs.md +31 -0
  443. package/skills/vueuse-functions/references/useActiveElement.md +85 -0
  444. package/skills/vueuse-functions/references/useAnimate.md +181 -0
  445. package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  446. package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  447. package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  448. package/skills/vueuse-functions/references/useArrayFind.md +50 -0
  449. package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  450. package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  451. package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  452. package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  453. package/skills/vueuse-functions/references/useArrayMap.md +59 -0
  454. package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  455. package/skills/vueuse-functions/references/useArraySome.md +59 -0
  456. package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  457. package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
  458. package/skills/vueuse-functions/references/useAsyncState.md +185 -0
  459. package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  460. package/skills/vueuse-functions/references/useAuth.md +123 -0
  461. package/skills/vueuse-functions/references/useAverage.md +36 -0
  462. package/skills/vueuse-functions/references/useAxios.md +325 -0
  463. package/skills/vueuse-functions/references/useBase64.md +136 -0
  464. package/skills/vueuse-functions/references/useBattery.md +78 -0
  465. package/skills/vueuse-functions/references/useBluetooth.md +175 -0
  466. package/skills/vueuse-functions/references/useBreakpoints.md +172 -0
  467. package/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
  468. package/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
  469. package/skills/vueuse-functions/references/useCached.md +52 -0
  470. package/skills/vueuse-functions/references/useCeil.md +31 -0
  471. package/skills/vueuse-functions/references/useChangeCase.md +79 -0
  472. package/skills/vueuse-functions/references/useClamp.md +85 -0
  473. package/skills/vueuse-functions/references/useClipboard.md +123 -0
  474. package/skills/vueuse-functions/references/useClipboardItems.md +94 -0
  475. package/skills/vueuse-functions/references/useCloned.md +91 -0
  476. package/skills/vueuse-functions/references/useColorMode.md +172 -0
  477. package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  478. package/skills/vueuse-functions/references/useCookies.md +162 -0
  479. package/skills/vueuse-functions/references/useCountdown.md +105 -0
  480. package/skills/vueuse-functions/references/useCounter.md +86 -0
  481. package/skills/vueuse-functions/references/useCssSupports.md +35 -0
  482. package/skills/vueuse-functions/references/useCssVar.md +50 -0
  483. package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  484. package/skills/vueuse-functions/references/useCycleList.md +75 -0
  485. package/skills/vueuse-functions/references/useDark.md +144 -0
  486. package/skills/vueuse-functions/references/useDateFormat.md +145 -0
  487. package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  488. package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  489. package/skills/vueuse-functions/references/useDeviceMotion.md +86 -0
  490. package/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
  491. package/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
  492. package/skills/vueuse-functions/references/useDevicesList.md +90 -0
  493. package/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
  494. package/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
  495. package/skills/vueuse-functions/references/useDraggable.md +317 -0
  496. package/skills/vueuse-functions/references/useDrauu.md +65 -0
  497. package/skills/vueuse-functions/references/useDropZone.md +83 -0
  498. package/skills/vueuse-functions/references/useElementBounding.md +131 -0
  499. package/skills/vueuse-functions/references/useElementByPoint.md +48 -0
  500. package/skills/vueuse-functions/references/useElementHover.md +79 -0
  501. package/skills/vueuse-functions/references/useElementSize.md +78 -0
  502. package/skills/vueuse-functions/references/useElementVisibility.md +123 -0
  503. package/skills/vueuse-functions/references/useEventBus.md +101 -0
  504. package/skills/vueuse-functions/references/useEventListener.md +226 -0
  505. package/skills/vueuse-functions/references/useEventSource.md +204 -0
  506. package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
  507. package/skills/vueuse-functions/references/useEyeDropper.md +71 -0
  508. package/skills/vueuse-functions/references/useFavicon.md +67 -0
  509. package/skills/vueuse-functions/references/useFetch.md +546 -0
  510. package/skills/vueuse-functions/references/useFileDialog.md +91 -0
  511. package/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
  512. package/skills/vueuse-functions/references/useFirestore.md +129 -0
  513. package/skills/vueuse-functions/references/useFloor.md +31 -0
  514. package/skills/vueuse-functions/references/useFocus.md +99 -0
  515. package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  516. package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  517. package/skills/vueuse-functions/references/useFps.md +28 -0
  518. package/skills/vueuse-functions/references/useFullscreen.md +75 -0
  519. package/skills/vueuse-functions/references/useFuse.md +107 -0
  520. package/skills/vueuse-functions/references/useGamepad.md +222 -0
  521. package/skills/vueuse-functions/references/useGeolocation.md +85 -0
  522. package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  523. package/skills/vueuse-functions/references/useIdle.md +88 -0
  524. package/skills/vueuse-functions/references/useImage.md +86 -0
  525. package/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
  526. package/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
  527. package/skills/vueuse-functions/references/useInterval.md +112 -0
  528. package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  529. package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
  530. package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  531. package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  532. package/skills/vueuse-functions/references/useJwt.md +57 -0
  533. package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  534. package/skills/vueuse-functions/references/useLastChanged.md +63 -0
  535. package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  536. package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
  537. package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  538. package/skills/vueuse-functions/references/useMath.md +47 -0
  539. package/skills/vueuse-functions/references/useMax.md +36 -0
  540. package/skills/vueuse-functions/references/useMediaControls.md +571 -0
  541. package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  542. package/skills/vueuse-functions/references/useMemoize.md +175 -0
  543. package/skills/vueuse-functions/references/useMemory.md +71 -0
  544. package/skills/vueuse-functions/references/useMin.md +36 -0
  545. package/skills/vueuse-functions/references/useMounted.md +38 -0
  546. package/skills/vueuse-functions/references/useMouse.md +113 -0
  547. package/skills/vueuse-functions/references/useMouseInElement.md +123 -0
  548. package/skills/vueuse-functions/references/useMousePressed.md +112 -0
  549. package/skills/vueuse-functions/references/useMutationObserver.md +61 -0
  550. package/skills/vueuse-functions/references/useNProgress.md +78 -0
  551. package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  552. package/skills/vueuse-functions/references/useNetwork.md +106 -0
  553. package/skills/vueuse-functions/references/useNow.md +79 -0
  554. package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  555. package/skills/vueuse-functions/references/useObservable.md +91 -0
  556. package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  557. package/skills/vueuse-functions/references/useOnline.md +41 -0
  558. package/skills/vueuse-functions/references/usePageLeave.md +42 -0
  559. package/skills/vueuse-functions/references/useParallax.md +58 -0
  560. package/skills/vueuse-functions/references/useParentElement.md +54 -0
  561. package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  562. package/skills/vueuse-functions/references/usePermission.md +79 -0
  563. package/skills/vueuse-functions/references/usePointer.md +89 -0
  564. package/skills/vueuse-functions/references/usePointerLock.md +60 -0
  565. package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  566. package/skills/vueuse-functions/references/usePrecision.md +49 -0
  567. package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  568. package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  569. package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  570. package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  571. package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  572. package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  573. package/skills/vueuse-functions/references/usePrevious.md +40 -0
  574. package/skills/vueuse-functions/references/useProjection.md +38 -0
  575. package/skills/vueuse-functions/references/useQRCode.md +53 -0
  576. package/skills/vueuse-functions/references/useRTDB.md +83 -0
  577. package/skills/vueuse-functions/references/useRafFn.md +68 -0
  578. package/skills/vueuse-functions/references/useRefHistory.md +285 -0
  579. package/skills/vueuse-functions/references/useResizeObserver.md +109 -0
  580. package/skills/vueuse-functions/references/useRound.md +31 -0
  581. package/skills/vueuse-functions/references/useRouteHash.md +27 -0
  582. package/skills/vueuse-functions/references/useRouteParams.md +38 -0
  583. package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
  584. package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  585. package/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
  586. package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  587. package/skills/vueuse-functions/references/useScriptTag.md +116 -0
  588. package/skills/vueuse-functions/references/useScroll.md +238 -0
  589. package/skills/vueuse-functions/references/useScrollLock.md +66 -0
  590. package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  591. package/skills/vueuse-functions/references/useShare.md +68 -0
  592. package/skills/vueuse-functions/references/useSortable.md +235 -0
  593. package/skills/vueuse-functions/references/useSorted.md +90 -0
  594. package/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
  595. package/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
  596. package/skills/vueuse-functions/references/useStepper.md +137 -0
  597. package/skills/vueuse-functions/references/useStorage.md +278 -0
  598. package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
  599. package/skills/vueuse-functions/references/useStyleTag.md +131 -0
  600. package/skills/vueuse-functions/references/useSubject.md +77 -0
  601. package/skills/vueuse-functions/references/useSubscription.md +33 -0
  602. package/skills/vueuse-functions/references/useSum.md +36 -0
  603. package/skills/vueuse-functions/references/useSupported.md +29 -0
  604. package/skills/vueuse-functions/references/useSwipe.md +75 -0
  605. package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  606. package/skills/vueuse-functions/references/useTextDirection.md +75 -0
  607. package/skills/vueuse-functions/references/useTextSelection.md +40 -0
  608. package/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
  609. package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  610. package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  611. package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
  612. package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
  613. package/skills/vueuse-functions/references/useTimeout.md +113 -0
  614. package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  615. package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  616. package/skills/vueuse-functions/references/useTimestamp.md +89 -0
  617. package/skills/vueuse-functions/references/useTitle.md +113 -0
  618. package/skills/vueuse-functions/references/useToNumber.md +54 -0
  619. package/skills/vueuse-functions/references/useToString.md +34 -0
  620. package/skills/vueuse-functions/references/useToggle.md +103 -0
  621. package/skills/vueuse-functions/references/useTransition.md +265 -0
  622. package/skills/vueuse-functions/references/useTrunc.md +33 -0
  623. package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  624. package/skills/vueuse-functions/references/useUserMedia.md +1138 -0
  625. package/skills/vueuse-functions/references/useVModel.md +182 -0
  626. package/skills/vueuse-functions/references/useVModels.md +67 -0
  627. package/skills/vueuse-functions/references/useVibrate.md +87 -0
  628. package/skills/vueuse-functions/references/useVirtualList.md +182 -0
  629. package/skills/vueuse-functions/references/useWakeLock.md +50 -0
  630. package/skills/vueuse-functions/references/useWebNotification.md +176 -0
  631. package/skills/vueuse-functions/references/useWebSocket.md +299 -0
  632. package/skills/vueuse-functions/references/useWebWorker.md +60 -0
  633. package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  634. package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  635. package/skills/vueuse-functions/references/useWindowScroll.md +61 -0
  636. package/skills/vueuse-functions/references/useWindowSize.md +76 -0
  637. package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  638. package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  639. package/skills/vueuse-functions/references/watchArray.md +53 -0
  640. package/skills/vueuse-functions/references/watchAtMost.md +55 -0
  641. package/skills/vueuse-functions/references/watchDebounced.md +101 -0
  642. package/skills/vueuse-functions/references/watchDeep.md +54 -0
  643. package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
  644. package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  645. package/skills/vueuse-functions/references/watchImmediate.md +44 -0
  646. package/skills/vueuse-functions/references/watchOnce.md +41 -0
  647. package/skills/vueuse-functions/references/watchPausable.md +86 -0
  648. package/skills/vueuse-functions/references/watchThrottled.md +108 -0
  649. package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
  650. package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
  651. package/skills/vueuse-functions/references/whenever.md +100 -0
  652. package/skills/web-design-guidelines/SKILL.md +39 -0
  653. package/skills/web-design-guidelines/SYNC.md +5 -0
  654. package/tsconfig.json +17 -0
@@ -0,0 +1,951 @@
1
+ ---
2
+ name: turborepo
3
+ description: |
4
+ Turborepo monorepo build system guidance. Triggers on: turbo.json, task pipelines,
5
+ dependsOn, caching, remote cache, the "turbo" CLI, --filter, --affected, CI optimization, environment
6
+ variables, internal packages, monorepo structure/best practices, and boundaries.
7
+
8
+ Use when user: configures tasks/workflows/pipelines, creates packages, sets up
9
+ monorepo, shares code between apps, runs changed/affected packages, debugs cache,
10
+ or has apps/packages directories.
11
+ metadata:
12
+ version: 2.8.21-canary.9
13
+ ---
14
+
15
+ # Turborepo Skill
16
+
17
+ Build system for JavaScript/TypeScript monorepos. Turborepo caches task outputs and runs tasks in parallel based on dependency graph.
18
+
19
+ ## IMPORTANT: Package Tasks, Not Root Tasks
20
+
21
+ **DO NOT create Root Tasks. ALWAYS create package tasks.**
22
+
23
+ When creating tasks/scripts/pipelines, you MUST:
24
+
25
+ 1. Add the script to each relevant package's `package.json`
26
+ 2. Register the task in root `turbo.json`
27
+ 3. Root `package.json` only delegates via `turbo run <task>`
28
+
29
+ **DO NOT** put task logic in root `package.json`. This defeats Turborepo's parallelization.
30
+
31
+ ```json
32
+ // DO THIS: Scripts in each package
33
+ // apps/web/package.json
34
+ { "scripts": { "build": "next build", "lint": "eslint .", "test": "vitest" } }
35
+
36
+ // apps/api/package.json
37
+ { "scripts": { "build": "tsc", "lint": "eslint .", "test": "vitest" } }
38
+
39
+ // packages/ui/package.json
40
+ { "scripts": { "build": "tsc", "lint": "eslint .", "test": "vitest" } }
41
+ ```
42
+
43
+ ```json
44
+ // turbo.json - register tasks
45
+ {
46
+ "tasks": {
47
+ "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] },
48
+ "lint": {},
49
+ "test": { "dependsOn": ["build"] }
50
+ }
51
+ }
52
+ ```
53
+
54
+ ```json
55
+ // Root package.json - ONLY delegates, no task logic
56
+ {
57
+ "scripts": {
58
+ "build": "turbo run build",
59
+ "lint": "turbo run lint",
60
+ "test": "turbo run test"
61
+ }
62
+ }
63
+ ```
64
+
65
+ ```json
66
+ // DO NOT DO THIS - defeats parallelization
67
+ // Root package.json
68
+ {
69
+ "scripts": {
70
+ "build": "cd apps/web && next build && cd ../api && tsc",
71
+ "lint": "eslint apps/ packages/",
72
+ "test": "vitest"
73
+ }
74
+ }
75
+ ```
76
+
77
+ Root Tasks (`//#taskname`) are ONLY for tasks that truly cannot exist in packages (rare).
78
+
79
+ ## Secondary Rule: `turbo run` vs `turbo`
80
+
81
+ **Always use `turbo run` when the command is written into code:**
82
+
83
+ ```json
84
+ // package.json - ALWAYS "turbo run"
85
+ {
86
+ "scripts": {
87
+ "build": "turbo run build"
88
+ }
89
+ }
90
+ ```
91
+
92
+ ```yaml
93
+ # CI workflows - ALWAYS "turbo run"
94
+ - run: turbo run build --affected
95
+ ```
96
+
97
+ **The shorthand `turbo <tasks>` is ONLY for one-off terminal commands** typed directly by humans or agents. Never write `turbo build` into package.json, CI, or scripts.
98
+
99
+ ## Quick Decision Trees
100
+
101
+ ### "I need to configure a task"
102
+
103
+ ```
104
+ Configure a task?
105
+ ├─ Define task dependencies → references/configuration/tasks.md
106
+ ├─ Lint/check-types (parallel + caching) → Use Transit Nodes pattern (see below)
107
+ ├─ Specify build outputs → references/configuration/tasks.md#outputs
108
+ ├─ Handle environment variables → references/environment/RULE.md
109
+ ├─ Set up dev/watch tasks → references/configuration/tasks.md#persistent
110
+ ├─ Package-specific config → references/configuration/RULE.md#package-configurations
111
+ └─ Global settings (cacheDir, daemon) → references/configuration/global-options.md
112
+ ```
113
+
114
+ ### "My cache isn't working"
115
+
116
+ ```
117
+ Cache problems?
118
+ ├─ Tasks run but outputs not restored → Missing `outputs` key
119
+ ├─ Cache misses unexpectedly → references/caching/gotchas.md
120
+ ├─ Need to debug hash inputs → Use --summarize or --dry
121
+ ├─ Want to skip cache entirely → Use --force or cache: false
122
+ ├─ Remote cache not working → references/caching/remote-cache.md
123
+ └─ Environment causing misses → references/environment/gotchas.md
124
+ ```
125
+
126
+ ### "I want to run only changed packages"
127
+
128
+ ```
129
+ Run only what changed?
130
+ ├─ Changed packages + dependents (RECOMMENDED) → turbo run build --affected
131
+ ├─ Custom base branch → --affected --affected-base=origin/develop
132
+ ├─ Manual git comparison → --filter=...[origin/main]
133
+ └─ See all filter options → references/filtering/RULE.md
134
+ ```
135
+
136
+ **`--affected` is the primary way to run only changed packages.** It automatically compares against the default branch and includes dependents.
137
+
138
+ ### "I want to filter packages"
139
+
140
+ ```
141
+ Filter packages?
142
+ ├─ Only changed packages → --affected (see above)
143
+ ├─ By package name → --filter=web
144
+ ├─ By directory → --filter=./apps/*
145
+ ├─ Package + dependencies → --filter=web...
146
+ ├─ Package + dependents → --filter=...web
147
+ └─ Complex combinations → references/filtering/patterns.md
148
+ ```
149
+
150
+ ### "Environment variables aren't working"
151
+
152
+ ```
153
+ Environment issues?
154
+ ├─ Vars not available at runtime → Strict mode filtering (default)
155
+ ├─ Cache hits with wrong env → Var not in `env` key
156
+ ├─ .env changes not causing rebuilds → .env not in `inputs`
157
+ ├─ CI variables missing → references/environment/gotchas.md
158
+ └─ Framework vars (NEXT_PUBLIC_*) → Auto-included via inference
159
+ ```
160
+
161
+ ### "I need to set up CI"
162
+
163
+ ```
164
+ CI setup?
165
+ ├─ GitHub Actions → references/ci/github-actions.md
166
+ ├─ Vercel deployment → references/ci/vercel.md
167
+ ├─ Remote cache in CI → references/caching/remote-cache.md
168
+ ├─ Only build changed packages → --affected flag
169
+ ├─ Skip unnecessary builds → turbo-ignore (references/cli/commands.md)
170
+ └─ Skip container setup when no changes → turbo-ignore
171
+ ```
172
+
173
+ ### "I want to watch for changes during development"
174
+
175
+ ```
176
+ Watch mode?
177
+ ├─ Re-run tasks on change → turbo watch (references/watch/RULE.md)
178
+ ├─ Dev servers with dependencies → Use `with` key (references/configuration/tasks.md#with)
179
+ ├─ Restart dev server on dep change → Use `interruptible: true`
180
+ └─ Persistent dev tasks → Use `persistent: true`
181
+ ```
182
+
183
+ ### "I need to create/structure a package"
184
+
185
+ ```
186
+ Package creation/structure?
187
+ ├─ Create an internal package → references/best-practices/packages.md
188
+ ├─ Repository structure → references/best-practices/structure.md
189
+ ├─ Dependency management → references/best-practices/dependencies.md
190
+ ├─ Best practices overview → references/best-practices/RULE.md
191
+ ├─ JIT vs Compiled packages → references/best-practices/packages.md#compilation-strategies
192
+ └─ Sharing code between apps → references/best-practices/RULE.md#package-types
193
+ ```
194
+
195
+ ### "How should I structure my monorepo?"
196
+
197
+ ```
198
+ Monorepo structure?
199
+ ├─ Standard layout (apps/, packages/) → references/best-practices/RULE.md
200
+ ├─ Package types (apps vs libraries) → references/best-practices/RULE.md#package-types
201
+ ├─ Creating internal packages → references/best-practices/packages.md
202
+ ├─ TypeScript configuration → references/best-practices/structure.md#typescript-configuration
203
+ ├─ ESLint configuration → references/best-practices/structure.md#eslint-configuration
204
+ ├─ Dependency management → references/best-practices/dependencies.md
205
+ └─ Enforce package boundaries → references/boundaries/RULE.md
206
+ ```
207
+
208
+ ### "I want to enforce architectural boundaries"
209
+
210
+ ```
211
+ Enforce boundaries?
212
+ ├─ Check for violations → turbo boundaries
213
+ ├─ Tag packages → references/boundaries/RULE.md#tags
214
+ ├─ Restrict which packages can import others → references/boundaries/RULE.md#rule-types
215
+ └─ Prevent cross-package file imports → references/boundaries/RULE.md
216
+ ```
217
+
218
+ ## Critical Anti-Patterns
219
+
220
+ ### Using `turbo` Shorthand in Code
221
+
222
+ **`turbo run` is recommended in package.json scripts and CI pipelines.** The shorthand `turbo <task>` is intended for interactive terminal use.
223
+
224
+ ```json
225
+ // WRONG - using shorthand in package.json
226
+ {
227
+ "scripts": {
228
+ "build": "turbo build",
229
+ "dev": "turbo dev"
230
+ }
231
+ }
232
+
233
+ // CORRECT
234
+ {
235
+ "scripts": {
236
+ "build": "turbo run build",
237
+ "dev": "turbo run dev"
238
+ }
239
+ }
240
+ ```
241
+
242
+ ```yaml
243
+ # WRONG - using shorthand in CI
244
+ - run: turbo build --affected
245
+
246
+ # CORRECT
247
+ - run: turbo run build --affected
248
+ ```
249
+
250
+ ### Root Scripts Bypassing Turbo
251
+
252
+ Root `package.json` scripts MUST delegate to `turbo run`, not run tasks directly.
253
+
254
+ ```json
255
+ // WRONG - bypasses turbo entirely
256
+ {
257
+ "scripts": {
258
+ "build": "bun build",
259
+ "dev": "bun dev"
260
+ }
261
+ }
262
+
263
+ // CORRECT - delegates to turbo
264
+ {
265
+ "scripts": {
266
+ "build": "turbo run build",
267
+ "dev": "turbo run dev"
268
+ }
269
+ }
270
+ ```
271
+
272
+ ### Using `&&` to Chain Turbo Tasks
273
+
274
+ Don't chain turbo tasks with `&&`. Let turbo orchestrate.
275
+
276
+ ```json
277
+ // WRONG - turbo task not using turbo run
278
+ {
279
+ "scripts": {
280
+ "changeset:publish": "bun build && changeset publish"
281
+ }
282
+ }
283
+
284
+ // CORRECT
285
+ {
286
+ "scripts": {
287
+ "changeset:publish": "turbo run build && changeset publish"
288
+ }
289
+ }
290
+ ```
291
+
292
+ ### `prebuild` Scripts That Manually Build Dependencies
293
+
294
+ Scripts like `prebuild` that manually build other packages bypass Turborepo's dependency graph.
295
+
296
+ ```json
297
+ // WRONG - manually building dependencies
298
+ {
299
+ "scripts": {
300
+ "prebuild": "cd ../../packages/types && bun run build && cd ../utils && bun run build",
301
+ "build": "next build"
302
+ }
303
+ }
304
+ ```
305
+
306
+ **However, the fix depends on whether workspace dependencies are declared:**
307
+
308
+ 1. **If dependencies ARE declared** (e.g., `"@repo/types": "workspace:*"` in package.json), remove the `prebuild` script. Turbo's `dependsOn: ["^build"]` handles this automatically.
309
+
310
+ 2. **If dependencies are NOT declared**, the `prebuild` exists because `^build` won't trigger without a dependency relationship. The fix is to:
311
+ - Add the dependency to package.json: `"@repo/types": "workspace:*"`
312
+ - Then remove the `prebuild` script
313
+
314
+ ```json
315
+ // CORRECT - declare dependency, let turbo handle build order
316
+ // package.json
317
+ {
318
+ "dependencies": {
319
+ "@repo/types": "workspace:*",
320
+ "@repo/utils": "workspace:*"
321
+ },
322
+ "scripts": {
323
+ "build": "next build"
324
+ }
325
+ }
326
+
327
+ // turbo.json
328
+ {
329
+ "tasks": {
330
+ "build": {
331
+ "dependsOn": ["^build"]
332
+ }
333
+ }
334
+ }
335
+ ```
336
+
337
+ **Key insight:** `^build` only runs build in packages listed as dependencies. No dependency declaration = no automatic build ordering.
338
+
339
+ ### Overly Broad `globalDependencies`
340
+
341
+ `globalDependencies` affects ALL tasks in ALL packages via the **global hash** — tasks cannot opt out of specific files, even with negation globs in `inputs`. Be specific.
342
+
343
+ ```json
344
+ // WRONG - heavy hammer, affects all hashes
345
+ {
346
+ "globalDependencies": ["**/.env.*local"]
347
+ }
348
+
349
+ // BETTER - move to task-level inputs
350
+ {
351
+ "globalDependencies": [".env"],
352
+ "tasks": {
353
+ "build": {
354
+ "inputs": ["$TURBO_DEFAULT$", ".env*"],
355
+ "outputs": ["dist/**"]
356
+ }
357
+ }
358
+ }
359
+ ```
360
+
361
+ With `futureFlags.globalConfiguration`, this problem is reduced because `global.inputs` files are folded into each task's inputs (not the global hash). Tasks can exclude specific files:
362
+
363
+ ```json
364
+ // BEST - global.inputs with per-task exclusion
365
+ {
366
+ "futureFlags": { "globalConfiguration": true },
367
+ "global": {
368
+ "inputs": [".env"]
369
+ },
370
+ "tasks": {
371
+ "build": { "outputs": ["dist/**"] },
372
+ "lint": {
373
+ "inputs": ["$TURBO_DEFAULT$", "!$TURBO_ROOT$/.env"]
374
+ }
375
+ }
376
+ }
377
+ ```
378
+
379
+ ### Repetitive Task Configuration
380
+
381
+ Look for repeated configuration across tasks that can be collapsed. Turborepo supports shared configuration patterns.
382
+
383
+ ```json
384
+ // WRONG - repetitive env and inputs across tasks
385
+ {
386
+ "tasks": {
387
+ "build": {
388
+ "env": ["API_URL", "DATABASE_URL"],
389
+ "inputs": ["$TURBO_DEFAULT$", ".env*"]
390
+ },
391
+ "test": {
392
+ "env": ["API_URL", "DATABASE_URL"],
393
+ "inputs": ["$TURBO_DEFAULT$", ".env*"]
394
+ },
395
+ "dev": {
396
+ "env": ["API_URL", "DATABASE_URL"],
397
+ "inputs": ["$TURBO_DEFAULT$", ".env*"],
398
+ "cache": false,
399
+ "persistent": true
400
+ }
401
+ }
402
+ }
403
+
404
+ // BETTER - use globalEnv and globalDependencies for shared config
405
+ {
406
+ "globalEnv": ["API_URL", "DATABASE_URL"],
407
+ "globalDependencies": [".env*"],
408
+ "tasks": {
409
+ "build": {},
410
+ "test": {},
411
+ "dev": {
412
+ "cache": false,
413
+ "persistent": true
414
+ }
415
+ }
416
+ }
417
+ ```
418
+
419
+ **When to use global vs task-level:**
420
+
421
+ - `globalEnv` / `globalDependencies` - affects ALL tasks, use for truly shared config
422
+ - Task-level `env` / `inputs` - use when only specific tasks need it
423
+
424
+ ### NOT an Anti-Pattern: Large `env` Arrays
425
+
426
+ A large `env` array (even 50+ variables) is **not** a problem. It usually means the user was thorough about declaring their build's environment dependencies. Do not flag this as an issue.
427
+
428
+ ### Using `--parallel` Flag
429
+
430
+ The `--parallel` flag bypasses Turborepo's dependency graph. If tasks need parallel execution, configure `dependsOn` correctly instead.
431
+
432
+ ```bash
433
+ # WRONG - bypasses dependency graph
434
+ turbo run lint --parallel
435
+
436
+ # CORRECT - configure tasks to allow parallel execution
437
+ # In turbo.json, set dependsOn appropriately (or use transit nodes)
438
+ turbo run lint
439
+ ```
440
+
441
+ ### Package-Specific Task Overrides in Root turbo.json
442
+
443
+ When multiple packages need different task configurations, use **Package Configurations** (`turbo.json` in each package) instead of cluttering root `turbo.json` with `package#task` overrides.
444
+
445
+ ```json
446
+ // WRONG - root turbo.json with many package-specific overrides
447
+ {
448
+ "tasks": {
449
+ "test": { "dependsOn": ["build"] },
450
+ "@repo/web#test": { "outputs": ["coverage/**"] },
451
+ "@repo/api#test": { "outputs": ["coverage/**"] },
452
+ "@repo/utils#test": { "outputs": [] },
453
+ "@repo/cli#test": { "outputs": [] },
454
+ "@repo/core#test": { "outputs": [] }
455
+ }
456
+ }
457
+
458
+ // CORRECT - use Package Configurations
459
+ // Root turbo.json - base config only
460
+ {
461
+ "tasks": {
462
+ "test": { "dependsOn": ["build"] }
463
+ }
464
+ }
465
+
466
+ // packages/web/turbo.json - package-specific override
467
+ {
468
+ "extends": ["//"],
469
+ "tasks": {
470
+ "test": { "outputs": ["coverage/**"] }
471
+ }
472
+ }
473
+
474
+ // packages/api/turbo.json
475
+ {
476
+ "extends": ["//"],
477
+ "tasks": {
478
+ "test": { "outputs": ["coverage/**"] }
479
+ }
480
+ }
481
+ ```
482
+
483
+ **Benefits of Package Configurations:**
484
+
485
+ - Keeps configuration close to the code it affects
486
+ - Root turbo.json stays clean and focused on base patterns
487
+ - Easier to understand what's special about each package
488
+ - Works with `$TURBO_EXTENDS$` to inherit + extend arrays
489
+
490
+ **When to use `package#task` in root:**
491
+
492
+ - Single package needs a unique dependency (e.g., `"deploy": { "dependsOn": ["web#build"] }`)
493
+ - Temporary override while migrating
494
+
495
+ See `references/configuration/RULE.md#package-configurations` for full details.
496
+
497
+ ### Using `../` to Traverse Out of Package in `inputs`
498
+
499
+ Don't use relative paths like `../` to reference files outside the package. Use `$TURBO_ROOT$` instead.
500
+
501
+ ```json
502
+ // WRONG - traversing out of package
503
+ {
504
+ "tasks": {
505
+ "build": {
506
+ "inputs": ["$TURBO_DEFAULT$", "../shared-config.json"]
507
+ }
508
+ }
509
+ }
510
+
511
+ // CORRECT - use $TURBO_ROOT$ for repo root
512
+ {
513
+ "tasks": {
514
+ "build": {
515
+ "inputs": ["$TURBO_DEFAULT$", "$TURBO_ROOT$/shared-config.json"]
516
+ }
517
+ }
518
+ }
519
+ ```
520
+
521
+ ### Missing `outputs` for File-Producing Tasks
522
+
523
+ **Before flagging missing `outputs`, check what the task actually produces:**
524
+
525
+ 1. Read the package's script (e.g., `"build": "tsc"`, `"test": "vitest"`)
526
+ 2. Determine if it writes files to disk or only outputs to stdout
527
+ 3. Only flag if the task produces files that should be cached
528
+
529
+ ```json
530
+ // WRONG: build produces files but they're not cached
531
+ {
532
+ "tasks": {
533
+ "build": {
534
+ "dependsOn": ["^build"]
535
+ }
536
+ }
537
+ }
538
+
539
+ // CORRECT: build outputs are cached
540
+ {
541
+ "tasks": {
542
+ "build": {
543
+ "dependsOn": ["^build"],
544
+ "outputs": ["dist/**"]
545
+ }
546
+ }
547
+ }
548
+ ```
549
+
550
+ Common outputs by framework:
551
+
552
+ - Next.js: `[".next/**", "!.next/cache/**"]`
553
+ - Vite/Rollup: `["dist/**"]`
554
+ - tsc: `["dist/**"]` or custom `outDir`
555
+
556
+ **TypeScript `--noEmit` can still produce cache files:**
557
+
558
+ When `incremental: true` in tsconfig.json, `tsc --noEmit` writes `.tsbuildinfo` files even without emitting JS. Check the tsconfig before assuming no outputs:
559
+
560
+ ```json
561
+ // If tsconfig has incremental: true, tsc --noEmit produces cache files
562
+ {
563
+ "tasks": {
564
+ "typecheck": {
565
+ "outputs": ["node_modules/.cache/tsbuildinfo.json"] // or wherever tsBuildInfoFile points
566
+ }
567
+ }
568
+ }
569
+ ```
570
+
571
+ To determine correct outputs for TypeScript tasks:
572
+
573
+ 1. Check if `incremental` or `composite` is enabled in tsconfig
574
+ 2. Check `tsBuildInfoFile` for custom cache location (default: alongside `outDir` or in project root)
575
+ 3. If no incremental mode, `tsc --noEmit` produces no files
576
+
577
+ ### `^build` vs `build` Confusion
578
+
579
+ ```json
580
+ {
581
+ "tasks": {
582
+ // ^build = run build in DEPENDENCIES first (other packages this one imports)
583
+ "build": {
584
+ "dependsOn": ["^build"]
585
+ },
586
+ // build (no ^) = run build in SAME PACKAGE first
587
+ "test": {
588
+ "dependsOn": ["build"]
589
+ },
590
+ // pkg#task = specific package's task
591
+ "deploy": {
592
+ "dependsOn": ["web#build"]
593
+ }
594
+ }
595
+ }
596
+ ```
597
+
598
+ ### Environment Variables Not Hashed
599
+
600
+ ```json
601
+ // WRONG: API_URL changes won't cause rebuilds
602
+ {
603
+ "tasks": {
604
+ "build": {
605
+ "outputs": ["dist/**"]
606
+ }
607
+ }
608
+ }
609
+
610
+ // CORRECT: API_URL changes invalidate cache
611
+ {
612
+ "tasks": {
613
+ "build": {
614
+ "outputs": ["dist/**"],
615
+ "env": ["API_URL", "API_KEY"]
616
+ }
617
+ }
618
+ }
619
+ ```
620
+
621
+ ### `.env` Files Not in Inputs
622
+
623
+ Turbo does NOT load `.env` files - your framework does. But Turbo needs to know about changes:
624
+
625
+ ```json
626
+ // WRONG: .env changes don't invalidate cache
627
+ {
628
+ "tasks": {
629
+ "build": {
630
+ "env": ["API_URL"]
631
+ }
632
+ }
633
+ }
634
+
635
+ // CORRECT: .env file changes invalidate cache
636
+ {
637
+ "tasks": {
638
+ "build": {
639
+ "env": ["API_URL"],
640
+ "inputs": ["$TURBO_DEFAULT$", ".env", ".env.*"]
641
+ }
642
+ }
643
+ }
644
+ ```
645
+
646
+ ### Root `.env` File in Monorepo
647
+
648
+ A `.env` file at the repo root is an anti-pattern — even for small monorepos or starter templates. It creates implicit coupling between packages and makes it unclear which packages depend on which variables.
649
+
650
+ ```
651
+ // WRONG - root .env affects all packages implicitly
652
+ my-monorepo/
653
+ ├── .env # Which packages use this?
654
+ ├── apps/
655
+ │ ├── web/
656
+ │ └── api/
657
+ └── packages/
658
+
659
+ // CORRECT - .env files in packages that need them
660
+ my-monorepo/
661
+ ├── apps/
662
+ │ ├── web/
663
+ │ │ └── .env # Clear: web needs DATABASE_URL
664
+ │ └── api/
665
+ │ └── .env # Clear: api needs API_KEY
666
+ └── packages/
667
+ ```
668
+
669
+ **Problems with root `.env`:**
670
+
671
+ - Unclear which packages consume which variables
672
+ - All packages get all variables (even ones they don't need)
673
+ - Cache invalidation is coarse-grained (root .env change invalidates everything)
674
+ - Security risk: packages may accidentally access sensitive vars meant for others
675
+ - Bad habits start small — starter templates should model correct patterns
676
+
677
+ **If you must share variables**, use `globalEnv` to be explicit about what's shared, and document why.
678
+
679
+ ### Strict Mode Filtering CI Variables
680
+
681
+ By default, Turborepo filters environment variables to only those in `env`/`globalEnv`. CI variables may be missing:
682
+
683
+ ```json
684
+ // If CI scripts need GITHUB_TOKEN but it's not in env:
685
+ {
686
+ "globalPassThroughEnv": ["GITHUB_TOKEN", "CI"],
687
+ "tasks": { ... }
688
+ }
689
+ ```
690
+
691
+ Or use `--env-mode=loose` (not recommended for production).
692
+
693
+ ### Shared Code in Apps (Should Be a Package)
694
+
695
+ ```
696
+ // WRONG: Shared code inside an app
697
+ apps/
698
+ web/
699
+ shared/ # This breaks monorepo principles!
700
+ utils.ts
701
+
702
+ // CORRECT: Extract to a package
703
+ packages/
704
+ utils/
705
+ src/utils.ts
706
+ ```
707
+
708
+ ### Accessing Files Across Package Boundaries
709
+
710
+ ```typescript
711
+ // WRONG: Reaching into another package's internals
712
+ import { Button } from "../../packages/ui/src/button";
713
+
714
+ // CORRECT: Install and import properly
715
+ import { Button } from "@repo/ui/button";
716
+ ```
717
+
718
+ ### Too Many Root Dependencies
719
+
720
+ ```json
721
+ // WRONG: App dependencies in root
722
+ {
723
+ "dependencies": {
724
+ "react": "^18",
725
+ "next": "^14"
726
+ }
727
+ }
728
+
729
+ // CORRECT: Only repo tools in root
730
+ {
731
+ "devDependencies": {
732
+ "turbo": "latest"
733
+ }
734
+ }
735
+ ```
736
+
737
+ ## Common Task Configurations
738
+
739
+ ### Standard Build Pipeline
740
+
741
+ ```json
742
+ {
743
+ "$schema": "https://v2-8-21-canary-9.turborepo.dev/schema.json",
744
+ "tasks": {
745
+ "build": {
746
+ "dependsOn": ["^build"],
747
+ "outputs": ["dist/**", ".next/**", "!.next/cache/**"]
748
+ },
749
+ "dev": {
750
+ "cache": false,
751
+ "persistent": true
752
+ }
753
+ }
754
+ }
755
+ ```
756
+
757
+ Add a `transit` task if you have tasks that need parallel execution with cache invalidation (see below).
758
+
759
+ ### Dev Task with `^dev` Pattern (for `turbo watch`)
760
+
761
+ A `dev` task with `dependsOn: ["^dev"]` and `persistent: false` in root turbo.json may look unusual but is **correct for `turbo watch` workflows**:
762
+
763
+ ```json
764
+ // Root turbo.json
765
+ {
766
+ "tasks": {
767
+ "dev": {
768
+ "dependsOn": ["^dev"],
769
+ "cache": false,
770
+ "persistent": false // Packages have one-shot dev scripts
771
+ }
772
+ }
773
+ }
774
+
775
+ // Package turbo.json (apps/web/turbo.json)
776
+ {
777
+ "extends": ["//"],
778
+ "tasks": {
779
+ "dev": {
780
+ "persistent": true // Apps run long-running dev servers
781
+ }
782
+ }
783
+ }
784
+ ```
785
+
786
+ **Why this works:**
787
+
788
+ - **Packages** (e.g., `@acme/db`, `@acme/validators`) have `"dev": "tsc"` — one-shot type generation that completes quickly
789
+ - **Apps** override with `persistent: true` for actual dev servers (Next.js, etc.)
790
+ - **`turbo watch`** re-runs the one-shot package `dev` scripts when source files change, keeping types in sync
791
+
792
+ **Intended usage:** Run `turbo watch dev` (not `turbo run dev`). Watch mode re-executes one-shot tasks on file changes while keeping persistent tasks running.
793
+
794
+ **Alternative pattern:** Use a separate task name like `prepare` or `generate` for one-shot dependency builds to make the intent clearer:
795
+
796
+ ```json
797
+ {
798
+ "tasks": {
799
+ "prepare": {
800
+ "dependsOn": ["^prepare"],
801
+ "outputs": ["dist/**"]
802
+ },
803
+ "dev": {
804
+ "dependsOn": ["prepare"],
805
+ "cache": false,
806
+ "persistent": true
807
+ }
808
+ }
809
+ }
810
+ ```
811
+
812
+ ### Transit Nodes for Parallel Tasks with Cache Invalidation
813
+
814
+ Some tasks can run in parallel (don't need built output from dependencies) but must invalidate cache when dependency source code changes.
815
+
816
+ **The problem with `dependsOn: ["^taskname"]`:**
817
+
818
+ - Forces sequential execution (slow)
819
+
820
+ **The problem with `dependsOn: []` (no dependencies):**
821
+
822
+ - Allows parallel execution (fast)
823
+ - But cache is INCORRECT - changing dependency source won't invalidate cache
824
+
825
+ **Transit Nodes solve both:**
826
+
827
+ ```json
828
+ {
829
+ "tasks": {
830
+ "transit": { "dependsOn": ["^transit"] },
831
+ "my-task": { "dependsOn": ["transit"] }
832
+ }
833
+ }
834
+ ```
835
+
836
+ The `transit` task creates dependency relationships without matching any actual script, so tasks run in parallel with correct cache invalidation.
837
+
838
+ **How to identify tasks that need this pattern:** Look for tasks that read source files from dependencies but don't need their build outputs.
839
+
840
+ ### With Environment Variables
841
+
842
+ ```json
843
+ {
844
+ "globalEnv": ["NODE_ENV"],
845
+ "globalDependencies": [".env"],
846
+ "tasks": {
847
+ "build": {
848
+ "dependsOn": ["^build"],
849
+ "outputs": ["dist/**"],
850
+ "env": ["API_URL", "DATABASE_URL"]
851
+ }
852
+ }
853
+ }
854
+ ```
855
+
856
+ With `futureFlags.globalConfiguration`, the same config moves global settings under `global` — and `.env` becomes a per-task input instead of a global hash input:
857
+
858
+ ```json
859
+ {
860
+ "futureFlags": { "globalConfiguration": true },
861
+ "global": {
862
+ "env": ["NODE_ENV"],
863
+ "inputs": [".env"]
864
+ },
865
+ "tasks": {
866
+ "build": {
867
+ "dependsOn": ["^build"],
868
+ "outputs": ["dist/**"],
869
+ "env": ["API_URL", "DATABASE_URL"]
870
+ }
871
+ }
872
+ }
873
+ ```
874
+
875
+ ## Reference Index
876
+
877
+ ### Configuration
878
+
879
+ | File | Purpose |
880
+ | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
881
+ | [configuration/RULE.md](./references/configuration/RULE.md) | turbo.json overview, Package Configurations |
882
+ | [configuration/tasks.md](./references/configuration/tasks.md) | dependsOn, outputs, inputs, env, cache, persistent |
883
+ | [configuration/global-options.md](./references/configuration/global-options.md) | globalEnv, globalDependencies, global key, futureFlags, cacheDir, envMode |
884
+ | [configuration/gotchas.md](./references/configuration/gotchas.md) | Common configuration mistakes |
885
+
886
+ ### Caching
887
+
888
+ | File | Purpose |
889
+ | --------------------------------------------------------------- | -------------------------------------------- |
890
+ | [caching/RULE.md](./references/caching/RULE.md) | How caching works, hash inputs |
891
+ | [caching/remote-cache.md](./references/caching/remote-cache.md) | Vercel Remote Cache, self-hosted, login/link |
892
+ | [caching/gotchas.md](./references/caching/gotchas.md) | Debugging cache misses, --summarize, --dry |
893
+
894
+ ### Environment Variables
895
+
896
+ | File | Purpose |
897
+ | ------------------------------------------------------------- | ----------------------------------------- |
898
+ | [environment/RULE.md](./references/environment/RULE.md) | env, globalEnv, passThroughEnv |
899
+ | [environment/modes.md](./references/environment/modes.md) | Strict vs Loose mode, framework inference |
900
+ | [environment/gotchas.md](./references/environment/gotchas.md) | .env files, CI issues |
901
+
902
+ ### Filtering
903
+
904
+ | File | Purpose |
905
+ | ----------------------------------------------------------- | ------------------------ |
906
+ | [filtering/RULE.md](./references/filtering/RULE.md) | --filter syntax overview |
907
+ | [filtering/patterns.md](./references/filtering/patterns.md) | Common filter patterns |
908
+
909
+ ### CI/CD
910
+
911
+ | File | Purpose |
912
+ | --------------------------------------------------------- | ------------------------------- |
913
+ | [ci/RULE.md](./references/ci/RULE.md) | General CI principles |
914
+ | [ci/github-actions.md](./references/ci/github-actions.md) | Complete GitHub Actions setup |
915
+ | [ci/vercel.md](./references/ci/vercel.md) | Vercel deployment, turbo-ignore |
916
+ | [ci/patterns.md](./references/ci/patterns.md) | --affected, caching strategies |
917
+
918
+ ### CLI
919
+
920
+ | File | Purpose |
921
+ | ----------------------------------------------- | --------------------------------------------- |
922
+ | [cli/RULE.md](./references/cli/RULE.md) | turbo run basics |
923
+ | [cli/commands.md](./references/cli/commands.md) | turbo run flags, turbo-ignore, other commands |
924
+
925
+ ### Best Practices
926
+
927
+ | File | Purpose |
928
+ | ----------------------------------------------------------------------------- | --------------------------------------------------------------- |
929
+ | [best-practices/RULE.md](./references/best-practices/RULE.md) | Monorepo best practices overview |
930
+ | [best-practices/structure.md](./references/best-practices/structure.md) | Repository structure, workspace config, TypeScript/ESLint setup |
931
+ | [best-practices/packages.md](./references/best-practices/packages.md) | Creating internal packages, JIT vs Compiled, exports |
932
+ | [best-practices/dependencies.md](./references/best-practices/dependencies.md) | Dependency management, installing, version sync |
933
+
934
+ ### Watch Mode
935
+
936
+ | File | Purpose |
937
+ | ------------------------------------------- | ----------------------------------------------- |
938
+ | [watch/RULE.md](./references/watch/RULE.md) | turbo watch, interruptible tasks, dev workflows |
939
+
940
+ ### Boundaries (Experimental)
941
+
942
+ | File | Purpose |
943
+ | ----------------------------------------------------- | ----------------------------------------------------- |
944
+ | [boundaries/RULE.md](./references/boundaries/RULE.md) | Enforce package isolation, tag-based dependency rules |
945
+
946
+ ## Source Documentation
947
+
948
+ This skill is based on the official Turborepo documentation at:
949
+
950
+ - Source: `apps/docs/content/docs/` in the Turborepo repository
951
+ - Live: https://turborepo.dev/docs