@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,372 @@
1
+ ## 1. Semantic Structure and Form Element
2
+
3
+ ### Guidelines
4
+
5
+ - **DO** use the `<form>` element to wrap interactive controls for data collection.
6
+ - **DO** use `method="POST"` for sensitive data and mutations; use `method="GET"` for idempotent requests (e.g., search).
7
+ - **DO** specify the `action` attribute for the destination URL.
8
+ - **DO** specify a `name` attribute for every form control to identify data on submission.
9
+ - **DO** use semantic tags like `<button type="submit">`, `<textarea>`, and `<select>`.
10
+ - **DO** use `<fieldset>` and `<legend>` to group related controls.
11
+ - **DO** use actionable language on submit buttons (e.g., "Save changes").
12
+
13
+ - **DON'T** use `GET` for sensitive data (it exposes data in history/logs).
14
+ - **DON'T** use generic `<div>` or `<span>` for form controls.
15
+ - **DON'T** use `type="button"` for primary submission buttons.
16
+ - **DON'T** disable textarea resizing without alternate layout provisions.
17
+
18
+ ### Code Example
19
+
20
+ ```html
21
+ <form action="/search" method="GET">
22
+ <fieldset>
23
+ <legend>Search Preferences</legend>
24
+ <label for="q">Query:</label>
25
+ <input type="text" id="q" name="q" required>
26
+ <button type="submit">Search</button>
27
+ </fieldset>
28
+ </form>
29
+ ```
30
+
31
+ ### Selection Control Decision Matrix
32
+
33
+ | Options Count | Choice Type | Recommended Element | Usability & Accessibility Logic |
34
+ | :--- | :--- | :--- | :--- |
35
+ | **1–5** | Single (Exclusive) | `<input type="radio">` | **Zero-click scanning**: All choices are immediately visible. Faster scan time. |
36
+ | **6+** | Single (Exclusive) | `<select>` | **Space conservation**: Use only when vertical space is premium or the list is long. |
37
+ | **10+ / Dynamic** | Single (Exclusive) | `<input list="id">` (`<datalist>`) | **Fuzzy Search**: Prevents scrolling fatigue in massive sets (e.g., countries). |
38
+ | **Any** | Multi-select | `<input type="checkbox">` | **Standard semantics**: Native non-exclusive toggles. |
39
+
40
+ **Single-Sentence Mental Model**: "Expose mutually exclusive options as visible radio buttons when choices are fewer than six; use `<select>` only when space is constrained or the list is long."
41
+
42
+ ## 2. Accessible Labeling and State
43
+
44
+ ### Guidelines
45
+
46
+ - **DO** always associate `<label>` with its input using `for` and `id`.
47
+ - **DO** place labels above form controls to enable faster scanning.
48
+ - **DO** use visible labels; do not rely on `placeholder` alone.
49
+ - **DO** ensure the vertical margin between a label and its input is less than the margin between form groups (**Gestalt Proximity Rule**).
50
+ - **DO** use `aria-describedby` to link inputs with help text or error messages.
51
+ - **DO** define the `lang` attribute on `<html>` for proper device translation.
52
+ - **DO** use non-color visual cues (icons, text) to communicate state (don't rely on color alone).
53
+ - **DO** indicate clearly which fields are required.
54
+ - **DO** use `aria-live` for dynamic error announcements.
55
+
56
+ - **DON'T** use `placeholder` as a replacement for labels.
57
+ - **DON'T** use `aria-label` as the sole text description if translation is needed.
58
+ - **DON'T** disable focus outlines without providing a high-contrast alternative.
59
+
60
+ ### Code Example
61
+
62
+ ```html
63
+ <div class="field">
64
+ <label for="username">Username:</label>
65
+ <input type="text" id="username" name="username" aria-describedby="user-help" required>
66
+ <span id="user-help" class="hint">3-12 characters.</span>
67
+ </div>
68
+
69
+ <style>
70
+ input:focus-visible {
71
+ outline: 3px solid #0b57d0;
72
+ outline-offset: 2px;
73
+ }
74
+ </style>
75
+ ```
76
+
77
+ ## 3. Autofill and Input Modes
78
+
79
+ ### Guidelines
80
+
81
+ - **DO** use the `autocomplete` attribute to specify expected data (e.g., `email`, `tel`, `current-password`, `new-password`).
82
+ - **DO** use `inputmode` to optimize on-screen keyboards (e.g., `inputmode="numeric"` for PINs).
83
+ - **DO** use `enterkeyhint` to set the Enter key label (e.g., `next`, `done`).
84
+ - **DO** use single-field inputs for complex numbers (credit cards, phones) to help autofill.
85
+
86
+ - **DON'T** use `type="number"` for credit cards or ZIP codes (causes UI scroll issues and removes leading zeros).
87
+
88
+ ### Code Example
89
+
90
+ ```html
91
+ <label for="zip">ZIP Code:</label>
92
+ <input type="text" id="zip" name="zip" autocomplete="postal-code" inputmode="numeric" pattern="\d{5}">
93
+ ```
94
+
95
+ ## 4. Constraints and Validation
96
+
97
+ ### Guidelines
98
+
99
+ - **DO** use native constraints: `required`, `minlength`, `maxlength`, `pattern`.
100
+ - **DO** use CSS pseudo-classes `:invalid:user-invalid` for non-intrusive styling.
101
+ - **DO** use the ValidityState API (`setCustomValidity`) for custom messaging.
102
+
103
+ - **DON'T** disable submit buttons to block validation; let users submit and highlight errors. However, **DO** disable the button *after* a valid submission is clicked to prevent double-posts.
104
+
105
+ ### Code Example
106
+
107
+ ```html
108
+ <label for="code">Activation Code (4 digits):</label>
109
+ <input type="text" id="code" name="code" required pattern="\d{4}">
110
+
111
+ <script>
112
+ const input = document.getElementById('code');
113
+ input.addEventListener('invalid', () => {
114
+ input.setCustomValidity('Please enter exactly 4 digits.');
115
+ });
116
+ input.addEventListener('input', () => {
117
+ input.setCustomValidity('');
118
+ });
119
+ </script>
120
+ ```
121
+
122
+ ### Validation Event Timing Matrix
123
+
124
+ | Event Trigger | Phase | Action Allowed | UX / Accessibility Logic |
125
+ | :--- | :--- | :--- | :--- |
126
+ | **`input`** | Active Typing | **Clear** existing errors only. | **Non-intrusive**: Do not yell at the user before they finish typing. |
127
+ | **`blur` / `focusout`** | Exiting Field | **Run** check and show error. | **Contextual validation**: Validate once the user indicates they are "done" with a field. |
128
+ | **`submit`** | Final Attempt | **Block** and route focus. | **Final gatekeeper**: Intercepts bad payloads and forces screen reader focus to the summary. |
129
+
130
+ **Single-Sentence Mental Model**: "Validate on `blur` to avoid premature warnings while typing, and reset error states on `input` as soon as the user attempts a correction."
131
+
132
+ **Security vs UX Scale**: Client-side validation is for User Experience; Server-side validation is for Security. Never treat browser constraints as a data integrity defense.
133
+
134
+ ## 5. Responsive Design and Typography
135
+
136
+ ### Guidelines
137
+
138
+ - **DO** use single-column layouts for scanning.
139
+ - **DO** set `font-size` to at least `1rem` (16px) to prevent iOS zoom.
140
+ - **DO** expand clickable areas for mobile tap targets using padding tricks.
141
+ - **DO** ensure tap targets are at least `48px`.
142
+ - **DO** use units relative to root (`rem`) and unitless `line-height`.
143
+ - **DO** use CSS logical properties (e.g., `margin-inline-start`) for RTL support.
144
+
145
+ ### Code Example
146
+
147
+ ```css
148
+ .form-group {
149
+ margin-block-end: 1.5rem;
150
+ }
151
+
152
+ /* Expand clickable tap area without layout shift */
153
+ label {
154
+ display: inline-block;
155
+ padding: 10px 0;
156
+ margin: -10px 0;
157
+ }
158
+
159
+ input {
160
+ font-size: 1rem;
161
+ padding: 0.75rem;
162
+ min-height: 48px;
163
+ box-sizing: border-box;
164
+ }
165
+
166
+ @media (pointer: coarse) {
167
+ input {
168
+ min-height: 52px;
169
+ }
170
+ }
171
+ ```
172
+
173
+ ## 6. Styling Form Controls
174
+
175
+ ### Guidelines
176
+
177
+ - **DO** use `accent-color` for quick branding of native radios/checkboxes.
178
+ - **DO** use `appearance: none` for custom dropdown arrows without breaking semantics.
179
+ - **DO** ensure inputs are clearly visible with adequate border contrast (e.g., `#ccc` or darker on white backgrounds).
180
+ - **DO** hide inputs visually using the canonical `.visually-hidden` recipe (`clip-path: inset(50%)` with 1px dimensions) — NOT `display: none`, which removes them from the accessibility tree.
181
+
182
+ ### Code Example
183
+
184
+ ```html
185
+ <div class="checkbox-container">
186
+ <input type="checkbox" id="sub" name="sub" class="visually-hidden">
187
+ <label for="sub" class="checkbox-label">Subscribe</label>
188
+ </div>
189
+
190
+ <style>
191
+ .visually-hidden {
192
+ position: absolute;
193
+ clip-path: inset(50%);
194
+ overflow: hidden;
195
+ width: 1px;
196
+ height: 1px;
197
+ margin: -1px;
198
+ padding: 0;
199
+ border: 0;
200
+ white-space: nowrap;
201
+ }
202
+ .checkbox-label::before {
203
+ content: "";
204
+ display: inline-block;
205
+ width: 1.25rem;
206
+ height: 1.25rem;
207
+ border: 2px solid #ccc;
208
+ }
209
+ input:focus-visible + .checkbox-label::before {
210
+ outline: 2px solid #0b57d0;
211
+ }
212
+ </style>
213
+ ```
214
+
215
+ ## 7. JavaScript and AJAX
216
+
217
+ ### Guidelines
218
+
219
+ - **DO** prevent default navigation on form submit for AJAX (`e.preventDefault()`).
220
+ - **DO** use `ValidityState` interfaces for real-time validation checks.
221
+ - **DO** use `aria-expanded` and `aria-controls` for dynamic UI reveals.
222
+
223
+ - **DON'T** block page submission if JS fails; ensure server-side fallback.
224
+
225
+ ### Code Example
226
+
227
+ ```js
228
+ form.addEventListener('submit', (e) => {
229
+ e.preventDefault();
230
+ const data = new FormData(form);
231
+ // fetch('/submit', { method: 'POST', body: data });
232
+ });
233
+ ```
234
+
235
+ ## 8. Identity, Payments, and Advanced Security
236
+
237
+ ### Guidelines
238
+
239
+ - **DO** use `autocomplete="new-password"` for sign-up and `autocomplete="current-password"` for sign-in.
240
+ - **DO** allow pasting into password fields.
241
+ - **DO** provide a toggle capability allowing users to unmask password input.
242
+ - **DO** indicate exact amounts on pay buttons (e.g., "Pay $100").
243
+ - **DO** use `autocomplete="cc-number"`, `cc-exp`, `cc-csc`.
244
+ - **DO** use HTTPS for all pages.
245
+ - **DO** implement cryptographically secure anti-CSRF tokens for mutating actions (POST/PUT/DELETE).
246
+ - **DO** sanitize user input (e.g., via DOMPurify) before injecting it into the DOM to prevent XSS.
247
+ - **DO** implement spam protection (honeypots or CAPTCHA) for open forms.
248
+
249
+ - **DON'T** utilize HTTP `GET` for endpoints executing state changes.
250
+ - **DON'T** use inline JavaScript (e.g., `onclick="..."`) directly within form markup to satisfy strict Content Security Policies (CSP).
251
+
252
+ ### Code Example
253
+
254
+ ```html
255
+ <form method="post">
256
+ <input type="hidden" name="csrf_token" value="secure_token_abc123">
257
+
258
+ <h1>Sign up</h1>
259
+
260
+ <div class="form-group">
261
+ <label for="name">Full name</label>
262
+ <input id="name" name="name" autocomplete="name" required pattern="[\p{L}\.\- ]+">
263
+ </div>
264
+
265
+ <div class="form-group">
266
+ <label for="email">Email</label>
267
+ <input id="email" name="email" type="email" autocomplete="username" required>
268
+ </div>
269
+
270
+ <div class="form-group">
271
+ <label for="password">Password</label>
272
+ <button id="toggle-password" type="button" aria-pressed="false" aria-label="Show password" aria-describedby="toggle-warning">
273
+ <img class="icon-eye" src="/icons/eye.svg" alt="" width="20" height="20">
274
+ <img class="icon-eye-off" src="/icons/eye-off.svg" alt="" width="20" height="20">
275
+ </button>
276
+ <span id="toggle-warning" class="visually-hidden">Warning: this will display your password on the screen.</span>
277
+ <input id="password" name="password" type="password" autocomplete="new-password" minlength="8" aria-describedby="password-constraints" required>
278
+ <div id="password-constraints">Eight or more characters.</div>
279
+ </div>
280
+
281
+ <button id="sign-up">Sign up</button>
282
+ </form>
283
+ ```
284
+
285
+
286
+ ## 9. Address Collection
287
+
288
+ ### Guidelines
289
+
290
+ - **DO** use a single field for names.
291
+ - **DO** use `autocomplete="street-address"`.
292
+ - If the site has users in different countries, **DO** use the `<textarea>` element for addresses, to accommodate different address formats in different geographical regions. If the form uses separate inputs for address parts (e.g. Street, City), **DO** use `autocomplete` values `address-line1`, `address-line2`, etc.
293
+ - **DO** make postal codes optional.
294
+
295
+ - **DON'T** split name inputs into rigid variables ("First", "Last") for global audiences.
296
+ - **DON'T** enforce Latin-only characters for names and usernames.
297
+
298
+ ### Code Example
299
+
300
+ ```html
301
+ <!-- Accessible Address Form with Autofill -->
302
+ <form action="/save-address" method="POST">
303
+ <div class="form-group">
304
+ <label for="full-name">Full name</label>
305
+ <input type="text" id="full-name" name="full_name" maxlength="100" required autocomplete="name">
306
+ </div>
307
+
308
+ <div class="form-group">
309
+ <label for="address">Address</label>
310
+ <textarea id="address" name="address" required autocomplete="street-address" maxlength="300"></textarea>
311
+ </div>
312
+
313
+ <button type="submit">Save Address</button>
314
+ </form>
315
+ ```
316
+
317
+
318
+ ## 10. Usability Testing and Analytics
319
+
320
+ ### Guidelines
321
+
322
+ - **DO** test forms across multiple devices, browsers, and screen sizes.
323
+ - **DO** test keyboard-only navigation (using `Tab` and `Shift+Tab`) and verify visual focus.
324
+ - **DO** emulate various impairments (visual, motor) using browser tools.
325
+ - **DO** use analytics to monitor form completion rates and bounce points.
326
+ - **DO** track discrete events (e.g., field focus, click) to find micro-friction points.
327
+
328
+ - **DON'T** rely solely on automated tools (Lighthouse) for usability; test with real users.
329
+ - **DON'T** track sensitive personal data in standard event labels.
330
+
331
+ ### Code Example
332
+
333
+ ```html
334
+ <form action="/submit" method="POST" id="track-form">
335
+ <label for="postal-code">ZIP or postal code</label>
336
+ <input type="text" id="postal-code" name="postal-code" autocomplete="postal-code" maxlength="20" required>
337
+ <button type="submit" id="submit-btn">Submit</button>
338
+ </form>
339
+
340
+ <script>
341
+ const trackForm = document.getElementById('track-form');
342
+ const trackBtn = document.getElementById('submit-btn');
343
+
344
+ trackBtn.addEventListener('click', () => {
345
+ console.log('Analytics Event: Submit clicked');
346
+ });
347
+ </script>
348
+ ```
349
+
350
+ ## 11. Multi-Page Forms
351
+
352
+ ### Guidelines
353
+
354
+ - **DO** clearly display progress through a multi-page form with clear labels and progress indicators.
355
+ - **DO** allow users to navigate backwards and forwards between pages.
356
+ - **DO** use context-specific `enterkeyhint` values (e.g., `"previous"`, `"next"`) to guide navigation via on-screen keyboards.
357
+ - **DO** design layouts so that the mobile keyboard does not obscure inputs or buttons (e.g., by placing them in the upper half of the viewport when focused or using CSS scroll-padding).
358
+
359
+ ### Code Example
360
+
361
+ ```html
362
+ <nav aria-label="Progress">
363
+ <ol class="progress-tracker">
364
+ <li class="step-done">Step 1: Account</li>
365
+ <li class="step-active" aria-current="step">Step 2: Shipping</li>
366
+ <li class="step-todo">Step 3: Payment</li>
367
+ </ol>
368
+ </nav>
369
+
370
+ <button type="button" onclick="history.back()" enterkeyhint="previous">Previous</button>
371
+ <button type="submit" enterkeyhint="next">Next</button>
372
+ ```
@@ -0,0 +1,214 @@
1
+ # Required Field Feedback
2
+
3
+ ## The Problem
4
+ Marking required fields with an error state immediately upon page load can be confusing. Ideally, a required field should only look "invalid" if the user has attempted to fill it out and failed.
5
+
6
+ ## The Solution
7
+ The `:user-invalid` pseudo-class solves this perfectly. For a required field, it will not match on page load. It will only match if:
8
+ 1. The user interacts with the field (e.g., types a character and deletes it) and then leaves it (blur), leaving it empty.
9
+ 2. The user attempts to submit the form while the field is empty.
10
+
11
+ ### Implementation Strategy
12
+
13
+ 1. **HTML Constraint**: Add the `required` attribute to your inputs.
14
+ 2. **Visual Feedback**: Use `:user-invalid` to style the border red and show a "Required" helper text.
15
+ 3. **Timing**: Rely on the browser's native timing for visual feedback. You don't need `onBlur` handlers to add a `touched` class anymore, though some JavaScript is still needed to sync ARIA attributes (see below).
16
+
17
+ ## Implementation Guide
18
+
19
+ ### 1. HTML Structure
20
+ ```html
21
+ <form id="feedback-form">
22
+ <div class="field">
23
+ <label for="full-name">Full Name</label>
24
+ <input
25
+ type="text"
26
+ id="full-name"
27
+ name="full-name"
28
+ required
29
+ aria-errormessage="name-error"
30
+ >
31
+ <!-- MANDATORY: Include an icon or distinct non-color indicator alongside error text -->
32
+ <div id="name-error" class="error-msg">
33
+ <span aria-hidden="true">❌</span> This field is required.
34
+ </div>
35
+ </div>
36
+ </form>
37
+ ```
38
+
39
+ ### 2. CSS
40
+ ```css
41
+ .error-msg {
42
+ display: none;
43
+ color: #d93025;
44
+ font-size: 0.875rem;
45
+ margin-top: 0.25rem;
46
+ }
47
+
48
+ /*
49
+ Only highlight empty required fields AFTER the user visits them.
50
+ MANDATORY: Provide multiple indicators (border shift + helper text/icon) to avoid color-only state communication.
51
+ */
52
+ input:user-invalid {
53
+ border-color: #d93025;
54
+ background-color: #fce8e6;
55
+ }
56
+
57
+ input:user-invalid + .error-msg {
58
+ display: block;
59
+ }
60
+
61
+ /* Optional: Subtle indicator for required fields that are valid */
62
+ input:required:user-valid {
63
+ border-color: #188038;
64
+ border-width: 2px;
65
+ }
66
+ ```
67
+
68
+ ### 3. JavaScript State Synchronization
69
+
70
+ MANDATORY: Because `:user-invalid` is a visual state, you MUST provide a JavaScript bridge to sync `aria-invalid="true"` dynamically for assistive technologies when a user blurs an invalid field or attempts submission.
71
+
72
+ ```javascript
73
+ const form = document.getElementById('feedback-form');
74
+
75
+ const syncAriaInvalid = (input) => {
76
+ if (!input.checkValidity()) {
77
+ input.setAttribute('aria-invalid', 'true');
78
+ } else {
79
+ input.removeAttribute('aria-invalid');
80
+ }
81
+ };
82
+
83
+ // Sync on blur when a user finishes interacting
84
+ form.addEventListener('blur', (e) => {
85
+ if (e.target.matches('input[required]')) {
86
+ syncAriaInvalid(e.target);
87
+ }
88
+ }, true);
89
+
90
+ // Sync all required fields when submission is attempted
91
+ form.addEventListener('submit', () => {
92
+ form.querySelectorAll('input[required]').forEach(syncAriaInvalid);
93
+ });
94
+
95
+ // Remove error state immediately upon correction
96
+ form.addEventListener('input', (e) => {
97
+ if (e.target.matches('input[required]') && e.target.checkValidity()) {
98
+ e.target.removeAttribute('aria-invalid');
99
+ }
100
+ });
101
+ ```
102
+
103
+ ## Fallbacking & Browser Support
104
+
105
+ ### Fallbacks & browser support for :user-valid and :user-invalid
106
+
107
+ Baseline status for :user-valid and :user-invalid: Widely available. It's been Baseline since 2023-11-02.
108
+ Supported by: Chrome 119 (Oct 2023), Edge 119 (Nov 2023), Firefox 88 (Apr 2021), and Safari 16.5 (May 2023).
109
+
110
+ ### CSS for Fallback
111
+
112
+ ```css
113
+ input:user-invalid,
114
+ input.user-invalid-fallback {
115
+ border-color: #d93025;
116
+ background-color: #fce8e6;
117
+ }
118
+
119
+ input:user-invalid + .error-msg,
120
+ input.user-invalid-fallback + .error-msg {
121
+ display: block;
122
+ }
123
+ ```
124
+
125
+ ### JavaScript Fallback
126
+
127
+ Use a reusable utility that tracks interaction state using a `WeakMap`. This avoids polluting the DOM with "dirty" classes or data attributes.
128
+
129
+ ```javascript
130
+ const UserInvalidFallback = (() => {
131
+ const dirtyState = new WeakMap();
132
+
133
+ const updateState = (input) => {
134
+ const isValid = input.checkValidity();
135
+
136
+ // Update both visual and ARIA state
137
+ input.classList.toggle('user-invalid-fallback', !isValid);
138
+ input.classList.toggle('user-valid-fallback', isValid);
139
+
140
+ if (!isValid) {
141
+ input.setAttribute('aria-invalid', 'true');
142
+ } else {
143
+ input.removeAttribute('aria-invalid');
144
+ }
145
+ };
146
+
147
+ const handleEvent = (event) => {
148
+ const input = event.target;
149
+
150
+ if (event.type === 'reset') {
151
+ const controls = input.elements || [];
152
+ for (const control of controls) {
153
+ dirtyState.delete(control);
154
+ control.classList.remove('user-invalid-fallback');
155
+ control.classList.remove('user-valid-fallback');
156
+ control.removeAttribute('aria-invalid');
157
+ }
158
+ return;
159
+ }
160
+
161
+ if (!input.checkValidity) return;
162
+
163
+ if (event.type === 'input' || event.type === 'change') {
164
+ const state = dirtyState.get(input) || { hasInteracted: false, hasBlurred: false };
165
+ state.hasInteracted = true;
166
+ dirtyState.set(input, state);
167
+ if (state.hasBlurred) {
168
+ updateState(input);
169
+ }
170
+ } else if (event.type === 'blur') {
171
+ const state = dirtyState.get(input) || { hasInteracted: false, hasBlurred: false };
172
+ state.hasBlurred = true;
173
+ dirtyState.set(input, state);
174
+ if (state.hasInteracted) {
175
+ updateState(input);
176
+ }
177
+ }
178
+ };
179
+
180
+ const init = (root = document) => {
181
+ if (CSS.supports('selector(:user-invalid)')) return;
182
+
183
+ root.addEventListener('blur', handleEvent, true); // Capture phase
184
+ root.addEventListener('input', handleEvent);
185
+ root.addEventListener('change', handleEvent);
186
+ root.addEventListener('reset', handleEvent, true); // Capture resets
187
+ };
188
+
189
+ return { init };
190
+ })();
191
+
192
+ // Initialize for a specific form
193
+ const form = document.querySelector('#demo-form');
194
+ UserInvalidFallback.init(form);
195
+ ```
196
+
197
+ ## Other Considerations
198
+
199
+ 1. **Asterisks**: It is still best practice to indicate required fields visually (e.g., with an asterisk `*`) in the label, so users know what to expect *before* they interact.
200
+ 2. **Submit Buttons**: Unlike `disabled` buttons, keep your submit button enabled. If the user clicks it, the browser will automatically trigger `:user-invalid` on all empty required fields and focus the first one. This is excellent for accessibility and UX.
201
+ 3. **Accessibility**: Native `:user-invalid` does not automatically sync with ARIA attributes. Add the following JavaScript to keep `aria-invalid` in sync with the visual state:
202
+
203
+ ```javascript
204
+ // Sync aria-invalid with the CSS :user-invalid state
205
+ const syncAria = (el) => {
206
+ el.setAttribute?.('aria-invalid', el.matches(':user-invalid') ? 'true' : 'false');
207
+ };
208
+
209
+ // Update on blur (to show error) and input (to clear it)
210
+ document.addEventListener('blur', (e) => syncAria(e.target), true);
211
+ document.addEventListener('input', (e) => {
212
+ if (e.target.hasAttribute('aria-invalid')) syncAria(e.target);
213
+ });
214
+ ```