@skyroc/scripts 2.5.1 → 2.5.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 (265) hide show
  1. package/README.md +6 -3
  2. package/dist/cli.mjs +1 -1
  3. package/dist/{config-BKkdncJS.mjs → config-Cj9IzlRz.mjs} +105 -5
  4. package/dist/index.mjs +1 -1
  5. package/package.json +3 -3
  6. package/templates/admin/package.json +5 -1
  7. package/templates/admin/src/assets/svg-icon/logo.svg +1 -1
  8. package/templates/admin/uno.config.ts +1 -1
  9. package/templates/admin-root/.agents/skills/component-doc/SKILL.md +304 -0
  10. package/templates/admin-root/.agents/skills/component-refactoring/SKILL.md +483 -0
  11. package/templates/admin-root/.agents/skills/component-refactoring/references/complexity-patterns.md +493 -0
  12. package/templates/admin-root/.agents/skills/component-refactoring/references/component-splitting.md +477 -0
  13. package/templates/admin-root/.agents/skills/component-refactoring/references/hook-extraction.md +317 -0
  14. package/templates/admin-root/.agents/skills/doc-coauthoring/SKILL.md +375 -0
  15. package/templates/admin-root/.agents/skills/feature-dev/SKILL.md +78 -0
  16. package/templates/admin-root/.agents/skills/frontend-code-review/SKILL.md +73 -0
  17. package/templates/admin-root/.agents/skills/frontend-code-review/references/business-logic.md +15 -0
  18. package/templates/admin-root/.agents/skills/frontend-code-review/references/code-quality.md +44 -0
  19. package/templates/admin-root/.agents/skills/frontend-code-review/references/performance.md +45 -0
  20. package/templates/admin-root/.agents/skills/frontend-design/LICENSE.txt +177 -0
  21. package/templates/admin-root/.agents/skills/frontend-design/SKILL.md +42 -0
  22. package/templates/admin-root/.agents/skills/frontend-testing/SKILL.md +325 -0
  23. package/templates/admin-root/.agents/skills/frontend-testing/assets/component-test.template.tsx +293 -0
  24. package/templates/admin-root/.agents/skills/frontend-testing/assets/hook-test.template.ts +207 -0
  25. package/templates/admin-root/.agents/skills/frontend-testing/assets/utility-test.template.ts +154 -0
  26. package/templates/admin-root/.agents/skills/frontend-testing/references/async-testing.md +345 -0
  27. package/templates/admin-root/.agents/skills/frontend-testing/references/checklist.md +205 -0
  28. package/templates/admin-root/.agents/skills/frontend-testing/references/common-patterns.md +449 -0
  29. package/templates/admin-root/.agents/skills/frontend-testing/references/domain-components.md +523 -0
  30. package/templates/admin-root/.agents/skills/frontend-testing/references/mocking.md +512 -0
  31. package/templates/admin-root/.agents/skills/frontend-testing/references/workflow.md +269 -0
  32. package/templates/admin-root/.agents/skills/migrate-nativewind-to-uniwind/SKILL.md +734 -0
  33. package/templates/admin-root/.agents/skills/migrate-oxfmt/SKILL.md +202 -0
  34. package/templates/admin-root/.agents/skills/migrate-oxlint/SKILL.md +196 -0
  35. package/templates/admin-root/.agents/skills/native-component-doc/SKILL.md +245 -0
  36. package/templates/admin-root/.agents/skills/senior-frontend/SKILL.md +209 -0
  37. package/templates/admin-root/.agents/skills/senior-frontend/references/frontend_best_practices.md +103 -0
  38. package/templates/admin-root/.agents/skills/senior-frontend/references/nextjs_optimization_guide.md +103 -0
  39. package/templates/admin-root/.agents/skills/senior-frontend/references/react_patterns.md +103 -0
  40. package/templates/admin-root/.agents/skills/senior-frontend/scripts/bundle_analyzer.py +114 -0
  41. package/templates/admin-root/.agents/skills/senior-frontend/scripts/component_generator.py +114 -0
  42. package/templates/admin-root/.agents/skills/senior-frontend/scripts/frontend_scaffolder.py +114 -0
  43. package/templates/admin-root/.agents/skills/skill-creator/SKILL.md +355 -0
  44. package/templates/admin-root/.agents/skills/skill-creator/references/output-patterns.md +86 -0
  45. package/templates/admin-root/.agents/skills/skill-creator/references/workflows.md +28 -0
  46. package/templates/admin-root/.agents/skills/skill-creator/scripts/init_skill.py +300 -0
  47. package/templates/admin-root/.agents/skills/skill-creator/scripts/package_skill.py +110 -0
  48. package/templates/admin-root/.agents/skills/skill-creator/scripts/quick_validate.py +97 -0
  49. package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/SKILL.md +163 -0
  50. package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/references/acceptance-checklist.md +75 -0
  51. package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/references/evidence-order.md +109 -0
  52. package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/references/prd-rules.md +103 -0
  53. package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/references/prototype-rules.md +85 -0
  54. package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/scripts/verify-prototypes.mjs +144 -0
  55. package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/templates/admin-page.html +771 -0
  56. package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/templates/prd.md +182 -0
  57. package/templates/admin-root/.agents/skills/ui-ux-pro-max/SKILL.md +292 -0
  58. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/charts.csv +26 -0
  59. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/colors.csv +97 -0
  60. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/icons.csv +101 -0
  61. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/landing.csv +31 -0
  62. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/products.csv +97 -0
  63. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  64. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  65. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  66. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  67. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  68. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  69. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  70. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  71. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  72. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  73. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  74. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  75. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  76. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  77. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/styles.csv +68 -0
  78. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/typography.csv +58 -0
  79. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  80. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  81. package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  82. package/templates/admin-root/.agents/skills/ui-ux-pro-max/scripts/core.py +253 -0
  83. package/templates/admin-root/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  84. package/templates/admin-root/.agents/skills/ui-ux-pro-max/scripts/search.py +114 -0
  85. package/templates/admin-root/.agents/skills/uniwind/SKILL.md +64 -0
  86. package/templates/admin-root/.agents/skills/uniwind/references/component-bindings.md +338 -0
  87. package/templates/admin-root/.agents/skills/uniwind/references/css-and-utilities.md +325 -0
  88. package/templates/admin-root/.agents/skills/uniwind/references/integrations.md +75 -0
  89. package/templates/admin-root/.agents/skills/uniwind/references/pro.md +354 -0
  90. package/templates/admin-root/.agents/skills/uniwind/references/setup.md +144 -0
  91. package/templates/admin-root/.agents/skills/uniwind/references/styling-patterns.md +237 -0
  92. package/templates/admin-root/.agents/skills/uniwind/references/theming.md +309 -0
  93. package/templates/admin-root/.agents/skills/uniwind/references/troubleshooting.md +179 -0
  94. package/templates/admin-root/.agents/skills/uniwind/references/variants-and-selectors.md +224 -0
  95. package/templates/admin-root/.agents/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  96. package/templates/admin-root/.agents/skills/vercel-react-best-practices/SKILL.md +136 -0
  97. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  98. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  99. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  100. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  101. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  102. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  103. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  104. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  105. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  106. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  107. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  108. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  109. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  110. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  111. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  112. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  113. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  114. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  115. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  116. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  117. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  118. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  119. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  120. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  121. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  122. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  123. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  124. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  125. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  126. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  127. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  128. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  129. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  130. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  131. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  132. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  133. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  134. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  135. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  136. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  137. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  138. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  139. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  140. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  141. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  142. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  143. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  144. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  145. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  146. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  147. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  148. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  149. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  150. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  151. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  152. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  153. package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  154. package/templates/admin-root/.claude/settings.json +5 -0
  155. package/templates/admin-root/.claude/skills/component-doc/SKILL.md +304 -0
  156. package/templates/admin-root/.claude/skills/component-refactoring/SKILL.md +483 -0
  157. package/templates/admin-root/.claude/skills/component-refactoring/references/complexity-patterns.md +493 -0
  158. package/templates/admin-root/.claude/skills/component-refactoring/references/component-splitting.md +477 -0
  159. package/templates/admin-root/.claude/skills/component-refactoring/references/hook-extraction.md +317 -0
  160. package/templates/admin-root/.claude/skills/doc-coauthoring/SKILL.md +375 -0
  161. package/templates/admin-root/.claude/skills/feature-dev/SKILL.md +78 -0
  162. package/templates/admin-root/.claude/skills/frontend-code-review/SKILL.md +73 -0
  163. package/templates/admin-root/.claude/skills/frontend-code-review/references/business-logic.md +15 -0
  164. package/templates/admin-root/.claude/skills/frontend-code-review/references/code-quality.md +44 -0
  165. package/templates/admin-root/.claude/skills/frontend-code-review/references/performance.md +45 -0
  166. package/templates/admin-root/.claude/skills/frontend-design/LICENSE.txt +177 -0
  167. package/templates/admin-root/.claude/skills/frontend-design/SKILL.md +42 -0
  168. package/templates/admin-root/.claude/skills/frontend-testing/SKILL.md +325 -0
  169. package/templates/admin-root/.claude/skills/frontend-testing/assets/component-test.template.tsx +293 -0
  170. package/templates/admin-root/.claude/skills/frontend-testing/assets/hook-test.template.ts +207 -0
  171. package/templates/admin-root/.claude/skills/frontend-testing/assets/utility-test.template.ts +154 -0
  172. package/templates/admin-root/.claude/skills/frontend-testing/references/async-testing.md +345 -0
  173. package/templates/admin-root/.claude/skills/frontend-testing/references/checklist.md +205 -0
  174. package/templates/admin-root/.claude/skills/frontend-testing/references/common-patterns.md +449 -0
  175. package/templates/admin-root/.claude/skills/frontend-testing/references/domain-components.md +523 -0
  176. package/templates/admin-root/.claude/skills/frontend-testing/references/mocking.md +512 -0
  177. package/templates/admin-root/.claude/skills/frontend-testing/references/workflow.md +269 -0
  178. package/templates/admin-root/.claude/skills/migrate-nativewind-to-uniwind +1 -0
  179. package/templates/admin-root/.claude/skills/native-component-doc/SKILL.md +245 -0
  180. package/templates/admin-root/.claude/skills/senior-frontend/SKILL.md +209 -0
  181. package/templates/admin-root/.claude/skills/senior-frontend/references/frontend_best_practices.md +103 -0
  182. package/templates/admin-root/.claude/skills/senior-frontend/references/nextjs_optimization_guide.md +103 -0
  183. package/templates/admin-root/.claude/skills/senior-frontend/references/react_patterns.md +103 -0
  184. package/templates/admin-root/.claude/skills/senior-frontend/scripts/bundle_analyzer.py +114 -0
  185. package/templates/admin-root/.claude/skills/senior-frontend/scripts/component_generator.py +114 -0
  186. package/templates/admin-root/.claude/skills/senior-frontend/scripts/frontend_scaffolder.py +114 -0
  187. package/templates/admin-root/.claude/skills/skill-creator/SKILL.md +355 -0
  188. package/templates/admin-root/.claude/skills/skill-creator/references/output-patterns.md +86 -0
  189. package/templates/admin-root/.claude/skills/skill-creator/references/workflows.md +28 -0
  190. package/templates/admin-root/.claude/skills/skill-creator/scripts/init_skill.py +300 -0
  191. package/templates/admin-root/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  192. package/templates/admin-root/.claude/skills/skill-creator/scripts/quick_validate.py +97 -0
  193. package/templates/admin-root/.claude/skills/ui-ux-pro-max/SKILL.md +386 -0
  194. package/templates/admin-root/.claude/skills/ui-ux-pro-max/data +1 -0
  195. package/templates/admin-root/.claude/skills/ui-ux-pro-max/scripts +1 -0
  196. package/templates/admin-root/.claude/skills/uniwind +1 -0
  197. package/templates/admin-root/.claude/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  198. package/templates/admin-root/.claude/skills/vercel-react-best-practices/SKILL.md +136 -0
  199. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  200. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  201. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  202. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  203. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  204. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  205. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  206. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  207. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  208. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  209. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  210. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  211. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  212. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  213. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  214. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  215. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  216. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  217. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  218. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  219. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  220. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  221. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  222. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  223. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  224. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  225. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  226. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  227. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  228. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  229. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  230. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  231. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  232. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  233. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  234. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  235. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  236. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  237. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  238. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  239. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  240. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  241. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  242. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  243. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  244. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  245. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  246. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  247. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  248. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  249. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  250. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  251. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  252. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  253. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  254. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  255. package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  256. package/templates/admin-root/.cursor/settings.json +10 -0
  257. package/templates/admin-root/.editorconfig +19 -0
  258. package/templates/admin-root/.gitattributes +16 -0
  259. package/templates/admin-root/.oxfmtrc.json +35 -0
  260. package/templates/admin-root/AGENTS.md +297 -0
  261. package/templates/admin-root/CLAUDE.md +1 -0
  262. package/templates/admin-root/skills-lock.json +27 -0
  263. package/templates/admin-root.manifest.json +1317 -0
  264. package/templates/admin.meta.json +9 -4
  265. package/LICENSE +0 -21
@@ -0,0 +1,325 @@
1
+ ## CSS Functions
2
+
3
+ Uniwind provides CSS functions for device-aware and theme-aware styling. These can be used everywhere (custom CSS classes, `@utility`, etc.) — but NOT inside `@theme {}` (which only accepts static values). Use `@utility` to create reusable Tailwind-style utility classes:
4
+
5
+ ### hairlineWidth()
6
+
7
+ Returns the thinnest line width displayable on the device. Use for subtle borders and dividers.
8
+
9
+ ```css
10
+ @utility h-hairline { height: hairlineWidth(); }
11
+ @utility border-hairline { border-width: hairlineWidth(); }
12
+ @utility w-hairline { width: calc(hairlineWidth() * 10); }
13
+ ```
14
+
15
+ ```tsx
16
+ <View className="h-hairline bg-gray-300" />
17
+ <View className="border-hairline border-gray-200 rounded-lg p-4" />
18
+ ```
19
+
20
+ ### fontScale(multiplier?)
21
+
22
+ Multiplies a base value by the device's font scale accessibility setting. Ensures text respects user preferences for larger or smaller text.
23
+
24
+ - **`fontScale()`** — uses multiplier 1 (device font scale × 1)
25
+ - **`fontScale(0.9)`** — smaller scale
26
+ - **`fontScale(1.2)`** — larger scale
27
+
28
+ ```css
29
+ @utility text-sm-scaled { font-size: fontScale(0.9); }
30
+ @utility text-base-scaled { font-size: fontScale(); }
31
+ @utility text-lg-scaled { font-size: fontScale(1.2); }
32
+ ```
33
+
34
+ ```tsx
35
+ <Text className="text-sm-scaled text-gray-600">Small accessible text</Text>
36
+ <Text className="text-base-scaled">Regular accessible text</Text>
37
+ ```
38
+
39
+ ### pixelRatio(multiplier?)
40
+
41
+ Multiplies a value by the device's pixel ratio. Creates pixel-perfect designs that scale across screen densities.
42
+
43
+ - **`pixelRatio()`** — uses multiplier 1 (device pixel ratio × 1)
44
+ - **`pixelRatio(2)`** — double the pixel ratio
45
+
46
+ ```css
47
+ @utility w-icon { width: pixelRatio(); }
48
+ @utility w-avatar { width: pixelRatio(2); }
49
+ ```
50
+
51
+ ```tsx
52
+ <Image source={{ uri: 'avatar.png' }} className="w-avatar rounded-full" />
53
+ ```
54
+
55
+ ### light-dark(lightValue, darkValue)
56
+
57
+ Returns different values based on the current theme mode. Automatically adapts when the theme changes — no manual switching logic needed.
58
+
59
+ - First parameter: value for light theme
60
+ - Second parameter: value for dark theme
61
+
62
+ ```css
63
+ @utility bg-adaptive { background-color: light-dark(#ffffff, #1f2937); }
64
+ @utility text-adaptive { color: light-dark(#111827, #f9fafb); }
65
+ @utility border-adaptive { border-color: light-dark(#e5e7eb, #374151); }
66
+ ```
67
+
68
+ ```tsx
69
+ <View className="bg-adaptive border-adaptive border rounded-lg p-4">
70
+ <Text className="text-adaptive">Adapts to light/dark theme</Text>
71
+ </View>
72
+ ```
73
+
74
+ Also works in custom CSS classes (not just `@utility`):
75
+
76
+ ```css
77
+ .adaptive-card {
78
+ background-color: light-dark(#ffffff, #1f2937);
79
+ color: light-dark(#111827, #f9fafb);
80
+ }
81
+ ```
82
+
83
+ ## Custom CSS & Utilities
84
+
85
+ ### Custom CSS Classes
86
+
87
+ Uniwind supports custom CSS class names defined in `global.css`. They are compiled at build time — no runtime overhead. Use them when you need styles that are hard to express as Tailwind utilities (e.g., complex box-shadow, multi-property bundles).
88
+
89
+ ```css
90
+ /* global.css */
91
+ .card-shadow {
92
+ background-color: white;
93
+ border-radius: 12px;
94
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
95
+ }
96
+
97
+ .adaptive-surface {
98
+ background-color: light-dark(#ffffff, #1f2937);
99
+ color: light-dark(#111827, #f9fafb);
100
+ }
101
+
102
+ .container {
103
+ flex: 1;
104
+ width: 100%;
105
+ max-width: 1200px;
106
+ }
107
+ ```
108
+
109
+ Apply via `className` just like any Tailwind class:
110
+
111
+ ```tsx
112
+ <View className="card-shadow" />
113
+ ```
114
+
115
+ ### Mixing Custom CSS with Tailwind
116
+
117
+ You can combine custom CSS classes with Tailwind utilities in a single `className`:
118
+
119
+ ```tsx
120
+ <View className="card-shadow p-4 m-2">
121
+ <Text className="adaptive-surface mb-2">{title}</Text>
122
+ <View className="container flex-row">{children}</View>
123
+ </View>
124
+ ```
125
+
126
+ **WARNING**: If a custom CSS class and a Tailwind utility set the **same property**, you **MUST** use `cn()` to deduplicate. Without `cn()`, both values apply and the result is unpredictable:
127
+
128
+ ```tsx
129
+ // WRONG — .container sets flex:1, and flex-1 also sets flex:1 (harmless but wasteful)
130
+ // WRONG — .container sets width:100%, and w-full also sets width:100% (redundant)
131
+ // DANGEROUS — .card-shadow sets border-radius:12px, and rounded-2xl sets border-radius:16px — CONFLICT!
132
+ <View className="card-shadow rounded-2xl" />
133
+
134
+ // CORRECT — cn ensures rounded-2xl wins
135
+ import { cn } from '@/lib/cn';
136
+ <View className={cn('card-shadow', 'rounded-2xl')} />
137
+ ```
138
+
139
+ **Rule of thumb**: If your custom CSS class sets properties that might overlap with Tailwind utilities you'll also use, always wrap with `cn()`. See **cn Utility** section for full setup.
140
+
141
+ ### Guidelines for Custom CSS
142
+
143
+ - Keep selectors flat — no deep nesting or child selectors
144
+ - Prefer Tailwind utilities for simple, single-property styles
145
+ - Use custom classes for complex or multi-property bundles that would be verbose in className
146
+ - Use `light-dark()` for theme-aware custom classes
147
+ - Custom classes are great for shared design tokens that don't fit Tailwind's naming (e.g., `.card`, `.chip`, `.badge-dot`)
148
+
149
+ ### Custom Utilities (@utility)
150
+
151
+ The `@utility` directive creates utility classes that work exactly like built-in Tailwind classes. Three main use cases:
152
+
153
+ #### 1. Variable-driven utilities (runtime-injected values)
154
+
155
+ Create a utility whose value comes from a CSS variable injected at runtime via `updateCSSVariables`. Use `@theme static` to declare the variable so Uniwind tracks it even before it is updated:
156
+
157
+ ```css
158
+ /* global.css */
159
+ @theme static {
160
+ --header-height: 0px;
161
+ }
162
+
163
+ @utility p-safe-header {
164
+ padding-top: var(--header-height);
165
+ }
166
+ ```
167
+
168
+ Inject the real value at runtime (e.g., from react-navigation's layout event):
169
+
170
+ ```tsx
171
+ import { Uniwind } from 'uniwind'
172
+
173
+ // e.g., inside a navigation layout listener
174
+ Uniwind.updateCSSVariables(Uniwind.currentTheme, {
175
+ '--header-height': headerHeight,
176
+ })
177
+ ```
178
+
179
+ ```tsx
180
+ <View className="p-safe-header flex-1" />
181
+ ```
182
+
183
+ #### 2. Brand-new utilities (no Tailwind equivalent)
184
+
185
+ For styles that have no built-in Tailwind class:
186
+
187
+ ```css
188
+ @utility h-hairline { height: hairlineWidth(); }
189
+ @utility text-scaled { font-size: fontScale(); }
190
+ @utility card-shadow {
191
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
192
+ }
193
+ ```
194
+
195
+ Usage like any Tailwind class: `<View className="h-hairline card-shadow" />`
196
+
197
+ #### 3. Overriding existing Tailwind utilities
198
+
199
+ Use `@utility` to completely replace what a built-in class does. Example: make `border` always use `--color-primary`:
200
+
201
+ ```css
202
+ @utility border {
203
+ border-width: 1px;
204
+ border-style: solid;
205
+ border-color: var(--color-primary);
206
+ }
207
+ ```
208
+
209
+ ## @theme Directive
210
+
211
+ Customize Tailwind design tokens in `global.css`:
212
+
213
+ ```css
214
+ @theme {
215
+ /* Colors */
216
+ --color-primary: #3b82f6;
217
+ --color-brand-500: #3b82f6;
218
+ --color-brand-900: #1e3a8a;
219
+
220
+ /* Typography */
221
+ --font-sans: 'Roboto-Regular';
222
+ --font-sans-medium: 'Roboto-Medium';
223
+ --font-sans-bold: 'Roboto-Bold';
224
+ --font-mono: 'FiraCode-Regular';
225
+
226
+ /* Spacing & sizing */
227
+ --text-base: 15px;
228
+ --spacing-4: 16px;
229
+ --radius-lg: 12px;
230
+
231
+ /* Breakpoints */
232
+ --breakpoint-tablet: 820px;
233
+ }
234
+ ```
235
+
236
+ Usage: `bg-brand-500`, `text-brand-900`, `font-sans`, `font-mono`, `rounded-lg`.
237
+
238
+ ## Fonts
239
+
240
+ React Native requires a **single font** per family — no fallbacks:
241
+
242
+ ```css
243
+ @theme {
244
+ --font-sans: 'Roboto-Regular';
245
+ --font-sans-bold: 'Roboto-Bold';
246
+ --font-mono: 'FiraCode-Regular';
247
+ }
248
+ ```
249
+
250
+ Font name must **exactly match** the font file name (without extension).
251
+
252
+ **Expo**: Configure fonts in `app.json` with the `expo-font` plugin, then reference in CSS.
253
+
254
+ **Bare RN**: Use `react-native-asset` to link fonts, same CSS config.
255
+
256
+ **Platform-specific fonts** (use `@variant`, not `@media`):
257
+
258
+ ```css
259
+ @layer theme {
260
+ :root {
261
+ @variant ios { --font-sans: 'SF Pro Text'; }
262
+ @variant android { --font-sans: 'Roboto-Regular'; }
263
+ @variant web { --font-sans: 'system-ui'; }
264
+ }
265
+ }
266
+ ```
267
+
268
+ ## Gradients
269
+
270
+ Built-in support — no extra dependencies:
271
+
272
+ ```tsx
273
+ <View className="bg-gradient-to-r from-red-500 via-yellow-500 to-green-500 p-4 rounded-lg">
274
+ <Text className="text-white font-bold">Gradient</Text>
275
+ </View>
276
+ ```
277
+
278
+ For `expo-linear-gradient`, you can wrap it with `withUniwind` for className-based layout and styling (padding, border-radius, flex, etc.), but the `colors` prop is an array that cannot be resolved via className — it must be provided explicitly. Use `useCSSVariable` to get theme-aware colors:
279
+
280
+ ```tsx
281
+ import { useCSSVariable } from 'uniwind';
282
+ import { withUniwind } from 'uniwind';
283
+ import { LinearGradient as RNLinearGradient } from 'expo-linear-gradient';
284
+
285
+ const LinearGradient = withUniwind(RNLinearGradient);
286
+
287
+ function GradientCard() {
288
+ // useCSSVariable returns string | number | undefined
289
+ const primary = useCSSVariable('--color-primary');
290
+ const secondary = useCSSVariable('--color-secondary');
291
+
292
+ // Guard against undefined — LinearGradient.colors requires valid ColorValues
293
+ if (!primary || !secondary) {
294
+ return null;
295
+ }
296
+
297
+ return (
298
+ <LinearGradient
299
+ className="flex-1 rounded-2xl p-6"
300
+ colors={[primary as string, secondary as string]}
301
+ >
302
+ <Text className="text-white font-bold">Themed gradient</Text>
303
+ </LinearGradient>
304
+ );
305
+ }
306
+ ```
307
+
308
+ Alternatively, export a wrapped component from a shared module for reuse:
309
+
310
+ ```tsx
311
+ // components/styled.ts
312
+ import { withUniwind } from 'uniwind';
313
+ import { LinearGradient as RNLinearGradient } from 'expo-linear-gradient';
314
+
315
+ export const LinearGradient = withUniwind(RNLinearGradient);
316
+ ```
317
+
318
+ ```tsx
319
+ // usage — className handles layout, colors still passed manually
320
+ import { LinearGradient } from '@/components/styled';
321
+
322
+ <LinearGradient className="rounded-xl p-4" colors={['#ff6b6b', '#4ecdc4']}>
323
+ <Text className="text-white">Static gradient</Text>
324
+ </LinearGradient>
325
+ ```
@@ -0,0 +1,75 @@
1
+ ## React Navigation Integration
2
+
3
+ Use `useResolveClassNames` for screen options that only accept `style` objects:
4
+
5
+ ```tsx
6
+ import { useResolveClassNames } from 'uniwind';
7
+
8
+ function Layout() {
9
+ const headerStyle = useResolveClassNames('bg-background');
10
+ const headerTitleStyle = useResolveClassNames('text-foreground font-bold');
11
+
12
+ return (
13
+ <Stack.Navigator
14
+ screenOptions={{
15
+ headerStyle,
16
+ headerTitleStyle,
17
+ }}
18
+ />
19
+ );
20
+ }
21
+ ```
22
+
23
+ Keep React Navigation's `<ThemeProvider>` if already in use — it manages navigation-specific theming.
24
+
25
+ ## UI Kit Compatibility
26
+
27
+ - **HeroUI Native**: Works with Uniwind. Uses `tailwind-variants` (tv) internally. Apply `className` directly on HeroUI components. **Bun users**: Bun uses symlinks for `node_modules`, which can cause Tailwind's Oxide scanner to miss library classes in production builds. Fix: use the resolved path in `@source` and hoist the package:
28
+ ```css
29
+ @source "../../node_modules/heroui-native/lib";
30
+ ```
31
+ ```ini
32
+ # .npmrc
33
+ public-hoist-pattern[]=heroui-native
34
+ ```
35
+ - **react-native-reusables**: Compatible.
36
+ - **Gluestack v4.1+**: Compatible.
37
+ - **Lucide React Native**: Use `withUniwind(LucideIcon)` with `colorClassName="accent-blue-500"` for icon color. Works for all Lucide icons.
38
+ - **@shopify/flash-list**: Use `withUniwind(FlashList)` for `className` and `contentContainerClassName` support. Note: `withUniwind` loses generic type params on `ref` — cast manually if needed.
39
+
40
+ Use semantic color tokens (`bg-primary`, `text-foreground`) for theme consistency across UI kits.
41
+
42
+ ## Supported vs Unsupported Classes
43
+
44
+ React Native uses the Yoga layout engine. Key differences from web CSS:
45
+ - **No CSS cascade/inheritance** — styles don't inherit from parents
46
+ - **Flexbox by default** — all views use flexbox with `flexDirection: 'column'`
47
+ - **Limited CSS properties** — no floats, grid, pseudo-elements
48
+
49
+ ### Built-in Extra Utilities
50
+
51
+ Uniwind provides additional utility classes for React Native features not covered by standard Tailwind:
52
+
53
+ | Class | Effect |
54
+ |-------|--------|
55
+ | `border-continuous` | Sets `borderCurve: 'continuous'` — smooth, superellipse corners (iOS) |
56
+ | `border-circular` | Sets `borderCurve: 'circular'` — standard circular corners (iOS default) |
57
+
58
+ ```tsx
59
+ // Smooth iOS-style rounded corners (like SwiftUI's .continuous)
60
+ <View className="rounded-2xl border-continuous bg-card p-4">
61
+ <Text className="text-foreground">Smooth corners</Text>
62
+ </View>
63
+ ```
64
+
65
+ ### Supported (all standard Tailwind)
66
+
67
+ Layout, spacing, sizing, typography, colors, borders, effects, flexbox, positioning, transforms, interactive states.
68
+
69
+ ### Unsupported (web-specific, silently ignored)
70
+
71
+ - `hover:` `visited:` — use Pressable `active:` instead
72
+ - `before:` `after:` `placeholder:` — pseudo-elements
73
+ - `float-*` `clear-*` `columns-*`
74
+ - `print:` `screen:`
75
+ - `break-before-*` `break-after-*` `break-inside-*`