freecodego 0.1.7-alpha.2.2 → 0.1.7-rc.2.3

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 (593) hide show
  1. package/README.i18n.yaml +45 -5
  2. package/README.md +11 -11
  3. package/README.zh.md +11 -11
  4. package/cordis.patch.yml +230 -126
  5. package/dist/assets/design/craft/FUTURE_SECTIONS.md +9 -0
  6. package/dist/assets/design/craft/LICENSE +201 -0
  7. package/dist/assets/design/craft/PROVENANCE.md +77 -0
  8. package/dist/assets/design/craft/README.md +106 -0
  9. package/dist/assets/design/craft/accessibility-baseline.md +201 -0
  10. package/dist/assets/design/craft/animation-discipline.md +154 -0
  11. package/dist/assets/design/craft/anti-ai-slop.md +84 -0
  12. package/dist/assets/design/craft/color.md +88 -0
  13. package/dist/assets/design/craft/form-validation.md +221 -0
  14. package/dist/assets/design/craft/laws-of-ux.md +296 -0
  15. package/dist/assets/design/craft/rtl-and-bidi.md +186 -0
  16. package/dist/assets/design/craft/state-coverage.md +134 -0
  17. package/dist/assets/design/craft/typography-hierarchy-editorial.md +182 -0
  18. package/dist/assets/design/craft/typography-hierarchy.md +165 -0
  19. package/dist/assets/design/craft/typography.md +122 -0
  20. package/dist/assets/design/react-bits/SKILL.md +130 -0
  21. package/dist/assets/design/skills/embedded-captions/CATALOG.md +91 -0
  22. package/dist/assets/design/skills/embedded-captions/SKILL.md +260 -0
  23. package/dist/assets/design/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
  24. package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
  25. package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
  26. package/dist/assets/design/skills/embedded-captions/dna/README.md +148 -0
  27. package/dist/assets/design/skills/embedded-captions/dna/chrome.json +68 -0
  28. package/dist/assets/design/skills/embedded-captions/dna/cream.json +69 -0
  29. package/dist/assets/design/skills/embedded-captions/dna/documentary.json +62 -0
  30. package/dist/assets/design/skills/embedded-captions/dna/editorial.json +70 -0
  31. package/dist/assets/design/skills/embedded-captions/dna/glitch.json +82 -0
  32. package/dist/assets/design/skills/embedded-captions/dna/ink.json +65 -0
  33. package/dist/assets/design/skills/embedded-captions/dna/keynote.json +62 -0
  34. package/dist/assets/design/skills/embedded-captions/dna/loud.json +75 -0
  35. package/dist/assets/design/skills/embedded-captions/dna/neon.json +58 -0
  36. package/dist/assets/design/skills/embedded-captions/dna/velocity.json +89 -0
  37. package/dist/assets/design/skills/embedded-captions/modes/cinematic/README.md +48 -0
  38. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
  39. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
  40. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
  41. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
  42. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
  43. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
  44. package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
  45. package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
  46. package/dist/assets/design/skills/embedded-captions/modes/cinematic/engine.html +355 -0
  47. package/dist/assets/design/skills/embedded-captions/modes/standard/_anatomy.md +232 -0
  48. package/dist/assets/design/skills/embedded-captions/modes/standard/_motion.md +192 -0
  49. package/dist/assets/design/skills/embedded-captions/references/aesthetic-principles.md +167 -0
  50. package/dist/assets/design/skills/embedded-captions/references/anti-patterns.md +188 -0
  51. package/dist/assets/design/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
  52. package/dist/assets/design/skills/embedded-captions/references/caption-grouping.md +130 -0
  53. package/dist/assets/design/skills/embedded-captions/references/composition-craft.md +522 -0
  54. package/dist/assets/design/skills/embedded-captions/references/direction-catalog.md +138 -0
  55. package/dist/assets/design/skills/embedded-captions/references/example-renders/champion.html +371 -0
  56. package/dist/assets/design/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
  57. package/dist/assets/design/skills/embedded-captions/references/failure-modes.md +145 -0
  58. package/dist/assets/design/skills/embedded-captions/references/layout-heuristics.md +238 -0
  59. package/dist/assets/design/skills/embedded-captions/references/motion-vocabulary.md +148 -0
  60. package/dist/assets/design/skills/embedded-captions/references/rail.md +68 -0
  61. package/dist/assets/design/skills/embedded-captions/references/reference-bar.md +47 -0
  62. package/dist/assets/design/skills/embedded-captions/references/scene-types.md +94 -0
  63. package/dist/assets/design/skills/embedded-captions/references/typographic-moves.md +266 -0
  64. package/dist/assets/design/skills/embedded-captions/references/typography-presets.md +63 -0
  65. package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/theme.json +11 -0
  66. package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/transcript.json +10 -0
  67. package/dist/assets/design/skills/embedded-captions/themes/README.md +243 -0
  68. package/dist/assets/design/skills/embedded-captions/themes/anchor.json +27 -0
  69. package/dist/assets/design/skills/embedded-captions/themes/arcade.json +51 -0
  70. package/dist/assets/design/skills/embedded-captions/themes/aurora.json +41 -0
  71. package/dist/assets/design/skills/embedded-captions/themes/biolume.json +35 -0
  72. package/dist/assets/design/skills/embedded-captions/themes/brush.json +74 -0
  73. package/dist/assets/design/skills/embedded-captions/themes/chalkboard.json +52 -0
  74. package/dist/assets/design/skills/embedded-captions/themes/dossier.json +56 -0
  75. package/dist/assets/design/skills/embedded-captions/themes/graffiti.json +62 -0
  76. package/dist/assets/design/skills/embedded-captions/themes/hologram.json +41 -0
  77. package/dist/assets/design/skills/embedded-captions/themes/inkwater.json +43 -0
  78. package/dist/assets/design/skills/embedded-captions/themes/laser.json +46 -0
  79. package/dist/assets/design/skills/embedded-captions/themes/lastpage.json +33 -0
  80. package/dist/assets/design/skills/embedded-captions/themes/neonsign.json +53 -0
  81. package/dist/assets/design/skills/embedded-captions/themes/ordnance.json +54 -0
  82. package/dist/assets/design/skills/embedded-captions/themes/papercut.json +37 -0
  83. package/dist/assets/design/skills/embedded-captions/themes/popup.json +46 -0
  84. package/dist/assets/design/skills/embedded-captions/themes/ransom.json +62 -0
  85. package/dist/assets/design/skills/embedded-captions/themes/scoreboard.json +54 -0
  86. package/dist/assets/design/skills/embedded-captions/themes/spectrum.json +46 -0
  87. package/dist/assets/design/skills/embedded-captions/themes/stardust.json +29 -0
  88. package/dist/assets/design/skills/embedded-captions/themes/stomp.json +43 -0
  89. package/dist/assets/design/skills/embedded-captions/themes/terminal.json +49 -0
  90. package/dist/assets/design/skills/embedded-captions/themes/thunder.json +44 -0
  91. package/dist/assets/design/skills/embedded-captions/themes/transit.json +44 -0
  92. package/dist/assets/design/skills/embedded-captions/themes/vhs.json +47 -0
  93. package/dist/assets/design/skills/faceless-explainer/SKILL.md +235 -0
  94. package/dist/assets/design/skills/faceless-explainer/references/cut-catalog.md +215 -0
  95. package/dist/assets/design/skills/faceless-explainer/references/motion-language.md +156 -0
  96. package/dist/assets/design/skills/faceless-explainer/references/story-design.md +255 -0
  97. package/dist/assets/design/skills/faceless-explainer/references/visual-design.md +146 -0
  98. package/dist/assets/design/skills/faceless-explainer/sub-agents/frame-worker.md +12 -0
  99. package/dist/assets/design/skills/general-video/SKILL.md +164 -0
  100. package/dist/assets/design/skills/general-video/sub-agents/frame-worker.md +34 -0
  101. package/dist/assets/design/skills/hyperframes/SKILL.md +134 -0
  102. package/dist/assets/design/skills/hyperframes/references/brief-contract.md +108 -0
  103. package/dist/assets/design/skills/hyperframes/references/brief-format.md +72 -0
  104. package/dist/assets/design/skills/hyperframes/references/capability-menu.md +47 -0
  105. package/dist/assets/design/skills/hyperframes/references/frame-worker-core.md +80 -0
  106. package/dist/assets/design/skills/hyperframes/references/intent-interview.md +71 -0
  107. package/dist/assets/design/skills/hyperframes/references/pitch-round.md +40 -0
  108. package/dist/assets/design/skills/hyperframes/references/production-loop.md +26 -0
  109. package/dist/assets/design/skills/hyperframes/references/review-loop.md +37 -0
  110. package/dist/assets/design/skills/hyperframes/references/route-briefs.md +11 -0
  111. package/dist/assets/design/skills/hyperframes/references/routes/embedded-captions.md +11 -0
  112. package/dist/assets/design/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
  113. package/dist/assets/design/skills/hyperframes/references/routes/general-video.md +12 -0
  114. package/dist/assets/design/skills/hyperframes/references/routes/motion-graphics.md +11 -0
  115. package/dist/assets/design/skills/hyperframes/references/routes/music-to-video.md +12 -0
  116. package/dist/assets/design/skills/hyperframes/references/routes/pr-to-video.md +28 -0
  117. package/dist/assets/design/skills/hyperframes/references/routes/product-launch-video.md +13 -0
  118. package/dist/assets/design/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
  119. package/dist/assets/design/skills/hyperframes/references/routes/slideshow.md +11 -0
  120. package/dist/assets/design/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
  121. package/dist/assets/design/skills/hyperframes/references/script-format.md +52 -0
  122. package/dist/assets/design/skills/hyperframes/references/skill-lifecycle.md +30 -0
  123. package/dist/assets/design/skills/hyperframes/references/storyboard-format.md +99 -0
  124. package/dist/assets/design/skills/hyperframes/references/subagent-dispatch.md +35 -0
  125. package/dist/assets/design/skills/hyperframes/references/workflow-catalog.md +10 -0
  126. package/dist/assets/design/skills/hyperframes-animation/SKILL.md +86 -0
  127. package/dist/assets/design/skills/hyperframes-animation/adapters/animate-text.md +64 -0
  128. package/dist/assets/design/skills/hyperframes-animation/adapters/animejs.md +130 -0
  129. package/dist/assets/design/skills/hyperframes-animation/adapters/css-animations.md +143 -0
  130. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +199 -0
  131. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
  132. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +129 -0
  133. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap.md +105 -0
  134. package/dist/assets/design/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
  135. package/dist/assets/design/skills/hyperframes-animation/adapters/lottie.md +130 -0
  136. package/dist/assets/design/skills/hyperframes-animation/adapters/three.md +145 -0
  137. package/dist/assets/design/skills/hyperframes-animation/adapters/typegpu.md +182 -0
  138. package/dist/assets/design/skills/hyperframes-animation/adapters/waapi.md +101 -0
  139. package/dist/assets/design/skills/hyperframes-animation/blueprints/agent-progress-theater.md +76 -0
  140. package/dist/assets/design/skills/hyperframes-animation/blueprints/camera-journey.md +61 -0
  141. package/dist/assets/design/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
  142. package/dist/assets/design/skills/hyperframes-animation/blueprints/constellation-hub.md +63 -0
  143. package/dist/assets/design/skills/hyperframes-animation/blueprints/cta-morph-press.md +63 -0
  144. package/dist/assets/design/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +89 -0
  145. package/dist/assets/design/skills/hyperframes-animation/blueprints/dataviz-countup.md +59 -0
  146. package/dist/assets/design/skills/hyperframes-animation/blueprints/device-surface-showcase.md +68 -0
  147. package/dist/assets/design/skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md +46 -0
  148. package/dist/assets/design/skills/hyperframes-animation/blueprints/grid-card-assemble.md +81 -0
  149. package/dist/assets/design/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +133 -0
  150. package/dist/assets/design/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +121 -0
  151. package/dist/assets/design/skills/hyperframes-animation/blueprints/overwhelm-surround.md +58 -0
  152. package/dist/assets/design/skills/hyperframes-animation/blueprints/panel-edit-live-sync.md +73 -0
  153. package/dist/assets/design/skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md +85 -0
  154. package/dist/assets/design/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
  155. package/dist/assets/design/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
  156. package/dist/assets/design/skills/hyperframes-animation/blueprints/titlecard-reveal.md +80 -0
  157. package/dist/assets/design/skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md +45 -0
  158. package/dist/assets/design/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
  159. package/dist/assets/design/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
  160. package/dist/assets/design/skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md +68 -0
  161. package/dist/assets/design/skills/hyperframes-animation/blueprints-index.md +202 -0
  162. package/dist/assets/design/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
  163. package/dist/assets/design/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
  164. package/dist/assets/design/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
  165. package/dist/assets/design/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
  166. package/dist/assets/design/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
  167. package/dist/assets/design/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
  168. package/dist/assets/design/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
  169. package/dist/assets/design/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
  170. package/dist/assets/design/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
  171. package/dist/assets/design/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
  172. package/dist/assets/design/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
  173. package/dist/assets/design/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
  174. package/dist/assets/design/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
  175. package/dist/assets/design/skills/hyperframes-animation/references/motion-blur.md +133 -0
  176. package/dist/assets/design/skills/hyperframes-animation/rules/3d-camera-flight.md +180 -0
  177. package/dist/assets/design/skills/hyperframes-animation/rules/3d-page-scroll.md +135 -0
  178. package/dist/assets/design/skills/hyperframes-animation/rules/3d-text-depth-layers.md +128 -0
  179. package/dist/assets/design/skills/hyperframes-animation/rules/ai-tracking-box.md +139 -0
  180. package/dist/assets/design/skills/hyperframes-animation/rules/ambient-glow-bloom.md +133 -0
  181. package/dist/assets/design/skills/hyperframes-animation/rules/anchored-layout-expand.md +148 -0
  182. package/dist/assets/design/skills/hyperframes-animation/rules/asr-keyword-glow.md +128 -0
  183. package/dist/assets/design/skills/hyperframes-animation/rules/avatar-cloud-network.md +145 -0
  184. package/dist/assets/design/skills/hyperframes-animation/rules/camera-cursor-tracking.md +133 -0
  185. package/dist/assets/design/skills/hyperframes-animation/rules/card-morph-anchor.md +134 -0
  186. package/dist/assets/design/skills/hyperframes-animation/rules/center-outward-expansion.md +88 -0
  187. package/dist/assets/design/skills/hyperframes-animation/rules/chart-scrub-readout.md +151 -0
  188. package/dist/assets/design/skills/hyperframes-animation/rules/chromatic-glitch.md +150 -0
  189. package/dist/assets/design/skills/hyperframes-animation/rules/context-sensitive-cursor.md +140 -0
  190. package/dist/assets/design/skills/hyperframes-animation/rules/control-target-sync.md +131 -0
  191. package/dist/assets/design/skills/hyperframes-animation/rules/coordinate-target-zoom.md +138 -0
  192. package/dist/assets/design/skills/hyperframes-animation/rules/counting-dynamic-scale.md +115 -0
  193. package/dist/assets/design/skills/hyperframes-animation/rules/css-marker-patterns.md +208 -0
  194. package/dist/assets/design/skills/hyperframes-animation/rules/cursor-click-ripple.md +104 -0
  195. package/dist/assets/design/skills/hyperframes-animation/rules/cursor-drag.md +141 -0
  196. package/dist/assets/design/skills/hyperframes-animation/rules/depth-of-field-blur.md +112 -0
  197. package/dist/assets/design/skills/hyperframes-animation/rules/depth-scatter-assemble.md +139 -0
  198. package/dist/assets/design/skills/hyperframes-animation/rules/discrete-text-sequence.md +146 -0
  199. package/dist/assets/design/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +149 -0
  200. package/dist/assets/design/skills/hyperframes-animation/rules/gradient-text-sweep.md +136 -0
  201. package/dist/assets/design/skills/hyperframes-animation/rules/gsap-effects.md +196 -0
  202. package/dist/assets/design/skills/hyperframes-animation/rules/hacker-flip-3d.md +123 -0
  203. package/dist/assets/design/skills/hyperframes-animation/rules/kinetic-beat-slam.md +137 -0
  204. package/dist/assets/design/skills/hyperframes-animation/rules/motion-blur-streak.md +130 -0
  205. package/dist/assets/design/skills/hyperframes-animation/rules/multi-cursor-choreography.md +133 -0
  206. package/dist/assets/design/skills/hyperframes-animation/rules/multi-phase-camera.md +129 -0
  207. package/dist/assets/design/skills/hyperframes-animation/rules/nudge-curve.md +47 -0
  208. package/dist/assets/design/skills/hyperframes-animation/rules/orbit-3d-entry.md +148 -0
  209. package/dist/assets/design/skills/hyperframes-animation/rules/particle-burst.md +149 -0
  210. package/dist/assets/design/skills/hyperframes-animation/rules/physics-press-reaction.md +101 -0
  211. package/dist/assets/design/skills/hyperframes-animation/rules/press-release-spring.md +108 -0
  212. package/dist/assets/design/skills/hyperframes-animation/rules/reactive-displacement.md +92 -0
  213. package/dist/assets/design/skills/hyperframes-animation/rules/scale-swap-transition.md +88 -0
  214. package/dist/assets/design/skills/hyperframes-animation/rules/sine-wave-loop.md +85 -0
  215. package/dist/assets/design/skills/hyperframes-animation/rules/split-tilt-cards.md +123 -0
  216. package/dist/assets/design/skills/hyperframes-animation/rules/spring-pop-entrance.md +107 -0
  217. package/dist/assets/design/skills/hyperframes-animation/rules/stat-bars-and-fills.md +145 -0
  218. package/dist/assets/design/skills/hyperframes-animation/rules/svg-icon-enrichment.md +141 -0
  219. package/dist/assets/design/skills/hyperframes-animation/rules/svg-path-draw.md +122 -0
  220. package/dist/assets/design/skills/hyperframes-animation/rules/theme-crossfade-morph.md +126 -0
  221. package/dist/assets/design/skills/hyperframes-animation/rules/vertical-spring-ticker.md +104 -0
  222. package/dist/assets/design/skills/hyperframes-animation/rules/viewport-change.md +148 -0
  223. package/dist/assets/design/skills/hyperframes-animation/rules/waterfall-entry.md +81 -0
  224. package/dist/assets/design/skills/hyperframes-animation/rules-index.md +113 -0
  225. package/dist/assets/design/skills/hyperframes-animation/techniques.md +507 -0
  226. package/dist/assets/design/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +168 -0
  227. package/dist/assets/design/skills/hyperframes-animation/transitions/catalog.md +127 -0
  228. package/dist/assets/design/skills/hyperframes-animation/transitions/css-3d.md +12 -0
  229. package/dist/assets/design/skills/hyperframes-animation/transitions/css-blur.md +51 -0
  230. package/dist/assets/design/skills/hyperframes-animation/transitions/css-cover.md +43 -0
  231. package/dist/assets/design/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
  232. package/dist/assets/design/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
  233. package/dist/assets/design/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
  234. package/dist/assets/design/skills/hyperframes-animation/transitions/css-grid.md +10 -0
  235. package/dist/assets/design/skills/hyperframes-animation/transitions/css-light.md +49 -0
  236. package/dist/assets/design/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
  237. package/dist/assets/design/skills/hyperframes-animation/transitions/css-other.md +25 -0
  238. package/dist/assets/design/skills/hyperframes-animation/transitions/css-push.md +41 -0
  239. package/dist/assets/design/skills/hyperframes-animation/transitions/css-radial.md +37 -0
  240. package/dist/assets/design/skills/hyperframes-animation/transitions/css-scale.md +24 -0
  241. package/dist/assets/design/skills/hyperframes-animation/transitions/overview.md +153 -0
  242. package/dist/assets/design/skills/hyperframes-audio/SKILL.md +476 -0
  243. package/dist/assets/design/skills/hyperframes-audio/references/attributes.md +138 -0
  244. package/dist/assets/design/skills/hyperframes-audio/references/diagnosis.md +274 -0
  245. package/dist/assets/design/skills/hyperframes-audio/references/fx-registry.md +84 -0
  246. package/dist/assets/design/skills/hyperframes-audio/references/presets.md +216 -0
  247. package/dist/assets/design/skills/hyperframes-core/SKILL.md +97 -0
  248. package/dist/assets/design/skills/hyperframes-core/references/composition-patterns.md +224 -0
  249. package/dist/assets/design/skills/hyperframes-core/references/creator-editing-recipes.md +491 -0
  250. package/dist/assets/design/skills/hyperframes-core/references/data-attributes.md +78 -0
  251. package/dist/assets/design/skills/hyperframes-core/references/determinism-rules.md +53 -0
  252. package/dist/assets/design/skills/hyperframes-core/references/full-screen-motion.md +67 -0
  253. package/dist/assets/design/skills/hyperframes-core/references/minimal-composition.md +69 -0
  254. package/dist/assets/design/skills/hyperframes-core/references/sub-compositions.md +176 -0
  255. package/dist/assets/design/skills/hyperframes-core/references/tailwind.md +104 -0
  256. package/dist/assets/design/skills/hyperframes-core/references/tracks-and-clips.md +87 -0
  257. package/dist/assets/design/skills/hyperframes-core/references/variables-and-media.md +107 -0
  258. package/dist/assets/design/skills/hyperframes-creative/SKILL.md +71 -0
  259. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
  260. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
  261. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  262. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
  263. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
  264. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
  265. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
  266. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
  267. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
  268. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
  269. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
  270. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
  271. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
  272. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
  273. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
  274. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
  275. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
  276. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
  277. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
  278. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
  279. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
  280. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
  281. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
  282. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  283. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/FRAME.md +277 -0
  284. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/caption-skin.html +224 -0
  285. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +93 -0
  286. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-inter.txt +93 -0
  287. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +93 -0
  288. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/frame-showcase.html +1438 -0
  289. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
  290. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
  291. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
  292. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
  293. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
  294. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
  295. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
  296. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
  297. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
  298. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
  299. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
  300. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  301. package/dist/assets/design/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
  302. package/dist/assets/design/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
  303. package/dist/assets/design/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
  304. package/dist/assets/design/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
  305. package/dist/assets/design/skills/hyperframes-creative/palettes/monochrome.md +14 -0
  306. package/dist/assets/design/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
  307. package/dist/assets/design/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
  308. package/dist/assets/design/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
  309. package/dist/assets/design/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
  310. package/dist/assets/design/skills/hyperframes-creative/references/audio-reactive.md +76 -0
  311. package/dist/assets/design/skills/hyperframes-creative/references/beat-direction.md +164 -0
  312. package/dist/assets/design/skills/hyperframes-creative/references/composition-patterns.md +199 -0
  313. package/dist/assets/design/skills/hyperframes-creative/references/data-in-motion.md +19 -0
  314. package/dist/assets/design/skills/hyperframes-creative/references/design-adherence.md +19 -0
  315. package/dist/assets/design/skills/hyperframes-creative/references/design-picker.md +123 -0
  316. package/dist/assets/design/skills/hyperframes-creative/references/design-spec.md +55 -0
  317. package/dist/assets/design/skills/hyperframes-creative/references/house-style.md +73 -0
  318. package/dist/assets/design/skills/hyperframes-creative/references/motion-principles.md +151 -0
  319. package/dist/assets/design/skills/hyperframes-creative/references/narration.md +92 -0
  320. package/dist/assets/design/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
  321. package/dist/assets/design/skills/hyperframes-creative/references/story-spine.md +45 -0
  322. package/dist/assets/design/skills/hyperframes-creative/references/storyboard-recipe.md +57 -0
  323. package/dist/assets/design/skills/hyperframes-creative/references/typography.md +218 -0
  324. package/dist/assets/design/skills/hyperframes-creative/references/video-composition.md +63 -0
  325. package/dist/assets/design/skills/hyperframes-creative/references/visual-styles.md +457 -0
  326. package/dist/assets/design/skills/hyperframes-creative/templates/design-picker.html +1432 -0
  327. package/dist/assets/design/skills/hyperframes-keyframes/SKILL.md +262 -0
  328. package/dist/assets/design/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
  329. package/dist/assets/design/skills/hyperframes-keyframes/references/keyframe-patterns.md +108 -0
  330. package/dist/assets/design/skills/hyperframes-studio/SKILL.md +75 -0
  331. package/dist/assets/design/skills/motion-graphics/SKILL.md +175 -0
  332. package/dist/assets/design/skills/motion-graphics/agents/builder.md +41 -0
  333. package/dist/assets/design/skills/motion-graphics/agents/director.md +54 -0
  334. package/dist/assets/design/skills/motion-graphics/agents/finalize.md +17 -0
  335. package/dist/assets/design/skills/motion-graphics/catalog-map.md +52 -0
  336. package/dist/assets/design/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
  337. package/dist/assets/design/skills/motion-graphics/categories/charts/module.md +22 -0
  338. package/dist/assets/design/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
  339. package/dist/assets/design/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
  340. package/dist/assets/design/skills/motion-graphics/categories/lower-thirds/module.md +20 -0
  341. package/dist/assets/design/skills/motion-graphics/categories/maps/module.md +61 -0
  342. package/dist/assets/design/skills/motion-graphics/categories/news/module.md +56 -0
  343. package/dist/assets/design/skills/motion-graphics/categories/stat/module.md +21 -0
  344. package/dist/assets/design/skills/motion-graphics/categories/tweet/module.md +16 -0
  345. package/dist/assets/design/skills/motion-graphics/categories/webpage/module.md +30 -0
  346. package/dist/assets/design/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
  347. package/dist/assets/design/skills/motion-graphics/phases/source/guide.md +21 -0
  348. package/dist/assets/design/skills/motion-graphics/references/builder-contract.md +38 -0
  349. package/dist/assets/design/skills/motion-graphics/references/motion-vocabulary.md +47 -0
  350. package/dist/assets/design/skills/motion-graphics/references/shot-plan-ir.md +54 -0
  351. package/dist/assets/design/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
  352. package/dist/assets/design/skills/music-to-video/SKILL.md +207 -0
  353. package/dist/assets/design/skills/music-to-video/references/frame-skeleton.md +100 -0
  354. package/dist/assets/design/skills/music-to-video/references/montage.md +55 -0
  355. package/dist/assets/design/skills/music-to-video/references/motion-primitive-catalog.md +75 -0
  356. package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +53 -0
  357. package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/scene.html +119 -0
  358. package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +53 -0
  359. package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/scene.html +294 -0
  360. package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +54 -0
  361. package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/scene.html +85 -0
  362. package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +53 -0
  363. package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/scene.html +60 -0
  364. package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/index.html +53 -0
  365. package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/scene.html +100 -0
  366. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +53 -0
  367. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/scene.html +111 -0
  368. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +53 -0
  369. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/scene.html +68 -0
  370. package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/index.html +54 -0
  371. package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/scene.html +119 -0
  372. package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +53 -0
  373. package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/scene.html +120 -0
  374. package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +55 -0
  375. package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/scene.html +131 -0
  376. package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/index.html +53 -0
  377. package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/scene.html +103 -0
  378. package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +53 -0
  379. package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/scene.html +102 -0
  380. package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/index.html +54 -0
  381. package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/scene.html +105 -0
  382. package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/index.html +53 -0
  383. package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/scene.html +97 -0
  384. package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +54 -0
  385. package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/scene.html +206 -0
  386. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/index.html +53 -0
  387. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/scene.html +82 -0
  388. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +53 -0
  389. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/scene.html +44 -0
  390. package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/index.html +53 -0
  391. package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/scene.html +69 -0
  392. package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +53 -0
  393. package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/scene.html +64 -0
  394. package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +53 -0
  395. package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/scene.html +96 -0
  396. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +53 -0
  397. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/scene.html +74 -0
  398. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +53 -0
  399. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/scene.html +89 -0
  400. package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +53 -0
  401. package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/scene.html +73 -0
  402. package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +53 -0
  403. package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/scene.html +82 -0
  404. package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/index.html +53 -0
  405. package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/scene.html +97 -0
  406. package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/index.html +53 -0
  407. package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/scene.html +106 -0
  408. package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +53 -0
  409. package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/scene.html +86 -0
  410. package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +53 -0
  411. package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/scene.html +130 -0
  412. package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/index.html +53 -0
  413. package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/scene.html +78 -0
  414. package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +53 -0
  415. package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/scene.html +100 -0
  416. package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +53 -0
  417. package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/scene.html +102 -0
  418. package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +53 -0
  419. package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/scene.html +82 -0
  420. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -0
  421. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +53 -0
  422. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/scene.html +280 -0
  423. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +54 -0
  424. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/scene.html +106 -0
  425. package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +53 -0
  426. package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/scene.html +109 -0
  427. package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +53 -0
  428. package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/scene.html +91 -0
  429. package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +53 -0
  430. package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/scene.html +96 -0
  431. package/dist/assets/design/skills/music-to-video/references/planning.md +104 -0
  432. package/dist/assets/design/skills/music-to-video/references/storyboard-format.md +94 -0
  433. package/dist/assets/design/skills/music-to-video/references/template-catalog.md +106 -0
  434. package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/index.html +527 -0
  435. package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/program.json +13 -0
  436. package/dist/assets/design/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -0
  437. package/dist/assets/design/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -0
  438. package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -0
  439. package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -0
  440. package/dist/assets/design/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -0
  441. package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -0
  442. package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -0
  443. package/dist/assets/design/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -0
  444. package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -0
  445. package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -0
  446. package/dist/assets/design/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -0
  447. package/dist/assets/design/skills/music-to-video/sub-agents/frame-worker.md +49 -0
  448. package/dist/assets/design/skills/pr-to-video/SKILL.md +271 -0
  449. package/dist/assets/design/skills/pr-to-video/references/code-vocabulary.md +112 -0
  450. package/dist/assets/design/skills/pr-to-video/references/cut-catalog.md +215 -0
  451. package/dist/assets/design/skills/pr-to-video/references/motion-language.md +156 -0
  452. package/dist/assets/design/skills/pr-to-video/references/story-design.md +230 -0
  453. package/dist/assets/design/skills/pr-to-video/references/visual-design.md +164 -0
  454. package/dist/assets/design/skills/pr-to-video/sub-agents/frame-worker.md +38 -0
  455. package/dist/assets/design/skills/product-launch-video/SKILL.md +262 -0
  456. package/dist/assets/design/skills/product-launch-video/references/cut-catalog.md +220 -0
  457. package/dist/assets/design/skills/product-launch-video/references/motion-language.md +156 -0
  458. package/dist/assets/design/skills/product-launch-video/references/story-design.md +508 -0
  459. package/dist/assets/design/skills/product-launch-video/references/visual-design.md +126 -0
  460. package/dist/assets/design/skills/product-launch-video/sub-agents/frame-worker.md +21 -0
  461. package/dist/assets/design/skills/remotion-to-hyperframes/SKILL.md +130 -0
  462. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
  463. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
  464. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/compositions/title.html +31 -0
  465. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +46 -0
  466. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
  467. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
  468. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
  469. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
  470. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-1.html +35 -0
  471. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-2.html +35 -0
  472. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-3.html +36 -0
  473. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +75 -0
  474. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
  475. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
  476. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
  477. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
  478. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-1.html +52 -0
  479. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-2.html +99 -0
  480. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-3.html +55 -0
  481. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +70 -0
  482. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
  483. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
  484. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
  485. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
  486. package/dist/assets/design/skills/remotion-to-hyperframes/references/api-map.md +142 -0
  487. package/dist/assets/design/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
  488. package/dist/assets/design/skills/remotion-to-hyperframes/references/eval.md +140 -0
  489. package/dist/assets/design/skills/remotion-to-hyperframes/references/fonts.md +112 -0
  490. package/dist/assets/design/skills/remotion-to-hyperframes/references/limitations.md +136 -0
  491. package/dist/assets/design/skills/remotion-to-hyperframes/references/lottie.md +119 -0
  492. package/dist/assets/design/skills/remotion-to-hyperframes/references/media.md +149 -0
  493. package/dist/assets/design/skills/remotion-to-hyperframes/references/parameters.md +172 -0
  494. package/dist/assets/design/skills/remotion-to-hyperframes/references/sequencing.md +251 -0
  495. package/dist/assets/design/skills/remotion-to-hyperframes/references/timing.md +165 -0
  496. package/dist/assets/design/skills/remotion-to-hyperframes/references/transitions.md +113 -0
  497. package/dist/assets/design/skills/slideshow/SKILL.md +530 -0
  498. package/dist/assets/design/skills/slideshow/references/standalone-harness.md +1017 -0
  499. package/dist/assets/design/skills/talking-head-recut/NOTICE.md +39 -0
  500. package/dist/assets/design/skills/talking-head-recut/SKILL.md +1007 -0
  501. package/dist/assets/design/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
  502. package/dist/assets/design/skills/talking-head-recut/references/confirm-visual-direction-with-user-do-this-first.md +211 -0
  503. package/dist/assets/design/skills/talking-head-recut/references/frames/clean.html +92 -0
  504. package/dist/assets/design/skills/talking-head-recut/references/frames/hairline.html +171 -0
  505. package/dist/assets/design/skills/talking-head-recut/references/frames/polaroid.html +131 -0
  506. package/dist/assets/design/skills/talking-head-recut/references/layouts/overlay.html +164 -0
  507. package/dist/assets/design/skills/talking-head-recut/references/layouts/pip.html +143 -0
  508. package/dist/assets/design/skills/talking-head-recut/references/layouts/split.html +121 -0
  509. package/dist/assets/design/skills/talking-head-recut/references/layouts/stack.html +109 -0
  510. package/dist/assets/design/skills/talking-head-recut/references/styles/academic.html +172 -0
  511. package/dist/assets/design/skills/talking-head-recut/references/styles/audit.html +170 -0
  512. package/dist/assets/design/skills/talking-head-recut/references/styles/editorial.html +189 -0
  513. package/dist/assets/design/skills/talking-head-recut/references/styles/geom.html +181 -0
  514. package/dist/assets/design/skills/talking-head-recut/references/styles/minimal.html +130 -0
  515. package/dist/assets/design/skills/talking-head-recut/references/styles/spotlight.html +142 -0
  516. package/dist/assets/design/skills/talking-head-recut/references/styles/swiss.html +188 -0
  517. package/dist/assets/design/skills/talking-head-recut/references/styles/terminal.html +196 -0
  518. package/dist/assets/design/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
  519. package/dist/assets/design/skills/talking-head-recut/references/styles/xhs.html +206 -0
  520. package/dist/assets/design/taste/LICENSE +21 -0
  521. package/dist/assets/design/taste/PROVENANCE.md +70 -0
  522. package/dist/assets/design/taste/brandkit/SKILL.md +798 -0
  523. package/dist/assets/design/taste/brutalist-skill/SKILL.md +92 -0
  524. package/dist/assets/design/taste/gpt-tasteskill/SKILL.md +74 -0
  525. package/dist/assets/design/taste/image-to-code-skill/SKILL.md +1228 -0
  526. package/dist/assets/design/taste/imagegen-frontend-mobile/SKILL.md +1465 -0
  527. package/dist/assets/design/taste/imagegen-frontend-web/SKILL.md +987 -0
  528. package/dist/assets/design/taste/minimalist-skill/SKILL.md +85 -0
  529. package/dist/assets/design/taste/output-skill/SKILL.md +49 -0
  530. package/dist/assets/design/taste/redesign-skill/SKILL.md +178 -0
  531. package/dist/assets/design/taste/soft-skill/SKILL.md +98 -0
  532. package/dist/assets/design/taste/stitch-skill/DESIGN.md +121 -0
  533. package/dist/assets/design/taste/stitch-skill/SKILL.md +184 -0
  534. package/dist/assets/design/taste/taste-skill/SKILL.md +1043 -0
  535. package/dist/assets/design/taste/taste-skill/references/4-2-color-calibration.md +24 -0
  536. package/dist/assets/design/taste/taste-skill/references/4-7-layout-discipline-hard-rules-failing-any-of-.md +27 -0
  537. package/dist/assets/design/taste/taste-skill/references/4-8-image-visual-asset-strategy.md +35 -0
  538. package/dist/assets/design/taste/taste-skill/references/4-9-content-density.md +34 -0
  539. package/dist/assets/design/taste/taste-skill/references/9-f-production-test-tells-banned-outright.md +54 -0
  540. package/dist/assets/design/taste/taste-skill-v1/SKILL.md +226 -0
  541. package/dist/assets/engineering/skills-starter/engineering-ui-design/SKILL.md +84 -0
  542. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/SKILL.md +68 -459
  543. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/dispatch-and-review-rules.md +74 -0
  544. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/example-workflow.md +70 -0
  545. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/model-selection.md +40 -0
  546. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/process-diagrams.md +92 -0
  547. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/setup-and-ledger.md +75 -0
  548. package/dist/assets/uiux/LICENSE +21 -0
  549. package/dist/assets/uiux/PROVENANCE.md +110 -0
  550. package/dist/assets/uiux/data/app-interface.csv +33 -0
  551. package/dist/assets/uiux/data/charts.csv +26 -0
  552. package/dist/assets/uiux/data/colors.csv +193 -0
  553. package/dist/assets/uiux/data/icons.csv +106 -0
  554. package/dist/assets/uiux/data/landing.csv +35 -0
  555. package/dist/assets/uiux/data/motion.csv +18 -0
  556. package/dist/assets/uiux/data/products.csv +193 -0
  557. package/dist/assets/uiux/data/react-performance.csv +45 -0
  558. package/dist/assets/uiux/data/stacks/angular.csv +51 -0
  559. package/dist/assets/uiux/data/stacks/astro.csv +54 -0
  560. package/dist/assets/uiux/data/stacks/avalonia.csv +57 -0
  561. package/dist/assets/uiux/data/stacks/flutter.csv +53 -0
  562. package/dist/assets/uiux/data/stacks/html-tailwind.csv +60 -0
  563. package/dist/assets/uiux/data/stacks/javafx.csv +76 -0
  564. package/dist/assets/uiux/data/stacks/jetpack-compose.csv +53 -0
  565. package/dist/assets/uiux/data/stacks/laravel.csv +51 -0
  566. package/dist/assets/uiux/data/stacks/nextjs.csv +62 -0
  567. package/dist/assets/uiux/data/stacks/nuxt-ui.csv +77 -0
  568. package/dist/assets/uiux/data/stacks/nuxtjs.csv +68 -0
  569. package/dist/assets/uiux/data/stacks/react-native.csv +52 -0
  570. package/dist/assets/uiux/data/stacks/react.csv +67 -0
  571. package/dist/assets/uiux/data/stacks/shadcn.csv +69 -0
  572. package/dist/assets/uiux/data/stacks/svelte.csv +56 -0
  573. package/dist/assets/uiux/data/stacks/swiftui.csv +51 -0
  574. package/dist/assets/uiux/data/stacks/threejs.csv +54 -0
  575. package/dist/assets/uiux/data/stacks/uno.csv +60 -0
  576. package/dist/assets/uiux/data/stacks/uwp.csv +56 -0
  577. package/dist/assets/uiux/data/stacks/vue.csv +50 -0
  578. package/dist/assets/uiux/data/stacks/winui.csv +60 -0
  579. package/dist/assets/uiux/data/stacks/wpf.csv +57 -0
  580. package/dist/assets/uiux/data/styles.csv +89 -0
  581. package/dist/assets/uiux/data/typography.csv +75 -0
  582. package/dist/assets/uiux/data/ui-reasoning.csv +193 -0
  583. package/dist/assets/uiux/data/ux-guidelines.csv +120 -0
  584. package/dist/auto-review.js +38 -4
  585. package/dist/bootstrap.js +64299 -55761
  586. package/dist/client.cjs +5227 -3462
  587. package/dist/subagent-claude-code.js +493 -0
  588. package/dist/subagent-codex.js +1068 -0
  589. package/dist/tool-session-query.js +993 -0
  590. package/package.json +81 -74
  591. package/dist/agent-team.js +0 -16235
  592. package/dist/schedule.js +0 -15898
  593. package/dist/tool-agent-team.js +0 -16766
@@ -0,0 +1,296 @@
1
+ # Laws of UX craft rules
2
+
3
+ Universal cognitive, perceptual, and behavioral heuristics that decide
4
+ what a UI composes — how many pricing tiers fit on a screen, where a
5
+ primary action anchors in scanning order, when a progress indicator
6
+ earns its place, why a settings list needs grouping. The active
7
+ `DESIGN.md` decides brand visual language; the existing craft files
8
+ decide rendering rules (color, typography, motion, states, ARIA, RTL,
9
+ forms); this file decides composition rules grounded in named research.
10
+
11
+ > Distilled from primary sources: Hick (1952) + Hyman (1953), Miller
12
+ > (1956) for chunking / `7±2` channel capacity, Cowan (2001) for the
13
+ > modern ~4 working-memory bound, Fitts (1954), Wertheimer (1923) for
14
+ > proximity / similarity / Prägnanz, Palmer (1992) for Common Region,
15
+ > Palmer & Rock (1994) for Uniform Connectedness, Kahneman /
16
+ > Fredrickson / Schreiber / Redelmeier (1993) for Peak-End, Zeigarnik
17
+ > (1927), Csíkszentmihályi (1975), Hull (1932), von Restorff (1933),
18
+ > Broadbent (1958), Sweller (1988), Postel (RFC 760, 1980), Carroll &
19
+ > Rosson (1987), Tversky & Kahneman (1974) for Anchoring, Kurosu &
20
+ > Kashimura (1995), Iyengar & Lepper (2000), Toffler (1970), Pareto
21
+ > (c.1906) / Juran (*Quality Control Handbook*, 1951), Ebbinghaus
22
+ > (1885), Ockham (14th c.), Tesler at Apple (1980s), Nielsen (2000),
23
+ > Norman *POET* (1988), Parkinson (1955).
24
+
25
+ ## Prior art and scope
26
+
27
+ Existing public catalogs of UX heuristics (Yablonski's lawsofux.com,
28
+ NN/g's 10 usability heuristics, Material 3 motion + interaction
29
+ guidance, Apple HIG, Baymard Institute checkout research) inventory the
30
+ laws but rarely tie each one to a concrete code-gen directive. This
31
+ file does the translation: every entry ends with one actionable move
32
+ for an HTML / Tailwind / React-emitting agent. Sibling craft files
33
+ (`accessibility-baseline.md`, `state-coverage.md`, `typography.md`,
34
+ `anti-ai-slop.md`, `color.md`, `animation-discipline.md`,
35
+ `form-validation.md`) own the auto-checked rules; this file names the
36
+ underlying law and surfaces the folklore. Out of scope: Weber-Fechner
37
+ psychophysics and Signal Detection Theory — both apply to UI but the
38
+ prompt-emission directives are too narrow to earn a slot here. Add
39
+ later if a skill needs them.
40
+
41
+ The rules below are guidance, not auto-checked. Reviewers and the agent
42
+ apply them; the linter does not. Where a law has a sibling rule already
43
+ auto-checked elsewhere — touch-target floor in
44
+ `accessibility-baseline.md`, the 300 ms / 2 s / 10 s / 30 s / 60 s
45
+ loading thresholds in `state-coverage.md`, ALL CAPS letter-spacing in
46
+ `typography.md`, the indigo / gradient / emoji-icon list in
47
+ `anti-ai-slop.md` — the entry below cross-references rather than
48
+ duplicates.
49
+
50
+ ## Perception and visual grouping
51
+
52
+ Five Gestalt laws plus three attention-and-recognition laws govern how
53
+ the eye groups elements before the brain reads them.
54
+
55
+ - **Law of Proximity** (Wertheimer, 1923). Objects near each other read
56
+ as a group. Cheapest grouping signal — cheaper than borders or shared
57
+ color. Apply variable vertical rhythm: 8–12 px within a group,
58
+ 32–48 px between groups. Uniform spacing reads as nothing being
59
+ grouped.
60
+ - **Law of Similarity** (Wertheimer, 1923). Visually similar elements
61
+ read as a group. Equivalent affordances must share treatment — every
62
+ list row identical class set, every secondary button identical, every
63
+ destructive action identical. Visible deviation is reserved for the
64
+ one item meant to draw attention (the recommended pricing tier, the
65
+ selected nav item).
66
+ - **Law of Common Region** (Palmer, 1992). A shared bounded area binds
67
+ enclosed elements. Use enclosure when proximity is not enough — and
68
+ reserve it. Concrete numbers: padding ≥16 px inside the region,
69
+ distinct surface (border + tinted background, or card chrome at
70
+ ≥1 px hairline). A page where every section is bordered destroys the
71
+ signal.
72
+ - **Law of Prägnanz / Good Figure** (Wertheimer, 1923). The eye
73
+ resolves complex layouts into the simplest underlying form. Designs
74
+ that align with a clear underlying grid (12-column, F-pattern,
75
+ 4-quadrant) feel inevitable; ornate breaks that add nothing semantic
76
+ feel arbitrary.
77
+ - **Law of Uniform Connectedness** (Palmer & Rock, 1994). The
78
+ strongest grouping signal in the Gestalt hierarchy: connected lines,
79
+ shared toolbars, or bracketing containers tie items together more
80
+ strongly than proximity or similarity. Use for wizard steps,
81
+ comparison sets, and explicit navigation flows.
82
+ - **Selective Attention** (Broadbent, *Perception and Communication*,
83
+ 1958). Cognitive bandwidth is finite. Users filter aggressively and
84
+ ignore anything that looks irrelevant to their goal — banner blindness
85
+ comes from this. Reserve the strongest visual contrast for the single
86
+ goal-relevant action; let supporting content recede in weight.
87
+ - **Von Restorff Effect** (von Restorff, 1933). The item that differs
88
+ from a uniform field is the one most likely to be remembered. Make
89
+ the recommended pricing tier, the active nav item, the warning state
90
+ visually distinct. Pair contrast with a non-color signal (icon, text
91
+ label, position) — `accessibility-baseline.md` rules out color-alone
92
+ signaling.
93
+ - **Aesthetic-Usability Effect** (Kurosu & Kashimura, Hitachi Design
94
+ Center, 1995). Visual polish biases perceived usability. Refined
95
+ typography, generous whitespace, and a calm palette earn the benefit
96
+ of the doubt for minor friction. Never substitutes for measurable
97
+ usability or for `state-coverage.md`'s required-states rule.
98
+
99
+ ## Decision-making
100
+
101
+ Six laws govern how fast and how well users decide when an interface
102
+ offers a choice.
103
+
104
+ - **Hick's Law** (Hick, 1952; Hyman, 1953 replication). Decision time
105
+ grows roughly log(n+1) with the number of equivalent options. Cap any
106
+ single decision-screen to 3–5 visible primary options; collapse the
107
+ rest behind a "More" / progressive disclosure pattern; visually
108
+ distinguish the recommended choice. Aggressive truncation that hides
109
+ the path forward is the opposite failure mode — surface the full
110
+ option set, just don't render every option at the same visual weight.
111
+ - **Choice Overload** (Iyengar & Lepper, *Journal of Personality and
112
+ Social Psychology*, 2000; framing dates to Toffler, *Future Shock*,
113
+ 1970). Too many roughly-equivalent options stall or abandon the
114
+ decision. Pricing pages: 3–4 tiers, exactly one marked recommended.
115
+ Product grids: 6–9 hero cards above the fold. Settings panels: ≤5
116
+ named groups. Never emit a flat wall of equivalents.
117
+ - **Anchoring** (Tversky & Kahneman, *Science* 185:1124–1131, 1974).
118
+ The first number a user sees re-weights every subsequent number.
119
+ Place the recommended pricing tier where it anchors the comparison;
120
+ render yearly-billing savings as concrete dollar deltas, not just
121
+ percentage badges; pre-select the safer default in radio groups.
122
+ Visual weight matches intended decision weight.
123
+ - **Pareto Principle / 80-20** (Pareto, c.1906; Juran, *Quality Control
124
+ Handbook*, 1951 — popularized the management-application framing). A
125
+ small share of features drives most of the value. Identify the 2–3 actions
126
+ that drive the dominant journey for the target persona; emphasize
127
+ those visually; demote the long tail to overflow menus, footer
128
+ surfaces, or settings.
129
+ - **Tesler's Law / Conservation of Complexity** (Tesler, Apple, 1980s).
130
+ Every product has an irreducible amount of complexity. The design
131
+ choice is *where* it lives — engineering team, interface, user — not
132
+ whether to eliminate it. When complexity reaches the user, surface
133
+ contextual guidance (tooltips, smart defaults, inline empty-state
134
+ coaching, progressive disclosure) at the exact step where it
135
+ surfaces. Hiding it is not the same as removing it.
136
+ - **Occam's Razor** (Ockham, 14th c.). Among options that explain the
137
+ data equally well, prefer the one with the fewest assumptions. Specify
138
+ a minimal element inventory; forbid decorative chrome that doesn't
139
+ serve a stated user task. The law constrains assumptions, not feature
140
+ count — a "minimum viable" framing misreads it.
141
+
142
+ ## Memory and learning
143
+
144
+ Five laws cover how working memory handles information density and
145
+ what the user retains afterward.
146
+
147
+ - **Miller's Law and Chunking** (Miller, *The Magical Number Seven,
148
+ Plus or Minus Two*, *Psychological Review*, 1956 — channel capacity /
149
+ `7±2` and chunking; Cowan, *Behavioral and Brain Sciences* 24:1, 2001
150
+ for the modern ~4-item working-memory bound). Working memory holds
151
+ about four items reliably and up to seven for short-term recall. Each
152
+ slot can hold a *larger familiar unit*, constrained by the user's
153
+ domain knowledge — chunking does not let you pack arbitrary content
154
+ into a single slot. Often misread as a rule about menu length;
155
+ Miller's paper is about chunks. Group related fields with clear
156
+ section headings, dividers, or card containers. A settings page with
157
+ sections "Account / Notifications / Privacy / Billing / Danger zone"
158
+ beats one flat list of 30 toggles.
159
+ - **Working Memory** (Baddeley & Hitch, 1974; lineage to Atkinson &
160
+ Shiffrin, 1968). Items decay in seconds without rehearsal. Recognition
161
+ beats recall: persisting prior context across screens, marking visited
162
+ elements, and surfacing comparison views beats forcing the user to
163
+ memorize. On dashboards specifically: sticky filter chips, last-N
164
+ selections persisted, breadcrumbs that include applied filters.
165
+ - **Serial Position Effect** (Ebbinghaus, *Über das Gedächtnis*, 1885).
166
+ Recall favors the extremes — primacy at the start, recency at the
167
+ end — while middle items fade. Anchor the most important nav items at
168
+ the leftmost and rightmost positions of a horizontal menu; cluster
169
+ utilities in the middle.
170
+ - **Peak-End Rule** (Kahneman, Fredrickson, Schreiber, Redelmeier,
171
+ *Psychological Science*, 1993). Memory of an experience is dominated
172
+ by the emotional peak and the ending, not the average. Stage a
173
+ high-effort celebratory success state; let intermediate steps stay
174
+ calm. Mediocre middles matter less than a strong close. The peak
175
+ belongs at the *end* of a flow, not as arbitrary mid-flow motion —
176
+ `animation-discipline.md` rejects motion that performs (rather than
177
+ confirms) a state change.
178
+ - **Zeigarnik Effect** (Zeigarnik, *Über das Behalten erledigter und
179
+ unerledigter Handlungen*, 1927). Uncompleted tasks create cognitive
180
+ tension that pulls the user back. Visible progress ("3 of 5 steps",
181
+ greyed-out next sections) converts that tension into completion
182
+ pressure. Reserve for genuinely beneficial flows like onboarding;
183
+ applying the same lever to streaks, daily-quest counters, or notification-
184
+ reduction nags is a dark pattern.
185
+
186
+ ## Interaction and motor
187
+
188
+ Five laws cover how fast and how accurately users can act on the UI.
189
+
190
+ - **Fitts's Law** (Fitts, *Journal of Experimental Psychology*, 1954).
191
+ Time to acquire a target depends on its distance and size — bigger
192
+ and closer is faster. Spacing between adjacent hit zones matters as
193
+ much as size. Pair with `accessibility-baseline.md`'s 24 × 24 CSS px
194
+ AA touch-target floor; on mobile, place high-frequency controls in
195
+ the natural thumb arc.
196
+ - **Doherty Threshold** (Doherty & Thadani, *IBM Systems Journal*,
197
+ 1982). Sub-second feedback keeps users in flow; latency above ~1 s
198
+ breaks attention. The implementable directive lives in
199
+ `state-coverage.md`'s loading-threshold table (no indicator under
200
+ 300 ms; skeleton 300 ms – 2 s; labelled spinner 2 – 10 s; determinate
201
+ bar with cancel 10 – 60 s; stop and offer error/retry past 60 s).
202
+ This entry exists to name the underlying law and flag its folklore
203
+ (the 400 ms number doesn't appear in the 1982 paper — see
204
+ `animation-discipline.md` for the 400 ms folklore trace).
205
+ - **Flow** (Csíkszentmihályi, *Beyond Boredom and Anxiety*, 1975). Flow
206
+ sits in the balance between challenge and skill — too hard breeds
207
+ frustration, too easy breeds boredom. Continuous feedback and a clear
208
+ sense of control keep the user inside the state. System friction and
209
+ latency are the fastest ways to break it.
210
+ - **Goal-Gradient Effect** (Hull, *Psychological Review*, 1932; Kivetz,
211
+ Urminsky, Zheng, 2006 for the punch-card replication). Motivation to
212
+ finish rises as the goal gets closer. Multi-step flows render with a
213
+ prominent progress indicator that reflects *real* endowed progress —
214
+ show completed prerequisites when they truly exist (saved profile,
215
+ imported team, prior survey answer). When no real prerequisite
216
+ exists, render the current step honestly as `1 of N` with the
217
+ empty/current-step state clearly marked. Hull's hypothesis is
218
+ descriptive; treating it as license for fabricated progress, streak
219
+ dark patterns, or loyalty-program quota inflation is a misread.
220
+ - **Postel's Law / Robustness Principle** (Postel, RFC 760, 1980). "Be
221
+ liberal in what you accept, conservative in what you send." Take
222
+ input in whatever shape users naturally give it (phone numbers with
223
+ or without dashes, dates in mixed formats, percentages with or
224
+ without `%`); normalize internally to a canonical form; emit one
225
+ consistent format on output. The error-timing and ARIA-wiring half
226
+ lives in `form-validation.md`; the input-tolerance half is the
227
+ directive above. RFC 9413 (Thomson, IAB, 2023; built on the earlier
228
+ `draft-iab-protocol-maintenance`) retracts the maxim for protocol
229
+ design citing security surface; the UX-input application stands.
230
+
231
+ ## Behavior and expectation
232
+
233
+ Five laws cover what users predict and how that prediction interacts
234
+ with the rendered surface.
235
+
236
+ - **Jakob's Law** (Nielsen, Nielsen Norman Group, 2000). Users spend
237
+ most of their time on other sites and expect yours to work the same.
238
+ Reuse category convention — nav placement, cart icon, settings gear,
239
+ primary CTA in the upper right of a SaaS landing — so the user spends
240
+ zero cycles relearning interaction grammar. Novelty must earn its
241
+ keep against the convention's ROI; "innovate everywhere" is the
242
+ opposite failure mode.
243
+ - **Mental Model** (Craik, *The Nature of Explanation*, 1943; Norman,
244
+ *POET / The Psychology of Everyday Things*, 1988). Every user
245
+ arrives with a prior built from competitor products and the physical
246
+ world. When the prediction holds, the product feels intuitive; when
247
+ it breaks, friction shows up as confusion, not curiosity. When the
248
+ brief names a reference product, anchor explicitly — capture the
249
+ reference in the prompt and the agent inherits a transferable
250
+ interaction grammar.
251
+ - **Paradox of the Active User** (Carroll & Rosson, in *Interfacing
252
+ Thought: Cognitive Aspects of Human-Computer Interaction*, MIT Press,
253
+ 1987, pp. 80–111). Users skip the manual and start using the
254
+ software immediately, even when reading it would speed them up. Bake
255
+ guidance into the surface itself — empty-state coaching, inline
256
+ tooltips, contextual hints — at the action point.
257
+ - **Parkinson's Law** (Parkinson, *The Economist*, 1955). Work expands
258
+ to fill the time allotted to it. Loose interfaces let users dawdle;
259
+ cut friction and pre-fill what you can — autofill, smart defaults,
260
+ saved state — so a checkout finishes faster than the user expected.
261
+ Beating anticipated duration becomes the felt win.
262
+ - **Cognitive Load** (Sweller, *Cognitive Science*, 1988). Total
263
+ mental effort splits into intrinsic (the task's inherent difficulty)
264
+ and extraneous (poor layout, jargon, inconsistent patterns, visual
265
+ noise). Designers can't reduce intrinsic load; they own extraneous
266
+ fully. The visual-restraint directives (single accent in `color.md`,
267
+ three-weight typography rhythm in `typography.md`, P0 anti-default
268
+ list in `anti-ai-slop.md`) already constrain extraneous load; this
269
+ entry exists to name the cognitive cost the sibling rules reduce.
270
+
271
+ ## Common mistakes (lint these)
272
+
273
+ Folklore corrections that don't survive a primary-source check, in the
274
+ same vein as the busts already documented in `animation-discipline.md`
275
+ and `accessibility-baseline.md`. The first three are attribution
276
+ corrections (year / venue / institution) the body entries already
277
+ applied — restated here so a reviewer reading just this section sees
278
+ them. The remainder are folklore not addressed in the body.
279
+
280
+ - "Anchoring effect = Tversky & Kahneman 1972." Wrong year. The
281
+ *Science* paper introducing the anchoring framing is 1974; the 1972
282
+ paper is "Subjective probability: A judgment of representativeness"
283
+ (different work).
284
+ - "Tesler's Law was developed at Xerox PARC." Tesler left PARC for
285
+ Apple in 1980; the Conservation-of-Complexity formulation traces to
286
+ his Apple years.
287
+ - "Paradox of the Active User was a CACM article." It's a chapter in
288
+ Carroll's *Interfacing Thought* (MIT Press, 1987), not CACM.
289
+ - "Selective Attention = solved by red dots and badges." Repeated
290
+ attention-grabbers train banner blindness. Reserve the strongest
291
+ contrast for one goal-relevant action per surface.
292
+ - "Fitts's Law alone is enough for touch targets." Fitts gives the
293
+ speed-accuracy tradeoff. WCAG 2.2 SC 2.5.8 sets the AA floor at
294
+ 24 × 24 CSS px (`accessibility-baseline.md`); iOS HIG suggests
295
+ 44 × 44 pt; Material 3 suggests 48 × 48 dp. Fitts plus the
296
+ platform floor — never just Fitts.
@@ -0,0 +1,186 @@
1
+ # RTL and bidirectional craft rules
2
+
3
+ Universal rules for right-to-left layout and bidirectional text. The
4
+ active `DESIGN.md` decides brand visual language; this file decides
5
+ how that language behaves when the script reads from the right or
6
+ mixes direction within a line.
7
+
8
+ > Grounded in primary sources: Unicode UAX #9 revision 51 (Sept 2025)
9
+ > + Unicode 17.0, CSS Logical Properties Level 1, HTML Living Standard
10
+ > (`dir`, `<bdi>`), Tailwind v4.0/v4.2 changelogs, W3C alreq,
11
+ > Material 3 RTL guidance, Apple HIG internationalization.
12
+
13
+ ## Base direction and language
14
+
15
+ Every full-page RTL artifact needs `<html dir="rtl" lang="ar">` (or
16
+ the matching `lang` for Hebrew, Persian, Urdu). The `lang` attribute
17
+ drives font-stack selection, hyphenation, locale-aware speech
18
+ synthesis, and search-engine indexing — `dir` alone isn't enough.
19
+ Three patterns cover the common cases:
20
+
21
+ - **Full-page RTL.** `<html dir="rtl" lang="ar">`. Everything inside inherits.
22
+ - **Mixed-language subtree.** Nest `<section dir="ltr" lang="en">…</section>` (or vice versa) when an embedded block uses a different script. Code samples, English citations, foreign brand names.
23
+ - **User-generated content of unknown direction.** `dir="auto"` on the paragraph. The browser resolves direction from the first strong directional character in the run.
24
+
25
+ Setting `lang` without `dir` is fine **at the document root in a
26
+ default-LTR page** — English doesn't need `dir="ltr"` there because
27
+ the bidi base direction is already LTR. Inside any opposite-direction
28
+ ancestor, `lang` does not reset the inherited base direction, so set
29
+ both `lang` and `dir` on the subtree (`<section dir="ltr" lang="en">`).
30
+ Setting `dir` without `lang` is rarely correct — at minimum drop the
31
+ appropriate ISO-639 tag in.
32
+
33
+ ## Logical properties first
34
+
35
+ Hardcoded `left` / `right` is a bug for any layout that might render
36
+ RTL. Use logical properties on the inline axis. Use them on the block
37
+ axis when the writing-mode varies; physical otherwise.
38
+
39
+ | Logical | LTR resolves to | RTL resolves to |
40
+ |---|---|---|
41
+ | `margin-inline-start` / `padding-inline-start` / `inset-inline-start` | left | right |
42
+ | `margin-inline-end` / `padding-inline-end` / `inset-inline-end` | right | left |
43
+ | `border-inline-start` | border-left | border-right |
44
+ | `border-start-start-radius` | border-top-left-radius | border-top-right-radius |
45
+ | `text-align: start` / `text-align: end` | left / right | right / left |
46
+ | `inline-size` / `block-size` | width / height | width / height |
47
+
48
+ Browser support: core inline-axis logical properties are Baseline
49
+ Widely Available (Chrome 87, Safari 14.1, Firefox 66; ≥95% global as
50
+ of 2026-05).
51
+
52
+ **Tailwind v4 changes the answer for new projects.** v4.0 (2025-01-22)
53
+ folded inline-axis logical utilities into core (`ms-*`, `me-*`, `ps-*`,
54
+ `pe-*`, `start-*`, `end-*`). v4.2 (2026-02-18) added the block-axis
55
+ set (`mbs-*`, `mbe-*`, `pbs-*`, `pbe-*`) and renamed the inset
56
+ utilities: `start-*` / `end-*` are deprecated (still work) in favor
57
+ of `inset-s-*` / `inset-e-*`. The `tailwindcss-rtl` plugin is obsolete.
58
+ Don't write `[dir="rtl"]:` overrides for spacing on Tailwind v4.
59
+
60
+ ## Bidirectional text
61
+
62
+ UAX #9 rev 51 (Sept 2025) is a version stamp for Unicode 17.0. No
63
+ algorithm change; `max_depth = 125` is permanently locked forward.
64
+
65
+ UAX #9 defines two distinct families of bidi formatting characters
66
+ that solve different problems:
67
+
68
+ - **Isolate controls** (modern, prefer these): U+2066 LRI, U+2067 RLI, U+2068 FSI — opened with these, all closed with U+2069 PDI. An isolated run does not affect, and is not affected by, the surrounding paragraph's bidi resolution. Use FSI when the embedded run's direction is unknown ahead of time.
69
+ - **Embedding / override controls** (legacy): U+202A LRE, U+202B RLE, U+202D LRO, U+202E RLO — all closed with U+202C PDF. These nest within the surrounding paragraph rather than isolating from it; LRO/RLO additionally force a direction onto neutral characters. Newer code should use isolates; touch embeddings only when interoperating with text from systems that emit them.
70
+
71
+ **Use `<bdi>` in HTML; in plain text, pick the isolate that matches
72
+ what you know about the run.** UAX #9 §2.7: *"where available, markup
73
+ should be used instead of the explicit formatting characters."*
74
+ `<bdi>` has been Baseline Widely Available since January 2020.
75
+ Reach for control characters only in plain-text contexts (logs,
76
+ plain-text emails, terminal output). When you do:
77
+
78
+ - **LRI U+2066 + PDI U+2069** for known-LTR runs (English name in an Arabic paragraph, code-style identifiers, phone numbers).
79
+ - **RLI U+2067 + PDI U+2069** for known-RTL runs (Arabic name in an English paragraph).
80
+ - **FSI U+2068 + PDI U+2069** for unknown direction (UGC where the author and language can vary).
81
+
82
+ Don't reach for FSI as the default — it auto-detects from the first
83
+ strong character, which is the wrong choice when you already know
84
+ what direction the run should be.
85
+
86
+ `dir="auto"` on a paragraph or `<bdi>` lets the browser detect
87
+ direction from the first strong directional character. Best for
88
+ user-generated content where direction isn't known at author time.
89
+
90
+ ## What mirrors and what doesn't
91
+
92
+ Mirroring isn't universal. The rules below are unanimous across
93
+ Material 3 RTL guidance and Apple HIG internationalization.
94
+
95
+ **Must mirror:**
96
+
97
+ - Directional arrows (back / forward / next / previous), navigation rail position, tab order, calendar-grid weekday order.
98
+ - Slider fill direction and **non-media** progress-bar fill (a download progress bar, a form-completion bar, an upload status). Media scrubbers stay LTR — see the Media row below.
99
+ - Checkbox-and-label position. Label sits to the right in LTR, to the left in RTL.
100
+ - Phone-number and IBAN affordances when the surrounding paragraph is RTL but the value itself is LTR — wrap the value in `<bdi dir="ltr">` (or `<span dir="ltr">`) so the digits don't reflow. Bare `<bdi>` is not enough: phone numbers and account numbers contain mostly weak / neutral characters, so first-strong direction detection is unreliable. Force LTR explicitly.
101
+
102
+ **Must not mirror:**
103
+
104
+ - Clock faces. Clockwise is universal.
105
+ - Circular refresh / sync / reload icons. Same reason.
106
+ - Media playback controls (play / pause / fast-forward / rewind) **and the media scrubber / progress timeline**. They represent tape direction, not reading direction.
107
+ - Charts and graphs. X-axis stays mathematical, not linguistic.
108
+ - Photographs, brand logos, physical-object icons (camera, keyboard, headphones). Identity over direction.
109
+
110
+ **Numerals are not a mirroring decision.** They follow locale, not
111
+ paragraph direction. Arabic-Indic digits carry bidi class **AN**, not
112
+ EN — affects how they sit inside mixed-direction lines but does not
113
+ flip them.
114
+
115
+ **Single live conflict between platforms:** the search icon. SF Symbols
116
+ ships an RTL `magnifyingglass` variant (Apple flips it). Material 3
117
+ says don't flip the magnifying glass (handle stays bottom-right).
118
+ Decide per-platform; don't synthesize a single rule.
119
+
120
+ ## Typography rules anchored here
121
+
122
+ Two RTL-coupled typography rules sit in this file because they cause
123
+ breakage at the layout level. The full Arabic / Hebrew typography
124
+ guide (font picks, harakat line-height, OpenType shaping, mixed-script
125
+ fallback chains) belongs in a future `craft/arabic-hebrew-typography.md`.
126
+
127
+ - **Never apply CSS `letter-spacing` to Arabic runs.** alreq treats
128
+ letter-spacing as a boundary concept, not a uniform tracking value.
129
+ Applying tracking breaks the cursive joining the script depends on.
130
+ - **Body type for Arabic runs ~14-18 px with line-height 1.5-1.75** to
131
+ give harakat (diacritics) clearance. Latin defaults are too tight.
132
+
133
+ ## Native mobile RTL parity
134
+
135
+ Web RTL handling does not auto-translate to mobile. Each platform has
136
+ its own direction primitive. Skills that emit web-only artifacts can
137
+ skim this section; it's the entry point for skills that ship to
138
+ mobile (mobile-onboarding, mobile-app, etc.).
139
+
140
+ | Platform | Direction primitive | Spacing |
141
+ |---|---|---|
142
+ | iOS UIKit | `semanticContentAttribute = .forceRightToLeft` | `NSDirectionalEdgeInsets` |
143
+ | iOS SwiftUI | `.environment(\.layoutDirection, .rightToLeft)` | `EdgeInsets` with `leading` / `trailing` |
144
+ | Android Compose | `CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl)` | `PaddingValues` accepts start / end |
145
+ | Flutter | `Directionality(textDirection: TextDirection.rtl)` | `EdgeInsetsDirectional.fromSTEB(...)` |
146
+ | React Native | `I18nManager.forceRTL(true)` (requires native reload; no `forceLTR` parity, no `react-native-web` support) | `marginStart` / `marginEnd` |
147
+
148
+ The rule across all platforms: prefer the directional primitive over
149
+ the absolute one. `EdgeInsets.left/right` in Flutter, `paddingLeft` /
150
+ `paddingRight` in Android, leading-vs-trailing in iOS — these are bugs
151
+ waiting for an Arabic deployment.
152
+
153
+ ## Forms in RTL
154
+
155
+ Form fields commonly mix scripts. Three rules cover most of it.
156
+
157
+ - **`<input dir="auto">`** for any field whose value's direction is uncertain (search boxes, comment fields, free-text inputs). The browser detects from the first strong directional character.
158
+ - **Force LTR on intrinsically-LTR fields** even inside an RTL paragraph: email, URL, phone, IBAN, credit-card. `<input type="email" dir="ltr">`.
159
+ - **Wrap rendered values in `<bdi>`** when displaying mixed-script content (a username inside a paragraph, a model number inside a description). Stops the surrounding direction from rearranging the embedded value. For values whose direction is fixed and weak-character-heavy (phone, IBAN, card number), use `<bdi dir="ltr">` rather than bare `<bdi>` so first-strong detection doesn't misclassify.
160
+
161
+ ## Common mistakes (lint these)
162
+
163
+ Mechanically lintable items can be flagged from CSS / source alone.
164
+ Script-aware items need to detect Arabic / Hebrew runs in the
165
+ rendered text and have legitimate exceptions (chart axes, physical
166
+ icons, platform-specific placement).
167
+
168
+ **Mechanically lintable:**
169
+
170
+ - Hardcoded `left` / `right` / `text-align: left` in new CSS — bug for any layout that may render RTL. Exceptions: chart x-axes, physical-object icons, platform-pinned UI like a status-bar clock. Lint with an allow-list rather than blanket banning.
171
+ - "Tailwind v4.2 logical-utility rename is `inline-s-*` / `inline-e-*`" — wrong family. Those are size utilities. The inset rename is `inset-s-*` / `inset-e-*`.
172
+ - "WebKit doesn't support U+2066-U+2069" — wrong, they're interoperable across modern browsers. The "still missing" claim traces to a stale 2015 W3C test snapshot.
173
+ - Setting `dir="rtl"` without `lang="ar"` (or matching). Lint together; `dir` alone misses the font-stack and locale path.
174
+ - Flutter `EdgeInsets.left/right` in code that needs to render RTL. Use `EdgeInsetsDirectional.start/end`.
175
+
176
+ **Needs script detection (will false-positive without it):**
177
+
178
+ - "Use `text-justify: kashida` for Arabic" — no browser implements it. CSS `text-align: justify` adds inter-word spacing and looks unnatural in Arabic; kashida elongation is the correct form, but it isn't shippable on the web today.
179
+ - Italics on Arabic or Hebrew text. Neither script has an italic tradition.
180
+ - CSS `letter-spacing` applied to Arabic. Breaks cursive joining (alreq treats it as a boundary concept, not a uniform tracking value).
181
+ - Lorem Ipsum used for RTL prototyping. Arabic word lengths, connection behaviors, and vertical extents differ; use real Arabic / Hebrew text.
182
+
183
+ **HTML semantics:**
184
+
185
+ - Reaching for CSS bidi controls (`unicode-bidi: isolate` / `plaintext` / `embed`) for inline runs when `<bdi>` or a `dir`-bearing element does the job. Prefer semantic isolation in HTML for inline content; `unicode-bidi: plaintext` operates on a different surface (it changes how base direction is determined for each plaintext paragraph in a block) and should only be used when that block-level paragraph behavior is explicitly required and tested. The two are not drop-in equivalents — don't lint one as a replacement for the other.
186
+ - Bare `<bdi>` around phone / IBAN / card numbers in an RTL paragraph. First-strong detection on weak/neutral characters is unreliable; force `dir="ltr"` explicitly.
@@ -0,0 +1,134 @@
1
+ # State coverage craft rules
2
+
3
+ Universal rules for what every interactive surface must render. The active
4
+ `DESIGN.md` decides how each state looks; this file decides which states must
5
+ exist and what they must contain. The single most reliable AI-design failure
6
+ is shipping only the populated state.
7
+
8
+ > Distilled from WCAG 2.2, NN/g, Material Design 3, Apple HIG, and Baymard
9
+ > Institute checkout research.
10
+
11
+ ## The five required states
12
+
13
+ Every surface that fetches, transforms, or accepts data must render all five.
14
+
15
+ | State | Triggered when | Must contain |
16
+ |---|---|---|
17
+ | **Loading** | Data is in flight | Skeleton, spinner, or shell — plus a 15 s "taking longer than expected" fallback |
18
+ | **Empty** | No records yet, or query returned nothing | Headline, plain explanation, primary CTA |
19
+ | **Error** | Fetch failed, server failure, validation rejection | Plain-language cause, recovery action, preserved user input |
20
+ | **Populated** | Data present, primary case | The state the design was actually drawn for |
21
+ | **Edge** | Extreme volume, long strings, missing optional fields, RTL or long-word content, partial network | Layout that does not break |
22
+
23
+ Render-and-screenshot test: every list, table, card, form, and panel in the
24
+ artifact has all five. Missing states are the most common silent failure of
25
+ AI-generated UI.
26
+
27
+ **Test matrix.** Concrete edge scenarios the surface must survive:
28
+
29
+ | Skill type | Edge scenario |
30
+ |---|---|
31
+ | Dashboard / table | 10,000+ rows, all numeric columns, sort + filter applied |
32
+ | Mobile card / list | 200-char title, missing avatar, missing secondary CTA |
33
+ | Form | All optional fields empty, all required fields at max length |
34
+ | Search results | Single-character query, query with only special chars, 1,000+ result count |
35
+ | Detail view | Missing all optional metadata, RTL primary content with LTR embeds |
36
+
37
+ ## Form-specific states
38
+
39
+ Forms add three states on top of the five.
40
+
41
+ | State | Triggered when | Behavior |
42
+ |---|---|---|
43
+ | **Untouched** | Field has not yet had focus | Default styling; no validation messages |
44
+ | **Dirty (valid)** | User typed and field passes validation | Persistent helper text remains; no success-coloring |
45
+ | **Submitted-pending** | Submit clicked, awaiting server | Submit button enters loading state; fields lock against re-submission |
46
+
47
+ Validation timing: validate **on blur**, not on first keystroke. For password
48
+ and similar live fields, validate on each keystroke *only after the first
49
+ blur*. Remove the error message the instant input becomes valid.
50
+
51
+ ## Empty state composition
52
+
53
+ Empty is not the absence of state. It is its own state with a job.
54
+
55
+ - **First-use empty** — illustration + headline + value sentence + primary CTA. The empty is the onboarding moment.
56
+ - **No-results empty** — echo the query, suggest alternatives, never leave a true blank.
57
+ - **Cleared empty** — celebratory phrasing, optional next-action.
58
+ - **Error-as-empty** — never. An error is its own state with recovery information; do not collapse error into empty.
59
+
60
+ **Server-driven vs client-driven.** When a search or query API can return fallback content in the empty payload (suggestions, related categories, popular results), prefer that over a client-side echo. Algolia, Elastic, and most modern search backends support this — the server has more context for what "no results, but maybe try X" should mean.
61
+
62
+ ## Error state composition
63
+
64
+ Every error must answer three questions, in this order:
65
+
66
+ 1. **What happened.** "Your card was declined." Not "Something went wrong."
67
+ 2. **Why, if knowable.** "Insufficient funds." Or "Network unreachable — check your connection."
68
+ 3. **What the user can do.** A retry button, an alternative path, or a support link.
69
+
70
+ Preserve user input across the error. The form must not clear on submit
71
+ failure.
72
+
73
+ Severity tiers:
74
+
75
+ - **Field-level** — red border, inline message, focus moves to the field.
76
+ - **Form-level** — error summary banner at top + per-field markers.
77
+ - **Section-level** — inline panel with retry, surrounding sections still functional.
78
+ - **Page-level** — full error state with illustration and recovery CTA.
79
+ - **App-level** — persistent banner or modal for critical loss-of-functionality.
80
+
81
+ Match severity to surface scope. A field validation failure does not warrant
82
+ a page-level error.
83
+
84
+ **Retry discipline.** A retry surface is not a button alone. It has timing rules:
85
+
86
+ - First retry fires immediately on user click.
87
+ - Second and third retries use exponential backoff: 2 s, 4 s, 8 s max.
88
+ - After 3 failed retries, replace "Retry" with "Contact support" plus a copyable error ID. The user has done their job; the system now needs a human.
89
+ - Show "Last attempted: Xs ago" on the error surface after the first retry, so the user knows how stale the failure is.
90
+
91
+ ## Loading state thresholds
92
+
93
+ Pick the indicator by expected duration, not by what's available in the
94
+ component library.
95
+
96
+ | Duration | Indicator |
97
+ |---|---|
98
+ | 0–300 ms | None. Render synchronously; users perceive no delay. |
99
+ | 300 ms – 2 s | Subtle spinner or skeleton. |
100
+ | 2 – 10 s | Skeleton matched to expected layout, or labelled spinner ("Loading payments…"). |
101
+ | 10 – 30 s | Determinate progress bar with cancel option. |
102
+ | 30 – 60 s | Progress bar with explicit cancel affordance. The "taking longer than expected" notice already appeared at 15 s; do not repeat it. |
103
+ | 60 s+ | Stop animation. Show error with retry, cancel, or continue. |
104
+
105
+ Never leave a spinner running indefinitely. Start a timeout on every request.
106
+
107
+ ## ARIA and focus rules
108
+
109
+ State changes must be announced and focused correctly.
110
+
111
+ | Change | ARIA | Focus action |
112
+ |---|---|---|
113
+ | Inline error on submit | `role="alert"` on the message | Move focus to first error field |
114
+ | Toast / non-urgent confirmation | `role="status"` (polite live region) | Do not move focus |
115
+ | Critical error or destructive confirmation | `role="alertdialog"` (assertive) | Move focus to dialog |
116
+ | Loading begins | `role="status"` announcement ("Loading…") | Do not move focus to spinner |
117
+ | Loading ends, content appears | — | Move focus to loaded content if action was user-initiated |
118
+
119
+ Live region containers must exist in the DOM before content is injected.
120
+ Adding `aria-live` simultaneously with content does not trigger an
121
+ announcement.
122
+
123
+ ## Common mistakes (lint these)
124
+
125
+ - Surface renders only the populated state; loading, empty, error, and edge are absent.
126
+ - Empty state is a literal blank or "No data" text with no headline, explanation, or action.
127
+ - Error message reads "Something went wrong" with no cause or recovery.
128
+ - Spinner with no timeout; runs indefinitely on slow or failed requests.
129
+ - Submit clears form fields on validation failure, forcing re-entry.
130
+ - Inline validation fires on first keystroke instead of on blur.
131
+ - Full-page loading replaces the chrome when only one section is fetching.
132
+ - Toast appears at a different screen position than previous toasts in the same artifact.
133
+ - Color alone conveys error state — no icon, no text label.
134
+ - Auto-dismissing toast cannot be paused on hover or focus (WCAG SC 2.2.1).