@olives/devos 2.1.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 (741) hide show
  1. package/.agents/AGENTS.md +316 -0
  2. package/.agents/README.md +55 -0
  3. package/.agents/agents/architect.md +18 -0
  4. package/.agents/agents/dba.md +25 -0
  5. package/.agents/agents/developer.md +40 -0
  6. package/.agents/agents/devops.md +18 -0
  7. package/.agents/agents/memory-manager.md +38 -0
  8. package/.agents/agents/orchestrator.md +92 -0
  9. package/.agents/agents/qa.md +53 -0
  10. package/.agents/agents/release-manager.md +41 -0
  11. package/.agents/agents/researcher.md +19 -0
  12. package/.agents/agents/security.md +27 -0
  13. package/.agents/agents/tester.md +21 -0
  14. package/.agents/commands/README.md +42 -0
  15. package/.agents/commands/architect.md +16 -0
  16. package/.agents/commands/commit.md +15 -0
  17. package/.agents/commands/deploy.md +18 -0
  18. package/.agents/commands/fix.md +19 -0
  19. package/.agents/commands/refactor.md +19 -0
  20. package/.agents/commands/research.md +19 -0
  21. package/.agents/commands/review.md +21 -0
  22. package/.agents/commands/secure.md +23 -0
  23. package/.agents/commands/status.md +16 -0
  24. package/.agents/commands/test.md +16 -0
  25. package/.agents/scripts/commit.sh +73 -0
  26. package/.agents/scripts/install-hooks.sh +72 -0
  27. package/.agents/skills/agent-browser/SKILL.md +50 -0
  28. package/.agents/skills/agent-development/SKILL.md +415 -0
  29. package/.agents/skills/agent-development/examples/agent-creation-prompt.md +238 -0
  30. package/.agents/skills/agent-development/examples/complete-agent-examples.md +427 -0
  31. package/.agents/skills/agent-development/references/agent-creation-system-prompt.md +207 -0
  32. package/.agents/skills/agent-development/references/system-prompt-design.md +411 -0
  33. package/.agents/skills/agent-development/references/triggering-examples.md +491 -0
  34. package/.agents/skills/agent-development/scripts/validate-agent.sh +217 -0
  35. package/.agents/skills/backend-dev-guidelines/SKILL.md +352 -0
  36. package/.agents/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
  37. package/.agents/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
  38. package/.agents/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
  39. package/.agents/skills/backend-dev-guidelines/resources/configuration.md +275 -0
  40. package/.agents/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
  41. package/.agents/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
  42. package/.agents/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
  43. package/.agents/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
  44. package/.agents/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
  45. package/.agents/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
  46. package/.agents/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
  47. package/.agents/skills/backend-development/SKILL.md +156 -0
  48. package/.agents/skills/backend-patterns/SKILL.md +562 -0
  49. package/.agents/skills/brainstorming/SKILL.md +159 -0
  50. package/.agents/skills/brainstorming/scripts/frame-template.html +213 -0
  51. package/.agents/skills/brainstorming/scripts/helper.js +167 -0
  52. package/.agents/skills/brainstorming/scripts/server.cjs +723 -0
  53. package/.agents/skills/brainstorming/scripts/start-server.sh +209 -0
  54. package/.agents/skills/brainstorming/scripts/stop-server.sh +120 -0
  55. package/.agents/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  56. package/.agents/skills/brainstorming/visual-companion.md +291 -0
  57. package/.agents/skills/code-reviewer/SKILL.md +65 -0
  58. package/.agents/skills/content-strategy/SKILL.md +365 -0
  59. package/.agents/skills/content-strategy/evals/evals.json +90 -0
  60. package/.agents/skills/content-strategy/references/headless-cms.md +194 -0
  61. package/.agents/skills/deploy-to-vercel/SKILL.md +296 -0
  62. package/.agents/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
  63. package/.agents/skills/deploy-to-vercel/resources/deploy.sh +301 -0
  64. package/.agents/skills/deployment-checklist/SKILL.md +119 -0
  65. package/.agents/skills/design/SKILL.md +170 -0
  66. package/.agents/skills/design-an-interface/SKILL.md +94 -0
  67. package/.agents/skills/expose-localhost/SKILL.md +211 -0
  68. package/.agents/skills/expose-localhost/references/TROUBLESHOOTING.md +27 -0
  69. package/.agents/skills/find-skills/SKILL.md +142 -0
  70. package/.agents/skills/frontend-ui-engineering/SKILL.md +328 -0
  71. package/.agents/skills/git-commit/SKILL.md +124 -0
  72. package/.agents/skills/git-ops/SKILL.md +53 -0
  73. package/.agents/skills/git-workflow/SKILL.md +167 -0
  74. package/.agents/skills/google-agents-cli-adk-code/SKILL.md +72 -0
  75. package/.agents/skills/google-agents-cli-adk-code/references/adk-python.md +937 -0
  76. package/.agents/skills/google-agents-cli-adk-code/references/adk-workflows.md +507 -0
  77. package/.agents/skills/google-agents-cli-workflow/SKILL.md +310 -0
  78. package/.agents/skills/google-agents-cli-workflow/references/commands.md +12 -0
  79. package/.agents/skills/google-agents-cli-workflow/references/internals.md +24 -0
  80. package/.agents/skills/google-agents-cli-workflow/references/samples.md +59 -0
  81. package/.agents/skills/google-agents-cli-workflow/references/spec-template.md +25 -0
  82. package/.agents/skills/google-agents-cli-workflow/references/terminology.md +11 -0
  83. package/.agents/skills/grill-me/SKILL.md +47 -0
  84. package/.agents/skills/grill-with-docs/SKILL.md +7 -0
  85. package/.agents/skills/human-checkpoint/SKILL.md +21 -0
  86. package/.agents/skills/image/SKILL.md +340 -0
  87. package/.agents/skills/image/evals/evals.json +89 -0
  88. package/.agents/skills/image/references/ai-image-prompting.md +229 -0
  89. package/.agents/skills/image-generation/SKILL.md +374 -0
  90. package/.agents/skills/imagegen/LICENSE.txt +201 -0
  91. package/.agents/skills/imagegen/SKILL.md +279 -0
  92. package/.agents/skills/imagegen/agents/openai.yaml +6 -0
  93. package/.agents/skills/imagegen/assets/imagegen-small.svg +5 -0
  94. package/.agents/skills/imagegen/assets/imagegen.png +0 -0
  95. package/.agents/skills/imagegen/references/cli.md +160 -0
  96. package/.agents/skills/imagegen/references/codex-network.md +33 -0
  97. package/.agents/skills/imagegen/references/image-api.md +49 -0
  98. package/.agents/skills/imagegen/references/prompting.md +98 -0
  99. package/.agents/skills/imagegen/references/sample-prompts.md +376 -0
  100. package/.agents/skills/imagegen/scripts/image_gen.py +926 -0
  101. package/.agents/skills/imagegen-frontend-web/SKILL.md +987 -0
  102. package/.agents/skills/laravel-security/SKILL.md +948 -0
  103. package/.agents/skills/laravel-specialist/SKILL.md +264 -0
  104. package/.agents/skills/laravel-specialist/references/eloquent.md +351 -0
  105. package/.agents/skills/laravel-specialist/references/livewire.md +512 -0
  106. package/.agents/skills/laravel-specialist/references/queues.md +423 -0
  107. package/.agents/skills/laravel-specialist/references/routing.md +362 -0
  108. package/.agents/skills/laravel-specialist/references/testing.md +522 -0
  109. package/.agents/skills/laravel-tdd/SKILL.md +675 -0
  110. package/.agents/skills/laravel-verification/SKILL.md +180 -0
  111. package/.agents/skills/modern-web-guidance/SKILL.md +114 -0
  112. package/.agents/skills/modern-web-guidance/guides/accessibility/accessibility.md +463 -0
  113. package/.agents/skills/modern-web-guidance/guides/accessibility/accessible-error-announcement.md +207 -0
  114. package/.agents/skills/modern-web-guidance/guides/built-in-ai/language-detection.md +89 -0
  115. package/.agents/skills/modern-web-guidance/guides/built-in-ai/language-model.md +189 -0
  116. package/.agents/skills/modern-web-guidance/guides/built-in-ai/prompt-api.md +189 -0
  117. package/.agents/skills/modern-web-guidance/guides/built-in-ai/summarizer.md +154 -0
  118. package/.agents/skills/modern-web-guidance/guides/built-in-ai/translator.md +162 -0
  119. package/.agents/skills/modern-web-guidance/guides/css/css.md +527 -0
  120. package/.agents/skills/modern-web-guidance/guides/css/highlight-text-ranges.md +128 -0
  121. package/.agents/skills/modern-web-guidance/guides/css-layout/css-layout.md +305 -0
  122. package/.agents/skills/modern-web-guidance/guides/forms/animated-select-picker.md +178 -0
  123. package/.agents/skills/modern-web-guidance/guides/forms/autofill-address-form.md +75 -0
  124. package/.agents/skills/modern-web-guidance/guides/forms/autofill-highlight-inputs.md +45 -0
  125. package/.agents/skills/modern-web-guidance/guides/forms/autofill-payment-form.md +125 -0
  126. package/.agents/skills/modern-web-guidance/guides/forms/autofill-sign-in-form.md +135 -0
  127. package/.agents/skills/modern-web-guidance/guides/forms/autofill-sign-up-form.md +145 -0
  128. package/.agents/skills/modern-web-guidance/guides/forms/brand-consistent-forms.md +255 -0
  129. package/.agents/skills/modern-web-guidance/guides/forms/branded-select-styling.md +114 -0
  130. package/.agents/skills/modern-web-guidance/guides/forms/custom-select-picker-layouts.md +103 -0
  131. package/.agents/skills/modern-web-guidance/guides/forms/form-fields-automatically-fit-contents.md +121 -0
  132. package/.agents/skills/modern-web-guidance/guides/forms/forms.md +372 -0
  133. package/.agents/skills/modern-web-guidance/guides/forms/required-field-feedback.md +214 -0
  134. package/.agents/skills/modern-web-guidance/guides/forms/rich-media-picker.md +132 -0
  135. package/.agents/skills/modern-web-guidance/guides/forms/select-menu-interaction.md +180 -0
  136. package/.agents/skills/modern-web-guidance/guides/forms/validate-input-after-interaction.md +258 -0
  137. package/.agents/skills/modern-web-guidance/guides/html/html.md +407 -0
  138. package/.agents/skills/modern-web-guidance/guides/passkeys/passkey-authentication.md +205 -0
  139. package/.agents/skills/modern-web-guidance/guides/passkeys/passkey-conditional-create.md +134 -0
  140. package/.agents/skills/modern-web-guidance/guides/passkeys/passkey-management.md +211 -0
  141. package/.agents/skills/modern-web-guidance/guides/passkeys/passkey-reauthentication.md +128 -0
  142. package/.agents/skills/modern-web-guidance/guides/passkeys/passkey-registration.md +181 -0
  143. package/.agents/skills/modern-web-guidance/guides/passkeys/passkeys.md +38 -0
  144. package/.agents/skills/modern-web-guidance/guides/performance/batch-analytics-events.md +154 -0
  145. package/.agents/skills/modern-web-guidance/guides/performance/break-up-long-tasks.md +60 -0
  146. package/.agents/skills/modern-web-guidance/guides/performance/calculate-total-foreground-time.md +69 -0
  147. package/.agents/skills/modern-web-guidance/guides/performance/conditional-async-dependencies.md +71 -0
  148. package/.agents/skills/modern-web-guidance/guides/performance/defer-rendering-heavy-content.md +106 -0
  149. package/.agents/skills/modern-web-guidance/guides/performance/defer-work-until-scroll-ends.md +78 -0
  150. package/.agents/skills/modern-web-guidance/guides/performance/deprioritize-background-fetches.md +37 -0
  151. package/.agents/skills/modern-web-guidance/guides/performance/detect-initial-visibility-state.md +99 -0
  152. package/.agents/skills/modern-web-guidance/guides/performance/efficient-background-processing.md +117 -0
  153. package/.agents/skills/modern-web-guidance/guides/performance/faster-spa-view-transitions.md +79 -0
  154. package/.agents/skills/modern-web-guidance/guides/performance/full-session-analytics.md +135 -0
  155. package/.agents/skills/modern-web-guidance/guides/performance/identify-heavy-scripts.md +69 -0
  156. package/.agents/skills/modern-web-guidance/guides/performance/identify-inp-causes.md +73 -0
  157. package/.agents/skills/modern-web-guidance/guides/performance/improve-next-page-load-performance.md +119 -0
  158. package/.agents/skills/modern-web-guidance/guides/performance/interactions-in-complex-layouts.md +78 -0
  159. package/.agents/skills/modern-web-guidance/guides/performance/optimize-image-priority.md +61 -0
  160. package/.agents/skills/modern-web-guidance/guides/performance/optimize-preload-priority.md +41 -0
  161. package/.agents/skills/modern-web-guidance/guides/performance/optimize-script-priority.md +38 -0
  162. package/.agents/skills/modern-web-guidance/guides/performance/performance.md +366 -0
  163. package/.agents/skills/modern-web-guidance/guides/performance/resolution-optimized-pseudo-elements.md +47 -0
  164. package/.agents/skills/modern-web-guidance/guides/performance/schedule-tasks-by-priority.md +59 -0
  165. package/.agents/skills/modern-web-guidance/guides/performance/sequence-distributed-events.md +76 -0
  166. package/.agents/skills/modern-web-guidance/guides/privacy/privacy.md +247 -0
  167. package/.agents/skills/modern-web-guidance/guides/security/security.md +350 -0
  168. package/.agents/skills/modern-web-guidance/guides/user-experience/adapt-scrollbar-to-contrast-preferences.md +74 -0
  169. package/.agents/skills/modern-web-guidance/guides/user-experience/anchor-positioning-tab-underline.md +95 -0
  170. package/.agents/skills/modern-web-guidance/guides/user-experience/animate-element-entry-exit.md +131 -0
  171. package/.agents/skills/modern-web-guidance/guides/user-experience/animate-to-from-top-layer.md +140 -0
  172. package/.agents/skills/modern-web-guidance/guides/user-experience/animate-to-intrinsic-sizes.md +127 -0
  173. package/.agents/skills/modern-web-guidance/guides/user-experience/apply-webgl-shaders.md +239 -0
  174. package/.agents/skills/modern-web-guidance/guides/user-experience/calculate-event-differentials.md +85 -0
  175. package/.agents/skills/modern-web-guidance/guides/user-experience/calculate-with-intrinsic-sizes.md +196 -0
  176. package/.agents/skills/modern-web-guidance/guides/user-experience/capture-location-agnostic-data.md +63 -0
  177. package/.agents/skills/modern-web-guidance/guides/user-experience/carousel-slide-effects.md +187 -0
  178. package/.agents/skills/modern-web-guidance/guides/user-experience/carousel-snap-highlights.md +136 -0
  179. package/.agents/skills/modern-web-guidance/guides/user-experience/child-state-based-styling.md +101 -0
  180. package/.agents/skills/modern-web-guidance/guides/user-experience/complex-shapes.md +73 -0
  181. package/.agents/skills/modern-web-guidance/guides/user-experience/component-specific-light-dark-theme.md +179 -0
  182. package/.agents/skills/modern-web-guidance/guides/user-experience/consistent-cross-document-transitions.md +226 -0
  183. package/.agents/skills/modern-web-guidance/guides/user-experience/content-based-styling.md +118 -0
  184. package/.agents/skills/modern-web-guidance/guides/user-experience/coordinate-global-events.md +79 -0
  185. package/.agents/skills/modern-web-guidance/guides/user-experience/cross-document-transitions.md +127 -0
  186. package/.agents/skills/modern-web-guidance/guides/user-experience/custom-button-actions.md +173 -0
  187. package/.agents/skills/modern-web-guidance/guides/user-experience/customize-scrollbar-color-and-thickness.md +59 -0
  188. package/.agents/skills/modern-web-guidance/guides/user-experience/dark-mode.md +295 -0
  189. package/.agents/skills/modern-web-guidance/guides/user-experience/declarative-dialog-popover-control.md +238 -0
  190. package/.agents/skills/modern-web-guidance/guides/user-experience/deliver-optimized-decorative-images.md +49 -0
  191. package/.agents/skills/modern-web-guidance/guides/user-experience/design-token-reactivity.md +174 -0
  192. package/.agents/skills/modern-web-guidance/guides/user-experience/directional-navigation-transitions.md +125 -0
  193. package/.agents/skills/modern-web-guidance/guides/user-experience/dynamic-sibling-animations.md +54 -0
  194. package/.agents/skills/modern-web-guidance/guides/user-experience/dynamic-sibling-styling.md +98 -0
  195. package/.agents/skills/modern-web-guidance/guides/user-experience/export-html-media-from-canvas.md +256 -0
  196. package/.agents/skills/modern-web-guidance/guides/user-experience/expose-canvas-content-to-browser-features.md +401 -0
  197. package/.agents/skills/modern-web-guidance/guides/user-experience/flicker-free-client-side-ab-testing.md +168 -0
  198. package/.agents/skills/modern-web-guidance/guides/user-experience/fluid-scaling.md +78 -0
  199. package/.agents/skills/modern-web-guidance/guides/user-experience/format-human-readable-durations.md +87 -0
  200. package/.agents/skills/modern-web-guidance/guides/user-experience/group-element-transitions.md +124 -0
  201. package/.agents/skills/modern-web-guidance/guides/user-experience/improve-text-layout-and-legibility.md +76 -0
  202. package/.agents/skills/modern-web-guidance/guides/user-experience/individual-transform-properties.md +92 -0
  203. package/.agents/skills/modern-web-guidance/guides/user-experience/interactive-content-in-3d-scenes.md +383 -0
  204. package/.agents/skills/modern-web-guidance/guides/user-experience/interactive-content-reveal.md +118 -0
  205. package/.agents/skills/modern-web-guidance/guides/user-experience/interest-triggered-action-previews.md +79 -0
  206. package/.agents/skills/modern-web-guidance/guides/user-experience/interest-triggered-tooltips.md +132 -0
  207. package/.agents/skills/modern-web-guidance/guides/user-experience/light-dismiss-a-dialog.md +84 -0
  208. package/.agents/skills/modern-web-guidance/guides/user-experience/manage-recurring-intervals.md +73 -0
  209. package/.agents/skills/modern-web-guidance/guides/user-experience/model-partial-time-concepts.md +96 -0
  210. package/.agents/skills/modern-web-guidance/guides/user-experience/move-dom-element-without-losing-state.md +57 -0
  211. package/.agents/skills/modern-web-guidance/guides/user-experience/navigation-drawer.md +357 -0
  212. package/.agents/skills/modern-web-guidance/guides/user-experience/overflow-clipping-control.md +180 -0
  213. package/.agents/skills/modern-web-guidance/guides/user-experience/parallax-scroll-effects.md +230 -0
  214. package/.agents/skills/modern-web-guidance/guides/user-experience/persistent-app-tours.md +112 -0
  215. package/.agents/skills/modern-web-guidance/guides/user-experience/persistent-toast-notifications.md +30 -0
  216. package/.agents/skills/modern-web-guidance/guides/user-experience/persistent-top-layer-ui.md +48 -0
  217. package/.agents/skills/modern-web-guidance/guides/user-experience/physics-based-easing.md +118 -0
  218. package/.agents/skills/modern-web-guidance/guides/user-experience/platform-controls-dismiss-dialog.md +38 -0
  219. package/.agents/skills/modern-web-guidance/guides/user-experience/position-aware-tooltips.md +154 -0
  220. package/.agents/skills/modern-web-guidance/guides/user-experience/precise-text-alignment.md +99 -0
  221. package/.agents/skills/modern-web-guidance/guides/user-experience/prevent-text-wrapping.md +62 -0
  222. package/.agents/skills/modern-web-guidance/guides/user-experience/pull-to-reveal.md +83 -0
  223. package/.agents/skills/modern-web-guidance/guides/user-experience/reduce-style-repetition.md +87 -0
  224. package/.agents/skills/modern-web-guidance/guides/user-experience/resilient-context-menus-and-nested-dropdowns.md +102 -0
  225. package/.agents/skills/modern-web-guidance/guides/user-experience/same-document-transitions.md +177 -0
  226. package/.agents/skills/modern-web-guidance/guides/user-experience/scroll-entry-exit-effects.md +173 -0
  227. package/.agents/skills/modern-web-guidance/guides/user-experience/scroll-position-aware-elements.md +128 -0
  228. package/.agents/skills/modern-web-guidance/guides/user-experience/scroll-progress-indicator.md +133 -0
  229. package/.agents/skills/modern-web-guidance/guides/user-experience/scroll-snap-realtime-feedback.md +153 -0
  230. package/.agents/skills/modern-web-guidance/guides/user-experience/scroll-snap-state-sync.md +93 -0
  231. package/.agents/skills/modern-web-guidance/guides/user-experience/scroll-target-on-load.md +56 -0
  232. package/.agents/skills/modern-web-guidance/guides/user-experience/scrollability-affordance-hints.md +124 -0
  233. package/.agents/skills/modern-web-guidance/guides/user-experience/scrollytelling.md +181 -0
  234. package/.agents/skills/modern-web-guidance/guides/user-experience/search-hidden-content.md +136 -0
  235. package/.agents/skills/modern-web-guidance/guides/user-experience/shaped-cutouts.md +146 -0
  236. package/.agents/skills/modern-web-guidance/guides/user-experience/shrinking-header-on-scroll.md +126 -0
  237. package/.agents/skills/modern-web-guidance/guides/user-experience/size-aware-styling.md +104 -0
  238. package/.agents/skills/modern-web-guidance/guides/user-experience/soft-edge-content-fade.md +62 -0
  239. package/.agents/skills/modern-web-guidance/guides/user-experience/stabilize-reactive-state.md +72 -0
  240. package/.agents/skills/modern-web-guidance/guides/user-experience/stack-drill-down.md +680 -0
  241. package/.agents/skills/modern-web-guidance/guides/user-experience/style-parent-with-has.md +199 -0
  242. package/.agents/skills/modern-web-guidance/guides/user-experience/support-global-calendar-systems.md +107 -0
  243. package/.agents/skills/modern-web-guidance/guides/user-experience/swipe-to-remove.md +527 -0
  244. package/.agents/skills/modern-web-guidance/guides/user-experience/visually-stable-font-fallbacks.md +49 -0
  245. package/.agents/skills/modern-web-guidance/guides/user-experience/visually-stable-mixed-fonts.md +61 -0
  246. package/.agents/skills/modern-web-guidance/guides/user-experience/visually-texture-content.md +76 -0
  247. package/.agents/skills/modern-web-guidance/guides/webmcp/agentic-forms.md +116 -0
  248. package/.agents/skills/modern-web-guidance/guides/webmcp/agentic-javascript-tools.md +116 -0
  249. package/.agents/skills/modern-web-guidance/guides/webmcp/webmcp.md +43 -0
  250. package/.agents/skills/nextjs-app-router-patterns/SKILL.md +114 -0
  251. package/.agents/skills/nextjs-app-router-patterns/references/details.md +428 -0
  252. package/.agents/skills/nextjs-developer/SKILL.md +145 -0
  253. package/.agents/skills/nextjs-developer/references/app-router.md +311 -0
  254. package/.agents/skills/nextjs-developer/references/data-fetching.md +482 -0
  255. package/.agents/skills/nextjs-developer/references/deployment.md +545 -0
  256. package/.agents/skills/nextjs-developer/references/server-actions.md +462 -0
  257. package/.agents/skills/nextjs-developer/references/server-components.md +384 -0
  258. package/.agents/skills/nextjs-supabase-auth/SKILL.md +313 -0
  259. package/.agents/skills/nodejs-backend-patterns/SKILL.md +45 -0
  260. package/.agents/skills/nodejs-backend-patterns/references/advanced-patterns.md +430 -0
  261. package/.agents/skills/nodejs-backend-patterns/references/details.md +599 -0
  262. package/.agents/skills/performance-engineer/SKILL.md +181 -0
  263. package/.agents/skills/project-requirements/SKILL.md +43 -0
  264. package/.agents/skills/qa/SKILL.md +130 -0
  265. package/.agents/skills/security-review/LICENSE +22 -0
  266. package/.agents/skills/security-review/SKILL.md +312 -0
  267. package/.agents/skills/security-review/infrastructure/docker.md +432 -0
  268. package/.agents/skills/security-review/languages/javascript.md +387 -0
  269. package/.agents/skills/security-review/languages/python.md +363 -0
  270. package/.agents/skills/security-review/references/api-security.md +519 -0
  271. package/.agents/skills/security-review/references/authentication.md +353 -0
  272. package/.agents/skills/security-review/references/authorization.md +372 -0
  273. package/.agents/skills/security-review/references/business-logic.md +443 -0
  274. package/.agents/skills/security-review/references/cryptography.md +329 -0
  275. package/.agents/skills/security-review/references/csrf.md +398 -0
  276. package/.agents/skills/security-review/references/data-protection.md +378 -0
  277. package/.agents/skills/security-review/references/deserialization.md +410 -0
  278. package/.agents/skills/security-review/references/error-handling.md +436 -0
  279. package/.agents/skills/security-review/references/file-security.md +457 -0
  280. package/.agents/skills/security-review/references/injection.md +259 -0
  281. package/.agents/skills/security-review/references/logging.md +433 -0
  282. package/.agents/skills/security-review/references/misconfiguration.md +435 -0
  283. package/.agents/skills/security-review/references/modern-threats.md +475 -0
  284. package/.agents/skills/security-review/references/ssrf.md +413 -0
  285. package/.agents/skills/security-review/references/supply-chain.md +405 -0
  286. package/.agents/skills/security-review/references/xss.md +336 -0
  287. package/.agents/skills/seo-aeo-best-practices/SKILL.md +37 -0
  288. package/.agents/skills/seo-aeo-best-practices/references/aeo-considerations.md +159 -0
  289. package/.agents/skills/seo-aeo-best-practices/references/eeat-principles.md +127 -0
  290. package/.agents/skills/seo-aeo-best-practices/references/structured-data.md +183 -0
  291. package/.agents/skills/seo-aeo-best-practices/references/technical-seo.md +188 -0
  292. package/.agents/skills/seo-geo/.claude-plugin/plugin.json +29 -0
  293. package/.agents/skills/seo-geo/SKILL.md +250 -0
  294. package/.agents/skills/seo-geo/examples/opc-skills-case-study.md +330 -0
  295. package/.agents/skills/seo-geo/references/geo-research.md +319 -0
  296. package/.agents/skills/seo-geo/references/google-docs-summary.md +65 -0
  297. package/.agents/skills/seo-geo/references/platform-algorithms.md +354 -0
  298. package/.agents/skills/seo-geo/references/schema-templates.md +517 -0
  299. package/.agents/skills/seo-geo/references/seo-checklist.md +249 -0
  300. package/.agents/skills/seo-geo/references/tools-and-apis.md +313 -0
  301. package/.agents/skills/seo-geo/scripts/autocomplete_ideas.py +74 -0
  302. package/.agents/skills/seo-geo/scripts/backlinks.py +37 -0
  303. package/.agents/skills/seo-geo/scripts/competitor_gap.py +80 -0
  304. package/.agents/skills/seo-geo/scripts/credential.py +12 -0
  305. package/.agents/skills/seo-geo/scripts/dataforseo_api.py +104 -0
  306. package/.agents/skills/seo-geo/scripts/domain_overview.py +44 -0
  307. package/.agents/skills/seo-geo/scripts/keyword_research.py +38 -0
  308. package/.agents/skills/seo-geo/scripts/related_keywords.py +84 -0
  309. package/.agents/skills/seo-geo/scripts/seo_audit.py +151 -0
  310. package/.agents/skills/seo-geo/scripts/serp_analysis.py +41 -0
  311. package/.agents/skills/shadcn-ui/README.md +248 -0
  312. package/.agents/skills/shadcn-ui/SKILL.md +326 -0
  313. package/.agents/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  314. package/.agents/skills/shadcn-ui/examples/data-table.tsx +313 -0
  315. package/.agents/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  316. package/.agents/skills/shadcn-ui/resources/component-catalog.md +481 -0
  317. package/.agents/skills/shadcn-ui/resources/customization-guide.md +516 -0
  318. package/.agents/skills/shadcn-ui/resources/migration-guide.md +463 -0
  319. package/.agents/skills/shadcn-ui/resources/setup-guide.md +412 -0
  320. package/.agents/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  321. package/.agents/skills/skill-creator/LICENSE.txt +202 -0
  322. package/.agents/skills/skill-creator/SKILL.md +485 -0
  323. package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
  324. package/.agents/skills/skill-creator/agents/comparator.md +202 -0
  325. package/.agents/skills/skill-creator/agents/grader.md +223 -0
  326. package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
  327. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  328. package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  329. package/.agents/skills/skill-creator/references/schemas.md +430 -0
  330. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  331. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  332. package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
  333. package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
  334. package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
  335. package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
  336. package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
  337. package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
  338. package/.agents/skills/skill-creator/scripts/utils.py +47 -0
  339. package/.agents/skills/stacks/SKILL.md +21 -0
  340. package/.agents/skills/stacks/django.md +187 -0
  341. package/.agents/skills/stacks/express.md +16 -0
  342. package/.agents/skills/stacks/fastapi.md +17 -0
  343. package/.agents/skills/stacks/laravel.md +18 -0
  344. package/.agents/skills/stacks/nextjs.md +20 -0
  345. package/.agents/skills/stacks/react-native.md +170 -0
  346. package/.agents/skills/supabase/CHANGELOG.md +35 -0
  347. package/.agents/skills/supabase/SKILL.md +135 -0
  348. package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
  349. package/.agents/skills/supabase/references/skill-feedback.md +17 -0
  350. package/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
  351. package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  352. package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
  353. package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
  354. package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
  355. package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  356. package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  357. package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  358. package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  359. package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  360. package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  361. package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  362. package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  363. package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  364. package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  365. package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  366. package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  367. package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  368. package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  369. package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  370. package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  371. package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  372. package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  373. package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  374. package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  375. package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  376. package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  377. package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  378. package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  379. package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  380. package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  381. package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  382. package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  383. package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  384. package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  385. package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
  386. package/.agents/skills/task-contract/SKILL.md +29 -0
  387. package/.agents/skills/token-optimization/SKILL.md +40 -0
  388. package/.agents/skills/ui-designer/SKILL.md +76 -0
  389. package/.agents/skills/ui-ux-pro-max/SKILL.md +704 -0
  390. package/.agents/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
  391. package/.agents/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
  392. package/.agents/skills/ui-ux-pro-max/data/charts.csv +26 -0
  393. package/.agents/skills/ui-ux-pro-max/data/colors.csv +162 -0
  394. package/.agents/skills/ui-ux-pro-max/data/design.csv +1776 -0
  395. package/.agents/skills/ui-ux-pro-max/data/draft.csv +1779 -0
  396. package/.agents/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
  397. package/.agents/skills/ui-ux-pro-max/data/icons.csv +106 -0
  398. package/.agents/skills/ui-ux-pro-max/data/landing.csv +35 -0
  399. package/.agents/skills/ui-ux-pro-max/data/motion.csv +17 -0
  400. package/.agents/skills/ui-ux-pro-max/data/products.csv +162 -0
  401. package/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  402. package/.agents/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
  403. package/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  404. package/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  405. package/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  406. package/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  407. package/.agents/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
  408. package/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  409. package/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  410. package/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  411. package/.agents/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  412. package/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  413. package/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  414. package/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  415. package/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  416. package/.agents/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
  417. package/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  418. package/.agents/skills/ui-ux-pro-max/data/styles.csv +85 -0
  419. package/.agents/skills/ui-ux-pro-max/data/typography.csv +74 -0
  420. package/.agents/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
  421. package/.agents/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  422. package/.agents/skills/ui-ux-pro-max/scripts/core.py +274 -0
  423. package/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1329 -0
  424. package/.agents/skills/ui-ux-pro-max/scripts/search.py +127 -0
  425. package/.agents/skills/vercel-cli-with-tokens/SKILL.md +353 -0
  426. package/.agents/skills/vercel-composition-patterns/AGENTS.md +946 -0
  427. package/.agents/skills/vercel-composition-patterns/README.md +60 -0
  428. package/.agents/skills/vercel-composition-patterns/SKILL.md +89 -0
  429. package/.agents/skills/vercel-composition-patterns/metadata.json +11 -0
  430. package/.agents/skills/vercel-composition-patterns/rules/_sections.md +29 -0
  431. package/.agents/skills/vercel-composition-patterns/rules/_template.md +24 -0
  432. package/.agents/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  433. package/.agents/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
  434. package/.agents/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  435. package/.agents/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  436. package/.agents/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  437. package/.agents/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  438. package/.agents/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
  439. package/.agents/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  440. package/.agents/skills/vercel-optimize/AGENTS.md +48 -0
  441. package/.agents/skills/vercel-optimize/CONTRIBUTING.md +41 -0
  442. package/.agents/skills/vercel-optimize/README.md +91 -0
  443. package/.agents/skills/vercel-optimize/SKILL.md +322 -0
  444. package/.agents/skills/vercel-optimize/lib/auth-route.mjs +23 -0
  445. package/.agents/skills/vercel-optimize/lib/budget-summary.mjs +182 -0
  446. package/.agents/skills/vercel-optimize/lib/citations.mjs +139 -0
  447. package/.agents/skills/vercel-optimize/lib/cost-coverage.mjs +143 -0
  448. package/.agents/skills/vercel-optimize/lib/dedup-recs.mjs +325 -0
  449. package/.agents/skills/vercel-optimize/lib/deep-dive.mjs +350 -0
  450. package/.agents/skills/vercel-optimize/lib/display-labels.mjs +185 -0
  451. package/.agents/skills/vercel-optimize/lib/extract-claims.mjs +550 -0
  452. package/.agents/skills/vercel-optimize/lib/framework-support.mjs +67 -0
  453. package/.agents/skills/vercel-optimize/lib/gates/build-minutes-fanout.mjs +69 -0
  454. package/.agents/skills/vercel-optimize/lib/gates/cold-start.mjs +66 -0
  455. package/.agents/skills/vercel-optimize/lib/gates/contract.mjs +79 -0
  456. package/.agents/skills/vercel-optimize/lib/gates/cwv-poor.mjs +87 -0
  457. package/.agents/skills/vercel-optimize/lib/gates/external-api-slow.mjs +55 -0
  458. package/.agents/skills/vercel-optimize/lib/gates/hard-gates.mjs +73 -0
  459. package/.agents/skills/vercel-optimize/lib/gates/index.mjs +45 -0
  460. package/.agents/skills/vercel-optimize/lib/gates/isr-overrevalidation.mjs +62 -0
  461. package/.agents/skills/vercel-optimize/lib/gates/middleware-heavy.mjs +51 -0
  462. package/.agents/skills/vercel-optimize/lib/gates/observability-events-attribution.mjs +56 -0
  463. package/.agents/skills/vercel-optimize/lib/gates/platform-bot-protection.mjs +115 -0
  464. package/.agents/skills/vercel-optimize/lib/gates/platform-fluid-compute.mjs +83 -0
  465. package/.agents/skills/vercel-optimize/lib/gates/region-misconfig.mjs +64 -0
  466. package/.agents/skills/vercel-optimize/lib/gates/route-errors.mjs +80 -0
  467. package/.agents/skills/vercel-optimize/lib/gates/scanner-driven.mjs +122 -0
  468. package/.agents/skills/vercel-optimize/lib/gates/select-candidates.mjs +134 -0
  469. package/.agents/skills/vercel-optimize/lib/gates/slow-route.mjs +88 -0
  470. package/.agents/skills/vercel-optimize/lib/gates/types.d.ts +38 -0
  471. package/.agents/skills/vercel-optimize/lib/gates/uncached-route.mjs +93 -0
  472. package/.agents/skills/vercel-optimize/lib/gates/usage-spike-triage.mjs +121 -0
  473. package/.agents/skills/vercel-optimize/lib/grade-recommendation.mjs +155 -0
  474. package/.agents/skills/vercel-optimize/lib/impact-label.mjs +126 -0
  475. package/.agents/skills/vercel-optimize/lib/impact-magnitude.mjs +60 -0
  476. package/.agents/skills/vercel-optimize/lib/investigation-brief.mjs +610 -0
  477. package/.agents/skills/vercel-optimize/lib/observation-safety.mjs +174 -0
  478. package/.agents/skills/vercel-optimize/lib/project-facts.mjs +99 -0
  479. package/.agents/skills/vercel-optimize/lib/queries.mjs +315 -0
  480. package/.agents/skills/vercel-optimize/lib/reconcile-candidates.mjs +372 -0
  481. package/.agents/skills/vercel-optimize/lib/render-report.mjs +955 -0
  482. package/.agents/skills/vercel-optimize/lib/repo-root.mjs +86 -0
  483. package/.agents/skills/vercel-optimize/lib/route-normalize.mjs +220 -0
  484. package/.agents/skills/vercel-optimize/lib/sanitizers/bot-protection-certainty.mjs +38 -0
  485. package/.agents/skills/vercel-optimize/lib/sanitizers/cache-tag-invalidation-certainty.mjs +30 -0
  486. package/.agents/skills/vercel-optimize/lib/sanitizers/count-correct.mjs +52 -0
  487. package/.agents/skills/vercel-optimize/lib/sanitizers/function-duration-invocations.mjs +38 -0
  488. package/.agents/skills/vercel-optimize/lib/sanitizers/index.mjs +79 -0
  489. package/.agents/skills/vercel-optimize/lib/sanitizers/middleware-conflict.mjs +36 -0
  490. package/.agents/skills/vercel-optimize/lib/sanitizers/missing-citation.mjs +16 -0
  491. package/.agents/skills/vercel-optimize/lib/sanitizers/pre-release.mjs +74 -0
  492. package/.agents/skills/vercel-optimize/lib/sanitizers/rate-limit.mjs +67 -0
  493. package/.agents/skills/vercel-optimize/lib/sanitizers/rendering-mode-mislabel.mjs +38 -0
  494. package/.agents/skills/vercel-optimize/lib/sanitizers/undeclared-dep.mjs +78 -0
  495. package/.agents/skills/vercel-optimize/lib/sanitizers/vercel-directive-strip.mjs +37 -0
  496. package/.agents/skills/vercel-optimize/lib/sanitizers/window-units.mjs +32 -0
  497. package/.agents/skills/vercel-optimize/lib/scanners/cache-components-suspense-dedupe.mjs +109 -0
  498. package/.agents/skills/vercel-optimize/lib/scanners/edge-heavy-import.mjs +94 -0
  499. package/.agents/skills/vercel-optimize/lib/scanners/force-dynamic.mjs +42 -0
  500. package/.agents/skills/vercel-optimize/lib/scanners/headers-in-page.mjs +44 -0
  501. package/.agents/skills/vercel-optimize/lib/scanners/index.mjs +35 -0
  502. package/.agents/skills/vercel-optimize/lib/scanners/large-static-asset.mjs +92 -0
  503. package/.agents/skills/vercel-optimize/lib/scanners/max-age-without-s-maxage.mjs +42 -0
  504. package/.agents/skills/vercel-optimize/lib/scanners/middleware-broad-matcher.mjs +55 -0
  505. package/.agents/skills/vercel-optimize/lib/scanners/missing-cache-headers.mjs +90 -0
  506. package/.agents/skills/vercel-optimize/lib/scanners/prisma-include-tree.mjs +42 -0
  507. package/.agents/skills/vercel-optimize/lib/scanners/region-pin-in-config.mjs +88 -0
  508. package/.agents/skills/vercel-optimize/lib/scanners/source-maps-production.mjs +36 -0
  509. package/.agents/skills/vercel-optimize/lib/scanners/sveltekit-prerender-missing.mjs +43 -0
  510. package/.agents/skills/vercel-optimize/lib/scanners/turbo-force-bypass.mjs +129 -0
  511. package/.agents/skills/vercel-optimize/lib/scanners/unoptimized-image.mjs +113 -0
  512. package/.agents/skills/vercel-optimize/lib/scanners/use-cache-date-stamp.mjs +106 -0
  513. package/.agents/skills/vercel-optimize/lib/support-topics.mjs +355 -0
  514. package/.agents/skills/vercel-optimize/lib/throttle.mjs +273 -0
  515. package/.agents/skills/vercel-optimize/lib/util.mjs +17 -0
  516. package/.agents/skills/vercel-optimize/lib/vercel.mjs +864 -0
  517. package/.agents/skills/vercel-optimize/lib/verify-claim.mjs +1296 -0
  518. package/.agents/skills/vercel-optimize/lib/workspace-resolver.mjs +521 -0
  519. package/.agents/skills/vercel-optimize/metadata.json +14 -0
  520. package/.agents/skills/vercel-optimize/references/candidates.md +176 -0
  521. package/.agents/skills/vercel-optimize/references/data-collection.md +218 -0
  522. package/.agents/skills/vercel-optimize/references/docs-library.json +683 -0
  523. package/.agents/skills/vercel-optimize/references/doctrine.md +105 -0
  524. package/.agents/skills/vercel-optimize/references/observability-plus.md +108 -0
  525. package/.agents/skills/vercel-optimize/references/playbooks/README.md +53 -0
  526. package/.agents/skills/vercel-optimize/references/playbooks/ai-application.md +32 -0
  527. package/.agents/skills/vercel-optimize/references/playbooks/api-service.md +30 -0
  528. package/.agents/skills/vercel-optimize/references/playbooks/content-site.md +30 -0
  529. package/.agents/skills/vercel-optimize/references/playbooks/ecommerce.md +30 -0
  530. package/.agents/skills/vercel-optimize/references/playbooks/marketing.md +30 -0
  531. package/.agents/skills/vercel-optimize/references/playbooks/saas.md +31 -0
  532. package/.agents/skills/vercel-optimize/references/playbooks/sveltekit.md +75 -0
  533. package/.agents/skills/vercel-optimize/references/recommendations.md +203 -0
  534. package/.agents/skills/vercel-optimize/references/scanner-patterns.md +251 -0
  535. package/.agents/skills/vercel-optimize/references/scoring.md +205 -0
  536. package/.agents/skills/vercel-optimize/references/support-topics/README.md +46 -0
  537. package/.agents/skills/vercel-optimize/references/support-topics/astro-edge-middleware-scope.md +22 -0
  538. package/.agents/skills/vercel-optimize/references/support-topics/astro-output-mode-and-isr.md +22 -0
  539. package/.agents/skills/vercel-optimize/references/support-topics/auth-preserving-parallelization.md +22 -0
  540. package/.agents/skills/vercel-optimize/references/support-topics/bot-protection-product-guardrails.md +22 -0
  541. package/.agents/skills/vercel-optimize/references/support-topics/build-minutes-monorepo-fanout.md +23 -0
  542. package/.agents/skills/vercel-optimize/references/support-topics/cache-components-static-shell-boundaries.md +22 -0
  543. package/.agents/skills/vercel-optimize/references/support-topics/cache-components-suspense-dedupe-pitfall.md +23 -0
  544. package/.agents/skills/vercel-optimize/references/support-topics/cdn-cache-auth-safety.md +22 -0
  545. package/.agents/skills/vercel-optimize/references/support-topics/cold-start-initialization-bundle.md +22 -0
  546. package/.agents/skills/vercel-optimize/references/support-topics/core-web-vitals-client-bottlenecks.md +22 -0
  547. package/.agents/skills/vercel-optimize/references/support-topics/database-egress-pooling-region.md +22 -0
  548. package/.agents/skills/vercel-optimize/references/support-topics/dynamic-rendering-traps.md +22 -0
  549. package/.agents/skills/vercel-optimize/references/support-topics/external-api-critical-path-platform.md +22 -0
  550. package/.agents/skills/vercel-optimize/references/support-topics/external-api-critical-path.md +22 -0
  551. package/.agents/skills/vercel-optimize/references/support-topics/fast-data-transfer-payloads.md +22 -0
  552. package/.agents/skills/vercel-optimize/references/support-topics/fluid-compute-caveats.md +22 -0
  553. package/.agents/skills/vercel-optimize/references/support-topics/function-duration-io-and-after.md +22 -0
  554. package/.agents/skills/vercel-optimize/references/support-topics/function-invocation-reduction.md +22 -0
  555. package/.agents/skills/vercel-optimize/references/support-topics/function-region-misconfiguration-ttfb.md +23 -0
  556. package/.agents/skills/vercel-optimize/references/support-topics/image-optimization-cost-control.md +22 -0
  557. package/.agents/skills/vercel-optimize/references/support-topics/isr-revalidation-static-generation.md +22 -0
  558. package/.agents/skills/vercel-optimize/references/support-topics/middleware-proxy-edge-cost.md +22 -0
  559. package/.agents/skills/vercel-optimize/references/support-topics/next-fetch-revalidate-floor.md +22 -0
  560. package/.agents/skills/vercel-optimize/references/support-topics/next-font-cls-self-hosting.md +23 -0
  561. package/.agents/skills/vercel-optimize/references/support-topics/next-heavy-ui-lazy-load-boundaries.md +23 -0
  562. package/.agents/skills/vercel-optimize/references/support-topics/next-image-lcp-preload-sizes.md +23 -0
  563. package/.agents/skills/vercel-optimize/references/support-topics/next-route-handler-get-cache-defaults.md +22 -0
  564. package/.agents/skills/vercel-optimize/references/support-topics/next-script-third-party-strategy.md +23 -0
  565. package/.agents/skills/vercel-optimize/references/support-topics/nextjs-version-cache-semantics.md +22 -0
  566. package/.agents/skills/vercel-optimize/references/support-topics/not-found-catchall-request-waste.md +23 -0
  567. package/.agents/skills/vercel-optimize/references/support-topics/nuxt-route-rules-cache-isr.md +22 -0
  568. package/.agents/skills/vercel-optimize/references/support-topics/observability-events-cost-attribution.md +22 -0
  569. package/.agents/skills/vercel-optimize/references/support-topics/post-response-work-waituntil.md +22 -0
  570. package/.agents/skills/vercel-optimize/references/support-topics/route-error-durable-offload.md +22 -0
  571. package/.agents/skills/vercel-optimize/references/support-topics/route-error-runtime-limits.md +22 -0
  572. package/.agents/skills/vercel-optimize/references/support-topics/runtime-cache-reusable-data.md +22 -0
  573. package/.agents/skills/vercel-optimize/references/support-topics/sveltekit-isr-prerender-safety.md +22 -0
  574. package/.agents/skills/vercel-optimize/references/support-topics/sveltekit-split-cold-start-tradeoff.md +22 -0
  575. package/.agents/skills/vercel-optimize/references/support-topics/usage-spike-triage.md +22 -0
  576. package/.agents/skills/vercel-optimize/references/support-topics/use-cache-date-stamp-isr-write-amplifier.md +23 -0
  577. package/.agents/skills/vercel-optimize/references/support-topics/use-cache-remote-shared-origin-data.md +22 -0
  578. package/.agents/skills/vercel-optimize/references/support-topics/workflow-resumable-stream-routes.md +23 -0
  579. package/.agents/skills/vercel-optimize/references/verification.md +102 -0
  580. package/.agents/skills/vercel-optimize/references/voice.md +76 -0
  581. package/.agents/skills/vercel-optimize/scripts/budget-summary.mjs +56 -0
  582. package/.agents/skills/vercel-optimize/scripts/build-docs.mjs +74 -0
  583. package/.agents/skills/vercel-optimize/scripts/check-citations.mjs +81 -0
  584. package/.agents/skills/vercel-optimize/scripts/check-docs-fresh.mjs +93 -0
  585. package/.agents/skills/vercel-optimize/scripts/collect-signals.mjs +576 -0
  586. package/.agents/skills/vercel-optimize/scripts/collect-sub-agent-outputs.mjs +296 -0
  587. package/.agents/skills/vercel-optimize/scripts/deep-dive.mjs +319 -0
  588. package/.agents/skills/vercel-optimize/scripts/gate-investigations.mjs +166 -0
  589. package/.agents/skills/vercel-optimize/scripts/merge-signals.mjs +192 -0
  590. package/.agents/skills/vercel-optimize/scripts/prepare-investigation-brief.mjs +231 -0
  591. package/.agents/skills/vercel-optimize/scripts/reconcile-candidates.mjs +62 -0
  592. package/.agents/skills/vercel-optimize/scripts/render-report.mjs +437 -0
  593. package/.agents/skills/vercel-optimize/scripts/scan-codebase.mjs +313 -0
  594. package/.agents/skills/vercel-optimize/scripts/verify-and-regen.mjs +346 -0
  595. package/.agents/skills/vercel-optimize/scripts/verify-finding.mjs +19 -0
  596. package/.agents/skills/vercel-react-best-practices/AGENTS.md +3810 -0
  597. package/.agents/skills/vercel-react-best-practices/README.md +123 -0
  598. package/.agents/skills/vercel-react-best-practices/SKILL.md +149 -0
  599. package/.agents/skills/vercel-react-best-practices/metadata.json +15 -0
  600. package/.agents/skills/vercel-react-best-practices/rules/_sections.md +46 -0
  601. package/.agents/skills/vercel-react-best-practices/rules/_template.md +28 -0
  602. package/.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  603. package/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  604. package/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  605. package/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  606. package/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  607. package/.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  608. package/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
  609. package/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  610. package/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  611. package/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  612. package/.agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  613. package/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  614. package/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  615. package/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  616. package/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  617. package/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  618. package/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  619. package/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  620. package/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  621. package/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  622. package/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  623. package/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  624. package/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  625. package/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  626. package/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  627. package/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  628. package/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  629. package/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  630. package/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  631. package/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  632. package/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  633. package/.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
  634. package/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  635. package/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  636. package/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  637. package/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  638. package/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  639. package/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  640. package/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  641. package/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  642. package/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  643. package/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  644. package/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  645. package/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  646. package/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  647. package/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  648. package/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  649. package/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  650. package/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  651. package/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  652. package/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  653. package/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  654. package/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  655. package/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  656. package/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  657. package/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  658. package/.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  659. package/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  660. package/.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  661. package/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  662. package/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  663. package/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  664. package/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  665. package/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  666. package/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  667. package/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
  668. package/.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
  669. package/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  670. package/.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  671. package/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  672. package/.agents/skills/vercel-react-native-skills/AGENTS.md +2897 -0
  673. package/.agents/skills/vercel-react-native-skills/README.md +165 -0
  674. package/.agents/skills/vercel-react-native-skills/SKILL.md +121 -0
  675. package/.agents/skills/vercel-react-native-skills/metadata.json +16 -0
  676. package/.agents/skills/vercel-react-native-skills/rules/_sections.md +86 -0
  677. package/.agents/skills/vercel-react-native-skills/rules/_template.md +28 -0
  678. package/.agents/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
  679. package/.agents/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  680. package/.agents/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
  681. package/.agents/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
  682. package/.agents/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
  683. package/.agents/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
  684. package/.agents/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
  685. package/.agents/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
  686. package/.agents/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
  687. package/.agents/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
  688. package/.agents/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
  689. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
  690. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
  691. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
  692. package/.agents/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
  693. package/.agents/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  694. package/.agents/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  695. package/.agents/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
  696. package/.agents/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  697. package/.agents/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  698. package/.agents/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
  699. package/.agents/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
  700. package/.agents/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
  701. package/.agents/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  702. package/.agents/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  703. package/.agents/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
  704. package/.agents/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
  705. package/.agents/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
  706. package/.agents/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
  707. package/.agents/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
  708. package/.agents/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
  709. package/.agents/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
  710. package/.agents/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
  711. package/.agents/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  712. package/.agents/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  713. package/.agents/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
  714. package/.agents/skills/vercel-react-view-transitions/AGENTS.md +955 -0
  715. package/.agents/skills/vercel-react-view-transitions/README.md +42 -0
  716. package/.agents/skills/vercel-react-view-transitions/SKILL.md +320 -0
  717. package/.agents/skills/vercel-react-view-transitions/metadata.json +12 -0
  718. package/.agents/skills/vercel-react-view-transitions/references/css-recipes.md +242 -0
  719. package/.agents/skills/vercel-react-view-transitions/references/implementation.md +182 -0
  720. package/.agents/skills/vercel-react-view-transitions/references/nextjs.md +176 -0
  721. package/.agents/skills/vercel-react-view-transitions/references/patterns.md +262 -0
  722. package/.agents/skills/web-design-guidelines/SKILL.md +39 -0
  723. package/.agents/skills/workflow-metrics/SKILL.md +18 -0
  724. package/.agents/skills/writing-guidelines/SKILL.md +39 -0
  725. package/CODING_STANDARDS.md +49 -0
  726. package/LICENSE +21 -0
  727. package/README.md +556 -0
  728. package/VERSION +1 -0
  729. package/bin/devos.js +893 -0
  730. package/docs/.gitkeep +0 -0
  731. package/docs/ARCHITECTURE.md +114 -0
  732. package/docs/CHANGELOG.md +61 -0
  733. package/docs/CURRENT_STATE.md +39 -0
  734. package/docs/FIELD_REPORT_2026-08-20.md +130 -0
  735. package/docs/GETTING_STARTED.md +130 -0
  736. package/docs/LESSONS.md +24 -0
  737. package/docs/PRE_COMMIT_HOOK.md +152 -0
  738. package/docs/SLASH_COMMANDS.md +116 -0
  739. package/docs/TUTORIAL.md +75 -0
  740. package/package.json +54 -0
  741. package/scripts/smoke-test.js +167 -0
@@ -0,0 +1,187 @@
1
+ # Build Carousel Slide Effects
2
+
3
+ Carousel slide effects are a great way to add visual interest to a carousel. As the user scrolls through the slides, each slide can animate as it enters, centers, and exits the scrollport. For example, the slides can fade in and out, rotate, or scale in size. This creates a dynamic and engaging user experience. Unlike simple entry/exit animations, this effect uses a single, continuous animation to control the slide's appearance across the entire scrollport.
4
+
5
+ ## How to implement
6
+
7
+ Here’s how to create carousel slide effects:
8
+
9
+ 1. **Create a scroller:** This element will act as the container for your carousel slides. In this example it uses `overflow-x: scroll` to allow horizontal scrolling.
10
+
11
+ ```html
12
+ <ul class="scroller">
13
+ <li class="entry">1</li>
14
+ <li class="entry">2</li>
15
+ <li class="entry">3</li>
16
+
17
+ </ul>
18
+ ```
19
+
20
+ ```css
21
+ .scroller {
22
+ overflow-x: scroll;
23
+ }
24
+ ```
25
+
26
+ 2. **Define the animation:** Create a CSS animation that defines the different states of your slides as they traverse the scrollport. You can define keyframes for any part of the animation. For example, you can define a state for when the slides are in the center of the scrollport by including a `50%` keyframe. In this example, the `scale` property makes the slides grow as they approach the center and shrink as they move away.
27
+
28
+ ```css
29
+ @keyframes animate {
30
+ 0% {
31
+ scale: 0.5;
32
+ }
33
+ 50% {
34
+ scale: 1;
35
+ }
36
+ 100% {
37
+ scale: 0.5;
38
+ }
39
+ }
40
+ ```
41
+
42
+ 3. **Apply the animation and `view-timeline`:** Attach the animation to the carousel slides and link it to a `view-timeline` that tracks the element as it scrolls through the container.
43
+
44
+ ```css
45
+ .scroller > * {
46
+ animation: animate auto linear both;
47
+ animation-timeline: view(inline);
48
+ }
49
+ ```
50
+
51
+ By default, `view()` tracks the element on the `block` axis. If you need to track it on the `inline` axis, you can use `view(inline)`.
52
+
53
+ ## Example code
54
+
55
+ This code animates the carousel items of a horizontal scroller on scroll using an **anonymous view-timeline**:
56
+
57
+ ```css
58
+ @keyframes animate {
59
+ 0% {
60
+ scale: 0.5;
61
+ }
62
+
63
+ 50% {
64
+ scale: 1;
65
+ }
66
+
67
+ 100% {
68
+ scale: 0.5;
69
+ }
70
+ }
71
+
72
+ .scroller > * {
73
+ /* Applies the animation using an `auto` duration */
74
+ animation: animate auto linear both;
75
+ /* Sets the animation timeline to use an anonymous view progress timeline, tracking the element's progress through the scroller on the inline axis */
76
+ animation-timeline: view(inline);
77
+ }
78
+ ```
79
+
80
+ This code animates the carousel items of a horizontal scroller on scroll using a **named view-timeline**:
81
+
82
+ ```css
83
+ @keyframes animate {
84
+ 0% {
85
+ scale: 0.5;
86
+ }
87
+
88
+ 50% {
89
+ scale: 1;
90
+ }
91
+
92
+ 100% {
93
+ scale: 0.5;
94
+ }
95
+ }
96
+
97
+ /* This creates a named view-timeline on each carousel item. The timeline is used to drive the animation that is applied on the same element. */
98
+ .scroller > * {
99
+ /* Applies the animation using an `auto` duration */
100
+ animation: animate auto linear both;
101
+ /* Defines a named view progress timeline, tracking the element's progress through the scroller on the inline axis */
102
+ view-timeline: --item inline;
103
+ /* Sets the animation timeline to use the named view progress timeline defined above */
104
+ animation-timeline: --item;
105
+ }
106
+ ```
107
+
108
+ ## Best Practices
109
+
110
+ When using scroll-driven animations, it's important to follow a few best practices to ensure a smooth and accessible experience:
111
+
112
+ - **DO** include feature detection: Not all browsers support scroll-driven animations. Use `@supports ((animation-timeline: view()) and (animation-range: entry))` to check for support and provide a fallback for browsers that don't support it.
113
+ - The `(animation-range: entry)` check **MUST** be included here, to filter out browsers with only partial support.
114
+ - **DO NOT** use the `scroll-timeline-polyfill` package for the fallback strategy as it is not feature complete and has a lot of known issues.
115
+ - If the animation is only considered to be decorative, opt for Progressive Enhancement and **DO NOT** provide a fallback.
116
+ - **DO** respect user preferences: Some users prefer to have less motion on the web. Use the `prefers-reduced-motion` media query to disable or reduce your animations for these users.
117
+ - **DO** try to animate only performant CSS properties: For the smoothest animations, stick to animating properties that can be handled by the browser's compositor thread, such as `transform` and `opacity`. Animating other properties like `width` or `height` can lead to performance issues.
118
+ - **DO** use the correct declaration order: When using the `animation` shorthand property, declare `animation-timeline` and `animation-range` *after* it to prevent the shorthand from resetting the timeline.
119
+
120
+ Prefer a named `view-timeline` when multiple DOM elements need to animate based on the same timeline, or when you need to animate children of the element that has the `view-timeline` defined on it. If the element that you animate is also the element that defines the `view-timeline`, you can use an anonymous view-timeline using `view()`.
121
+
122
+ When using the `view()` function to create a scroll-driven animation:
123
+
124
+ - **OPTIONAL** be explicit about the axis to track: When not targeting the default `block` axis (such as in a horizontal scroller), be explicit about which axis to track with `view(block)` or `view(inline)`.
125
+
126
+ When using the `view-timeline` property to create a scroll-driven animation:
127
+
128
+ - **DO** use a CSS `<dashed-ident>` for the name (e.g. `view-timeline: --my-custom-name`)
129
+ - **OPTIONAL** be explicit about the axis to track: When not targeting the default `block` axis (such as in a horizontal scroller), be explicit about which axis to track with `view-timeline-axis`.
130
+ - **DO** make sure the scope of the lookup works: When the element that is declaring the `view-timeline` is not a flat tree ancestor of the animated element, hoist up the visibility of the `view-timeline`’s name by using `timeline-scope` on a shared ancestor.
131
+
132
+ ## Browser support and fallback strategies
133
+
134
+ Scroll-driven animations has limited availability.
135
+ Supported by: Chrome 115 (Jul 2023), Edge 115 (Jul 2023), and Safari 26 (Sep 2025).
136
+ Unsupported in: Firefox.. Therefore, a fallback strategy is typically required.
137
+
138
+ For browsers that do not support scroll-driven animations, you can use a fallback to recreate the visual effects. The fallbacks are typically built with either a scroll listener (for ScrollTimeline effects) or the IntersectionObserver API (for ViewTimeline effects).
139
+
140
+ In browsers with built-in support for scroll-driven animations, ALWAYS use the native CSS implementation as those are more performant.
141
+
142
+ Note that not every effect can be recreated using the fallbacks approach.
143
+
144
+ For this use-case specifically, the following script applies the fallback for browsers that do not support scroll-driven animations. It uses the Web Animations API (`Element.animate()`) to create a paused animation for each item in the carousel. It then listens to the `scroll` event on the scroller and updates the `currentTime` of each animation based on the item's scroll progress within the scroller.
145
+
146
+ ```js
147
+ // Fallback for browsers that don't support scroll-driven animations
148
+ if (!CSS.supports('(animation-timeline: view()) and (animation-range: entry)')) {
149
+ const scroller = document.querySelector('.scroller');
150
+ const entries = document.querySelectorAll('.entry');
151
+
152
+ // Create a map to store animations
153
+ const animations = new Map();
154
+
155
+ entries.forEach(entry => {
156
+ const animation = entry.animate(
157
+ {
158
+ scale: ['0.5', '1', '0.5']
159
+ },
160
+ {
161
+ duration: 1, // We'll control the time ourselves
162
+ fill: 'both'
163
+ }
164
+ );
165
+ animation.pause();
166
+ animations.set(entry, animation);
167
+ });
168
+
169
+ // Update animations on scroll
170
+ const tick = () => {
171
+ const scrollerRect = scroller.getBoundingClientRect();
172
+
173
+ entries.forEach(entry => {
174
+ const animation = animations.get(entry);
175
+ if (!animation) return;
176
+
177
+ const entryRect = entry.getBoundingClientRect();
178
+ const progress = (entryRect.left + entryRect.width / 2 - scrollerRect.left) / scrollerRect.width;
179
+
180
+ animation.currentTime = progress;
181
+ });
182
+ };
183
+
184
+ scroller.addEventListener('scroll', tick);
185
+ tick();
186
+ }
187
+ ```
@@ -0,0 +1,136 @@
1
+ Scroll-state container queries allow you to style elements based on their current scroll state, such as whether an element is "stuck" (via sticky positioning) or "snapped" (via scroll snapping). This enables carousel or gallery experiences where the active item can be visually distinguished without relying on JavaScript intersection observers or scroll event listeners.
2
+
3
+ ### Core implementation
4
+
5
+ To highlight snapped items, you must establish a scroll-snap container, define the snap targets as scroll-state containers, and then query that state to style descendants.
6
+
7
+ #### 1. Establish the scroll snap container
8
+ The parent container must have `scroll-snap-type` enabled.
9
+
10
+ ```html
11
+ <div class="carousel">
12
+ <div class="carousel-item">
13
+ <div class="card">Product 1 content</div>
14
+ </div>
15
+ <div class="carousel-item">
16
+ <div class="card">Product 2 content</div>
17
+ </div>
18
+ </div>
19
+ ```
20
+
21
+ ```css
22
+ .carousel {
23
+ display: flex;
24
+ overflow-x: auto;
25
+ /* MANDATORY: Enable scroll snapping on the container */
26
+ scroll-snap-type: x mandatory;
27
+ }
28
+ ```
29
+
30
+ #### 2. Define snap targets as scroll-state containers
31
+ Each item in the carousel that should be tracked for snapping must be declared as a `scroll-state` container.
32
+
33
+ ```css
34
+ .carousel-item {
35
+ /* Define where the item snaps within the container */
36
+ scroll-snap-align: center;
37
+
38
+ /* MANDATORY: Establish this element as a scroll-state query container */
39
+ container-type: scroll-state;
40
+ }
41
+ ```
42
+
43
+ #### 3. Query the `snapped` state
44
+
45
+ Because container queries style **descendants**, you must apply the highlight styles to an element *inside* the snap target. Because the scroll container is set to overflow on the x axis, use the `scroll-state(snapped: x)` query.
46
+
47
+ **MANDATORY**: Wrap the styles in ` @media (prefers-reduced-motion: no-preference)` to only show the effect to users who have not requested reduced motion. Depending on your use case, you may retain portions of the effect, but in this case, the cards flash from white to blue in a way that may cause problems for some users, so we disable it completely.
48
+
49
+ ```css
50
+ /* Specify transition outside of queries so that it is applied regardless of state. */
51
+ .card {
52
+ transition:
53
+ scale 0.4s cubic-bezier(0.25, 0.8, 0.25, 1),
54
+ background-color 0.4s,
55
+ color 0.4s,
56
+ box-shadow 0.4s;
57
+ }
58
+ /*
59
+ Only show the effect for users not requesting reduced motion. Disable completely, including the color change, as it causes a flash that may be problematic.
60
+ */
61
+ @media (prefers-reduced-motion: no-preference) {
62
+ /* Style the content when its parent .carousel-item is snapped on the x axis */
63
+ @container scroll-state(snapped: x) {
64
+ .card {
65
+ background: #007bff;
66
+ color: white;
67
+ scale: 1.15;
68
+ box-shadow: 0 10px 25px rgba(0, 123, 255, 0.3);
69
+ }
70
+ }
71
+ }
72
+
73
+ /* MANDATORY Copy-Paste Safety: Disable highlight scaling/flashing for motion sensitive users */
74
+ @media (prefers-reduced-motion: reduce) {
75
+ .card {
76
+ transition: none !important;
77
+ scale: 1 !important;
78
+ }
79
+ }
80
+ ```
81
+
82
+ The `snapped` descriptor can query specific axes: `x`, `y`, `inline`, `block`, or `both`.
83
+
84
+
85
+ ### Accessibility
86
+
87
+ **AVOID**: using `scroll-state` with interactive elements.
88
+
89
+ Visual highlights for snapped items can improve the UX, but the snapped item is not exposed to the accessibility tree. The visual theme applied to a snapped item should not convey that the element is active or focused, and a keyboard focus ring should be highly visible and distinct from the `snapped` highlight. If the snapped item is interactive, you must use other standard accessibility practices to make it accessible.
90
+
91
+ Snapping occurs due to scrolling, which does not move keyboard focus. However, keyboard focus may cause the scroll container to move, causing a change in the snapped item, which may or may not be the focused item. This will likely be a source of confusion for users and is discouraged.
92
+
93
+ > [!NOTE]
94
+ > Detailed accessibility requirements for carousels (such as ARIA roles, slide attributes, and complex keyboard patterns) have been intentionally omitted from this guide. Carousel accessibility is highly nuanced and context-dependent; refer to established accessibility standards and perform thorough user testing for production environments.
95
+
96
+
97
+ ## Fallback strategies
98
+
99
+ Container scroll-state queries has limited availability.
100
+ Supported by: Chrome 133 (Feb 2025) and Edge 133 (Feb 2025).
101
+ Unsupported in: Firefox and Safari.
102
+
103
+ For browsers that do not support scroll-state queries, you should provide a functional base experience where all items are legible, even without the "active" highlight.
104
+
105
+ #### Feature detection
106
+ You can use `@supports` to provide enhancements only to supported browsers:
107
+
108
+ ```css
109
+ @supports (container-type: scroll-state) {
110
+ /* Enhancement styles here */
111
+ }
112
+ ```
113
+
114
+ #### JavaScript fallback
115
+
116
+ If the highlight is critical for the user experience, use `IntersectionObserver` to determine the snapped item. Adjust the observed area to a thin slice in the center of the carousel by providing a `rootMargin` with a negative inline value. For example, to consider an element to be intersecting if it is in the center 2% of the carousel, set the `rootMargin` to `"0px -49%"`.
117
+
118
+ ```javascript
119
+ // Optional: detect support and apply a JS-based fallback
120
+ if (!CSS.supports('container-type', 'scroll-state')) {
121
+ const observer = new IntersectionObserver((entries) => {
122
+ entries.forEach(entry => {
123
+ // Toggle a class based on intersection
124
+ entry.target.classList.toggle('is-snapped', entry.isIntersecting);
125
+ });
126
+ }, {
127
+ root: document.querySelector(".carousel"),
128
+ // Carousel item intersects if any part of the carousel item is in the middle 2% of the carousel.
129
+ rootMargin: "0px -49%"
130
+ });
131
+
132
+ document.querySelectorAll('.carousel-item').forEach(item => {
133
+ observer.observe(item);
134
+ });
135
+ }
136
+ ```
@@ -0,0 +1,101 @@
1
+ Historically, CSS selectors could only traverse downwards—you could style a child based on its parent, but not a parent based on its child. The `:has()` pseudo-class changes this, allowing you to conditionally style a container element depending on the presence or state of its descendants.
2
+
3
+ By combining `:has()` with state pseudo-classes (like `:checked`, `:focus`, `:valid`, `:invalid`, or `:not()`), you can build complex, interactive UI components entirely in CSS, without needing JavaScript to toggle "modifier" classes (like `.is-active` or `.has-error`) on parent elements.
4
+
5
+ This is particularly useful for components that need to respond to internal interactions, such as a localized theme toggle reacting to a checkbox (`:checked`), a form group highlighting an error (`:invalid`), or a card elevating when a child link is focused (`:focus-within`).
6
+
7
+ ### Implementing state-based container styling
8
+
9
+ **MANDATORY**: You must use the `:has()` selector on the container element to detect the specific state (e.g., `:checked`, `:focus`, `:invalid`) of its interactive child element.
10
+
11
+ To build a component that changes its styling based on a child's state:
12
+
13
+ 1. **Define the default styling**: Set CSS variables on the container to define its base state.
14
+ 2. **Apply state-based overrides**: Target the container with `:has([child-selector]:[state])` and redefine the CSS variables for the active or alternate state.
15
+
16
+ *Example: A component that changes theme based on a child toggle.*
17
+
18
+ ```css
19
+ /* 1. Define the default state on the component container */
20
+ .theme-card {
21
+ /* Using custom properties makes state-switching cleaner */
22
+ --card-bg: #ffffff;
23
+ --card-text: #333333;
24
+ --card-border: #cccccc;
25
+
26
+ background-color: var(--card-bg);
27
+ color: var(--card-text);
28
+ border: 1px solid var(--card-border);
29
+
30
+ /* Use a transition for smooth state changes */
31
+ transition: background-color 0.3s, color 0.3s;
32
+ }
33
+
34
+ /* 2. Apply styles when the child enters the specific state */
35
+ /* MANDATORY: Target the container and use :has() to check the descendant's state */
36
+ .theme-card:has(.theme-toggle:checked) {
37
+ /* Override the properties for the active or alternate state */
38
+ --card-bg: #222222;
39
+ --card-text: #f0f0f0;
40
+ --card-border: #555555;
41
+ }
42
+ /* You can also combine :has() and :not() to target specific negative states */
43
+ /* This selects a card that DOES NOT have a toggle in the checked state */
44
+ .theme-card:not(:has(.theme-toggle:checked)) {
45
+ /* Optional: Explicit styles for the unchecked state if needed */
46
+ }
47
+ ```
48
+
49
+ ```html
50
+ <!-- The container element that receives the styling -->
51
+ <div class="theme-card">
52
+ <!-- The child element whose state controls the parent -->
53
+ <label>
54
+ <input type="checkbox" class="theme-toggle">
55
+ Enable Dark Mode
56
+ </label>
57
+
58
+ <h2>Card Title</h2>
59
+ <p>The style of this entire card is controlled by the checkbox above.</p>
60
+ </div>
61
+ ```
62
+
63
+ **Performance tip**: When using `:has()`, scope the selector to the most specific container possible (like `.theme-card`). Avoid anchoring it to very high-level elements like `body:has(...)` if the styling changes are localized, as broad `:has()` queries can trigger more layout recalculations.
64
+
65
+ ### Fallback strategies
66
+
67
+ Baseline status for :has(): Newly available. It's been Baseline since 2023-12-19.
68
+ Supported by: Chrome 105 (Sep 2022), Edge 105 (Sep 2022), Firefox 121 (Dec 2023), and Safari 15.4 (Mar 2022).
69
+
70
+ If the state-based styling is critical to the user experience or page layout, you must provide a fallback for browsers that do not support the `:has()` selector. For purely decorative effects, `:has()` can be used as a progressive enhancement without a fallback.
71
+
72
+ **MANDATORY**: When implementing a fallback for critical features, you must use `@supports not selector(:has(*))` in your CSS to define a traditional class-based fallback. If the critical state change relies on user interaction, you must also use a small inline script with `CSS.supports()` to toggle that class based on the equivalent JavaScript event (e.g., `change`, `focus`, `blur`) representing the state change.
73
+
74
+ ```css
75
+ /* Fallback CSS for older browsers */
76
+ /* We check if the browser DOES NOT support the :has() selector */
77
+ @supports not selector(:has(*)) {
78
+ /* Define a traditional modifier class that applies the exact same overrides */
79
+ .theme-card.is-active {
80
+ --card-bg: #222222;
81
+ --card-text: #f0f0f0;
82
+ --card-border: #555555;
83
+ }
84
+ }
85
+ ```
86
+
87
+ ```javascript
88
+ /* Fallback JavaScript for older browsers */
89
+ /* Check for support before running the script to avoid unnecessary work in modern browsers */
90
+ if (!CSS.supports('selector(:has(*))')) {
91
+ const toggle = document.querySelector('.theme-toggle');
92
+ const card = document.querySelector('.theme-card');
93
+
94
+ if (toggle && card) {
95
+ // Manually toggle the fallback class when the input state changes
96
+ toggle.addEventListener('change', (e) => {
97
+ card.classList.toggle('is-active', e.target.checked);
98
+ });
99
+ }
100
+ }
101
+ ```
@@ -0,0 +1,73 @@
1
+ ## Overview
2
+ To clip elements to complex, free-form shapes like brush strokes or organic textures, use CSS Masking (`mask-image`). While `clip-path` is excellent for geometric shapes or vector paths, `mask-image` allows you to use images (like PNGs with transparency) or SVGs to define the visible area of an element. This approach is more expressive because it supports semi-transparency, allowing for soft edges and complex textures that are difficult or impossible to achieve with `clip-path`.
3
+
4
+ ## Implementation
5
+ To implement complex shapes using CSS masks:
6
+
7
+ ### Using transparency from an image
8
+ You can use the transparency of an image as a mask, with opaque parts visible and transparent parts hidden. This can be a PNG, SVG, or other image with transparency, or a generated image, like a CSS gradient.
9
+
10
+ ```css
11
+ .shaped-element {
12
+ /* MANDATORY: Use vendor prefix for wider support in older browsers */
13
+ -webkit-mask-image: url('mask.svg');
14
+ -webkit-mask-size: cover; /* Scale mask to cover element */
15
+ -webkit-mask-repeat: no-repeat; /* Do not tile the mask */
16
+
17
+ /* Standard property for modern browsers */
18
+ mask-image: url('mask.svg');
19
+ mask-size: cover;
20
+ mask-repeat: no-repeat;
21
+ }
22
+ ```
23
+
24
+ ### Using an SVG element in HTML
25
+ You can also reference a `<mask>` element defined in an inline SVG in your page's HTML. Use `maskContentUnits="objectBoundingBox"` to make the mask scale automatically with the size of the element. This tells the browser to interpret all coordinates inside the mask as fractions from `0` to `1` (like `0.5` for 50%) instead of absolute pixels.
26
+
27
+ > **Luminance vs. Alpha Masking**: By default, SVG masks use **luminance** (brightness) to determine opacity, where white reveals, black hides, and gray creates semi-transparency. If you want the mask to use the **alpha channel** (transparency) of your SVG shapes instead, you can specify `mask-type: alpha;` in your CSS or `mask-type="alpha"` directly on the SVG `<mask>` element.
28
+
29
+ ```html
30
+ <!-- White areas reveal content, gray creates semi-transparency, black or transparent hides it -->
31
+ <svg width="0" height="0">
32
+ <defs>
33
+ <!-- objectBoundingBox scales mask coordinates (0 to 1) with the element's size -->
34
+ <mask id="custom-shape" maskContentUnits="objectBoundingBox">
35
+ <!-- Use white shapes to define fully opaque areas -->
36
+ <circle cx="0.5" cy="0.5" r="0.5" fill="white" />
37
+ <!-- Use gray shapes to define semi-transparent/faded areas -->
38
+ <circle cx="0.5" cy="0.5" r="0.25" fill="gray" />
39
+ </mask>
40
+ </defs>
41
+ </svg>
42
+
43
+ <div class="masked-content">
44
+ <!-- Content to be masked -->
45
+ </div>
46
+
47
+ <style>
48
+ .masked-content {
49
+ /* Reference the SVG mask ID */
50
+ -webkit-mask-image: url(#custom-shape);
51
+ mask-image: url(#custom-shape);
52
+ }
53
+ </style>
54
+ ```
55
+
56
+ ### Fallback strategies
57
+ Baseline status for Masks: Newly available. It's been Baseline since 2023-12-07.
58
+ Supported by: Chrome 120 (Dec 2023), Edge 120 (Dec 2023), Firefox 53 (Apr 2017), and Safari 15.4 (Mar 2022).
59
+
60
+ If a browser does not support `mask-image` or the prefixed version:
61
+ - The element will not be clipped and will display as a normal rectangle.
62
+ - Ensure the content is still readable and the layout does not break without the mask (progressive enhancement).
63
+ - Optionally, use feature detection to provide a simpler fallback shape with `clip-path`.
64
+
65
+ ```css
66
+ /* Fallback for browsers that do not support masking */
67
+ @supports (not (mask-image: url(x))) and (not (-webkit-mask-image: url(x))) {
68
+ .shaped-element {
69
+ /* Use a simple rounded rectangle as fallback */
70
+ clip-path: inset(5% round 15px);
71
+ }
72
+ }
73
+ ```
@@ -0,0 +1,179 @@
1
+ # Component-specific light/dark themes
2
+
3
+ While more commonly set on the root, the `color-scheme` property can be set on individual elements to force them into a different color scheme from the rest of the page.
4
+ This can be useful for components that must always be viewed in a specific color scheme (e.g. always in dark or light mode).
5
+
6
+ Example use cases include:
7
+ - Elements that are often in dark mode even on light mode pages for aesthetic reasons, e.g. code blocks, media players, photo galleries
8
+ - Areas that contain media designed for a light background (e.g. images, videos, illustrations, print previews) can be set to light mode even if the rest of the page is in dark mode.
9
+ - Elements whose color-scheme is controlled by a user-level setting, such as component previews
10
+ - Embeds that don't support both light and dark modes
11
+ - Design tools, maps, visualizations, games etc.
12
+
13
+ ## When to change colors vs. when to force `color-scheme`?
14
+
15
+ Not every element that uses lighter text on darker background in light mode or darker text on lighter background in dark mode needs a different `color-scheme`.
16
+ For example, a primary button may be rendered as blue with white text in light mode, but that does not warrant a `color-scheme: dark`.
17
+
18
+ As a rule of thumb, typically elements using a different `color-scheme` are complex surfaces establishing their own visual context, rather than simple shallow containers.
19
+
20
+ When considering using a different `color-scheme` on an element, ask yourself:
21
+
22
+ - Should built-in browser UI that is not otherwise customized (e.g. form controls, scrollbars, etc) use that color-scheme or adapt to the page's color-scheme? -> if the former, don't use `color-scheme`.
23
+ - Should any `light-dark()` colors resolve like they do for the rest of the page or based on the override? -> if the former, don't use `color-scheme`.
24
+ - Should descendants be in that `color-scheme`? If not, don't use `color-scheme`.
25
+
26
+ ## Basic implementation
27
+
28
+ Component-specific overrides are typically (though not strictly necessarily) used on pages that also support multiple color schemes via a global `color-scheme`.
29
+ For implementing page-wide dark mode well, see `dark-mode` (via `npx -y modern-web-guidance@latest retrieve "dark-mode"`).
30
+
31
+ Once a page-wide `color-scheme` is in place, and you are using color tokens sensitive to it (e.g. via `light-dark()`), you can simply set `color-scheme` on specific components to override the color mode for that subtree:
32
+
33
+ ```css
34
+ pre, code, .dark {
35
+ color-scheme: dark;
36
+ }
37
+ ```
38
+
39
+ Note that some browsers automatically adapt components to a different color scheme anyway.
40
+ To force the specified color scheme in all cases, use `only`, i.e. `color-scheme: only dark;` instead of `color-scheme: dark;`.
41
+
42
+ ### Adapting non-color values
43
+
44
+ `light-dark()` currently only works for colors.
45
+
46
+ ## Best practices
47
+
48
+ - **MANDATORY**: Do not set `color-scheme` on elements without a background, as that risks mixing background and text color pairs from different color-schemes, resulting in unreadable text.
49
+ - **OPTIONAL**: While it is easier to reuse the same color pairs as the page-wide dark mode, we _can_ define different color pairs for these components. For example, we may want a dark mode component used in a light mode page to be a little less dark than when the same dark mode component is used in a page that is overall in dark mode.
50
+
51
+ ## Known issues to be aware of
52
+
53
+ ### Important gotcha: Inheritance of `light-dark()` colors
54
+
55
+ **`light-dark()` resolves at computed value time.**
56
+ This means that any inherited `<color>` properties set to a `light-dark()` color will only pass down one of the two colors to their descendants, not the `light-dark()` expression itself.
57
+
58
+ This includes:
59
+ - Built-in color properties that inherit, such as `color`, `accent-color`, `fill`, `stroke`, `text-shadow`, `caret-color`
60
+ - Any registered inheritable custom properties with `syntax: <color>` and `inherits: true`
61
+ - Any other `<color>` property set to `inherit`
62
+
63
+ This means you should:
64
+ - **NOT** register custom properties meant to hold *design tokens* (e.g. `--surface-color`) as `<color>`. Tokens need to keep their `light-dark()` expression live so descendants can re-resolve them under a different `color-scheme`.
65
+ - When setting `color-scheme` on an element, re-specify any inherited `<color>` properties that may have been set to `light-dark()` values (directly or via design tokens), even if that's to the same design token.
66
+ - **NOT** use `inherit` on `<color>` properties on elements with a `color-scheme` override (fine to use on their descendants).
67
+ - **DO** use registered `<color>` properties for the *opposite* use case: when you deliberately want to snapshot the ancestor's resolved color and prevent it from re-resolving under the descendant's `color-scheme`. For example, capturing the page background to use elsewhere.
68
+ - If you need to animate a color, use a separate `@property`-registered `<color>` property on the element being animated (registration is required for color interpolation) — this is not a design token, but a per-element animation target, so it does not conflict with the rule above.
69
+
70
+ Example:
71
+
72
+ ```css
73
+ :root {
74
+ --accent-color: light-dark(blue, skyblue);
75
+ --surface-color: light-dark(white, #222);
76
+ --text-color: light-dark(#111, white);
77
+
78
+ color-scheme: light dark;
79
+ accent-color: var(--accent-color);
80
+ color: var(--text-color);
81
+ }
82
+
83
+ body {
84
+ /* --surface-color dynamically switches despite being inherited because --surface-color is not registered */
85
+ background: var(--surface-color);
86
+ }
87
+
88
+ pre, code {
89
+ color-scheme: dark;
90
+ background: var(--surface-color);
91
+
92
+ /* Without this, accent-color would be blue, not skyblue! */
93
+ accent-color: var(--accent-color);
94
+
95
+ /* Without this, text-color would be #111, not white! */
96
+ color: var(--text-color);
97
+ }
98
+ ```
99
+
100
+ ### Issues to be aware of when using color-scheme
101
+
102
+ - Chrome and Firefox respect `color-scheme` for iframes: they render embedded pages in the correct color scheme and adjust the embedded page's `prefers-color-scheme` media query to reflect the embedding context's `color-scheme`. Safari does not, and resolves `prefers-color-scheme` to the system setting even inside iframes.
103
+ - **If you control both parent and iframe:** pass the parent's color scheme to the iframe explicitly — via a URL parameter (`?theme=dark`) at iframe construction time, or via `postMessage()` (which also lets you react to runtime changes). In the iframe, set a class on `<html>` (and/or `color-scheme` on `:root`) from that signal instead of relying on `prefers-color-scheme`.
104
+ - **If you only control the embedded page:** there is no reliable way to detect the embedding context's `color-scheme` from inside the iframe in Safari. Expose an explicit theme parameter on your embed API (e.g. a query string or `postMessage` protocol) and document it for embedders.
105
+
106
+ ## Fallback strategies
107
+
108
+ ### Fallbacks & browser support for color-scheme
109
+
110
+ Baseline status for color-scheme: Widely available. It's been Baseline since 2022-02-03.
111
+ Supported by: Chrome 98 (Feb 2022), Edge 98 (Feb 2022), Firefox 96 (Jan 2022), and Safari 13 (Sep 2019).
112
+
113
+ The `color-scheme` property is **progressive enhancement**.
114
+ Browsers that do not support it will ignore this property and use their default light-mode UI.
115
+
116
+ To adapt to the user's preferences in older browsers, use `prefers-color-scheme` media queries to provide different colors when dark mode is preferred.
117
+
118
+ - DO use the media query to switch custom properties on `:root` or `html`
119
+ - Avoid using the media query on individual components unless the component requires a very specific type of dark mode customization beyond colors.
120
+
121
+ ```css
122
+ :root {
123
+ /* Define brand colors for each mode */
124
+ --color-brand-light: #0056b3;
125
+ --color-brand-dark: #00e5ff;
126
+ --color-brand: var(--color-brand-light);
127
+
128
+ /* MANDATORY: Fallback for browsers without light-dark support */
129
+ @media (prefers-color-scheme: dark) {
130
+ --color-brand: var(--color-brand-dark);
131
+ }
132
+
133
+ /* Ignored in older browsers */
134
+ color-scheme: light dark;
135
+ }
136
+
137
+ button.primary {
138
+ background-color: var(--color-brand);
139
+ }
140
+ ```
141
+
142
+ ### Fallbacks & browser support for light-dark()
143
+
144
+ Baseline status for light-dark(): Newly available. It's been Baseline since 2024-05-13.
145
+ Supported by: Chrome 123 (Mar 2024), Edge 123 (Mar 2024), Firefox 120 (Nov 2023), and Safari 17.5 (May 2024).
146
+
147
+ For browsers that support `color-scheme` but not yet `light-dark()`, light and dark versions of colors should first be defined as custom properties, and the `prefers-color-scheme` media query should be used to set colors for the respective mode like in the example below:
148
+
149
+ ```css
150
+ :root {
151
+ /* Define browser UI accent color for each mode */
152
+ --brand-accent-light: #0056b3;
153
+ --brand-accent-dark: #00e5ff;
154
+ --accent-color: var(--brand-accent-light);
155
+
156
+ /* MANDATORY: Fallback for browsers without light-dark support */
157
+ @media (prefers-color-scheme: dark) {
158
+ --accent-color: var(--brand-accent-dark);
159
+ }
160
+
161
+ /* OPTIONAL: use light-dark() for more control of built-in UI colors */
162
+ @supports (color: light-dark(white, black)) {
163
+ --accent-color: light-dark(var(--brand-accent-light), var(--brand-accent-dark));
164
+ }
165
+
166
+ /* MANDATORY: Automatically adapt native UI to user system preferences */
167
+ color-scheme: light dark;
168
+
169
+ /* Example inherited color property */
170
+ accent-color: var(--accent-color);
171
+ }
172
+
173
+ pre, code {
174
+ color-scheme: dark;
175
+
176
+ /* **Mandatory**: any inherited color properties must be set again, even if to the same design tokens */
177
+ accent-color: var(--accent-color);
178
+ }
179
+ ```