@auto-engineer/react-gen 1.134.0

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 (794) hide show
  1. package/dist/skills/design/SKILL.md +302 -0
  2. package/dist/skills/design/data/cip/deliverables.csv +51 -0
  3. package/dist/skills/design/data/cip/industries.csv +21 -0
  4. package/dist/skills/design/data/cip/mockup-contexts.csv +21 -0
  5. package/dist/skills/design/data/cip/styles.csv +21 -0
  6. package/dist/skills/design/data/icon/styles.csv +16 -0
  7. package/dist/skills/design/data/logo/colors.csv +56 -0
  8. package/dist/skills/design/data/logo/industries.csv +56 -0
  9. package/dist/skills/design/data/logo/styles.csv +56 -0
  10. package/dist/skills/design/references/banner-sizes-and-styles.md +118 -0
  11. package/dist/skills/design/references/cip-deliverable-guide.md +95 -0
  12. package/dist/skills/design/references/cip-design.md +121 -0
  13. package/dist/skills/design/references/cip-prompt-engineering.md +84 -0
  14. package/dist/skills/design/references/cip-style-guide.md +68 -0
  15. package/dist/skills/design/references/design-routing.md +207 -0
  16. package/dist/skills/design/references/icon-design.md +122 -0
  17. package/dist/skills/design/references/logo-color-psychology.md +101 -0
  18. package/dist/skills/design/references/logo-design.md +92 -0
  19. package/dist/skills/design/references/logo-prompt-engineering.md +158 -0
  20. package/dist/skills/design/references/logo-style-guide.md +109 -0
  21. package/dist/skills/design/references/slides-copywriting-formulas.md +84 -0
  22. package/dist/skills/design/references/slides-create.md +4 -0
  23. package/dist/skills/design/references/slides-html-template.md +295 -0
  24. package/dist/skills/design/references/slides-layout-patterns.md +137 -0
  25. package/dist/skills/design/references/slides-strategies.md +94 -0
  26. package/dist/skills/design/references/slides.md +42 -0
  27. package/dist/skills/design/references/social-photos-design.md +329 -0
  28. package/dist/skills/design/scripts/cip/core.py +215 -0
  29. package/dist/skills/design/scripts/cip/generate.py +484 -0
  30. package/dist/skills/design/scripts/cip/render-html.py +424 -0
  31. package/dist/skills/design/scripts/cip/search.py +127 -0
  32. package/dist/skills/design/scripts/icon/generate.py +487 -0
  33. package/dist/skills/design/scripts/logo/core.py +175 -0
  34. package/dist/skills/design/scripts/logo/generate.py +362 -0
  35. package/dist/skills/design/scripts/logo/search.py +114 -0
  36. package/dist/skills/design-system/SKILL.md +244 -0
  37. package/dist/skills/design-system/data/slide-backgrounds.csv +11 -0
  38. package/dist/skills/design-system/data/slide-charts.csv +26 -0
  39. package/dist/skills/design-system/data/slide-color-logic.csv +14 -0
  40. package/dist/skills/design-system/data/slide-copy.csv +26 -0
  41. package/dist/skills/design-system/data/slide-layout-logic.csv +16 -0
  42. package/dist/skills/design-system/data/slide-layouts.csv +26 -0
  43. package/dist/skills/design-system/data/slide-strategies.csv +16 -0
  44. package/dist/skills/design-system/data/slide-typography.csv +15 -0
  45. package/dist/skills/design-system/references/component-specs.md +236 -0
  46. package/dist/skills/design-system/references/component-tokens.md +214 -0
  47. package/dist/skills/design-system/references/primitive-tokens.md +203 -0
  48. package/dist/skills/design-system/references/semantic-tokens.md +215 -0
  49. package/dist/skills/design-system/references/states-and-variants.md +241 -0
  50. package/dist/skills/design-system/references/tailwind-integration.md +251 -0
  51. package/dist/skills/design-system/references/token-architecture.md +224 -0
  52. package/dist/skills/design-system/scripts/embed-tokens.cjs +97 -0
  53. package/dist/skills/design-system/scripts/fetch-background.py +317 -0
  54. package/dist/skills/design-system/scripts/generate-slide.py +753 -0
  55. package/dist/skills/design-system/scripts/generate-tokens.cjs +213 -0
  56. package/dist/skills/design-system/scripts/html-token-validator.py +327 -0
  57. package/dist/skills/design-system/scripts/search-slides.py +218 -0
  58. package/dist/skills/design-system/scripts/slide-token-validator.py +35 -0
  59. package/dist/skills/design-system/scripts/slide_search_core.py +453 -0
  60. package/dist/skills/design-system/scripts/validate-tokens.cjs +251 -0
  61. package/dist/skills/design-system/templates/design-tokens-starter.json +143 -0
  62. package/dist/skills/design-taste-frontend/SKILL.md +79 -0
  63. package/dist/skills/emil-design-engineering/SKILL.md +108 -0
  64. package/dist/skills/emil-design-engineering/animations.md +266 -0
  65. package/dist/skills/emil-design-engineering/component-design.md +382 -0
  66. package/dist/skills/emil-design-engineering/forms-controls.md +261 -0
  67. package/dist/skills/emil-design-engineering/marketing.md +160 -0
  68. package/dist/skills/emil-design-engineering/performance.md +222 -0
  69. package/dist/skills/emil-design-engineering/touch-accessibility.md +236 -0
  70. package/dist/skills/emil-design-engineering/ui-polish.md +303 -0
  71. package/dist/skills/frontend-design/SKILL.md +42 -0
  72. package/dist/skills/full-output-enforcement/SKILL.md +32 -0
  73. package/dist/skills/high-end-visual-design/SKILL.md +98 -0
  74. package/dist/skills/react-doctor/AGENTS.md +15 -0
  75. package/dist/skills/react-doctor/SKILL.md +19 -0
  76. package/dist/skills/redesign-existing-projects/SKILL.md +178 -0
  77. package/dist/skills/ui-styling/LICENSE.txt +202 -0
  78. package/dist/skills/ui-styling/SKILL.md +324 -0
  79. package/dist/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  80. package/dist/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  81. package/dist/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  82. package/dist/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  83. package/dist/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  84. package/dist/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  85. package/dist/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  86. package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  87. package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  88. package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  89. package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  90. package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  91. package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  92. package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  93. package/dist/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  94. package/dist/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  95. package/dist/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  96. package/dist/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  97. package/dist/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  98. package/dist/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  99. package/dist/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  100. package/dist/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  101. package/dist/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  102. package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  103. package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  104. package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  105. package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  106. package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  107. package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  108. package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  109. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  110. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  111. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  112. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  113. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  114. package/dist/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  115. package/dist/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  116. package/dist/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  117. package/dist/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  118. package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  119. package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  120. package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  121. package/dist/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  122. package/dist/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  123. package/dist/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  124. package/dist/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  125. package/dist/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  126. package/dist/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  127. package/dist/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  128. package/dist/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  129. package/dist/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  130. package/dist/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  131. package/dist/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  132. package/dist/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  133. package/dist/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  134. package/dist/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  135. package/dist/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  136. package/dist/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  137. package/dist/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  138. package/dist/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  139. package/dist/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  140. package/dist/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  141. package/dist/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  142. package/dist/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  143. package/dist/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  144. package/dist/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  145. package/dist/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  146. package/dist/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  147. package/dist/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  148. package/dist/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  149. package/dist/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  150. package/dist/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  151. package/dist/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  152. package/dist/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  153. package/dist/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  154. package/dist/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  155. package/dist/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  156. package/dist/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  157. package/dist/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  158. package/dist/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  159. package/dist/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  160. package/dist/skills/ui-styling/references/canvas-design-system.md +320 -0
  161. package/dist/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  162. package/dist/skills/ui-styling/references/shadcn-components.md +424 -0
  163. package/dist/skills/ui-styling/references/shadcn-theming.md +373 -0
  164. package/dist/skills/ui-styling/references/tailwind-customization.md +483 -0
  165. package/dist/skills/ui-styling/references/tailwind-responsive.md +382 -0
  166. package/dist/skills/ui-styling/references/tailwind-utilities.md +455 -0
  167. package/dist/skills/ui-styling/scripts/.coverage +0 -0
  168. package/dist/skills/ui-styling/scripts/requirements.txt +17 -0
  169. package/dist/skills/ui-styling/scripts/shadcn_add.py +292 -0
  170. package/dist/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  171. package/dist/skills/ui-styling/scripts/tests/coverage-ui.json +1392 -0
  172. package/dist/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  173. package/dist/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  174. package/dist/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  175. package/dist/skills/ui-ux-pro-max/SKILL.md +659 -0
  176. package/dist/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
  177. package/dist/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
  178. package/dist/skills/ui-ux-pro-max/data/charts.csv +26 -0
  179. package/dist/skills/ui-ux-pro-max/data/colors.csv +162 -0
  180. package/dist/skills/ui-ux-pro-max/data/design.csv +1776 -0
  181. package/dist/skills/ui-ux-pro-max/data/draft.csv +1779 -0
  182. package/dist/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
  183. package/dist/skills/ui-ux-pro-max/data/icons.csv +106 -0
  184. package/dist/skills/ui-ux-pro-max/data/landing.csv +35 -0
  185. package/dist/skills/ui-ux-pro-max/data/products.csv +162 -0
  186. package/dist/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  187. package/dist/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  188. package/dist/skills/ui-ux-pro-max/data/styles.csv +85 -0
  189. package/dist/skills/ui-ux-pro-max/data/typography.csv +74 -0
  190. package/dist/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
  191. package/dist/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  192. package/dist/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  193. package/dist/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  194. package/dist/skills/ui-ux-pro-max/scripts/core.py +247 -0
  195. package/dist/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  196. package/dist/skills/ui-ux-pro-max/scripts/search.py +114 -0
  197. package/dist/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  198. package/dist/skills/vercel-react-best-practices/README.md +123 -0
  199. package/dist/skills/vercel-react-best-practices/SKILL.md +136 -0
  200. package/dist/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  201. package/dist/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  202. package/dist/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  203. package/dist/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  204. package/dist/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  205. package/dist/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  206. package/dist/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  207. package/dist/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  208. package/dist/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  209. package/dist/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  210. package/dist/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  211. package/dist/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  212. package/dist/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  213. package/dist/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  214. package/dist/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  215. package/dist/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  216. package/dist/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  217. package/dist/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  218. package/dist/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  219. package/dist/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  220. package/dist/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  221. package/dist/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  222. package/dist/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  223. package/dist/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  224. package/dist/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  225. package/dist/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  226. package/dist/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  227. package/dist/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  228. package/dist/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  229. package/dist/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  230. package/dist/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  231. package/dist/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  232. package/dist/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  233. package/dist/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  234. package/dist/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  235. package/dist/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  236. package/dist/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  237. package/dist/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  238. package/dist/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  239. package/dist/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  240. package/dist/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  241. package/dist/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  242. package/dist/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  243. package/dist/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  244. package/dist/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  245. package/dist/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  246. package/dist/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  247. package/dist/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  248. package/dist/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  249. package/dist/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  250. package/dist/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  251. package/dist/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  252. package/dist/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  253. package/dist/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  254. package/dist/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  255. package/dist/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  256. package/dist/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  257. package/dist/skills/web-animation-design/PRACTICAL-TIPS.md +304 -0
  258. package/dist/skills/web-animation-design/SKILL.md +336 -0
  259. package/dist/skills/web-design-guidelines/SKILL.md +39 -0
  260. package/dist/src/agents/create-constants-agent.d.ts +6 -0
  261. package/dist/src/agents/create-constants-agent.d.ts.map +1 -0
  262. package/dist/src/agents/create-constants-agent.js +42 -0
  263. package/dist/src/agents/create-constants-agent.js.map +1 -0
  264. package/dist/src/agents/create-landing-page-agent.d.ts +4 -0
  265. package/dist/src/agents/create-landing-page-agent.d.ts.map +1 -0
  266. package/dist/src/agents/create-landing-page-agent.js +62 -0
  267. package/dist/src/agents/create-landing-page-agent.js.map +1 -0
  268. package/dist/src/agents/create-narrative-agent.d.ts +4 -0
  269. package/dist/src/agents/create-narrative-agent.d.ts.map +1 -0
  270. package/dist/src/agents/create-narrative-agent.js +36 -0
  271. package/dist/src/agents/create-narrative-agent.js.map +1 -0
  272. package/dist/src/agents/create-pipeline.d.ts +9 -0
  273. package/dist/src/agents/create-pipeline.d.ts.map +1 -0
  274. package/dist/src/agents/create-pipeline.js +28 -0
  275. package/dist/src/agents/create-pipeline.js.map +1 -0
  276. package/dist/src/agents/create-router-agent.d.ts +4 -0
  277. package/dist/src/agents/create-router-agent.d.ts.map +1 -0
  278. package/dist/src/agents/create-router-agent.js +46 -0
  279. package/dist/src/agents/create-router-agent.js.map +1 -0
  280. package/dist/src/agents/create-theme-agent.d.ts +4 -0
  281. package/dist/src/agents/create-theme-agent.d.ts.map +1 -0
  282. package/dist/src/agents/create-theme-agent.js +105 -0
  283. package/dist/src/agents/create-theme-agent.js.map +1 -0
  284. package/dist/src/agents/create-validation-agent.d.ts +4 -0
  285. package/dist/src/agents/create-validation-agent.d.ts.map +1 -0
  286. package/dist/src/agents/create-validation-agent.js +36 -0
  287. package/dist/src/agents/create-validation-agent.js.map +1 -0
  288. package/dist/src/agents/scaffold-agent.d.ts +5 -0
  289. package/dist/src/agents/scaffold-agent.d.ts.map +1 -0
  290. package/dist/src/agents/scaffold-agent.js +11 -0
  291. package/dist/src/agents/scaffold-agent.js.map +1 -0
  292. package/dist/src/commands/generate-react-app.d.ts +27 -0
  293. package/dist/src/commands/generate-react-app.d.ts.map +1 -0
  294. package/dist/src/commands/generate-react-app.js +92 -0
  295. package/dist/src/commands/generate-react-app.js.map +1 -0
  296. package/dist/src/config.d.ts +3 -0
  297. package/dist/src/config.d.ts.map +1 -0
  298. package/dist/src/config.js +15 -0
  299. package/dist/src/config.js.map +1 -0
  300. package/dist/src/index.d.ts +10 -0
  301. package/dist/src/index.d.ts.map +1 -0
  302. package/dist/src/index.js +4 -0
  303. package/dist/src/index.js.map +1 -0
  304. package/dist/src/prompts/build-narrative-context.d.ts +3 -0
  305. package/dist/src/prompts/build-narrative-context.d.ts.map +1 -0
  306. package/dist/src/prompts/build-narrative-context.js +103 -0
  307. package/dist/src/prompts/build-narrative-context.js.map +1 -0
  308. package/dist/src/prompts/landing-page-system.d.ts +2 -0
  309. package/dist/src/prompts/landing-page-system.d.ts.map +1 -0
  310. package/dist/src/prompts/landing-page-system.js +63 -0
  311. package/dist/src/prompts/landing-page-system.js.map +1 -0
  312. package/dist/src/prompts/narrative-system.d.ts +2 -0
  313. package/dist/src/prompts/narrative-system.d.ts.map +1 -0
  314. package/dist/src/prompts/narrative-system.js +52 -0
  315. package/dist/src/prompts/narrative-system.js.map +1 -0
  316. package/dist/src/prompts/router-system.d.ts +2 -0
  317. package/dist/src/prompts/router-system.d.ts.map +1 -0
  318. package/dist/src/prompts/router-system.js +35 -0
  319. package/dist/src/prompts/router-system.js.map +1 -0
  320. package/dist/src/prompts/theme-system.d.ts +2 -0
  321. package/dist/src/prompts/theme-system.d.ts.map +1 -0
  322. package/dist/src/prompts/theme-system.js +126 -0
  323. package/dist/src/prompts/theme-system.js.map +1 -0
  324. package/dist/src/prompts/validation-system.d.ts +2 -0
  325. package/dist/src/prompts/validation-system.d.ts.map +1 -0
  326. package/dist/src/prompts/validation-system.js +28 -0
  327. package/dist/src/prompts/validation-system.js.map +1 -0
  328. package/dist/src/tools/check-imports.d.ts +6 -0
  329. package/dist/src/tools/check-imports.d.ts.map +1 -0
  330. package/dist/src/tools/check-imports.js +129 -0
  331. package/dist/src/tools/check-imports.js.map +1 -0
  332. package/dist/src/tools/exit-loop.d.ts +6 -0
  333. package/dist/src/tools/exit-loop.d.ts.map +1 -0
  334. package/dist/src/tools/exit-loop.js +12 -0
  335. package/dist/src/tools/exit-loop.js.map +1 -0
  336. package/dist/src/tools/list-files.d.ts +4 -0
  337. package/dist/src/tools/list-files.d.ts.map +1 -0
  338. package/dist/src/tools/list-files.js +36 -0
  339. package/dist/src/tools/list-files.js.map +1 -0
  340. package/dist/src/tools/read-file.d.ts +10 -0
  341. package/dist/src/tools/read-file.d.ts.map +1 -0
  342. package/dist/src/tools/read-file.js +21 -0
  343. package/dist/src/tools/read-file.js.map +1 -0
  344. package/dist/src/tools/run-eslint.d.ts +6 -0
  345. package/dist/src/tools/run-eslint.d.ts.map +1 -0
  346. package/dist/src/tools/run-eslint.js +27 -0
  347. package/dist/src/tools/run-eslint.js.map +1 -0
  348. package/dist/src/tools/run-tsc.d.ts +6 -0
  349. package/dist/src/tools/run-tsc.d.ts.map +1 -0
  350. package/dist/src/tools/run-tsc.js +27 -0
  351. package/dist/src/tools/run-tsc.js.map +1 -0
  352. package/dist/src/tools/write-file.d.ts +15 -0
  353. package/dist/src/tools/write-file.d.ts.map +1 -0
  354. package/dist/src/tools/write-file.js +44 -0
  355. package/dist/src/tools/write-file.js.map +1 -0
  356. package/dist/src/types.d.ts +330 -0
  357. package/dist/src/types.d.ts.map +1 -0
  358. package/dist/src/types.js +102 -0
  359. package/dist/src/types.js.map +1 -0
  360. package/dist/src/utils/create-skill-tool.d.ts +2 -0
  361. package/dist/src/utils/create-skill-tool.d.ts.map +1 -0
  362. package/dist/src/utils/create-skill-tool.js +13 -0
  363. package/dist/src/utils/create-skill-tool.js.map +1 -0
  364. package/dist/src/utils/parse-model.d.ts +3 -0
  365. package/dist/src/utils/parse-model.d.ts.map +1 -0
  366. package/dist/src/utils/parse-model.js +7 -0
  367. package/dist/src/utils/parse-model.js.map +1 -0
  368. package/dist/src/utils/slugify.d.ts +2 -0
  369. package/dist/src/utils/slugify.d.ts.map +1 -0
  370. package/dist/src/utils/slugify.js +7 -0
  371. package/dist/src/utils/slugify.js.map +1 -0
  372. package/dist/starter/.env.example +1 -0
  373. package/dist/starter/README.md +73 -0
  374. package/dist/starter/components.json +21 -0
  375. package/dist/starter/eslint.config.js +23 -0
  376. package/dist/starter/index.html +13 -0
  377. package/dist/starter/package-lock.json +7590 -0
  378. package/dist/starter/package.json +57 -0
  379. package/dist/starter/pnpm-lock.yaml +4479 -0
  380. package/dist/starter/public/favicon.svg +1 -0
  381. package/dist/starter/public/icons.svg +24 -0
  382. package/dist/starter/src/App.tsx +7 -0
  383. package/dist/starter/src/assets/hero.png +0 -0
  384. package/dist/starter/src/assets/vite.svg +1 -0
  385. package/dist/starter/src/components/error-boundary.tsx +38 -0
  386. package/dist/starter/src/components/not-found.tsx +16 -0
  387. package/dist/starter/src/components/ui/accordion.tsx +51 -0
  388. package/dist/starter/src/components/ui/alert-dialog.tsx +162 -0
  389. package/dist/starter/src/components/ui/alert.tsx +49 -0
  390. package/dist/starter/src/components/ui/aspect-ratio.tsx +9 -0
  391. package/dist/starter/src/components/ui/avatar.tsx +87 -0
  392. package/dist/starter/src/components/ui/badge.tsx +40 -0
  393. package/dist/starter/src/components/ui/breadcrumb.tsx +92 -0
  394. package/dist/starter/src/components/ui/button-group.tsx +74 -0
  395. package/dist/starter/src/components/ui/button.tsx +62 -0
  396. package/dist/starter/src/components/ui/calendar.tsx +158 -0
  397. package/dist/starter/src/components/ui/card.tsx +56 -0
  398. package/dist/starter/src/components/ui/carousel.tsx +215 -0
  399. package/dist/starter/src/components/ui/chart.tsx +296 -0
  400. package/dist/starter/src/components/ui/checkbox.tsx +29 -0
  401. package/dist/starter/src/components/ui/collapsible.tsx +15 -0
  402. package/dist/starter/src/components/ui/combobox.tsx +266 -0
  403. package/dist/starter/src/components/ui/command.tsx +136 -0
  404. package/dist/starter/src/components/ui/context-menu.tsx +211 -0
  405. package/dist/starter/src/components/ui/dialog.tsx +135 -0
  406. package/dist/starter/src/components/ui/direction.tsx +18 -0
  407. package/dist/starter/src/components/ui/drawer.tsx +106 -0
  408. package/dist/starter/src/components/ui/dropdown-menu.tsx +219 -0
  409. package/dist/starter/src/components/ui/empty.tsx +85 -0
  410. package/dist/starter/src/components/ui/field.tsx +225 -0
  411. package/dist/starter/src/components/ui/form.tsx +135 -0
  412. package/dist/starter/src/components/ui/hover-card.tsx +36 -0
  413. package/dist/starter/src/components/ui/input-group.tsx +146 -0
  414. package/dist/starter/src/components/ui/input-otp.tsx +68 -0
  415. package/dist/starter/src/components/ui/input.tsx +21 -0
  416. package/dist/starter/src/components/ui/item.tsx +157 -0
  417. package/dist/starter/src/components/ui/kbd.tsx +22 -0
  418. package/dist/starter/src/components/ui/label.tsx +19 -0
  419. package/dist/starter/src/components/ui/menubar.tsx +236 -0
  420. package/dist/starter/src/components/ui/native-select.tsx +44 -0
  421. package/dist/starter/src/components/ui/navigation-menu.tsx +142 -0
  422. package/dist/starter/src/components/ui/pagination.tsx +98 -0
  423. package/dist/starter/src/components/ui/popover.tsx +52 -0
  424. package/dist/starter/src/components/ui/progress.tsx +24 -0
  425. package/dist/starter/src/components/ui/radio-group.tsx +31 -0
  426. package/dist/starter/src/components/ui/resizable.tsx +47 -0
  427. package/dist/starter/src/components/ui/scroll-area.tsx +46 -0
  428. package/dist/starter/src/components/ui/select.tsx +162 -0
  429. package/dist/starter/src/components/ui/separator.tsx +26 -0
  430. package/dist/starter/src/components/ui/sheet.tsx +107 -0
  431. package/dist/starter/src/components/ui/sidebar.tsx +674 -0
  432. package/dist/starter/src/components/ui/skeleton.tsx +7 -0
  433. package/dist/starter/src/components/ui/slider.tsx +54 -0
  434. package/dist/starter/src/components/ui/sonner.tsx +31 -0
  435. package/dist/starter/src/components/ui/spinner.tsx +9 -0
  436. package/dist/starter/src/components/ui/switch.tsx +33 -0
  437. package/dist/starter/src/components/ui/table.tsx +75 -0
  438. package/dist/starter/src/components/ui/tabs.tsx +69 -0
  439. package/dist/starter/src/components/ui/textarea.tsx +18 -0
  440. package/dist/starter/src/components/ui/toggle-group.tsx +79 -0
  441. package/dist/starter/src/components/ui/toggle.tsx +41 -0
  442. package/dist/starter/src/components/ui/tooltip.tsx +42 -0
  443. package/dist/starter/src/hooks/use-mobile.ts +19 -0
  444. package/dist/starter/src/index.css +93 -0
  445. package/dist/starter/src/lib/graphql-client.ts +5 -0
  446. package/dist/starter/src/lib/providers.tsx +23 -0
  447. package/dist/starter/src/lib/utils.ts +6 -0
  448. package/dist/starter/src/main.tsx +16 -0
  449. package/dist/starter/tsconfig.app.json +32 -0
  450. package/dist/starter/tsconfig.json +4 -0
  451. package/dist/starter/tsconfig.node.json +26 -0
  452. package/dist/starter/vite.config.ts +16 -0
  453. package/dist/tsconfig.tsbuildinfo +1 -0
  454. package/package.json +47 -0
  455. package/skills/design/SKILL.md +302 -0
  456. package/skills/design/data/cip/deliverables.csv +51 -0
  457. package/skills/design/data/cip/industries.csv +21 -0
  458. package/skills/design/data/cip/mockup-contexts.csv +21 -0
  459. package/skills/design/data/cip/styles.csv +21 -0
  460. package/skills/design/data/icon/styles.csv +16 -0
  461. package/skills/design/data/logo/colors.csv +56 -0
  462. package/skills/design/data/logo/industries.csv +56 -0
  463. package/skills/design/data/logo/styles.csv +56 -0
  464. package/skills/design/references/banner-sizes-and-styles.md +118 -0
  465. package/skills/design/references/cip-deliverable-guide.md +95 -0
  466. package/skills/design/references/cip-design.md +121 -0
  467. package/skills/design/references/cip-prompt-engineering.md +84 -0
  468. package/skills/design/references/cip-style-guide.md +68 -0
  469. package/skills/design/references/design-routing.md +207 -0
  470. package/skills/design/references/icon-design.md +122 -0
  471. package/skills/design/references/logo-color-psychology.md +101 -0
  472. package/skills/design/references/logo-design.md +92 -0
  473. package/skills/design/references/logo-prompt-engineering.md +158 -0
  474. package/skills/design/references/logo-style-guide.md +109 -0
  475. package/skills/design/references/slides-copywriting-formulas.md +84 -0
  476. package/skills/design/references/slides-create.md +4 -0
  477. package/skills/design/references/slides-html-template.md +295 -0
  478. package/skills/design/references/slides-layout-patterns.md +137 -0
  479. package/skills/design/references/slides-strategies.md +94 -0
  480. package/skills/design/references/slides.md +42 -0
  481. package/skills/design/references/social-photos-design.md +329 -0
  482. package/skills/design/scripts/cip/core.py +215 -0
  483. package/skills/design/scripts/cip/generate.py +484 -0
  484. package/skills/design/scripts/cip/render-html.py +424 -0
  485. package/skills/design/scripts/cip/search.py +127 -0
  486. package/skills/design/scripts/icon/generate.py +487 -0
  487. package/skills/design/scripts/logo/core.py +175 -0
  488. package/skills/design/scripts/logo/generate.py +362 -0
  489. package/skills/design/scripts/logo/search.py +114 -0
  490. package/skills/design-system/SKILL.md +244 -0
  491. package/skills/design-system/data/slide-backgrounds.csv +11 -0
  492. package/skills/design-system/data/slide-charts.csv +26 -0
  493. package/skills/design-system/data/slide-color-logic.csv +14 -0
  494. package/skills/design-system/data/slide-copy.csv +26 -0
  495. package/skills/design-system/data/slide-layout-logic.csv +16 -0
  496. package/skills/design-system/data/slide-layouts.csv +26 -0
  497. package/skills/design-system/data/slide-strategies.csv +16 -0
  498. package/skills/design-system/data/slide-typography.csv +15 -0
  499. package/skills/design-system/references/component-specs.md +236 -0
  500. package/skills/design-system/references/component-tokens.md +214 -0
  501. package/skills/design-system/references/primitive-tokens.md +203 -0
  502. package/skills/design-system/references/semantic-tokens.md +215 -0
  503. package/skills/design-system/references/states-and-variants.md +241 -0
  504. package/skills/design-system/references/tailwind-integration.md +251 -0
  505. package/skills/design-system/references/token-architecture.md +224 -0
  506. package/skills/design-system/scripts/embed-tokens.cjs +97 -0
  507. package/skills/design-system/scripts/fetch-background.py +317 -0
  508. package/skills/design-system/scripts/generate-slide.py +753 -0
  509. package/skills/design-system/scripts/generate-tokens.cjs +213 -0
  510. package/skills/design-system/scripts/html-token-validator.py +327 -0
  511. package/skills/design-system/scripts/search-slides.py +218 -0
  512. package/skills/design-system/scripts/slide-token-validator.py +35 -0
  513. package/skills/design-system/scripts/slide_search_core.py +453 -0
  514. package/skills/design-system/scripts/validate-tokens.cjs +251 -0
  515. package/skills/design-system/templates/design-tokens-starter.json +143 -0
  516. package/skills/design-taste-frontend/SKILL.md +79 -0
  517. package/skills/emil-design-engineering/SKILL.md +108 -0
  518. package/skills/emil-design-engineering/animations.md +266 -0
  519. package/skills/emil-design-engineering/component-design.md +382 -0
  520. package/skills/emil-design-engineering/forms-controls.md +261 -0
  521. package/skills/emil-design-engineering/marketing.md +160 -0
  522. package/skills/emil-design-engineering/performance.md +222 -0
  523. package/skills/emil-design-engineering/touch-accessibility.md +236 -0
  524. package/skills/emil-design-engineering/ui-polish.md +303 -0
  525. package/skills/frontend-design/SKILL.md +42 -0
  526. package/skills/full-output-enforcement/SKILL.md +32 -0
  527. package/skills/high-end-visual-design/SKILL.md +98 -0
  528. package/skills/react-doctor/AGENTS.md +15 -0
  529. package/skills/react-doctor/SKILL.md +19 -0
  530. package/skills/redesign-existing-projects/SKILL.md +178 -0
  531. package/skills/ui-styling/LICENSE.txt +202 -0
  532. package/skills/ui-styling/SKILL.md +324 -0
  533. package/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  534. package/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  535. package/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  536. package/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  537. package/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  538. package/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  539. package/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  540. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  541. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  542. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  543. package/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  544. package/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  545. package/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  546. package/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  547. package/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  548. package/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  549. package/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  550. package/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  551. package/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  552. package/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  553. package/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  554. package/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  555. package/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  556. package/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  557. package/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  558. package/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  559. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  560. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  561. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  562. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  563. package/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  564. package/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  565. package/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  566. package/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  567. package/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  568. package/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  569. package/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  570. package/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  571. package/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  572. package/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  573. package/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  574. package/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  575. package/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  576. package/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  577. package/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  578. package/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  579. package/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  580. package/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  581. package/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  582. package/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  583. package/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  584. package/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  585. package/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  586. package/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  587. package/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  588. package/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  589. package/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  590. package/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  591. package/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  592. package/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  593. package/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  594. package/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  595. package/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  596. package/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  597. package/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  598. package/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  599. package/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  600. package/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  601. package/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  602. package/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  603. package/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  604. package/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  605. package/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  606. package/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  607. package/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  608. package/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  609. package/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  610. package/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  611. package/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  612. package/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  613. package/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  614. package/skills/ui-styling/references/canvas-design-system.md +320 -0
  615. package/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  616. package/skills/ui-styling/references/shadcn-components.md +424 -0
  617. package/skills/ui-styling/references/shadcn-theming.md +373 -0
  618. package/skills/ui-styling/references/tailwind-customization.md +483 -0
  619. package/skills/ui-styling/references/tailwind-responsive.md +382 -0
  620. package/skills/ui-styling/references/tailwind-utilities.md +455 -0
  621. package/skills/ui-styling/scripts/.coverage +0 -0
  622. package/skills/ui-styling/scripts/requirements.txt +17 -0
  623. package/skills/ui-styling/scripts/shadcn_add.py +292 -0
  624. package/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  625. package/skills/ui-styling/scripts/tests/coverage-ui.json +1392 -0
  626. package/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  627. package/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  628. package/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  629. package/skills/ui-ux-pro-max/SKILL.md +659 -0
  630. package/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
  631. package/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
  632. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  633. package/skills/ui-ux-pro-max/data/colors.csv +162 -0
  634. package/skills/ui-ux-pro-max/data/design.csv +1776 -0
  635. package/skills/ui-ux-pro-max/data/draft.csv +1779 -0
  636. package/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
  637. package/skills/ui-ux-pro-max/data/icons.csv +106 -0
  638. package/skills/ui-ux-pro-max/data/landing.csv +35 -0
  639. package/skills/ui-ux-pro-max/data/products.csv +162 -0
  640. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  641. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  642. package/skills/ui-ux-pro-max/data/styles.csv +85 -0
  643. package/skills/ui-ux-pro-max/data/typography.csv +74 -0
  644. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
  645. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  646. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  647. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  648. package/skills/ui-ux-pro-max/scripts/core.py +247 -0
  649. package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  650. package/skills/ui-ux-pro-max/scripts/search.py +114 -0
  651. package/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  652. package/skills/vercel-react-best-practices/README.md +123 -0
  653. package/skills/vercel-react-best-practices/SKILL.md +136 -0
  654. package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  655. package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  656. package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  657. package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  658. package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  659. package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  660. package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  661. package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  662. package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  663. package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  664. package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  665. package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  666. package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  667. package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  668. package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  669. package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  670. package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  671. package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  672. package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  673. package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  674. package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  675. package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  676. package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  677. package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  678. package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  679. package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  680. package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  681. package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  682. package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  683. package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  684. package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  685. package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  686. package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  687. package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  688. package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  689. package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  690. package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  691. package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  692. package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  693. package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  694. package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  695. package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  696. package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  697. package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  698. package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  699. package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  700. package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  701. package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  702. package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  703. package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  704. package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  705. package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  706. package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  707. package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  708. package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  709. package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  710. package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  711. package/skills/web-animation-design/PRACTICAL-TIPS.md +304 -0
  712. package/skills/web-animation-design/SKILL.md +336 -0
  713. package/skills/web-design-guidelines/SKILL.md +39 -0
  714. package/starter/.env.example +1 -0
  715. package/starter/README.md +73 -0
  716. package/starter/components.json +21 -0
  717. package/starter/eslint.config.js +23 -0
  718. package/starter/index.html +13 -0
  719. package/starter/package-lock.json +7590 -0
  720. package/starter/package.json +57 -0
  721. package/starter/pnpm-lock.yaml +4479 -0
  722. package/starter/public/favicon.svg +1 -0
  723. package/starter/public/icons.svg +24 -0
  724. package/starter/src/App.tsx +7 -0
  725. package/starter/src/assets/hero.png +0 -0
  726. package/starter/src/assets/vite.svg +1 -0
  727. package/starter/src/components/error-boundary.tsx +38 -0
  728. package/starter/src/components/not-found.tsx +16 -0
  729. package/starter/src/components/ui/accordion.tsx +51 -0
  730. package/starter/src/components/ui/alert-dialog.tsx +162 -0
  731. package/starter/src/components/ui/alert.tsx +49 -0
  732. package/starter/src/components/ui/aspect-ratio.tsx +9 -0
  733. package/starter/src/components/ui/avatar.tsx +87 -0
  734. package/starter/src/components/ui/badge.tsx +40 -0
  735. package/starter/src/components/ui/breadcrumb.tsx +92 -0
  736. package/starter/src/components/ui/button-group.tsx +74 -0
  737. package/starter/src/components/ui/button.tsx +62 -0
  738. package/starter/src/components/ui/calendar.tsx +158 -0
  739. package/starter/src/components/ui/card.tsx +56 -0
  740. package/starter/src/components/ui/carousel.tsx +215 -0
  741. package/starter/src/components/ui/chart.tsx +296 -0
  742. package/starter/src/components/ui/checkbox.tsx +29 -0
  743. package/starter/src/components/ui/collapsible.tsx +15 -0
  744. package/starter/src/components/ui/combobox.tsx +266 -0
  745. package/starter/src/components/ui/command.tsx +136 -0
  746. package/starter/src/components/ui/context-menu.tsx +211 -0
  747. package/starter/src/components/ui/dialog.tsx +135 -0
  748. package/starter/src/components/ui/direction.tsx +18 -0
  749. package/starter/src/components/ui/drawer.tsx +106 -0
  750. package/starter/src/components/ui/dropdown-menu.tsx +219 -0
  751. package/starter/src/components/ui/empty.tsx +85 -0
  752. package/starter/src/components/ui/field.tsx +225 -0
  753. package/starter/src/components/ui/form.tsx +135 -0
  754. package/starter/src/components/ui/hover-card.tsx +36 -0
  755. package/starter/src/components/ui/input-group.tsx +146 -0
  756. package/starter/src/components/ui/input-otp.tsx +68 -0
  757. package/starter/src/components/ui/input.tsx +21 -0
  758. package/starter/src/components/ui/item.tsx +157 -0
  759. package/starter/src/components/ui/kbd.tsx +22 -0
  760. package/starter/src/components/ui/label.tsx +19 -0
  761. package/starter/src/components/ui/menubar.tsx +236 -0
  762. package/starter/src/components/ui/native-select.tsx +44 -0
  763. package/starter/src/components/ui/navigation-menu.tsx +142 -0
  764. package/starter/src/components/ui/pagination.tsx +98 -0
  765. package/starter/src/components/ui/popover.tsx +52 -0
  766. package/starter/src/components/ui/progress.tsx +24 -0
  767. package/starter/src/components/ui/radio-group.tsx +31 -0
  768. package/starter/src/components/ui/resizable.tsx +47 -0
  769. package/starter/src/components/ui/scroll-area.tsx +46 -0
  770. package/starter/src/components/ui/select.tsx +162 -0
  771. package/starter/src/components/ui/separator.tsx +26 -0
  772. package/starter/src/components/ui/sheet.tsx +107 -0
  773. package/starter/src/components/ui/sidebar.tsx +674 -0
  774. package/starter/src/components/ui/skeleton.tsx +7 -0
  775. package/starter/src/components/ui/slider.tsx +54 -0
  776. package/starter/src/components/ui/sonner.tsx +31 -0
  777. package/starter/src/components/ui/spinner.tsx +9 -0
  778. package/starter/src/components/ui/switch.tsx +33 -0
  779. package/starter/src/components/ui/table.tsx +75 -0
  780. package/starter/src/components/ui/tabs.tsx +69 -0
  781. package/starter/src/components/ui/textarea.tsx +18 -0
  782. package/starter/src/components/ui/toggle-group.tsx +79 -0
  783. package/starter/src/components/ui/toggle.tsx +41 -0
  784. package/starter/src/components/ui/tooltip.tsx +42 -0
  785. package/starter/src/hooks/use-mobile.ts +19 -0
  786. package/starter/src/index.css +93 -0
  787. package/starter/src/lib/graphql-client.ts +5 -0
  788. package/starter/src/lib/providers.tsx +23 -0
  789. package/starter/src/lib/utils.ts +6 -0
  790. package/starter/src/main.tsx +16 -0
  791. package/starter/tsconfig.app.json +32 -0
  792. package/starter/tsconfig.json +4 -0
  793. package/starter/tsconfig.node.json +26 -0
  794. package/starter/vite.config.ts +16 -0
@@ -0,0 +1,304 @@
1
+ # Practical Animation Tips
2
+
3
+ Detailed reference guide for common animation scenarios. Use this as a checklist when implementing animations.
4
+
5
+ ## Recording & Debugging
6
+
7
+ ### Record Your Animations
8
+
9
+ When something feels off but you can't identify why, record the animation and play it back frame by frame. This reveals details invisible at normal speed.
10
+
11
+ ### Fix Shaky Animations
12
+
13
+ Elements may shift by 1px at the start/end of CSS transform animations due to GPU/CPU rendering handoff.
14
+
15
+ **Fix:**
16
+
17
+ ```css
18
+ .element {
19
+ will-change: transform;
20
+ }
21
+ ```
22
+
23
+ This tells the browser to keep the element on the GPU throughout the animation.
24
+
25
+ ### Take Breaks
26
+
27
+ Don't code and ship animations in one sitting. Step away, return with fresh eyes. The best animations are reviewed and refined over days, not hours.
28
+
29
+ ## Button & Click Feedback
30
+
31
+ ### Scale Buttons on Press
32
+
33
+ Make interfaces feel responsive by adding subtle scale feedback:
34
+
35
+ ```css
36
+ button:active {
37
+ transform: scale(0.97);
38
+ }
39
+ ```
40
+
41
+ This gives instant visual feedback that the interface is listening.
42
+
43
+ ### Don't Animate from scale(0)
44
+
45
+ Starting from `scale(0)` makes elements appear from nowhere—it feels unnatural.
46
+
47
+ **Bad:**
48
+
49
+ ```css
50
+ .element {
51
+ transform: scale(0);
52
+ }
53
+ .element.visible {
54
+ transform: scale(1);
55
+ }
56
+ ```
57
+
58
+ **Good:**
59
+
60
+ ```css
61
+ .element {
62
+ transform: scale(0.95);
63
+ opacity: 0;
64
+ }
65
+ .element.visible {
66
+ transform: scale(1);
67
+ opacity: 1;
68
+ }
69
+ ```
70
+
71
+ Elements should always have some visible shape, like a deflated balloon.
72
+
73
+ ## Tooltips & Popovers
74
+
75
+ ### Skip Animation on Subsequent Tooltips
76
+
77
+ First tooltip: delay + animation. Subsequent tooltips (while one is open): instant, no delay.
78
+
79
+ ```css
80
+ .tooltip {
81
+ transition:
82
+ transform 125ms ease-out,
83
+ opacity 125ms ease-out;
84
+ transform-origin: var(--transform-origin);
85
+ }
86
+
87
+ .tooltip[data-starting-style],
88
+ .tooltip[data-ending-style] {
89
+ opacity: 0;
90
+ transform: scale(0.97);
91
+ }
92
+
93
+ /* Skip animation for subsequent tooltips */
94
+ .tooltip[data-instant] {
95
+ transition-duration: 0ms;
96
+ }
97
+ ```
98
+
99
+ Radix UI and Base UI support this pattern with `data-instant` attribute.
100
+
101
+ ### Make Animations Origin-Aware
102
+
103
+ Popovers should scale from their trigger, not from center.
104
+
105
+ ```css
106
+ /* Default (wrong for most cases) */
107
+ .popover {
108
+ transform-origin: center;
109
+ }
110
+
111
+ /* Correct - scale from trigger */
112
+ .popover {
113
+ transform-origin: var(--transform-origin);
114
+ }
115
+ ```
116
+
117
+ **Radix UI:**
118
+
119
+ ```css
120
+ .popover {
121
+ transform-origin: var(--radix-dropdown-menu-content-transform-origin);
122
+ }
123
+ ```
124
+
125
+ **Base UI:**
126
+
127
+ ```css
128
+ .popover {
129
+ transform-origin: var(--transform-origin);
130
+ }
131
+ ```
132
+
133
+ ## Speed & Timing
134
+
135
+ ### Keep Animations Fast
136
+
137
+ A faster-spinning spinner makes apps feel faster even with identical load times. A 180ms select animation feels more responsive than 400ms.
138
+
139
+ **Rule:** UI animations should stay under 300ms.
140
+
141
+ ### Don't Animate Keyboard Interactions
142
+
143
+ Arrow key navigation, keyboard shortcuts—these are repeated hundreds of times daily. Animation makes them feel slow and disconnected.
144
+
145
+ **Never animate:**
146
+
147
+ - List navigation with arrow keys
148
+ - Keyboard shortcut responses
149
+ - Tab/focus movements
150
+
151
+ ### Be Careful with Frequently-Used Elements
152
+
153
+ A hover effect is nice, but if triggered multiple times a day, it may benefit from no animation at all.
154
+
155
+ **Guideline:** Use your own product daily. You'll discover which animations become annoying through repeated use.
156
+
157
+ ## Hover States
158
+
159
+ ### Fix Hover Flicker
160
+
161
+ When hover animation changes element position, the cursor may leave the element, causing flicker.
162
+
163
+ **Problem:**
164
+
165
+ ```css
166
+ .box:hover {
167
+ transform: translateY(-20%);
168
+ }
169
+ ```
170
+
171
+ **Solution:** Animate a child element instead:
172
+
173
+ ```html
174
+ <div class="box">
175
+ <div class="box-inner"></div>
176
+ </div>
177
+ ```
178
+
179
+ ```css
180
+ .box:hover .box-inner {
181
+ transform: translateY(-20%);
182
+ }
183
+
184
+ .box-inner {
185
+ transition: transform 200ms ease;
186
+ }
187
+ ```
188
+
189
+ The parent's hover area stays stable while the child moves.
190
+
191
+ ### Disable Hover on Touch Devices
192
+
193
+ Touch devices don't have true hover. Accidental finger movement triggers unwanted hover states.
194
+
195
+ ```css
196
+ @media (hover: hover) and (pointer: fine) {
197
+ .card:hover {
198
+ transform: scale(1.05);
199
+ }
200
+ }
201
+ ```
202
+
203
+ **Note:** Tailwind v4's `hover:` class automatically applies only when the device supports hover.
204
+
205
+ ## Touch & Accessibility
206
+
207
+ ### Ensure Appropriate Target Areas
208
+
209
+ Small buttons are hard to tap. Use a pseudo-element to create larger hit areas without changing layout.
210
+
211
+ **Minimum target:** 44px (Apple and WCAG recommendation)
212
+
213
+ ```css
214
+ @utility touch-hitbox {
215
+ position: relative;
216
+ }
217
+
218
+ @utility touch-hitbox::before {
219
+ content: "";
220
+ position: absolute;
221
+ display: block;
222
+ top: 50%;
223
+ left: 50%;
224
+ transform: translate(-50%, -50%);
225
+ width: 100%;
226
+ height: 100%;
227
+ min-height: 44px;
228
+ min-width: 44px;
229
+ z-index: 9999;
230
+ }
231
+ ```
232
+
233
+ Usage:
234
+
235
+ ```jsx
236
+ <button className="touch-hitbox">
237
+ <BellIcon />
238
+ </button>
239
+ ```
240
+
241
+ ## Easing Selection
242
+
243
+ ### Use ease-out for Enter/Exit
244
+
245
+ Elements entering or exiting should use `ease-out`. The fast start creates responsiveness.
246
+
247
+ ```css
248
+ .dropdown {
249
+ transition:
250
+ transform 200ms ease-out,
251
+ opacity 200ms ease-out;
252
+ }
253
+ ```
254
+
255
+ `ease-in` starts slow—wrong for UI. Same duration feels slower because the movement is back-loaded.
256
+
257
+ ### Use ease-in-out for On-Screen Movement
258
+
259
+ Elements already visible that need to move should use `ease-in-out`. Mimics natural acceleration/deceleration like a car.
260
+
261
+ ```css
262
+ .slider-handle {
263
+ transition: transform 250ms ease-in-out;
264
+ }
265
+ ```
266
+
267
+ ### Use Custom Easing Curves
268
+
269
+ Built-in CSS curves are usually too weak. Custom curves create more intentional motion.
270
+
271
+ **Resources:**
272
+
273
+ - Course reference: `/learn/easing-curves`
274
+ - External: [easings.co](https://easings.co/)
275
+
276
+ ## Visual Tricks
277
+
278
+ ### Use Blur as a Fallback
279
+
280
+ When easing and timing adjustments don't solve the problem, add subtle blur to mask imperfections.
281
+
282
+ ```css
283
+ .button-transition {
284
+ transition:
285
+ transform 150ms ease-out,
286
+ filter 150ms ease-out;
287
+ }
288
+
289
+ .button-transition:active {
290
+ transform: scale(0.97);
291
+ filter: blur(2px);
292
+ }
293
+ ```
294
+
295
+ Blur bridges visual gaps between states, tricking the eye into seeing smoother transitions. The two states blend instead of appearing as distinct objects.
296
+
297
+ **Performance note:** Keep blur under 20px, especially on Safari.
298
+
299
+ ## Why Details Matter
300
+
301
+ > "All those unseen details combine to produce something that's just stunning, like a thousand barely audible voices all singing in tune."
302
+ > — Paul Graham, Hackers and Painters
303
+
304
+ Details that go unnoticed are good—users complete tasks without friction. Great interfaces enable users to achieve goals with ease, not to admire animations.
@@ -0,0 +1,336 @@
1
+ ---
2
+ name: web-animation-design
3
+ description: "Design and implement web animations that feel natural and purposeful. Use this skill proactively whenever the user asks questions about animations, motion, easing, timing, duration, springs, transitions, or animation performance. This includes questions about how to animate specific UI elements, which easing to use, animation best practices, or accessibility considerations for motion. Triggers on: easing, ease-out, ease-in, ease-in-out, cubic-bezier, bounce, spring physics, keyframes, transform, opacity, fade, slide, scale, hover effects, microinteractions, Framer Motion, React Spring, GSAP, CSS transitions, entrance/exit animations, page transitions, stagger, will-change, GPU acceleration, prefers-reduced-motion, modal/dropdown/tooltip/popover/drawer animations, gesture animations, drag interactions, button press feel, feels janky, make it smooth."
4
+ metadata:
5
+ short-description: Design and implement web animations that feel natural and purposeful
6
+ ---
7
+
8
+ # Web Animation Design
9
+
10
+ A comprehensive guide for creating animations that feel right, based on Emil Kowalski's "Animations on the Web" course.
11
+
12
+ ## Initial Response
13
+
14
+ When this skill is first invoked without a specific question, respond only with:
15
+
16
+ > I'm ready to help you with animations based on Emil Kowalski's animations.dev course.
17
+
18
+ Do not provide any other information until the user asks a question.
19
+
20
+ ## Review Format (Required)
21
+
22
+ When reviewing animations, you MUST use a markdown table. Do NOT use a list with "Before:" and "After:" on separate lines. Always output an actual markdown table like this:
23
+
24
+ | Before | After |
25
+ | --------------------------------- | ----------------------------------------------- |
26
+ | `transform: scale(0)` | `transform: scale(0.95)` |
27
+ | `animation: fadeIn 400ms ease-in` | `animation: fadeIn 200ms ease-out` |
28
+ | No reduced motion support | `@media (prefers-reduced-motion: reduce) {...}` |
29
+
30
+ Wrong format (never do this):
31
+
32
+ ```
33
+ Before: transform: scale(0)
34
+ After: transform: scale(0.95)
35
+ ────────────────────────────
36
+ Before: 400ms duration
37
+ After: 200ms
38
+ ```
39
+
40
+ Correct format: A single markdown table with | Before | After | columns, one row per issue.
41
+
42
+ ## Quick Start
43
+
44
+ Every animation decision starts with these questions:
45
+
46
+ 1. **Is this element entering or exiting?** → Use `ease-out`
47
+ 2. **Is an on-screen element moving?** → Use `ease-in-out`
48
+ 3. **Is this a hover/color transition?** → Use `ease`
49
+ 4. **Will users see this 100+ times daily?** → Don't animate it
50
+
51
+ ## The Easing Blueprint
52
+
53
+ ### ease-out (Most Common)
54
+
55
+ Use for **user-initiated interactions**: dropdowns, modals, tooltips, any element entering or exiting the screen.
56
+
57
+ ```css
58
+ /* Sorted weak to strong */
59
+ --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
60
+ --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
61
+ --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
62
+ --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
63
+ --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
64
+ --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);
65
+ ```
66
+
67
+ Why it works: Acceleration at the start creates an instant, responsive feeling. The element "jumps" toward its destination then settles in.
68
+
69
+ ### ease-in-out (For Movement)
70
+
71
+ Use when **elements already on screen need to move or morph**. Mimics natural motion like a car accelerating then braking.
72
+
73
+ ```css
74
+ /* Sorted weak to strong */
75
+ --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
76
+ --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
77
+ --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
78
+ --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
79
+ --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
80
+ --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);
81
+ ```
82
+
83
+ ### ease (For Hover Effects)
84
+
85
+ Use for **hover states and color transitions**. The asymmetrical curve (faster start, slower end) feels elegant for gentle animations.
86
+
87
+ ```css
88
+ transition: background-color 150ms ease;
89
+ ```
90
+
91
+ ### linear (Avoid in UI)
92
+
93
+ Only use for:
94
+
95
+ - Constant-speed animations (marquees, tickers)
96
+ - Time visualization (hold-to-delete progress indicators)
97
+
98
+ Linear feels robotic and unnatural for interactive elements.
99
+
100
+ ### ease-in (Almost Never)
101
+
102
+ **Avoid for UI animations.** Makes interfaces feel sluggish because the slow start delays visual feedback.
103
+
104
+ ### Paired Elements Rule
105
+
106
+ Elements that animate together must use the same easing and duration. Modal + overlay, tooltip + arrow, drawer + backdrop—if they move as a unit, they should feel like a unit.
107
+
108
+ ```css
109
+ /* Both use the same timing */
110
+ .modal {
111
+ transition: transform 200ms ease-out;
112
+ }
113
+ .overlay {
114
+ transition: opacity 200ms ease-out;
115
+ }
116
+ ```
117
+
118
+ ## Timing and Duration
119
+
120
+ ## Duration Guidelines
121
+
122
+ | Element Type | Duration |
123
+ | --------------------------------- | --------- |
124
+ | Micro-interactions | 100-150ms |
125
+ | Standard UI (tooltips, dropdowns) | 150-250ms |
126
+ | Modals, drawers | 200-300ms |
127
+
128
+ **Rules:**
129
+ - UI animations should stay under 300ms
130
+ - Larger elements animate slower than smaller ones
131
+ - Exit animations can be ~20% faster than entrance
132
+ - Match duration to distance - longer travel = longer duration
133
+
134
+ ### The Frequency
135
+
136
+ Determine how often users will see the animation:
137
+
138
+ - **100+ times/day** → No animation (or drastically reduced)
139
+ - **Occasional use** → Standard animation
140
+ - **Rare/first-time** → Can be more special
141
+
142
+ **Example:** Raycast never animates because users open it hundreds of times a day.
143
+
144
+ ## When to Animate
145
+
146
+ **Do animate:**
147
+
148
+ - Enter/exit transitions for spatial consistency
149
+ - State changes that benefit from visual continuity
150
+ - Responses to user actions (feedback)
151
+ - Rarely-used interactions where delight adds value
152
+
153
+ **Don't animate:**
154
+
155
+ - Keyboard-initiated actions
156
+ - Hover effects on frequently-used elements
157
+ - Anything users interact with 100+ times daily
158
+ - When speed matters more than smoothness
159
+
160
+ **Marketing vs. Product:**
161
+
162
+ - Marketing: More elaborate, longer durations allowed
163
+ - Product: Fast, purposeful, never frivolous
164
+
165
+ ## Spring Animations
166
+
167
+ Springs feel more natural because they don't have fixed durations—they simulate real physics.
168
+
169
+ ### When to Use Springs
170
+
171
+ - Drag interactions with momentum
172
+ - Elements that should feel "alive" (Dynamic Island)
173
+ - Gestures that can be interrupted mid-animation
174
+ - Organic, playful interfaces
175
+
176
+ ### Configuration
177
+
178
+ **Apple's approach (recommended):**
179
+
180
+ ```js
181
+ // Duration + bounce (easier to understand)
182
+ { type: "spring", duration: 0.5, bounce: 0.2 }
183
+ ```
184
+
185
+ **Traditional physics:**
186
+
187
+ ```js
188
+ // Mass, stiffness, damping (more complex)
189
+ { type: "spring", mass: 1, stiffness: 100, damping: 10 }
190
+ ```
191
+
192
+ ### Bounce Guidelines
193
+
194
+ - **Avoid bounce** in most UI contexts
195
+ - **Use bounce** for drag-to-dismiss, playful interactions
196
+ - Keep bounce subtle (0.1-0.3) when used
197
+
198
+ ### Interruptibility
199
+
200
+ Springs maintain velocity when interrupted—CSS animations restart from zero. This makes springs ideal for gestures users might change mid-motion.
201
+
202
+ ## Performance
203
+
204
+ ### The Golden Rule
205
+
206
+ Only animate `transform` and `opacity`. These skip layout and paint stages, running entirely on the GPU.
207
+
208
+ **Avoid animating:**
209
+
210
+ - `padding`, `margin`, `height`, `width` (trigger layout)
211
+ - `blur` filters above 20px (expensive, especially Safari)
212
+ - CSS variables in deep component trees
213
+
214
+ ### Optimization Techniques
215
+
216
+ ```css
217
+ /* Force GPU acceleration */
218
+ .animated-element {
219
+ will-change: transform;
220
+ }
221
+ ```
222
+
223
+ **React-specific:**
224
+
225
+ - Animate outside React's render cycle when possible
226
+ - Use refs to update styles directly instead of state
227
+ - Re-renders on every frame = dropped frames
228
+
229
+ **Framer Motion:**
230
+
231
+ ```jsx
232
+ // Hardware accelerated (transform as string)
233
+ <motion.div animate={{ transform: "translateX(100px)" }} />
234
+
235
+ // NOT hardware accelerated (more readable)
236
+ <motion.div animate={{ x: 100 }} />
237
+ ```
238
+
239
+ ### CSS vs. JavaScript
240
+
241
+ - CSS animations run off main thread (smoother under load)
242
+ - JS animations (Framer Motion, React Spring) use `requestAnimationFrame`
243
+ - CSS better for simple, predetermined animations
244
+ - JS better for dynamic, interruptible animations
245
+
246
+ ## Accessibility
247
+
248
+ Animations can cause motion sickness or distraction for some users.
249
+
250
+ ### prefers-reduced-motion
251
+
252
+ Whenever you add an animation, also add a media query to disable it:
253
+
254
+ ```css
255
+ .modal {
256
+ animation: fadeIn 200ms ease-out;
257
+ }
258
+
259
+ @media (prefers-reduced-motion: reduce) {
260
+ .modal {
261
+ animation: none;
262
+ }
263
+ }
264
+ ```
265
+
266
+ ### Reduced Motion Guidelines
267
+
268
+ - Every animated element needs its own `prefers-reduced-motion` media query
269
+ - Set `animation: none` or `transition: none` (no `!important`)
270
+ - No exceptions for opacity or color - disable all animations
271
+ - Show play buttons instead of autoplay videos
272
+
273
+ ### Framer Motion Implementation
274
+
275
+ ```jsx
276
+ import { useReducedMotion } from "framer-motion";
277
+
278
+ function Component() {
279
+ const shouldReduceMotion = useReducedMotion();
280
+
281
+ return (
282
+ <motion.div
283
+ initial={shouldReduceMotion ? false : { opacity: 0, y: 20 }}
284
+ animate={{ opacity: 1, y: 0 }}
285
+ />
286
+ );
287
+ }
288
+ ```
289
+
290
+ ### Touch Device Considerations
291
+
292
+ ```css
293
+ /* Disable hover animations on touch devices */
294
+ @media (hover: hover) and (pointer: fine) {
295
+ .element:hover {
296
+ transform: scale(1.05);
297
+ }
298
+ }
299
+ ```
300
+
301
+ Touch devices trigger hover on tap, causing false positives.
302
+
303
+ ## Practical Tips
304
+
305
+ Quick reference for common scenarios. See [PRACTICAL-TIPS.md](PRACTICAL-TIPS.md) for detailed implementations.
306
+
307
+ | Scenario | Solution |
308
+ | ------------------------------- | ----------------------------------------------- |
309
+ | Make buttons feel responsive | Add `transform: scale(0.97)` on `:active` |
310
+ | Element appears from nowhere | Start from `scale(0.95)`, not `scale(0)` |
311
+ | Shaky/jittery animations | Add `will-change: transform` |
312
+ | Hover causes flicker | Animate child element, not parent |
313
+ | Popover scales from wrong point | Set `transform-origin` to trigger location |
314
+ | Sequential tooltips feel slow | Skip delay/animation after first tooltip |
315
+ | Small buttons hard to tap | Use 44px minimum hit area (pseudo-element) |
316
+ | Something still feels off | Add subtle blur (under 20px) to mask it |
317
+ | Hover triggers on mobile | Use `@media (hover: hover) and (pointer: fine)` |
318
+
319
+ ## Easing Decision Flowchart
320
+
321
+ Is the element entering or exiting the viewport?
322
+ ├── Yes → ease-out
323
+ └── No
324
+ ├── Is it moving/morphing on screen?
325
+ │ └── Yes → ease-in-out
326
+ └── Is it a hover change?
327
+ ├── Yes → ease
328
+ └── Is it constant motion?
329
+ ├── Yes → linear
330
+ └── Default → ease-out
331
+
332
+ ## Reference Files
333
+
334
+ - [PRACTICAL-TIPS.md](PRACTICAL-TIPS.md) - Detailed implementations for common animation scenarios
335
+
336
+ ---
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: web-design-guidelines
3
+ description: Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
4
+ metadata:
5
+ author: vercel
6
+ version: "1.0.0"
7
+ argument-hint: <file-or-pattern>
8
+ ---
9
+
10
+ # Web Interface Guidelines
11
+
12
+ Review files for compliance with Web Interface Guidelines.
13
+
14
+ ## How It Works
15
+
16
+ 1. Fetch the latest guidelines from the source URL below
17
+ 2. Read the specified files (or prompt user for files/pattern)
18
+ 3. Check against all rules in the fetched guidelines
19
+ 4. Output findings in the terse `file:line` format
20
+
21
+ ## Guidelines Source
22
+
23
+ Fetch fresh guidelines before each review:
24
+
25
+ ```
26
+ https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md
27
+ ```
28
+
29
+ Use WebFetch to retrieve the latest rules. The fetched content contains all the rules and output format instructions.
30
+
31
+ ## Usage
32
+
33
+ When a user provides a file or pattern argument:
34
+ 1. Fetch guidelines from the source URL above
35
+ 2. Read the specified files
36
+ 3. Apply all rules from the fetched guidelines
37
+ 4. Output findings using the format specified in the guidelines
38
+
39
+ If no files specified, ask the user which files to review.
@@ -0,0 +1,6 @@
1
+ import type { DomainModel } from '../types.js';
2
+ export declare function runConstants(opts: {
3
+ model: DomainModel;
4
+ outputDir: string;
5
+ }): Promise<string>;
6
+ //# sourceMappingURL=create-constants-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-constants-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-constants-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AA8B1D,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBnG"}