lsd-pi 1.2.0 → 1.2.1

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 (505) hide show
  1. package/dist/onboarding.js +3 -3
  2. package/dist/resources/agents/scout.md +6 -0
  3. package/dist/resources/extensions/slash-commands/plan.js +7 -1
  4. package/dist/resources/extensions/subagent/index.js +10 -2
  5. package/dist/resources/extensions/usage/index.js +87 -36
  6. package/package.json +1 -1
  7. package/packages/pi-ai/dist/models.generated.d.ts +222 -1
  8. package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
  9. package/packages/pi-ai/dist/models.generated.js +227 -6
  10. package/packages/pi-ai/dist/models.generated.js.map +1 -1
  11. package/packages/pi-ai/dist/models.test.js +28 -0
  12. package/packages/pi-ai/dist/models.test.js.map +1 -1
  13. package/packages/pi-ai/scripts/generate-models.ts +10 -100
  14. package/packages/pi-ai/src/models.generated.ts +227 -6
  15. package/packages/pi-ai/src/models.test.ts +30 -0
  16. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +2 -0
  17. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  18. package/packages/pi-coding-agent/dist/core/agent-session.js +28 -0
  19. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  20. package/packages/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
  21. package/packages/pi-coding-agent/dist/core/system-prompt.js +10 -0
  22. package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  23. package/packages/pi-coding-agent/dist/tests/path-display.test.js +13 -0
  24. package/packages/pi-coding-agent/dist/tests/path-display.test.js.map +1 -1
  25. package/packages/pi-coding-agent/dist/tests/settings-manager-scout-policy.test.d.ts +2 -0
  26. package/packages/pi-coding-agent/dist/tests/settings-manager-scout-policy.test.d.ts.map +1 -0
  27. package/packages/pi-coding-agent/dist/tests/settings-manager-scout-policy.test.js +15 -0
  28. package/packages/pi-coding-agent/dist/tests/settings-manager-scout-policy.test.js.map +1 -0
  29. package/packages/pi-coding-agent/src/core/agent-session.ts +35 -0
  30. package/packages/pi-coding-agent/src/core/system-prompt.ts +26 -0
  31. package/packages/pi-coding-agent/src/tests/path-display.test.ts +14 -0
  32. package/src/resources/agents/scout.md +6 -0
  33. package/src/resources/extensions/slash-commands/plan.ts +11 -1
  34. package/src/resources/extensions/subagent/index.ts +10 -2
  35. package/src/resources/extensions/usage/index.ts +92 -38
  36. package/dist/resources/agents/javascript-pro.md +0 -280
  37. package/dist/resources/agents/researcher.md +0 -29
  38. package/dist/resources/agents/teams-builder.md +0 -74
  39. package/dist/resources/agents/teams-reviewer.md +0 -113
  40. package/dist/resources/agents/typescript-pro.md +0 -255
  41. package/dist/resources/skills/accessibility/SKILL.md +0 -522
  42. package/dist/resources/skills/accessibility/references/WCAG.md +0 -162
  43. package/dist/resources/skills/core-web-vitals/SKILL.md +0 -441
  44. package/dist/resources/skills/core-web-vitals/references/LCP.md +0 -208
  45. package/dist/resources/skills/frontend-design/SKILL.md +0 -45
  46. package/dist/resources/skills/make-interfaces-feel-better/SKILL.md +0 -122
  47. package/dist/resources/skills/make-interfaces-feel-better/animations.md +0 -379
  48. package/dist/resources/skills/make-interfaces-feel-better/performance.md +0 -88
  49. package/dist/resources/skills/make-interfaces-feel-better/surfaces.md +0 -247
  50. package/dist/resources/skills/make-interfaces-feel-better/typography.md +0 -123
  51. package/dist/resources/skills/react-best-practices/README.md +0 -123
  52. package/dist/resources/skills/react-best-practices/SKILL.md +0 -136
  53. package/dist/resources/skills/react-best-practices/metadata.json +0 -15
  54. package/dist/resources/skills/react-best-practices/rules/_sections.md +0 -46
  55. package/dist/resources/skills/react-best-practices/rules/_template.md +0 -28
  56. package/dist/resources/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  57. package/dist/resources/skills/react-best-practices/rules/advanced-init-once.md +0 -42
  58. package/dist/resources/skills/react-best-practices/rules/advanced-use-latest.md +0 -39
  59. package/dist/resources/skills/react-best-practices/rules/async-api-routes.md +0 -38
  60. package/dist/resources/skills/react-best-practices/rules/async-defer-await.md +0 -80
  61. package/dist/resources/skills/react-best-practices/rules/async-dependencies.md +0 -51
  62. package/dist/resources/skills/react-best-practices/rules/async-parallel.md +0 -28
  63. package/dist/resources/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
  64. package/dist/resources/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
  65. package/dist/resources/skills/react-best-practices/rules/bundle-conditional.md +0 -31
  66. package/dist/resources/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
  67. package/dist/resources/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  68. package/dist/resources/skills/react-best-practices/rules/bundle-preload.md +0 -50
  69. package/dist/resources/skills/react-best-practices/rules/client-event-listeners.md +0 -74
  70. package/dist/resources/skills/react-best-practices/rules/client-localstorage-schema.md +0 -71
  71. package/dist/resources/skills/react-best-practices/rules/client-passive-event-listeners.md +0 -48
  72. package/dist/resources/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
  73. package/dist/resources/skills/react-best-practices/rules/js-batch-dom-css.md +0 -107
  74. package/dist/resources/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
  75. package/dist/resources/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
  76. package/dist/resources/skills/react-best-practices/rules/js-cache-storage.md +0 -70
  77. package/dist/resources/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
  78. package/dist/resources/skills/react-best-practices/rules/js-early-exit.md +0 -50
  79. package/dist/resources/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
  80. package/dist/resources/skills/react-best-practices/rules/js-index-maps.md +0 -37
  81. package/dist/resources/skills/react-best-practices/rules/js-length-check-first.md +0 -49
  82. package/dist/resources/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
  83. package/dist/resources/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
  84. package/dist/resources/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
  85. package/dist/resources/skills/react-best-practices/rules/rendering-activity.md +0 -26
  86. package/dist/resources/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  87. package/dist/resources/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
  88. package/dist/resources/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
  89. package/dist/resources/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  90. package/dist/resources/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  91. package/dist/resources/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
  92. package/dist/resources/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
  93. package/dist/resources/skills/react-best-practices/rules/rendering-usetransition-loading.md +0 -75
  94. package/dist/resources/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
  95. package/dist/resources/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
  96. package/dist/resources/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
  97. package/dist/resources/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
  98. package/dist/resources/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
  99. package/dist/resources/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  100. package/dist/resources/skills/react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
  101. package/dist/resources/skills/react-best-practices/rules/rerender-memo.md +0 -44
  102. package/dist/resources/skills/react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
  103. package/dist/resources/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
  104. package/dist/resources/skills/react-best-practices/rules/rerender-transitions.md +0 -40
  105. package/dist/resources/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
  106. package/dist/resources/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
  107. package/dist/resources/skills/react-best-practices/rules/server-auth-actions.md +0 -96
  108. package/dist/resources/skills/react-best-practices/rules/server-cache-lru.md +0 -41
  109. package/dist/resources/skills/react-best-practices/rules/server-cache-react.md +0 -76
  110. package/dist/resources/skills/react-best-practices/rules/server-dedup-props.md +0 -65
  111. package/dist/resources/skills/react-best-practices/rules/server-parallel-fetching.md +0 -83
  112. package/dist/resources/skills/react-best-practices/rules/server-serialization.md +0 -38
  113. package/dist/resources/skills/userinterface-wiki/SKILL.md +0 -253
  114. package/dist/resources/skills/userinterface-wiki/rules/_sections.md +0 -66
  115. package/dist/resources/skills/userinterface-wiki/rules/_template.md +0 -24
  116. package/dist/resources/skills/userinterface-wiki/rules/a11y-reduced-motion-check.md +0 -30
  117. package/dist/resources/skills/userinterface-wiki/rules/a11y-toggle-setting.md +0 -30
  118. package/dist/resources/skills/userinterface-wiki/rules/a11y-visual-equivalent.md +0 -36
  119. package/dist/resources/skills/userinterface-wiki/rules/a11y-volume-control.md +0 -28
  120. package/dist/resources/skills/userinterface-wiki/rules/appropriate-confirmations-only.md +0 -19
  121. package/dist/resources/skills/userinterface-wiki/rules/appropriate-errors-warnings.md +0 -18
  122. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-decorative.md +0 -21
  123. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-high-frequency.md +0 -28
  124. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-punishing.md +0 -27
  125. package/dist/resources/skills/userinterface-wiki/rules/container-callback-ref.md +0 -31
  126. package/dist/resources/skills/userinterface-wiki/rules/container-guard-initial-zero.md +0 -25
  127. package/dist/resources/skills/userinterface-wiki/rules/container-no-excessive-use.md +0 -13
  128. package/dist/resources/skills/userinterface-wiki/rules/container-overflow-hidden.md +0 -25
  129. package/dist/resources/skills/userinterface-wiki/rules/container-transition-delay.md +0 -21
  130. package/dist/resources/skills/userinterface-wiki/rules/container-two-div-pattern.md +0 -35
  131. package/dist/resources/skills/userinterface-wiki/rules/container-use-resize-observer.md +0 -48
  132. package/dist/resources/skills/userinterface-wiki/rules/context-cleanup-nodes.md +0 -25
  133. package/dist/resources/skills/userinterface-wiki/rules/context-resume-suspended.md +0 -28
  134. package/dist/resources/skills/userinterface-wiki/rules/context-reuse-single.md +0 -30
  135. package/dist/resources/skills/userinterface-wiki/rules/design-filter-for-character.md +0 -25
  136. package/dist/resources/skills/userinterface-wiki/rules/design-noise-for-percussion.md +0 -26
  137. package/dist/resources/skills/userinterface-wiki/rules/design-oscillator-for-tonal.md +0 -22
  138. package/dist/resources/skills/userinterface-wiki/rules/duration-max-300ms.md +0 -21
  139. package/dist/resources/skills/userinterface-wiki/rules/duration-press-hover.md +0 -21
  140. package/dist/resources/skills/userinterface-wiki/rules/duration-shorten-before-curve.md +0 -21
  141. package/dist/resources/skills/userinterface-wiki/rules/duration-small-state.md +0 -15
  142. package/dist/resources/skills/userinterface-wiki/rules/easing-entrance-ease-out.md +0 -21
  143. package/dist/resources/skills/userinterface-wiki/rules/easing-exit-ease-in.md +0 -21
  144. package/dist/resources/skills/userinterface-wiki/rules/easing-for-state-change.md +0 -27
  145. package/dist/resources/skills/userinterface-wiki/rules/easing-linear-only-progress.md +0 -21
  146. package/dist/resources/skills/userinterface-wiki/rules/easing-natural-decay.md +0 -22
  147. package/dist/resources/skills/userinterface-wiki/rules/easing-no-linear-motion.md +0 -22
  148. package/dist/resources/skills/userinterface-wiki/rules/easing-transition-ease-in-out.md +0 -15
  149. package/dist/resources/skills/userinterface-wiki/rules/envelope-exponential-decay.md +0 -21
  150. package/dist/resources/skills/userinterface-wiki/rules/envelope-no-zero-target.md +0 -21
  151. package/dist/resources/skills/userinterface-wiki/rules/envelope-set-initial-value.md +0 -22
  152. package/dist/resources/skills/userinterface-wiki/rules/exit-key-required.md +0 -29
  153. package/dist/resources/skills/userinterface-wiki/rules/exit-matches-initial.md +0 -29
  154. package/dist/resources/skills/userinterface-wiki/rules/exit-prop-required.md +0 -33
  155. package/dist/resources/skills/userinterface-wiki/rules/exit-requires-wrapper.md +0 -27
  156. package/dist/resources/skills/userinterface-wiki/rules/impl-default-subtle.md +0 -21
  157. package/dist/resources/skills/userinterface-wiki/rules/impl-preload-audio.md +0 -34
  158. package/dist/resources/skills/userinterface-wiki/rules/impl-reset-current-time.md +0 -26
  159. package/dist/resources/skills/userinterface-wiki/rules/mode-pop-layout-for-lists.md +0 -25
  160. package/dist/resources/skills/userinterface-wiki/rules/mode-sync-layout-conflict.md +0 -29
  161. package/dist/resources/skills/userinterface-wiki/rules/mode-wait-doubles-duration.md +0 -25
  162. package/dist/resources/skills/userinterface-wiki/rules/morphing-aria-hidden.md +0 -21
  163. package/dist/resources/skills/userinterface-wiki/rules/morphing-consistent-viewbox.md +0 -23
  164. package/dist/resources/skills/userinterface-wiki/rules/morphing-group-variants.md +0 -33
  165. package/dist/resources/skills/userinterface-wiki/rules/morphing-jump-non-grouped.md +0 -29
  166. package/dist/resources/skills/userinterface-wiki/rules/morphing-reduced-motion.md +0 -28
  167. package/dist/resources/skills/userinterface-wiki/rules/morphing-spring-rotation.md +0 -23
  168. package/dist/resources/skills/userinterface-wiki/rules/morphing-strokelinecap-round.md +0 -21
  169. package/dist/resources/skills/userinterface-wiki/rules/morphing-three-lines.md +0 -32
  170. package/dist/resources/skills/userinterface-wiki/rules/morphing-use-collapsed.md +0 -33
  171. package/dist/resources/skills/userinterface-wiki/rules/native-backdrop-styling.md +0 -27
  172. package/dist/resources/skills/userinterface-wiki/rules/native-placeholder-styling.md +0 -27
  173. package/dist/resources/skills/userinterface-wiki/rules/native-selection-styling.md +0 -18
  174. package/dist/resources/skills/userinterface-wiki/rules/nested-consistent-timing.md +0 -25
  175. package/dist/resources/skills/userinterface-wiki/rules/nested-propagate-required.md +0 -41
  176. package/dist/resources/skills/userinterface-wiki/rules/none-context-menu-entrance.md +0 -25
  177. package/dist/resources/skills/userinterface-wiki/rules/none-high-frequency.md +0 -29
  178. package/dist/resources/skills/userinterface-wiki/rules/none-keyboard-navigation.md +0 -32
  179. package/dist/resources/skills/userinterface-wiki/rules/param-click-duration.md +0 -21
  180. package/dist/resources/skills/userinterface-wiki/rules/param-filter-frequency-range.md +0 -21
  181. package/dist/resources/skills/userinterface-wiki/rules/param-q-value-range.md +0 -21
  182. package/dist/resources/skills/userinterface-wiki/rules/param-reasonable-gain.md +0 -21
  183. package/dist/resources/skills/userinterface-wiki/rules/physics-active-state.md +0 -23
  184. package/dist/resources/skills/userinterface-wiki/rules/physics-no-excessive-stagger.md +0 -22
  185. package/dist/resources/skills/userinterface-wiki/rules/physics-spring-for-overshoot.md +0 -23
  186. package/dist/resources/skills/userinterface-wiki/rules/physics-subtle-deformation.md +0 -22
  187. package/dist/resources/skills/userinterface-wiki/rules/prefetch-hit-slop.md +0 -27
  188. package/dist/resources/skills/userinterface-wiki/rules/prefetch-keyboard-tab.md +0 -19
  189. package/dist/resources/skills/userinterface-wiki/rules/prefetch-not-everything.md +0 -22
  190. package/dist/resources/skills/userinterface-wiki/rules/prefetch-touch-fallback.md +0 -34
  191. package/dist/resources/skills/userinterface-wiki/rules/prefetch-trajectory-over-hover.md +0 -32
  192. package/dist/resources/skills/userinterface-wiki/rules/prefetch-use-selectively.md +0 -13
  193. package/dist/resources/skills/userinterface-wiki/rules/presence-disable-interactions.md +0 -31
  194. package/dist/resources/skills/userinterface-wiki/rules/presence-hook-in-child.md +0 -31
  195. package/dist/resources/skills/userinterface-wiki/rules/presence-safe-to-remove.md +0 -37
  196. package/dist/resources/skills/userinterface-wiki/rules/pseudo-content-required.md +0 -28
  197. package/dist/resources/skills/userinterface-wiki/rules/pseudo-first-line-styling.md +0 -27
  198. package/dist/resources/skills/userinterface-wiki/rules/pseudo-hit-target-expansion.md +0 -31
  199. package/dist/resources/skills/userinterface-wiki/rules/pseudo-marker-styling.md +0 -28
  200. package/dist/resources/skills/userinterface-wiki/rules/pseudo-over-dom-node.md +0 -32
  201. package/dist/resources/skills/userinterface-wiki/rules/pseudo-position-relative-parent.md +0 -33
  202. package/dist/resources/skills/userinterface-wiki/rules/pseudo-z-index-layering.md +0 -37
  203. package/dist/resources/skills/userinterface-wiki/rules/spring-for-gestures.md +0 -27
  204. package/dist/resources/skills/userinterface-wiki/rules/spring-for-interruptible.md +0 -27
  205. package/dist/resources/skills/userinterface-wiki/rules/spring-params-balanced.md +0 -29
  206. package/dist/resources/skills/userinterface-wiki/rules/spring-preserves-velocity.md +0 -28
  207. package/dist/resources/skills/userinterface-wiki/rules/staging-dim-background.md +0 -22
  208. package/dist/resources/skills/userinterface-wiki/rules/staging-one-focal-point.md +0 -24
  209. package/dist/resources/skills/userinterface-wiki/rules/staging-z-index-hierarchy.md +0 -22
  210. package/dist/resources/skills/userinterface-wiki/rules/timing-consistent.md +0 -24
  211. package/dist/resources/skills/userinterface-wiki/rules/timing-no-entrance-context-menu.md +0 -22
  212. package/dist/resources/skills/userinterface-wiki/rules/timing-under-300ms.md +0 -22
  213. package/dist/resources/skills/userinterface-wiki/rules/transition-name-cleanup.md +0 -28
  214. package/dist/resources/skills/userinterface-wiki/rules/transition-name-required.md +0 -27
  215. package/dist/resources/skills/userinterface-wiki/rules/transition-name-unique.md +0 -24
  216. package/dist/resources/skills/userinterface-wiki/rules/transition-over-js-library.md +0 -32
  217. package/dist/resources/skills/userinterface-wiki/rules/transition-style-pseudo-elements.md +0 -24
  218. package/dist/resources/skills/userinterface-wiki/rules/type-antialiased-on-retina.md +0 -18
  219. package/dist/resources/skills/userinterface-wiki/rules/type-disambiguation-stylistic-set.md +0 -15
  220. package/dist/resources/skills/userinterface-wiki/rules/type-font-display-swap.md +0 -28
  221. package/dist/resources/skills/userinterface-wiki/rules/type-justify-with-hyphens.md +0 -24
  222. package/dist/resources/skills/userinterface-wiki/rules/type-letter-spacing-uppercase.md +0 -28
  223. package/dist/resources/skills/userinterface-wiki/rules/type-no-font-synthesis.md +0 -18
  224. package/dist/resources/skills/userinterface-wiki/rules/type-oldstyle-nums-for-prose.md +0 -21
  225. package/dist/resources/skills/userinterface-wiki/rules/type-opentype-contextual-alternates.md +0 -15
  226. package/dist/resources/skills/userinterface-wiki/rules/type-optical-sizing-auto.md +0 -25
  227. package/dist/resources/skills/userinterface-wiki/rules/type-proper-fractions.md +0 -15
  228. package/dist/resources/skills/userinterface-wiki/rules/type-slashed-zero.md +0 -17
  229. package/dist/resources/skills/userinterface-wiki/rules/type-tabular-nums-for-data.md +0 -21
  230. package/dist/resources/skills/userinterface-wiki/rules/type-text-wrap-balance-headings.md +0 -21
  231. package/dist/resources/skills/userinterface-wiki/rules/type-text-wrap-pretty.md +0 -16
  232. package/dist/resources/skills/userinterface-wiki/rules/type-underline-offset.md +0 -25
  233. package/dist/resources/skills/userinterface-wiki/rules/type-variable-weight-continuous.md +0 -23
  234. package/dist/resources/skills/userinterface-wiki/rules/ux-aesthetic-usability.md +0 -32
  235. package/dist/resources/skills/userinterface-wiki/rules/ux-cognitive-load-reduce.md +0 -49
  236. package/dist/resources/skills/userinterface-wiki/rules/ux-common-region-boundaries.md +0 -50
  237. package/dist/resources/skills/userinterface-wiki/rules/ux-doherty-perceived-speed.md +0 -29
  238. package/dist/resources/skills/userinterface-wiki/rules/ux-doherty-under-400ms.md +0 -30
  239. package/dist/resources/skills/userinterface-wiki/rules/ux-fitts-hit-area.md +0 -32
  240. package/dist/resources/skills/userinterface-wiki/rules/ux-fitts-target-size.md +0 -31
  241. package/dist/resources/skills/userinterface-wiki/rules/ux-goal-gradient-progress.md +0 -33
  242. package/dist/resources/skills/userinterface-wiki/rules/ux-hicks-minimize-choices.md +0 -45
  243. package/dist/resources/skills/userinterface-wiki/rules/ux-jakobs-familiar-patterns.md +0 -37
  244. package/dist/resources/skills/userinterface-wiki/rules/ux-millers-chunking.md +0 -23
  245. package/dist/resources/skills/userinterface-wiki/rules/ux-pareto-prioritize-features.md +0 -36
  246. package/dist/resources/skills/userinterface-wiki/rules/ux-peak-end-finish-strong.md +0 -35
  247. package/dist/resources/skills/userinterface-wiki/rules/ux-postels-accept-messy-input.md +0 -45
  248. package/dist/resources/skills/userinterface-wiki/rules/ux-pragnanz-simplify.md +0 -33
  249. package/dist/resources/skills/userinterface-wiki/rules/ux-progressive-disclosure.md +0 -41
  250. package/dist/resources/skills/userinterface-wiki/rules/ux-proximity-grouping.md +0 -38
  251. package/dist/resources/skills/userinterface-wiki/rules/ux-serial-position.md +0 -31
  252. package/dist/resources/skills/userinterface-wiki/rules/ux-similarity-consistency.md +0 -35
  253. package/dist/resources/skills/userinterface-wiki/rules/ux-teslers-complexity.md +0 -28
  254. package/dist/resources/skills/userinterface-wiki/rules/ux-uniform-connectedness.md +0 -43
  255. package/dist/resources/skills/userinterface-wiki/rules/ux-von-restorff-emphasis.md +0 -29
  256. package/dist/resources/skills/userinterface-wiki/rules/ux-zeigarnik-show-incomplete.md +0 -36
  257. package/dist/resources/skills/userinterface-wiki/rules/visual-animate-shadow-pseudo.md +0 -49
  258. package/dist/resources/skills/userinterface-wiki/rules/visual-border-alpha-colors.md +0 -25
  259. package/dist/resources/skills/userinterface-wiki/rules/visual-button-shadow-anatomy.md +0 -49
  260. package/dist/resources/skills/userinterface-wiki/rules/visual-concentric-radius.md +0 -40
  261. package/dist/resources/skills/userinterface-wiki/rules/visual-consistent-spacing-scale.md +0 -35
  262. package/dist/resources/skills/userinterface-wiki/rules/visual-layered-shadows.md +0 -30
  263. package/dist/resources/skills/userinterface-wiki/rules/visual-no-pure-black-shadow.md +0 -25
  264. package/dist/resources/skills/userinterface-wiki/rules/visual-shadow-direction.md +0 -25
  265. package/dist/resources/skills/userinterface-wiki/rules/visual-shadow-matches-elevation.md +0 -23
  266. package/dist/resources/skills/userinterface-wiki/rules/weight-duration-matches-action.md +0 -29
  267. package/dist/resources/skills/userinterface-wiki/rules/weight-match-action.md +0 -32
  268. package/dist/resources/skills/web-design-guidelines/SKILL.md +0 -39
  269. package/dist/resources/skills/web-quality-audit/SKILL.md +0 -168
  270. package/dist/resources/skills/web-quality-audit/scripts/analyze.sh +0 -91
  271. package/src/resources/agents/javascript-pro.md +0 -280
  272. package/src/resources/agents/researcher.md +0 -29
  273. package/src/resources/agents/teams-builder.md +0 -74
  274. package/src/resources/agents/teams-reviewer.md +0 -113
  275. package/src/resources/agents/typescript-pro.md +0 -255
  276. package/src/resources/skills/accessibility/SKILL.md +0 -522
  277. package/src/resources/skills/accessibility/references/WCAG.md +0 -162
  278. package/src/resources/skills/core-web-vitals/SKILL.md +0 -441
  279. package/src/resources/skills/core-web-vitals/references/LCP.md +0 -208
  280. package/src/resources/skills/frontend-design/SKILL.md +0 -45
  281. package/src/resources/skills/make-interfaces-feel-better/SKILL.md +0 -122
  282. package/src/resources/skills/make-interfaces-feel-better/animations.md +0 -379
  283. package/src/resources/skills/make-interfaces-feel-better/performance.md +0 -88
  284. package/src/resources/skills/make-interfaces-feel-better/surfaces.md +0 -247
  285. package/src/resources/skills/make-interfaces-feel-better/typography.md +0 -123
  286. package/src/resources/skills/react-best-practices/README.md +0 -123
  287. package/src/resources/skills/react-best-practices/SKILL.md +0 -136
  288. package/src/resources/skills/react-best-practices/metadata.json +0 -15
  289. package/src/resources/skills/react-best-practices/rules/_sections.md +0 -46
  290. package/src/resources/skills/react-best-practices/rules/_template.md +0 -28
  291. package/src/resources/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  292. package/src/resources/skills/react-best-practices/rules/advanced-init-once.md +0 -42
  293. package/src/resources/skills/react-best-practices/rules/advanced-use-latest.md +0 -39
  294. package/src/resources/skills/react-best-practices/rules/async-api-routes.md +0 -38
  295. package/src/resources/skills/react-best-practices/rules/async-defer-await.md +0 -80
  296. package/src/resources/skills/react-best-practices/rules/async-dependencies.md +0 -51
  297. package/src/resources/skills/react-best-practices/rules/async-parallel.md +0 -28
  298. package/src/resources/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
  299. package/src/resources/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
  300. package/src/resources/skills/react-best-practices/rules/bundle-conditional.md +0 -31
  301. package/src/resources/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
  302. package/src/resources/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  303. package/src/resources/skills/react-best-practices/rules/bundle-preload.md +0 -50
  304. package/src/resources/skills/react-best-practices/rules/client-event-listeners.md +0 -74
  305. package/src/resources/skills/react-best-practices/rules/client-localstorage-schema.md +0 -71
  306. package/src/resources/skills/react-best-practices/rules/client-passive-event-listeners.md +0 -48
  307. package/src/resources/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
  308. package/src/resources/skills/react-best-practices/rules/js-batch-dom-css.md +0 -107
  309. package/src/resources/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
  310. package/src/resources/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
  311. package/src/resources/skills/react-best-practices/rules/js-cache-storage.md +0 -70
  312. package/src/resources/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
  313. package/src/resources/skills/react-best-practices/rules/js-early-exit.md +0 -50
  314. package/src/resources/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
  315. package/src/resources/skills/react-best-practices/rules/js-index-maps.md +0 -37
  316. package/src/resources/skills/react-best-practices/rules/js-length-check-first.md +0 -49
  317. package/src/resources/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
  318. package/src/resources/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
  319. package/src/resources/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
  320. package/src/resources/skills/react-best-practices/rules/rendering-activity.md +0 -26
  321. package/src/resources/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  322. package/src/resources/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
  323. package/src/resources/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
  324. package/src/resources/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  325. package/src/resources/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  326. package/src/resources/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
  327. package/src/resources/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
  328. package/src/resources/skills/react-best-practices/rules/rendering-usetransition-loading.md +0 -75
  329. package/src/resources/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
  330. package/src/resources/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
  331. package/src/resources/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
  332. package/src/resources/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
  333. package/src/resources/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
  334. package/src/resources/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  335. package/src/resources/skills/react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
  336. package/src/resources/skills/react-best-practices/rules/rerender-memo.md +0 -44
  337. package/src/resources/skills/react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
  338. package/src/resources/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
  339. package/src/resources/skills/react-best-practices/rules/rerender-transitions.md +0 -40
  340. package/src/resources/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
  341. package/src/resources/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
  342. package/src/resources/skills/react-best-practices/rules/server-auth-actions.md +0 -96
  343. package/src/resources/skills/react-best-practices/rules/server-cache-lru.md +0 -41
  344. package/src/resources/skills/react-best-practices/rules/server-cache-react.md +0 -76
  345. package/src/resources/skills/react-best-practices/rules/server-dedup-props.md +0 -65
  346. package/src/resources/skills/react-best-practices/rules/server-parallel-fetching.md +0 -83
  347. package/src/resources/skills/react-best-practices/rules/server-serialization.md +0 -38
  348. package/src/resources/skills/userinterface-wiki/SKILL.md +0 -253
  349. package/src/resources/skills/userinterface-wiki/rules/_sections.md +0 -66
  350. package/src/resources/skills/userinterface-wiki/rules/_template.md +0 -24
  351. package/src/resources/skills/userinterface-wiki/rules/a11y-reduced-motion-check.md +0 -30
  352. package/src/resources/skills/userinterface-wiki/rules/a11y-toggle-setting.md +0 -30
  353. package/src/resources/skills/userinterface-wiki/rules/a11y-visual-equivalent.md +0 -36
  354. package/src/resources/skills/userinterface-wiki/rules/a11y-volume-control.md +0 -28
  355. package/src/resources/skills/userinterface-wiki/rules/appropriate-confirmations-only.md +0 -19
  356. package/src/resources/skills/userinterface-wiki/rules/appropriate-errors-warnings.md +0 -18
  357. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-decorative.md +0 -21
  358. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-high-frequency.md +0 -28
  359. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-punishing.md +0 -27
  360. package/src/resources/skills/userinterface-wiki/rules/container-callback-ref.md +0 -31
  361. package/src/resources/skills/userinterface-wiki/rules/container-guard-initial-zero.md +0 -25
  362. package/src/resources/skills/userinterface-wiki/rules/container-no-excessive-use.md +0 -13
  363. package/src/resources/skills/userinterface-wiki/rules/container-overflow-hidden.md +0 -25
  364. package/src/resources/skills/userinterface-wiki/rules/container-transition-delay.md +0 -21
  365. package/src/resources/skills/userinterface-wiki/rules/container-two-div-pattern.md +0 -35
  366. package/src/resources/skills/userinterface-wiki/rules/container-use-resize-observer.md +0 -48
  367. package/src/resources/skills/userinterface-wiki/rules/context-cleanup-nodes.md +0 -25
  368. package/src/resources/skills/userinterface-wiki/rules/context-resume-suspended.md +0 -28
  369. package/src/resources/skills/userinterface-wiki/rules/context-reuse-single.md +0 -30
  370. package/src/resources/skills/userinterface-wiki/rules/design-filter-for-character.md +0 -25
  371. package/src/resources/skills/userinterface-wiki/rules/design-noise-for-percussion.md +0 -26
  372. package/src/resources/skills/userinterface-wiki/rules/design-oscillator-for-tonal.md +0 -22
  373. package/src/resources/skills/userinterface-wiki/rules/duration-max-300ms.md +0 -21
  374. package/src/resources/skills/userinterface-wiki/rules/duration-press-hover.md +0 -21
  375. package/src/resources/skills/userinterface-wiki/rules/duration-shorten-before-curve.md +0 -21
  376. package/src/resources/skills/userinterface-wiki/rules/duration-small-state.md +0 -15
  377. package/src/resources/skills/userinterface-wiki/rules/easing-entrance-ease-out.md +0 -21
  378. package/src/resources/skills/userinterface-wiki/rules/easing-exit-ease-in.md +0 -21
  379. package/src/resources/skills/userinterface-wiki/rules/easing-for-state-change.md +0 -27
  380. package/src/resources/skills/userinterface-wiki/rules/easing-linear-only-progress.md +0 -21
  381. package/src/resources/skills/userinterface-wiki/rules/easing-natural-decay.md +0 -22
  382. package/src/resources/skills/userinterface-wiki/rules/easing-no-linear-motion.md +0 -22
  383. package/src/resources/skills/userinterface-wiki/rules/easing-transition-ease-in-out.md +0 -15
  384. package/src/resources/skills/userinterface-wiki/rules/envelope-exponential-decay.md +0 -21
  385. package/src/resources/skills/userinterface-wiki/rules/envelope-no-zero-target.md +0 -21
  386. package/src/resources/skills/userinterface-wiki/rules/envelope-set-initial-value.md +0 -22
  387. package/src/resources/skills/userinterface-wiki/rules/exit-key-required.md +0 -29
  388. package/src/resources/skills/userinterface-wiki/rules/exit-matches-initial.md +0 -29
  389. package/src/resources/skills/userinterface-wiki/rules/exit-prop-required.md +0 -33
  390. package/src/resources/skills/userinterface-wiki/rules/exit-requires-wrapper.md +0 -27
  391. package/src/resources/skills/userinterface-wiki/rules/impl-default-subtle.md +0 -21
  392. package/src/resources/skills/userinterface-wiki/rules/impl-preload-audio.md +0 -34
  393. package/src/resources/skills/userinterface-wiki/rules/impl-reset-current-time.md +0 -26
  394. package/src/resources/skills/userinterface-wiki/rules/mode-pop-layout-for-lists.md +0 -25
  395. package/src/resources/skills/userinterface-wiki/rules/mode-sync-layout-conflict.md +0 -29
  396. package/src/resources/skills/userinterface-wiki/rules/mode-wait-doubles-duration.md +0 -25
  397. package/src/resources/skills/userinterface-wiki/rules/morphing-aria-hidden.md +0 -21
  398. package/src/resources/skills/userinterface-wiki/rules/morphing-consistent-viewbox.md +0 -23
  399. package/src/resources/skills/userinterface-wiki/rules/morphing-group-variants.md +0 -33
  400. package/src/resources/skills/userinterface-wiki/rules/morphing-jump-non-grouped.md +0 -29
  401. package/src/resources/skills/userinterface-wiki/rules/morphing-reduced-motion.md +0 -28
  402. package/src/resources/skills/userinterface-wiki/rules/morphing-spring-rotation.md +0 -23
  403. package/src/resources/skills/userinterface-wiki/rules/morphing-strokelinecap-round.md +0 -21
  404. package/src/resources/skills/userinterface-wiki/rules/morphing-three-lines.md +0 -32
  405. package/src/resources/skills/userinterface-wiki/rules/morphing-use-collapsed.md +0 -33
  406. package/src/resources/skills/userinterface-wiki/rules/native-backdrop-styling.md +0 -27
  407. package/src/resources/skills/userinterface-wiki/rules/native-placeholder-styling.md +0 -27
  408. package/src/resources/skills/userinterface-wiki/rules/native-selection-styling.md +0 -18
  409. package/src/resources/skills/userinterface-wiki/rules/nested-consistent-timing.md +0 -25
  410. package/src/resources/skills/userinterface-wiki/rules/nested-propagate-required.md +0 -41
  411. package/src/resources/skills/userinterface-wiki/rules/none-context-menu-entrance.md +0 -25
  412. package/src/resources/skills/userinterface-wiki/rules/none-high-frequency.md +0 -29
  413. package/src/resources/skills/userinterface-wiki/rules/none-keyboard-navigation.md +0 -32
  414. package/src/resources/skills/userinterface-wiki/rules/param-click-duration.md +0 -21
  415. package/src/resources/skills/userinterface-wiki/rules/param-filter-frequency-range.md +0 -21
  416. package/src/resources/skills/userinterface-wiki/rules/param-q-value-range.md +0 -21
  417. package/src/resources/skills/userinterface-wiki/rules/param-reasonable-gain.md +0 -21
  418. package/src/resources/skills/userinterface-wiki/rules/physics-active-state.md +0 -23
  419. package/src/resources/skills/userinterface-wiki/rules/physics-no-excessive-stagger.md +0 -22
  420. package/src/resources/skills/userinterface-wiki/rules/physics-spring-for-overshoot.md +0 -23
  421. package/src/resources/skills/userinterface-wiki/rules/physics-subtle-deformation.md +0 -22
  422. package/src/resources/skills/userinterface-wiki/rules/prefetch-hit-slop.md +0 -27
  423. package/src/resources/skills/userinterface-wiki/rules/prefetch-keyboard-tab.md +0 -19
  424. package/src/resources/skills/userinterface-wiki/rules/prefetch-not-everything.md +0 -22
  425. package/src/resources/skills/userinterface-wiki/rules/prefetch-touch-fallback.md +0 -34
  426. package/src/resources/skills/userinterface-wiki/rules/prefetch-trajectory-over-hover.md +0 -32
  427. package/src/resources/skills/userinterface-wiki/rules/prefetch-use-selectively.md +0 -13
  428. package/src/resources/skills/userinterface-wiki/rules/presence-disable-interactions.md +0 -31
  429. package/src/resources/skills/userinterface-wiki/rules/presence-hook-in-child.md +0 -31
  430. package/src/resources/skills/userinterface-wiki/rules/presence-safe-to-remove.md +0 -37
  431. package/src/resources/skills/userinterface-wiki/rules/pseudo-content-required.md +0 -28
  432. package/src/resources/skills/userinterface-wiki/rules/pseudo-first-line-styling.md +0 -27
  433. package/src/resources/skills/userinterface-wiki/rules/pseudo-hit-target-expansion.md +0 -31
  434. package/src/resources/skills/userinterface-wiki/rules/pseudo-marker-styling.md +0 -28
  435. package/src/resources/skills/userinterface-wiki/rules/pseudo-over-dom-node.md +0 -32
  436. package/src/resources/skills/userinterface-wiki/rules/pseudo-position-relative-parent.md +0 -33
  437. package/src/resources/skills/userinterface-wiki/rules/pseudo-z-index-layering.md +0 -37
  438. package/src/resources/skills/userinterface-wiki/rules/spring-for-gestures.md +0 -27
  439. package/src/resources/skills/userinterface-wiki/rules/spring-for-interruptible.md +0 -27
  440. package/src/resources/skills/userinterface-wiki/rules/spring-params-balanced.md +0 -29
  441. package/src/resources/skills/userinterface-wiki/rules/spring-preserves-velocity.md +0 -28
  442. package/src/resources/skills/userinterface-wiki/rules/staging-dim-background.md +0 -22
  443. package/src/resources/skills/userinterface-wiki/rules/staging-one-focal-point.md +0 -24
  444. package/src/resources/skills/userinterface-wiki/rules/staging-z-index-hierarchy.md +0 -22
  445. package/src/resources/skills/userinterface-wiki/rules/timing-consistent.md +0 -24
  446. package/src/resources/skills/userinterface-wiki/rules/timing-no-entrance-context-menu.md +0 -22
  447. package/src/resources/skills/userinterface-wiki/rules/timing-under-300ms.md +0 -22
  448. package/src/resources/skills/userinterface-wiki/rules/transition-name-cleanup.md +0 -28
  449. package/src/resources/skills/userinterface-wiki/rules/transition-name-required.md +0 -27
  450. package/src/resources/skills/userinterface-wiki/rules/transition-name-unique.md +0 -24
  451. package/src/resources/skills/userinterface-wiki/rules/transition-over-js-library.md +0 -32
  452. package/src/resources/skills/userinterface-wiki/rules/transition-style-pseudo-elements.md +0 -24
  453. package/src/resources/skills/userinterface-wiki/rules/type-antialiased-on-retina.md +0 -18
  454. package/src/resources/skills/userinterface-wiki/rules/type-disambiguation-stylistic-set.md +0 -15
  455. package/src/resources/skills/userinterface-wiki/rules/type-font-display-swap.md +0 -28
  456. package/src/resources/skills/userinterface-wiki/rules/type-justify-with-hyphens.md +0 -24
  457. package/src/resources/skills/userinterface-wiki/rules/type-letter-spacing-uppercase.md +0 -28
  458. package/src/resources/skills/userinterface-wiki/rules/type-no-font-synthesis.md +0 -18
  459. package/src/resources/skills/userinterface-wiki/rules/type-oldstyle-nums-for-prose.md +0 -21
  460. package/src/resources/skills/userinterface-wiki/rules/type-opentype-contextual-alternates.md +0 -15
  461. package/src/resources/skills/userinterface-wiki/rules/type-optical-sizing-auto.md +0 -25
  462. package/src/resources/skills/userinterface-wiki/rules/type-proper-fractions.md +0 -15
  463. package/src/resources/skills/userinterface-wiki/rules/type-slashed-zero.md +0 -17
  464. package/src/resources/skills/userinterface-wiki/rules/type-tabular-nums-for-data.md +0 -21
  465. package/src/resources/skills/userinterface-wiki/rules/type-text-wrap-balance-headings.md +0 -21
  466. package/src/resources/skills/userinterface-wiki/rules/type-text-wrap-pretty.md +0 -16
  467. package/src/resources/skills/userinterface-wiki/rules/type-underline-offset.md +0 -25
  468. package/src/resources/skills/userinterface-wiki/rules/type-variable-weight-continuous.md +0 -23
  469. package/src/resources/skills/userinterface-wiki/rules/ux-aesthetic-usability.md +0 -32
  470. package/src/resources/skills/userinterface-wiki/rules/ux-cognitive-load-reduce.md +0 -49
  471. package/src/resources/skills/userinterface-wiki/rules/ux-common-region-boundaries.md +0 -50
  472. package/src/resources/skills/userinterface-wiki/rules/ux-doherty-perceived-speed.md +0 -29
  473. package/src/resources/skills/userinterface-wiki/rules/ux-doherty-under-400ms.md +0 -30
  474. package/src/resources/skills/userinterface-wiki/rules/ux-fitts-hit-area.md +0 -32
  475. package/src/resources/skills/userinterface-wiki/rules/ux-fitts-target-size.md +0 -31
  476. package/src/resources/skills/userinterface-wiki/rules/ux-goal-gradient-progress.md +0 -33
  477. package/src/resources/skills/userinterface-wiki/rules/ux-hicks-minimize-choices.md +0 -45
  478. package/src/resources/skills/userinterface-wiki/rules/ux-jakobs-familiar-patterns.md +0 -37
  479. package/src/resources/skills/userinterface-wiki/rules/ux-millers-chunking.md +0 -23
  480. package/src/resources/skills/userinterface-wiki/rules/ux-pareto-prioritize-features.md +0 -36
  481. package/src/resources/skills/userinterface-wiki/rules/ux-peak-end-finish-strong.md +0 -35
  482. package/src/resources/skills/userinterface-wiki/rules/ux-postels-accept-messy-input.md +0 -45
  483. package/src/resources/skills/userinterface-wiki/rules/ux-pragnanz-simplify.md +0 -33
  484. package/src/resources/skills/userinterface-wiki/rules/ux-progressive-disclosure.md +0 -41
  485. package/src/resources/skills/userinterface-wiki/rules/ux-proximity-grouping.md +0 -38
  486. package/src/resources/skills/userinterface-wiki/rules/ux-serial-position.md +0 -31
  487. package/src/resources/skills/userinterface-wiki/rules/ux-similarity-consistency.md +0 -35
  488. package/src/resources/skills/userinterface-wiki/rules/ux-teslers-complexity.md +0 -28
  489. package/src/resources/skills/userinterface-wiki/rules/ux-uniform-connectedness.md +0 -43
  490. package/src/resources/skills/userinterface-wiki/rules/ux-von-restorff-emphasis.md +0 -29
  491. package/src/resources/skills/userinterface-wiki/rules/ux-zeigarnik-show-incomplete.md +0 -36
  492. package/src/resources/skills/userinterface-wiki/rules/visual-animate-shadow-pseudo.md +0 -49
  493. package/src/resources/skills/userinterface-wiki/rules/visual-border-alpha-colors.md +0 -25
  494. package/src/resources/skills/userinterface-wiki/rules/visual-button-shadow-anatomy.md +0 -49
  495. package/src/resources/skills/userinterface-wiki/rules/visual-concentric-radius.md +0 -40
  496. package/src/resources/skills/userinterface-wiki/rules/visual-consistent-spacing-scale.md +0 -35
  497. package/src/resources/skills/userinterface-wiki/rules/visual-layered-shadows.md +0 -30
  498. package/src/resources/skills/userinterface-wiki/rules/visual-no-pure-black-shadow.md +0 -25
  499. package/src/resources/skills/userinterface-wiki/rules/visual-shadow-direction.md +0 -25
  500. package/src/resources/skills/userinterface-wiki/rules/visual-shadow-matches-elevation.md +0 -23
  501. package/src/resources/skills/userinterface-wiki/rules/weight-duration-matches-action.md +0 -29
  502. package/src/resources/skills/userinterface-wiki/rules/weight-match-action.md +0 -32
  503. package/src/resources/skills/web-design-guidelines/SKILL.md +0 -39
  504. package/src/resources/skills/web-quality-audit/SKILL.md +0 -168
  505. package/src/resources/skills/web-quality-audit/scripts/analyze.sh +0 -91
@@ -1,66 +0,0 @@
1
- # Sections
2
-
3
- This file defines all sections, their ordering, impact levels, and descriptions.
4
- The section ID (in parentheses) is the filename prefix used to group rules.
5
-
6
- ---
7
-
8
- ## 1. Animation Principles (timing, physics, staging)
9
-
10
- **Impact:** CRITICAL
11
- **Description:** Disney's 12 principles adapted for web. Timing, physics, and staging rules ensure animations feel natural and purposeful. Violations here produce the most noticeable quality issues.
12
-
13
- ## 2. Timing Functions (spring, easing, duration, none)
14
-
15
- **Impact:** HIGH
16
- **Description:** Choosing the right timing function—spring, easing curve, or no animation—based on whether motion is user-driven, system-driven, or high-frequency.
17
-
18
- ## 3. Exit Animations (exit, presence, mode, nested)
19
-
20
- **Impact:** HIGH
21
- **Description:** AnimatePresence and exit animation patterns in Motion/Framer Motion. Correct usage prevents layout shifts, stale interactions, and orphaned elements.
22
-
23
- ## 4. CSS Pseudo Elements (pseudo, transition, native)
24
-
25
- **Impact:** MEDIUM
26
- **Description:** Leveraging ::before, ::after, View Transitions API, and native pseudo-elements (::backdrop, ::placeholder, ::selection) to reduce DOM nodes and improve transitions.
27
-
28
- ## 5. Audio Feedback (a11y, appropriate, impl, weight)
29
-
30
- **Impact:** MEDIUM
31
- **Description:** When and how to use sound in UI. Covers accessibility, appropriateness heuristics, implementation patterns, and matching sound weight to action importance.
32
-
33
- ## 6. Sound Synthesis (context, envelope, design, param)
34
-
35
- **Impact:** MEDIUM
36
- **Description:** Web Audio API best practices for procedural sound generation. Covers AudioContext management, envelope shaping, sound design patterns, and parameter ranges.
37
-
38
- ## 7. Morphing Icons (morphing)
39
-
40
- **Impact:** LOW
41
- **Description:** Building icon components that morph between any two icons through SVG line transformation. All icons share a 3-line structure enabling seamless transitions.
42
-
43
- ## 8. Container Animation (container)
44
-
45
- **Impact:** MEDIUM
46
- **Description:** Animating container width and height using a measure-and-animate pattern with ResizeObserver and Motion. The two-div pattern separates measurement from animation to avoid feedback loops.
47
-
48
- ## 9. Laws of UX (ux)
49
-
50
- **Impact:** HIGH
51
- **Description:** Psychological principles behind interfaces that feel right. Covers Fitts's Law (target sizing), Hick's Law (choice reduction), Miller's Law (chunking), Doherty Threshold (response time), and Postel's Law (input tolerance).
52
-
53
- ## 10. Predictive Prefetching (prefetch)
54
-
55
- **Impact:** MEDIUM
56
- **Description:** Loading content before the user clicks by analyzing cursor trajectory, reducing perceived latency by 100-200ms. Covers trajectory vs hover vs click strategies and device-aware fallbacks.
57
-
58
- ## 11. Typography (type)
59
-
60
- **Impact:** MEDIUM
61
- **Description:** CSS font and text properties most developers overlook. OpenType features, numeric variants, variable font axes, text rendering, wrapping, and decoration controls that make typography feel considered.
62
-
63
- ## 12. Visual Design (visual)
64
-
65
- **Impact:** HIGH
66
- **Description:** CSS design fundamentals that compound into visual polish. Concentric border radius, layered shadows, consistent spacing scales, and alpha borders. Small details that separate considered interfaces from default ones.
@@ -1,24 +0,0 @@
1
- ---
2
- title: Rule Title Here
3
- impact: MEDIUM
4
- impactDescription: Optional description of impact
5
- tags: tag1, tag2
6
- ---
7
-
8
- ## Rule Title Here
9
-
10
- Brief explanation of the rule and why it matters.
11
-
12
- **Incorrect (description of what's wrong):**
13
-
14
- ```tsx
15
- // Bad code example here
16
- ```
17
-
18
- **Correct (description of what's right):**
19
-
20
- ```tsx
21
- // Good code example here
22
- ```
23
-
24
- Reference: [Link to documentation or resource](https://example.com)
@@ -1,30 +0,0 @@
1
- ---
2
- title: Respect prefers-reduced-motion for Sound
3
- impact: HIGH
4
- tags: a11y, reduced-motion, sound
5
- ---
6
-
7
- ## Respect prefers-reduced-motion for Sound
8
-
9
- Respect prefers-reduced-motion as proxy for sound sensitivity.
10
-
11
- **Incorrect (ignores preference):**
12
-
13
- ```tsx
14
- function playSound(name: string) {
15
- audio.play();
16
- }
17
- ```
18
-
19
- **Correct (checks preference):**
20
-
21
- ```tsx
22
- function playSound(name: string) {
23
- const prefersReducedMotion = window.matchMedia(
24
- "(prefers-reduced-motion: reduce)"
25
- ).matches;
26
-
27
- if (prefersReducedMotion) return;
28
- audio.play();
29
- }
30
- ```
@@ -1,30 +0,0 @@
1
- ---
2
- title: Toggle Setting to Disable Sounds
3
- impact: HIGH
4
- tags: a11y, settings, toggle
5
- ---
6
-
7
- ## Toggle Setting to Disable Sounds
8
-
9
- Provide explicit toggle to disable sounds in settings.
10
-
11
- **Incorrect (no way to disable):**
12
-
13
- ```tsx
14
- function App() {
15
- return <SoundProvider>{children}</SoundProvider>;
16
- }
17
- ```
18
-
19
- **Correct (toggle available):**
20
-
21
- ```tsx
22
- function App() {
23
- const { soundEnabled } = usePreferences();
24
- return (
25
- <SoundProvider enabled={soundEnabled}>
26
- {children}
27
- </SoundProvider>
28
- );
29
- }
30
- ```
@@ -1,36 +0,0 @@
1
- ---
2
- title: Visual Equivalent for Every Sound
3
- impact: HIGH
4
- tags: a11y, visual, sound
5
- ---
6
-
7
- ## Visual Equivalent for Every Sound
8
-
9
- Every audio cue must have a visual equivalent; sound never replaces visual feedback.
10
-
11
- **Incorrect (sound without visual):**
12
-
13
- ```tsx
14
- function SubmitButton({ onClick }) {
15
- const handleClick = () => {
16
- playSound("success");
17
- onClick();
18
- };
19
- }
20
- ```
21
-
22
- **Correct (sound with visual):**
23
-
24
- ```tsx
25
- function SubmitButton({ onClick }) {
26
- const [status, setStatus] = useState("idle");
27
-
28
- const handleClick = () => {
29
- playSound("success");
30
- setStatus("success");
31
- onClick();
32
- };
33
-
34
- return <button data-status={status}>Submit</button>;
35
- }
36
- ```
@@ -1,28 +0,0 @@
1
- ---
2
- title: Independent Volume Control
3
- impact: MEDIUM
4
- tags: a11y, volume, settings
5
- ---
6
-
7
- ## Independent Volume Control
8
-
9
- Allow volume adjustment independent of system volume.
10
-
11
- **Incorrect (always full volume):**
12
-
13
- ```tsx
14
- function playSound() {
15
- audio.volume = 1;
16
- audio.play();
17
- }
18
- ```
19
-
20
- **Correct (user-controlled volume):**
21
-
22
- ```tsx
23
- function playSound() {
24
- const { volume } = usePreferences();
25
- audio.volume = volume;
26
- audio.play();
27
- }
28
- ```
@@ -1,19 +0,0 @@
1
- ---
2
- title: Sound for Confirmations
3
- impact: MEDIUM
4
- tags: appropriate, confirmation, payment
5
- ---
6
-
7
- ## Sound for Confirmations
8
-
9
- Sound is appropriate for confirmations: payments, uploads, form submissions.
10
-
11
- **Correct:**
12
-
13
- ```tsx
14
- async function handlePayment() {
15
- await processPayment();
16
- playSound("success");
17
- showConfirmation();
18
- }
19
- ```
@@ -1,18 +0,0 @@
1
- ---
2
- title: Sound for Errors and Warnings
3
- impact: MEDIUM
4
- tags: appropriate, error, warning
5
- ---
6
-
7
- ## Sound for Errors and Warnings
8
-
9
- Sound is appropriate for errors and warnings that can't be overlooked.
10
-
11
- **Correct:**
12
-
13
- ```tsx
14
- function handleError(error: Error) {
15
- playSound("error");
16
- showErrorToast(error.message);
17
- }
18
- ```
@@ -1,21 +0,0 @@
1
- ---
2
- title: No Decorative Sound
3
- impact: MEDIUM
4
- tags: appropriate, decorative, hover
5
- ---
6
-
7
- ## No Decorative Sound
8
-
9
- Do not add sound to decorative moments with no informational value.
10
-
11
- **Incorrect (hover sound):**
12
-
13
- ```tsx
14
- function Card({ onHover }) {
15
- return (
16
- <div onMouseEnter={() => playSound("hover")}>
17
- {children}
18
- </div>
19
- );
20
- }
21
- ```
@@ -1,28 +0,0 @@
1
- ---
2
- title: No Sound on High-Frequency Interactions
3
- impact: HIGH
4
- tags: appropriate, frequency, typing
5
- ---
6
-
7
- ## No Sound on High-Frequency Interactions
8
-
9
- Do not add sound to high-frequency interactions (typing, keyboard navigation).
10
-
11
- **Incorrect (sound on every keystroke):**
12
-
13
- ```tsx
14
- function Input({ onChange }) {
15
- const handleChange = (e) => {
16
- playSound("keystroke");
17
- onChange(e);
18
- };
19
- }
20
- ```
21
-
22
- **Correct (no sound on typing):**
23
-
24
- ```tsx
25
- function Input({ onChange }) {
26
- return <input onChange={onChange} />;
27
- }
28
- ```
@@ -1,27 +0,0 @@
1
- ---
2
- title: Informative Not Punishing Sound
3
- impact: MEDIUM
4
- tags: appropriate, error, tone
5
- ---
6
-
7
- ## Informative Not Punishing Sound
8
-
9
- Sound should inform, not punish; avoid harsh sounds for user mistakes.
10
-
11
- **Incorrect (harsh buzzer):**
12
-
13
- ```tsx
14
- function ValidationError() {
15
- playSound("loud-buzzer");
16
- return <span>Invalid input</span>;
17
- }
18
- ```
19
-
20
- **Correct (gentle alert):**
21
-
22
- ```tsx
23
- function ValidationError() {
24
- playSound("gentle-alert");
25
- return <span>Invalid input</span>;
26
- }
27
- ```
@@ -1,31 +0,0 @@
1
- ---
2
- title: Use Callback Ref for Measurement
3
- impact: MEDIUM
4
- tags: container, ref, callback
5
- ---
6
-
7
- ## Use Callback Ref for Measurement
8
-
9
- Use a callback ref (not useRef) for measurement hooks so the observer attaches when the DOM node is ready.
10
-
11
- **Incorrect (useRef may be null on first effect):**
12
-
13
- ```tsx
14
- const ref = useRef(null);
15
- useEffect(() => {
16
- if (!ref.current) return;
17
- observer.observe(ref.current);
18
- }, []);
19
- ```
20
-
21
- **Correct (callback ref guarantees node):**
22
-
23
- ```tsx
24
- const [element, setElement] = useState(null);
25
- const ref = useCallback((node) => setElement(node), []);
26
- useEffect(() => {
27
- if (!element) return;
28
- observer.observe(element);
29
- return () => observer.disconnect();
30
- }, [element]);
31
- ```
@@ -1,25 +0,0 @@
1
- ---
2
- title: Guard Against Zero on Initial Render
3
- impact: HIGH
4
- tags: container, measure, initial-render
5
- ---
6
-
7
- ## Guard Against Zero on Initial Render
8
-
9
- On initial render, measured bounds are 0. Guard against this to prevent animating from 0 to actual size.
10
-
11
- **Incorrect (animates from 0 on mount):**
12
-
13
- ```tsx
14
- <motion.div animate={{ width: bounds.width }}>
15
- <div ref={ref}>{children}</div>
16
- </motion.div>
17
- ```
18
-
19
- **Correct (falls back to auto on first frame):**
20
-
21
- ```tsx
22
- <motion.div animate={{ width: bounds.width > 0 ? bounds.width : "auto" }}>
23
- <div ref={ref}>{children}</div>
24
- </motion.div>
25
- ```
@@ -1,13 +0,0 @@
1
- ---
2
- title: Use Animated Bounds Sparingly
3
- impact: MEDIUM
4
- tags: container, performance, restraint
5
- ---
6
-
7
- ## Use Animated Bounds Sparingly
8
-
9
- Animated bounds is a subtle effect. Use it for buttons, accordions, and interactive elements — not everywhere.
10
-
11
- **Good use cases:** loading state buttons, expandable sections, accordions, FAQs, content reveals.
12
-
13
- **Bad use cases:** every container on the page, static layouts, elements that don't change size.
@@ -1,25 +0,0 @@
1
- ---
2
- title: Overflow Hidden on Animated Container
3
- impact: MEDIUM
4
- tags: container, overflow, clip
5
- ---
6
-
7
- ## Overflow Hidden on Animated Container
8
-
9
- Set overflow: hidden on the animated outer container to clip content during size transitions.
10
-
11
- **Incorrect (content overflows during animation):**
12
-
13
- ```tsx
14
- <motion.div animate={{ height: bounds.height }}>
15
- <div ref={ref}>{children}</div>
16
- </motion.div>
17
- ```
18
-
19
- **Correct (clipped during transition):**
20
-
21
- ```tsx
22
- <motion.div animate={{ height: bounds.height }} style={{ overflow: "hidden" }}>
23
- <div ref={ref}>{children}</div>
24
- </motion.div>
25
- ```
@@ -1,21 +0,0 @@
1
- ---
2
- title: Add Delay for Natural Container Transitions
3
- impact: LOW
4
- tags: container, delay, transition, natural
5
- ---
6
-
7
- ## Add Delay for Natural Container Transitions
8
-
9
- Add a small delay to container size animations so the transition feels like it's catching up to the content.
10
-
11
- **Correct:**
12
-
13
- ```tsx
14
- <motion.div
15
- animate={{ height: bounds.height }}
16
- transition={{ duration: 0.2, delay: 0.05 }}
17
- style={{ overflow: "hidden" }}
18
- >
19
- <div ref={ref}>{children}</div>
20
- </motion.div>
21
- ```
@@ -1,35 +0,0 @@
1
- ---
2
- title: Two-Div Pattern for Animated Bounds
3
- impact: HIGH
4
- tags: container, measure, motion
5
- ---
6
-
7
- ## Two-Div Pattern for Animated Bounds
8
-
9
- Use an outer animated div and an inner measured div. Never measure and animate the same element.
10
-
11
- **Incorrect (measure and animate same element — creates feedback loop):**
12
-
13
- ```tsx
14
- function AnimatedContainer({ children }) {
15
- const [ref, bounds] = useMeasure();
16
- return (
17
- <motion.div ref={ref} animate={{ height: bounds.height }}>
18
- {children}
19
- </motion.div>
20
- );
21
- }
22
- ```
23
-
24
- **Correct (separate measure and animate targets):**
25
-
26
- ```tsx
27
- function AnimatedContainer({ children }) {
28
- const [ref, bounds] = useMeasure();
29
- return (
30
- <motion.div animate={{ height: bounds.height }}>
31
- <div ref={ref}>{children}</div>
32
- </motion.div>
33
- );
34
- }
35
- ```
@@ -1,48 +0,0 @@
1
- ---
2
- title: Use ResizeObserver for Measurement
3
- impact: MEDIUM
4
- tags: container, resize-observer, performance
5
- ---
6
-
7
- ## Use ResizeObserver for Measurement
8
-
9
- Use ResizeObserver to track element dimensions. It fires on resize without causing layout thrashing.
10
-
11
- **Incorrect (measuring on every render):**
12
-
13
- ```tsx
14
- function useMeasure(ref) {
15
- const [bounds, setBounds] = useState({ width: 0, height: 0 });
16
- useEffect(() => {
17
- if (ref.current) {
18
- const rect = ref.current.getBoundingClientRect();
19
- setBounds({ width: rect.width, height: rect.height });
20
- }
21
- });
22
- return bounds;
23
- }
24
- ```
25
-
26
- **Correct (ResizeObserver):**
27
-
28
- ```tsx
29
- function useMeasure() {
30
- const [element, setElement] = useState(null);
31
- const [bounds, setBounds] = useState({ width: 0, height: 0 });
32
- const ref = useCallback((node) => setElement(node), []);
33
-
34
- useEffect(() => {
35
- if (!element) return;
36
- const observer = new ResizeObserver(([entry]) => {
37
- setBounds({
38
- width: entry.contentRect.width,
39
- height: entry.contentRect.height,
40
- });
41
- });
42
- observer.observe(element);
43
- return () => observer.disconnect();
44
- }, [element]);
45
-
46
- return [ref, bounds];
47
- }
48
- ```
@@ -1,25 +0,0 @@
1
- ---
2
- title: Clean Up Audio Nodes After Playback
3
- impact: MEDIUM
4
- tags: context, cleanup, disconnect
5
- ---
6
-
7
- ## Clean Up Audio Nodes After Playback
8
-
9
- Disconnect and clean up audio nodes after playback.
10
-
11
- **Incorrect (nodes remain connected):**
12
-
13
- ```ts
14
- source.start();
15
- ```
16
-
17
- **Correct (cleaned up on end):**
18
-
19
- ```ts
20
- source.start();
21
- source.onended = () => {
22
- source.disconnect();
23
- gain.disconnect();
24
- };
25
- ```
@@ -1,28 +0,0 @@
1
- ---
2
- title: Resume Suspended AudioContext
3
- impact: HIGH
4
- tags: context, resume, suspended
5
- ---
6
-
7
- ## Resume Suspended AudioContext
8
-
9
- Check and resume suspended AudioContext before playing.
10
-
11
- **Incorrect (plays without checking):**
12
-
13
- ```ts
14
- function playSound() {
15
- const ctx = getAudioContext();
16
- }
17
- ```
18
-
19
- **Correct (resumes if suspended):**
20
-
21
- ```ts
22
- function playSound() {
23
- const ctx = getAudioContext();
24
- if (ctx.state === "suspended") {
25
- ctx.resume();
26
- }
27
- }
28
- ```
@@ -1,30 +0,0 @@
1
- ---
2
- title: Reuse Single AudioContext
3
- impact: HIGH
4
- tags: context, audio-context, singleton
5
- ---
6
-
7
- ## Reuse Single AudioContext
8
-
9
- Reuse a single AudioContext instance; do not create new ones per sound.
10
-
11
- **Incorrect (new context per call):**
12
-
13
- ```ts
14
- function playSound() {
15
- const ctx = new AudioContext();
16
- }
17
- ```
18
-
19
- **Correct (singleton):**
20
-
21
- ```ts
22
- let audioContext: AudioContext | null = null;
23
-
24
- function getAudioContext(): AudioContext {
25
- if (!audioContext) {
26
- audioContext = new AudioContext();
27
- }
28
- return audioContext;
29
- }
30
- ```
@@ -1,25 +0,0 @@
1
- ---
2
- title: Bandpass Filter for Sound Character
3
- impact: MEDIUM
4
- tags: design, filter, bandpass
5
- ---
6
-
7
- ## Bandpass Filter for Sound Character
8
-
9
- Apply bandpass filter to shape percussive sounds.
10
-
11
- **Incorrect (raw noise):**
12
-
13
- ```ts
14
- source.connect(gain).connect(ctx.destination);
15
- ```
16
-
17
- **Correct (filtered noise):**
18
-
19
- ```ts
20
- const filter = ctx.createBiquadFilter();
21
- filter.type = "bandpass";
22
- filter.frequency.value = 4000;
23
- filter.Q.value = 3;
24
- source.connect(filter).connect(gain).connect(ctx.destination);
25
- ```
@@ -1,26 +0,0 @@
1
- ---
2
- title: Noise for Percussive Sounds
3
- impact: MEDIUM
4
- tags: design, noise, percussion
5
- ---
6
-
7
- ## Noise for Percussive Sounds
8
-
9
- Use filtered noise for clicks/taps, not oscillators.
10
-
11
- **Incorrect (oscillator for click):**
12
-
13
- ```ts
14
- const osc = ctx.createOscillator();
15
- osc.type = "sine";
16
- ```
17
-
18
- **Correct (noise burst for click):**
19
-
20
- ```ts
21
- const buffer = ctx.createBuffer(1, ctx.sampleRate * 0.008, ctx.sampleRate);
22
- const data = buffer.getChannelData(0);
23
- for (let i = 0; i < data.length; i++) {
24
- data[i] = (Math.random() * 2 - 1) * Math.exp(-i / 50);
25
- }
26
- ```