@nerdev/skillset 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +351 -0
  3. package/bin/skillset.mjs +205 -0
  4. package/curations/README.md +53 -0
  5. package/curations/TEMPLATE/WHY.md +23 -0
  6. package/curations/TEMPLATE/overlay/SKILL.md +6 -0
  7. package/curations/impeccable/WHY.md +34 -0
  8. package/curations/impeccable/overlay/SKILL.md +116 -0
  9. package/package.json +43 -0
  10. package/scripts/ste-gate.mjs +39 -0
  11. package/scripts/ste-lint.py +201 -0
  12. package/scripts/sync.mjs +174 -0
  13. package/skills/ai-agent/agent-docs-writer/SKILL.md +105 -0
  14. package/skills/ai-agent/agent-docs-writer/references/principles.md +73 -0
  15. package/skills/ai-agent/agent-docs-writer/templates/AGENTS.template.md +44 -0
  16. package/skills/ai-agent/agent-docs-writer/templates/README.template.md +19 -0
  17. package/skills/ai-agent/ultra-context-engine/SKILL.md +941 -0
  18. package/skills/architecture/blueprint/SKILL.md +191 -0
  19. package/skills/architecture/code-tour/SKILL.md +204 -0
  20. package/skills/architecture/progress-guard/SKILL.md +148 -0
  21. package/skills/architecture/search-first/SKILL.md +97 -0
  22. package/skills/backend/api-design/SKILL.md +456 -0
  23. package/skills/backend/auth/SKILL.md +596 -0
  24. package/skills/backend/database/SKILL.md +431 -0
  25. package/skills/backend/realtime/SKILL.md +670 -0
  26. package/skills/backend/security/SKILL.md +590 -0
  27. package/skills/business/brag/SKILL.md +177 -0
  28. package/skills/business/brag/assets/music/README.md +20 -0
  29. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.json +3846 -0
  30. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.md +35 -0
  31. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.json +1826 -0
  32. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.md +35 -0
  33. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.json +2266 -0
  34. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.md +35 -0
  35. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.json +2806 -0
  36. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.md +35 -0
  37. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.json +2796 -0
  38. package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.md +35 -0
  39. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-1-by-ende-dot-app.mp3 +0 -0
  40. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-10-by-ende-dot-app.mp3 +0 -0
  41. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-11-by-ende-dot-app.mp3 +0 -0
  42. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-12-by-ende-dot-app.mp3 +0 -0
  43. package/skills/business/brag/assets/music/happy-beats-business-moves-vol-9-by-ende-dot-app.mp3 +0 -0
  44. package/skills/business/brag/assets/sfx/casino/card-fan-1.ogg +0 -0
  45. package/skills/business/brag/assets/sfx/casino/card-fan-2.ogg +0 -0
  46. package/skills/business/brag/assets/sfx/casino/card-place-1.ogg +0 -0
  47. package/skills/business/brag/assets/sfx/casino/card-place-2.ogg +0 -0
  48. package/skills/business/brag/assets/sfx/casino/card-place-3.ogg +0 -0
  49. package/skills/business/brag/assets/sfx/casino/card-place-4.ogg +0 -0
  50. package/skills/business/brag/assets/sfx/casino/card-shove-1.ogg +0 -0
  51. package/skills/business/brag/assets/sfx/casino/card-shove-2.ogg +0 -0
  52. package/skills/business/brag/assets/sfx/casino/card-shove-3.ogg +0 -0
  53. package/skills/business/brag/assets/sfx/casino/card-shove-4.ogg +0 -0
  54. package/skills/business/brag/assets/sfx/casino/card-shuffle.ogg +0 -0
  55. package/skills/business/brag/assets/sfx/casino/card-slide-1.ogg +0 -0
  56. package/skills/business/brag/assets/sfx/casino/card-slide-2.ogg +0 -0
  57. package/skills/business/brag/assets/sfx/casino/card-slide-3.ogg +0 -0
  58. package/skills/business/brag/assets/sfx/casino/card-slide-4.ogg +0 -0
  59. package/skills/business/brag/assets/sfx/casino/card-slide-5.ogg +0 -0
  60. package/skills/business/brag/assets/sfx/casino/card-slide-6.ogg +0 -0
  61. package/skills/business/brag/assets/sfx/casino/card-slide-7.ogg +0 -0
  62. package/skills/business/brag/assets/sfx/casino/card-slide-8.ogg +0 -0
  63. package/skills/business/brag/assets/sfx/casino/cards-pack-open-1.ogg +0 -0
  64. package/skills/business/brag/assets/sfx/casino/cards-pack-open-2.ogg +0 -0
  65. package/skills/business/brag/assets/sfx/casino/chip-lay-1.ogg +0 -0
  66. package/skills/business/brag/assets/sfx/casino/chip-lay-2.ogg +0 -0
  67. package/skills/business/brag/assets/sfx/casino/chip-lay-3.ogg +0 -0
  68. package/skills/business/brag/assets/sfx/casino/chips-collide-1.ogg +0 -0
  69. package/skills/business/brag/assets/sfx/casino/chips-collide-2.ogg +0 -0
  70. package/skills/business/brag/assets/sfx/casino/chips-collide-3.ogg +0 -0
  71. package/skills/business/brag/assets/sfx/casino/chips-collide-4.ogg +0 -0
  72. package/skills/business/brag/assets/sfx/casino/chips-handle-1.ogg +0 -0
  73. package/skills/business/brag/assets/sfx/casino/chips-handle-2.ogg +0 -0
  74. package/skills/business/brag/assets/sfx/casino/chips-handle-3.ogg +0 -0
  75. package/skills/business/brag/assets/sfx/casino/chips-handle-4.ogg +0 -0
  76. package/skills/business/brag/assets/sfx/casino/chips-handle-6.ogg +0 -0
  77. package/skills/business/brag/assets/sfx/casino/chips-stack-1.ogg +0 -0
  78. package/skills/business/brag/assets/sfx/casino/chips-stack-2.ogg +0 -0
  79. package/skills/business/brag/assets/sfx/casino/chips-stack-3.ogg +0 -0
  80. package/skills/business/brag/assets/sfx/casino/chips-stack-4.ogg +0 -0
  81. package/skills/business/brag/assets/sfx/casino/chips-stack-5.ogg +0 -0
  82. package/skills/business/brag/assets/sfx/casino/chips-stack-6.ogg +0 -0
  83. package/skills/business/brag/assets/sfx/casino/dice-grab-1.ogg +0 -0
  84. package/skills/business/brag/assets/sfx/casino/dice-grab-2.ogg +0 -0
  85. package/skills/business/brag/assets/sfx/casino/dice-shake-1.ogg +0 -0
  86. package/skills/business/brag/assets/sfx/casino/dice-shake-2.ogg +0 -0
  87. package/skills/business/brag/assets/sfx/casino/dice-shake-3.ogg +0 -0
  88. package/skills/business/brag/assets/sfx/casino/dice-throw-1.ogg +0 -0
  89. package/skills/business/brag/assets/sfx/casino/dice-throw-2.ogg +0 -0
  90. package/skills/business/brag/assets/sfx/casino/dice-throw-3.ogg +0 -0
  91. package/skills/business/brag/assets/sfx/casino/die-throw-1.ogg +0 -0
  92. package/skills/business/brag/assets/sfx/casino/die-throw-2.ogg +0 -0
  93. package/skills/business/brag/assets/sfx/casino/die-throw-3.ogg +0 -0
  94. package/skills/business/brag/assets/sfx/casino/die-throw-4.ogg +0 -0
  95. package/skills/business/brag/assets/sfx/impact/footstep_carpet_000.ogg +0 -0
  96. package/skills/business/brag/assets/sfx/impact/footstep_carpet_003.ogg +0 -0
  97. package/skills/business/brag/assets/sfx/impact/footstep_carpet_004.ogg +0 -0
  98. package/skills/business/brag/assets/sfx/impact/footstep_concrete_000.ogg +0 -0
  99. package/skills/business/brag/assets/sfx/impact/footstep_concrete_001.ogg +0 -0
  100. package/skills/business/brag/assets/sfx/impact/footstep_concrete_002.ogg +0 -0
  101. package/skills/business/brag/assets/sfx/impact/footstep_concrete_003.ogg +0 -0
  102. package/skills/business/brag/assets/sfx/impact/footstep_concrete_004.ogg +0 -0
  103. package/skills/business/brag/assets/sfx/impact/footstep_grass_000.ogg +0 -0
  104. package/skills/business/brag/assets/sfx/impact/footstep_grass_001.ogg +0 -0
  105. package/skills/business/brag/assets/sfx/impact/footstep_grass_002.ogg +0 -0
  106. package/skills/business/brag/assets/sfx/impact/footstep_grass_003.ogg +0 -0
  107. package/skills/business/brag/assets/sfx/impact/footstep_grass_004.ogg +0 -0
  108. package/skills/business/brag/assets/sfx/impact/footstep_snow_000.ogg +0 -0
  109. package/skills/business/brag/assets/sfx/impact/footstep_snow_001.ogg +0 -0
  110. package/skills/business/brag/assets/sfx/impact/footstep_snow_002.ogg +0 -0
  111. package/skills/business/brag/assets/sfx/impact/footstep_snow_003.ogg +0 -0
  112. package/skills/business/brag/assets/sfx/impact/footstep_snow_004.ogg +0 -0
  113. package/skills/business/brag/assets/sfx/impact/footstep_wood_000.ogg +0 -0
  114. package/skills/business/brag/assets/sfx/impact/footstep_wood_001.ogg +0 -0
  115. package/skills/business/brag/assets/sfx/impact/footstep_wood_002.ogg +0 -0
  116. package/skills/business/brag/assets/sfx/impact/footstep_wood_003.ogg +0 -0
  117. package/skills/business/brag/assets/sfx/impact/footstep_wood_004.ogg +0 -0
  118. package/skills/business/brag/assets/sfx/impact/impactBell_heavy_000.ogg +0 -0
  119. package/skills/business/brag/assets/sfx/impact/impactBell_heavy_003.ogg +0 -0
  120. package/skills/business/brag/assets/sfx/impact/impactBell_heavy_004.ogg +0 -0
  121. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_000.ogg +0 -0
  122. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_001.ogg +0 -0
  123. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_002.ogg +0 -0
  124. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_003.ogg +0 -0
  125. package/skills/business/brag/assets/sfx/impact/impactGeneric_light_004.ogg +0 -0
  126. package/skills/business/brag/assets/sfx/impact/impactGlass_heavy_002.ogg +0 -0
  127. package/skills/business/brag/assets/sfx/impact/impactGlass_light_001.ogg +0 -0
  128. package/skills/business/brag/assets/sfx/impact/impactGlass_light_002.ogg +0 -0
  129. package/skills/business/brag/assets/sfx/impact/impactGlass_light_003.ogg +0 -0
  130. package/skills/business/brag/assets/sfx/impact/impactGlass_medium_000.ogg +0 -0
  131. package/skills/business/brag/assets/sfx/impact/impactGlass_medium_002.ogg +0 -0
  132. package/skills/business/brag/assets/sfx/impact/impactGlass_medium_004.ogg +0 -0
  133. package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_000.ogg +0 -0
  134. package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_002.ogg +0 -0
  135. package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_004.ogg +0 -0
  136. package/skills/business/brag/assets/sfx/impact/impactMetal_light_002.ogg +0 -0
  137. package/skills/business/brag/assets/sfx/impact/impactMetal_light_003.ogg +0 -0
  138. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_000.ogg +0 -0
  139. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_001.ogg +0 -0
  140. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_002.ogg +0 -0
  141. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_003.ogg +0 -0
  142. package/skills/business/brag/assets/sfx/impact/impactMetal_medium_004.ogg +0 -0
  143. package/skills/business/brag/assets/sfx/impact/impactMining_001.ogg +0 -0
  144. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_000.ogg +0 -0
  145. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_001.ogg +0 -0
  146. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_002.ogg +0 -0
  147. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_003.ogg +0 -0
  148. package/skills/business/brag/assets/sfx/impact/impactPlank_medium_004.ogg +0 -0
  149. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_000.ogg +0 -0
  150. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_001.ogg +0 -0
  151. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_002.ogg +0 -0
  152. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_003.ogg +0 -0
  153. package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_004.ogg +0 -0
  154. package/skills/business/brag/assets/sfx/impact/impactPlate_light_000.ogg +0 -0
  155. package/skills/business/brag/assets/sfx/impact/impactPlate_light_001.ogg +0 -0
  156. package/skills/business/brag/assets/sfx/impact/impactPlate_light_002.ogg +0 -0
  157. package/skills/business/brag/assets/sfx/impact/impactPlate_light_003.ogg +0 -0
  158. package/skills/business/brag/assets/sfx/impact/impactPlate_light_004.ogg +0 -0
  159. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_000.ogg +0 -0
  160. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_001.ogg +0 -0
  161. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_002.ogg +0 -0
  162. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_003.ogg +0 -0
  163. package/skills/business/brag/assets/sfx/impact/impactPlate_medium_004.ogg +0 -0
  164. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_000.ogg +0 -0
  165. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_001.ogg +0 -0
  166. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_002.ogg +0 -0
  167. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_003.ogg +0 -0
  168. package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_004.ogg +0 -0
  169. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_000.ogg +0 -0
  170. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_001.ogg +0 -0
  171. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_002.ogg +0 -0
  172. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_003.ogg +0 -0
  173. package/skills/business/brag/assets/sfx/impact/impactPunch_medium_004.ogg +0 -0
  174. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_000.ogg +0 -0
  175. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_001.ogg +0 -0
  176. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_002.ogg +0 -0
  177. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_003.ogg +0 -0
  178. package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_004.ogg +0 -0
  179. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_000.ogg +0 -0
  180. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_001.ogg +0 -0
  181. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_002.ogg +0 -0
  182. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_003.ogg +0 -0
  183. package/skills/business/brag/assets/sfx/impact/impactSoft_medium_004.ogg +0 -0
  184. package/skills/business/brag/assets/sfx/impact/impactTin_medium_000.ogg +0 -0
  185. package/skills/business/brag/assets/sfx/impact/impactTin_medium_001.ogg +0 -0
  186. package/skills/business/brag/assets/sfx/impact/impactTin_medium_002.ogg +0 -0
  187. package/skills/business/brag/assets/sfx/impact/impactTin_medium_003.ogg +0 -0
  188. package/skills/business/brag/assets/sfx/impact/impactTin_medium_004.ogg +0 -0
  189. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_000.ogg +0 -0
  190. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_001.ogg +0 -0
  191. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_002.ogg +0 -0
  192. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_003.ogg +0 -0
  193. package/skills/business/brag/assets/sfx/impact/impactWood_heavy_004.ogg +0 -0
  194. package/skills/business/brag/assets/sfx/impact/impactWood_light_000.ogg +0 -0
  195. package/skills/business/brag/assets/sfx/impact/impactWood_light_001.ogg +0 -0
  196. package/skills/business/brag/assets/sfx/impact/impactWood_light_002.ogg +0 -0
  197. package/skills/business/brag/assets/sfx/impact/impactWood_light_003.ogg +0 -0
  198. package/skills/business/brag/assets/sfx/impact/impactWood_light_004.ogg +0 -0
  199. package/skills/business/brag/assets/sfx/impact/impactWood_medium_000.ogg +0 -0
  200. package/skills/business/brag/assets/sfx/impact/impactWood_medium_001.ogg +0 -0
  201. package/skills/business/brag/assets/sfx/impact/impactWood_medium_002.ogg +0 -0
  202. package/skills/business/brag/assets/sfx/impact/impactWood_medium_003.ogg +0 -0
  203. package/skills/business/brag/assets/sfx/impact/impactWood_medium_004.ogg +0 -0
  204. package/skills/business/brag/assets/sfx/interface/bong_001.ogg +0 -0
  205. package/skills/business/brag/assets/sfx/interface/click_001.ogg +0 -0
  206. package/skills/business/brag/assets/sfx/interface/click_002.ogg +0 -0
  207. package/skills/business/brag/assets/sfx/interface/click_003.ogg +0 -0
  208. package/skills/business/brag/assets/sfx/interface/click_004.ogg +0 -0
  209. package/skills/business/brag/assets/sfx/interface/click_005.ogg +0 -0
  210. package/skills/business/brag/assets/sfx/interface/drop_001.ogg +0 -0
  211. package/skills/business/brag/assets/sfx/interface/drop_002.ogg +0 -0
  212. package/skills/business/brag/assets/sfx/interface/drop_003.ogg +0 -0
  213. package/skills/business/brag/assets/sfx/interface/error_005.ogg +0 -0
  214. package/skills/business/brag/assets/sfx/interface/error_006.ogg +0 -0
  215. package/skills/business/brag/assets/sfx/interface/glitch_002.ogg +0 -0
  216. package/skills/business/brag/assets/sfx/interface/glitch_004.ogg +0 -0
  217. package/skills/business/brag/assets/sfx/interface/select_008.ogg +0 -0
  218. package/skills/business/brag/assets/sfx/interface/switch_001.ogg +0 -0
  219. package/skills/business/brag/assets/sfx/interface/switch_002.ogg +0 -0
  220. package/skills/business/brag/assets/sfx/interface/switch_004.ogg +0 -0
  221. package/skills/business/brag/assets/sfx/interface/switch_005.ogg +0 -0
  222. package/skills/business/brag/assets/sfx/interface/switch_006.ogg +0 -0
  223. package/skills/business/brag/assets/sfx/interface/switch_007.ogg +0 -0
  224. package/skills/business/brag/assets/sfx/keyboard/keypress-001.wav +0 -0
  225. package/skills/business/brag/assets/sfx/keyboard/keypress-002.wav +0 -0
  226. package/skills/business/brag/assets/sfx/keyboard/keypress-003.wav +0 -0
  227. package/skills/business/brag/assets/sfx/keyboard/keypress-004.wav +0 -0
  228. package/skills/business/brag/assets/sfx/keyboard/keypress-005.wav +0 -0
  229. package/skills/business/brag/assets/sfx/keyboard/keypress-006.wav +0 -0
  230. package/skills/business/brag/assets/sfx/keyboard/keypress-007.wav +0 -0
  231. package/skills/business/brag/assets/sfx/keyboard/keypress-008.wav +0 -0
  232. package/skills/business/brag/assets/sfx/keyboard/keypress-009.wav +0 -0
  233. package/skills/business/brag/assets/sfx/keyboard/keypress-010.wav +0 -0
  234. package/skills/business/brag/assets/sfx/keyboard/keypress-011.wav +0 -0
  235. package/skills/business/brag/assets/sfx/keyboard/keypress-012.wav +0 -0
  236. package/skills/business/brag/assets/sfx/keyboard/keypress-013.wav +0 -0
  237. package/skills/business/brag/assets/sfx/keyboard/keypress-014.wav +0 -0
  238. package/skills/business/brag/assets/sfx/keyboard/keypress-015.wav +0 -0
  239. package/skills/business/brag/assets/sfx/keyboard/keypress-016.wav +0 -0
  240. package/skills/business/brag/assets/sfx/keyboard/keypress-017.wav +0 -0
  241. package/skills/business/brag/assets/sfx/keyboard/keypress-018.wav +0 -0
  242. package/skills/business/brag/assets/sfx/keyboard/keypress-019.wav +0 -0
  243. package/skills/business/brag/assets/sfx/keyboard/keypress-020.wav +0 -0
  244. package/skills/business/brag/assets/sfx/keyboard/keypress-021.wav +0 -0
  245. package/skills/business/brag/assets/sfx/keyboard/keypress-022.wav +0 -0
  246. package/skills/business/brag/assets/sfx/keyboard/keypress-023.wav +0 -0
  247. package/skills/business/brag/assets/sfx/keyboard/keypress-024.wav +0 -0
  248. package/skills/business/brag/assets/sfx/keyboard/keypress-025.wav +0 -0
  249. package/skills/business/brag/assets/sfx/keyboard/keypress-026.wav +0 -0
  250. package/skills/business/brag/assets/sfx/keyboard/keypress-027.wav +0 -0
  251. package/skills/business/brag/assets/sfx/keyboard/keypress-028.wav +0 -0
  252. package/skills/business/brag/assets/sfx/keyboard/keypress-029.wav +0 -0
  253. package/skills/business/brag/assets/sfx/keyboard/keypress-030.wav +0 -0
  254. package/skills/business/brag/assets/sfx/keyboard/keypress-031.wav +0 -0
  255. package/skills/business/brag/assets/sfx/keyboard/keypress-032.wav +0 -0
  256. package/skills/business/brag/assets/sfx/sfx-analysis.json +15584 -0
  257. package/skills/business/brag/assets/sfx/sfx-analysis.md +75 -0
  258. package/skills/business/brag/assets/sfx/ui/click1.ogg +0 -0
  259. package/skills/business/brag/assets/sfx/ui/click2.ogg +0 -0
  260. package/skills/business/brag/assets/sfx/ui/click3.ogg +0 -0
  261. package/skills/business/brag/assets/sfx/ui/click4.ogg +0 -0
  262. package/skills/business/brag/assets/sfx/ui/click5.ogg +0 -0
  263. package/skills/business/brag/assets/sfx/ui/mouseclick1.ogg +0 -0
  264. package/skills/business/brag/assets/sfx/ui/rollover1.ogg +0 -0
  265. package/skills/business/brag/assets/sfx/ui/rollover2.ogg +0 -0
  266. package/skills/business/brag/assets/sfx/ui/rollover4.ogg +0 -0
  267. package/skills/business/brag/assets/sfx/ui/rollover5.ogg +0 -0
  268. package/skills/business/brag/assets/sfx/ui/switch1.ogg +0 -0
  269. package/skills/business/brag/assets/sfx/ui/switch10.ogg +0 -0
  270. package/skills/business/brag/assets/sfx/ui/switch11.ogg +0 -0
  271. package/skills/business/brag/assets/sfx/ui/switch12.ogg +0 -0
  272. package/skills/business/brag/assets/sfx/ui/switch13.ogg +0 -0
  273. package/skills/business/brag/assets/sfx/ui/switch14.ogg +0 -0
  274. package/skills/business/brag/assets/sfx/ui/switch15.ogg +0 -0
  275. package/skills/business/brag/assets/sfx/ui/switch16.ogg +0 -0
  276. package/skills/business/brag/assets/sfx/ui/switch17.ogg +0 -0
  277. package/skills/business/brag/assets/sfx/ui/switch18.ogg +0 -0
  278. package/skills/business/brag/assets/sfx/ui/switch19.ogg +0 -0
  279. package/skills/business/brag/assets/sfx/ui/switch2.ogg +0 -0
  280. package/skills/business/brag/assets/sfx/ui/switch20.ogg +0 -0
  281. package/skills/business/brag/assets/sfx/ui/switch21.ogg +0 -0
  282. package/skills/business/brag/assets/sfx/ui/switch22.ogg +0 -0
  283. package/skills/business/brag/assets/sfx/ui/switch23.ogg +0 -0
  284. package/skills/business/brag/assets/sfx/ui/switch24.ogg +0 -0
  285. package/skills/business/brag/assets/sfx/ui/switch25.ogg +0 -0
  286. package/skills/business/brag/assets/sfx/ui/switch26.ogg +0 -0
  287. package/skills/business/brag/assets/sfx/ui/switch27.ogg +0 -0
  288. package/skills/business/brag/assets/sfx/ui/switch28.ogg +0 -0
  289. package/skills/business/brag/assets/sfx/ui/switch29.ogg +0 -0
  290. package/skills/business/brag/assets/sfx/ui/switch3.ogg +0 -0
  291. package/skills/business/brag/assets/sfx/ui/switch30.ogg +0 -0
  292. package/skills/business/brag/assets/sfx/ui/switch31.ogg +0 -0
  293. package/skills/business/brag/assets/sfx/ui/switch32.ogg +0 -0
  294. package/skills/business/brag/assets/sfx/ui/switch33.ogg +0 -0
  295. package/skills/business/brag/assets/sfx/ui/switch34.ogg +0 -0
  296. package/skills/business/brag/assets/sfx/ui/switch35.ogg +0 -0
  297. package/skills/business/brag/assets/sfx/ui/switch36.ogg +0 -0
  298. package/skills/business/brag/assets/sfx/ui/switch37.ogg +0 -0
  299. package/skills/business/brag/assets/sfx/ui/switch38.ogg +0 -0
  300. package/skills/business/brag/assets/sfx/ui/switch4.ogg +0 -0
  301. package/skills/business/brag/assets/sfx/ui/switch5.ogg +0 -0
  302. package/skills/business/brag/assets/sfx/ui/switch6.ogg +0 -0
  303. package/skills/business/brag/assets/sfx/ui/switch7.ogg +0 -0
  304. package/skills/business/brag/assets/sfx/ui/switch8.ogg +0 -0
  305. package/skills/business/brag/assets/sfx/ui/switch9.ogg +0 -0
  306. package/skills/business/brag/references/audio.md +307 -0
  307. package/skills/business/brag/references/step-1-inspect.md +133 -0
  308. package/skills/business/brag/references/step-2-plan.md +234 -0
  309. package/skills/business/brag/references/step-3-compose.md +210 -0
  310. package/skills/business/brag/references/step-4-deliver.md +168 -0
  311. package/skills/business/brag/references/tones.md +231 -0
  312. package/skills/business/brag/scripts/analyze_music_cues.py +309 -0
  313. package/skills/business/brag/scripts/pyproject.toml +14 -0
  314. package/skills/business/brag/scripts/uv.lock +819 -0
  315. package/skills/business/copywriting/SKILL.md +178 -0
  316. package/skills/business/customer-research/SKILL.md +259 -0
  317. package/skills/business/freelancing/SKILL.md +679 -0
  318. package/skills/business/launch/SKILL.md +273 -0
  319. package/skills/business/marketing-psychology/SKILL.md +364 -0
  320. package/skills/business/pricing/SKILL.md +233 -0
  321. package/skills/business/resume-revamp-jake-ats/SKILL.md +64 -0
  322. package/skills/business/startup-founder/SKILL.md +400 -0
  323. package/skills/business/startup-founder/references/funding.md +48 -0
  324. package/skills/business/startup-founder/references/further-reading.md +132 -0
  325. package/skills/business/startup-founder/references/gtm-tools.md +57 -0
  326. package/skills/business/startup-founder/references/legal-india.md +36 -0
  327. package/skills/business/startup-founder/references/marketing/README.md +16 -0
  328. package/skills/business/startup-founder/references/marketing/cold-email.md +172 -0
  329. package/skills/business/startup-founder/references/marketing/competitors.md +245 -0
  330. package/skills/business/startup-founder/references/marketing/customer-research.md +276 -0
  331. package/skills/business/startup-founder/references/marketing/free-tools.md +168 -0
  332. package/skills/business/startup-founder/references/marketing/launch.md +343 -0
  333. package/skills/business/startup-founder/references/marketing/marketing-plan.md +270 -0
  334. package/skills/business/startup-founder/references/marketing/pricing.md +237 -0
  335. package/skills/business/startup-founder/references/marketing/product-marketing.md +250 -0
  336. package/skills/business/startup-founder/references/validation.md +267 -0
  337. package/skills/devops/deployments/SKILL.md +339 -0
  338. package/skills/devops/git-ci/SKILL.md +372 -0
  339. package/skills/devops/performance/SKILL.md +523 -0
  340. package/skills/devops/testing/SKILL.md +558 -0
  341. package/skills/engineering/code-review/SKILL.md +149 -0
  342. package/skills/engineering/coding-standards/SKILL.md +229 -0
  343. package/skills/engineering/product-engineering/SKILL.md +219 -0
  344. package/skills/engineering/senior-engineer-prompts/SKILL.md +145 -0
  345. package/skills/engineering/tdd-workflow/SKILL.md +178 -0
  346. package/skills/engineering/verification-loop/SKILL.md +199 -0
  347. package/skills/nerdev/nerdev-abstraction/SKILL.md +412 -0
  348. package/skills/nerdev/nerdev-docs/SKILL.md +527 -0
  349. package/skills/nerdev/nerdev-docs/templates/adr-template.md +39 -0
  350. package/skills/nerdev/nerdev-docs/templates/contributing-template.md +140 -0
  351. package/skills/nerdev/nerdev-docs/templates/deploy-template.md +426 -0
  352. package/skills/nerdev/nerdev-docs/templates/design-template.md +105 -0
  353. package/skills/nerdev/nerdev-docs/templates/incident-template.md +66 -0
  354. package/skills/nerdev/nerdev-monorepo/SKILL.md +522 -0
  355. package/skills/quality/output-skill/SKILL.md +49 -0
  356. package/skills/quality/unslop/SKILL.md +67 -0
  357. package/skills/ui/animaxxing/SKILL.md +58 -0
  358. package/skills/ui/animaxxing/agents/openai.yaml +7 -0
  359. package/skills/ui/animaxxing/references/effect-restoration.md +26 -0
  360. package/skills/ui/animaxxing/references/motion-vocabulary.md +142 -0
  361. package/skills/ui/animaxxing/references/recipes/blast-off.md +119 -0
  362. package/skills/ui/animaxxing/references/recipes/particle-effects.md +718 -0
  363. package/skills/ui/animaxxing/references/recipes/particle-field.md +428 -0
  364. package/skills/ui/animaxxing/references/recipes/route-letters.md +205 -0
  365. package/skills/ui/animaxxing/references/recipes/speak-in.md +181 -0
  366. package/skills/ui/animaxxing/references/recipes/split-entrances.md +345 -0
  367. package/skills/ui/animaxxing/references/recipes/wave.md +144 -0
  368. package/skills/ui/animaxxing/references/text-stability.md +68 -0
  369. package/skills/ui/animaxxing/references/verification.md +44 -0
  370. package/skills/ui/ask-animation/SKILL.md +178 -0
  371. package/skills/ui/ask-base-ui/SKILL.md +400 -0
  372. package/skills/ui/ask-cmdk/SKILL.md +315 -0
  373. package/skills/ui/ask-command-menu/SKILL.md +262 -0
  374. package/skills/ui/ask-drawer/SKILL.md +235 -0
  375. package/skills/ui/ask-form/SKILL.md +229 -0
  376. package/skills/ui/ask-gsap/SKILL.md +435 -0
  377. package/skills/ui/ask-modal/SKILL.md +145 -0
  378. package/skills/ui/ask-motion/SKILL.md +339 -0
  379. package/skills/ui/ask-rhf/SKILL.md +388 -0
  380. package/skills/ui/ask-sonner/API.md +64 -0
  381. package/skills/ui/ask-sonner/SKILL.md +88 -0
  382. package/skills/ui/ask-table/SKILL.md +253 -0
  383. package/skills/ui/ask-tanstack-table/SKILL.md +490 -0
  384. package/skills/ui/ask-toast/SKILL.md +163 -0
  385. package/skills/ui/ask-vaul/SKILL.md +291 -0
  386. package/skills/ui/ask-virtual-list/SKILL.md +304 -0
  387. package/skills/ui/ask-virtuoso/SKILL.md +332 -0
  388. package/skills/ui/email-craft/SKILL.md +258 -0
  389. package/skills/ui/frontend-craftsmanship/SKILL.md +462 -0
  390. package/skills/ui/gsap-astro/SKILL.md +56 -0
  391. package/skills/ui/gsap-astro/agents/openai.yaml +7 -0
  392. package/skills/ui/gsap-astro/references/client-router-navigation.md +139 -0
  393. package/skills/ui/gsap-astro/references/initialization.md +87 -0
  394. package/skills/ui/gsap-astro/references/motion-system.md +152 -0
  395. package/skills/ui/gsap-astro/references/scripts-and-islands.md +65 -0
  396. package/skills/ui/gsap-astro/references/verification.md +44 -0
  397. package/skills/ui/gsap-core/SKILL.md +254 -0
  398. package/skills/ui/gsap-frameworks/SKILL.md +266 -0
  399. package/skills/ui/gsap-nextjs/SKILL.md +51 -0
  400. package/skills/ui/gsap-nextjs/agents/openai.yaml +7 -0
  401. package/skills/ui/gsap-nextjs/references/app-router-navigation.md +189 -0
  402. package/skills/ui/gsap-nextjs/references/initialization.md +87 -0
  403. package/skills/ui/gsap-nextjs/references/motion-system.md +158 -0
  404. package/skills/ui/gsap-nextjs/references/verification.md +40 -0
  405. package/skills/ui/gsap-nuxt/SKILL.md +56 -0
  406. package/skills/ui/gsap-nuxt/agents/openai.yaml +7 -0
  407. package/skills/ui/gsap-nuxt/references/initialization.md +87 -0
  408. package/skills/ui/gsap-nuxt/references/motion-system.md +161 -0
  409. package/skills/ui/gsap-nuxt/references/navigation.md +145 -0
  410. package/skills/ui/gsap-nuxt/references/page-transitions.md +107 -0
  411. package/skills/ui/gsap-nuxt/references/verification.md +42 -0
  412. package/skills/ui/gsap-performance/SKILL.md +79 -0
  413. package/skills/ui/gsap-plugins/SKILL.md +433 -0
  414. package/skills/ui/gsap-react/SKILL.md +136 -0
  415. package/skills/ui/gsap-react-router/SKILL.md +55 -0
  416. package/skills/ui/gsap-react-router/agents/openai.yaml +7 -0
  417. package/skills/ui/gsap-react-router/references/initialization.md +87 -0
  418. package/skills/ui/gsap-react-router/references/motion-system.md +158 -0
  419. package/skills/ui/gsap-react-router/references/react-router-navigation.md +165 -0
  420. package/skills/ui/gsap-react-router/references/route-lifetime.md +74 -0
  421. package/skills/ui/gsap-react-router/references/verification.md +42 -0
  422. package/skills/ui/gsap-scrolltrigger/SKILL.md +296 -0
  423. package/skills/ui/gsap-sveltekit/SKILL.md +54 -0
  424. package/skills/ui/gsap-sveltekit/agents/openai.yaml +7 -0
  425. package/skills/ui/gsap-sveltekit/references/initialization.md +87 -0
  426. package/skills/ui/gsap-sveltekit/references/motion-system.md +156 -0
  427. package/skills/ui/gsap-sveltekit/references/page-lifetime.md +63 -0
  428. package/skills/ui/gsap-sveltekit/references/sveltekit-navigation.md +160 -0
  429. package/skills/ui/gsap-sveltekit/references/verification.md +41 -0
  430. package/skills/ui/gsap-tanstack-router/SKILL.md +56 -0
  431. package/skills/ui/gsap-tanstack-router/agents/openai.yaml +7 -0
  432. package/skills/ui/gsap-tanstack-router/references/initialization.md +87 -0
  433. package/skills/ui/gsap-tanstack-router/references/motion-system.md +160 -0
  434. package/skills/ui/gsap-tanstack-router/references/route-lifetime.md +66 -0
  435. package/skills/ui/gsap-tanstack-router/references/tanstack-navigation.md +156 -0
  436. package/skills/ui/gsap-tanstack-router/references/verification.md +41 -0
  437. package/skills/ui/gsap-timeline/SKILL.md +107 -0
  438. package/skills/ui/gsap-utils/SKILL.md +284 -0
  439. package/skills/ui/gsap-vanilla/SKILL.md +63 -0
  440. package/skills/ui/gsap-vanilla/agents/openai.yaml +7 -0
  441. package/skills/ui/gsap-vanilla/references/cross-document-navigation.md +54 -0
  442. package/skills/ui/gsap-vanilla/references/initialization.md +87 -0
  443. package/skills/ui/gsap-vanilla/references/motion-system.md +150 -0
  444. package/skills/ui/gsap-vanilla/references/page-load.md +96 -0
  445. package/skills/ui/gsap-vanilla/references/spa-navigation.md +70 -0
  446. package/skills/ui/gsap-vanilla/references/verification.md +41 -0
  447. package/skills/ui/house-style/SKILL.md +366 -0
  448. package/skills/ui/imagegen/SKILL.md +49 -0
  449. package/skills/ui/imagegen/references/brandkit.md +48 -0
  450. package/skills/ui/imagegen/references/image-to-code.md +56 -0
  451. package/skills/ui/imagegen/references/mobile.md +58 -0
  452. package/skills/ui/imagegen/references/web.md +63 -0
  453. package/skills/ui/impeccable/SKILL.md +116 -0
  454. package/skills/ui/impeccable/reference/adapt.md +318 -0
  455. package/skills/ui/impeccable/reference/adapt.native.md +58 -0
  456. package/skills/ui/impeccable/reference/android.md +46 -0
  457. package/skills/ui/impeccable/reference/animate.md +89 -0
  458. package/skills/ui/impeccable/reference/audit.md +137 -0
  459. package/skills/ui/impeccable/reference/audit.native.md +139 -0
  460. package/skills/ui/impeccable/reference/bolder.md +33 -0
  461. package/skills/ui/impeccable/reference/clarify.md +94 -0
  462. package/skills/ui/impeccable/reference/colorize.md +86 -0
  463. package/skills/ui/impeccable/reference/craft-floor.md +44 -0
  464. package/skills/ui/impeccable/reference/craft.md +5 -0
  465. package/skills/ui/impeccable/reference/critique.md +806 -0
  466. package/skills/ui/impeccable/reference/degraded/asset-producer.md +37 -0
  467. package/skills/ui/impeccable/reference/degraded/documenter.md +24 -0
  468. package/skills/ui/impeccable/reference/degraded/finish-reviewer.md +38 -0
  469. package/skills/ui/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  470. package/skills/ui/impeccable/reference/delight.md +70 -0
  471. package/skills/ui/impeccable/reference/distill.md +111 -0
  472. package/skills/ui/impeccable/reference/doctor.md +54 -0
  473. package/skills/ui/impeccable/reference/document.md +416 -0
  474. package/skills/ui/impeccable/reference/extract.md +69 -0
  475. package/skills/ui/impeccable/reference/generate.md +101 -0
  476. package/skills/ui/impeccable/reference/harden.md +345 -0
  477. package/skills/ui/impeccable/reference/hooks.md +111 -0
  478. package/skills/ui/impeccable/reference/init.md +131 -0
  479. package/skills/ui/impeccable/reference/ios.md +51 -0
  480. package/skills/ui/impeccable/reference/layout.md +84 -0
  481. package/skills/ui/impeccable/reference/live-setup.md +104 -0
  482. package/skills/ui/impeccable/reference/live.md +325 -0
  483. package/skills/ui/impeccable/reference/new-work.md +145 -0
  484. package/skills/ui/impeccable/reference/onboard.md +234 -0
  485. package/skills/ui/impeccable/reference/operate.md +61 -0
  486. package/skills/ui/impeccable/reference/optimize.md +258 -0
  487. package/skills/ui/impeccable/reference/overdrive.md +127 -0
  488. package/skills/ui/impeccable/reference/polish.md +105 -0
  489. package/skills/ui/impeccable/reference/quieter.md +99 -0
  490. package/skills/ui/impeccable/reference/routing.md +24 -0
  491. package/skills/ui/impeccable/reference/shape.md +59 -0
  492. package/skills/ui/impeccable/reference/typeset.md +80 -0
  493. package/skills/ui/impeccable/reference/visualize.md +46 -0
  494. package/skills/ui/impeccable/scripts/VERSION +1 -0
  495. package/skills/ui/impeccable/scripts/command-metadata.json +98 -0
  496. package/skills/ui/impeccable/scripts/data/font-index-failures.json +121 -0
  497. package/skills/ui/impeccable/scripts/data/font-index.json +1 -0
  498. package/skills/ui/impeccable/scripts/impeccable +206 -0
  499. package/skills/ui/impeccable/scripts/impeccable.cmd +214 -0
  500. package/skills/ui/impeccable/scripts/live-browser-dom.js +167 -0
  501. package/skills/ui/impeccable/scripts/live-browser-ignores.js +242 -0
  502. package/skills/ui/impeccable/scripts/live-browser-session.js +144 -0
  503. package/skills/ui/impeccable/scripts/live-browser.js +13510 -0
  504. package/skills/ui/impeccable/scripts/modern-screenshot.umd.js +14 -0
  505. package/skills/ui/motion/SKILL.md +207 -0
  506. package/skills/ui/pick-ui-library/SKILL.md +85 -0
  507. package/skills/ui/product-messaging/SKILL.md +163 -0
  508. package/skills/ui/product-site/SKILL.md +465 -0
  509. package/skills/ui/prototype/PICKER.md +197 -0
  510. package/skills/ui/prototype/SKILL.md +98 -0
  511. package/skills/ui/refero-design/SKILL.md +534 -0
  512. package/skills/ui/refero-design/agents/openai.yaml +4 -0
  513. package/skills/ui/refero-design/references/anti-ai-slop.md +292 -0
  514. package/skills/ui/refero-design/references/color.md +563 -0
  515. package/skills/ui/refero-design/references/copywriting.md +222 -0
  516. package/skills/ui/refero-design/references/craft-details.md +525 -0
  517. package/skills/ui/refero-design/references/example-workflow.md +264 -0
  518. package/skills/ui/refero-design/references/icons.md +166 -0
  519. package/skills/ui/refero-design/references/mcp-tools.md +258 -0
  520. package/skills/ui/refero-design/references/motion.md +504 -0
  521. package/skills/ui/refero-design/references/typography.md +737 -0
  522. package/skills/ui/refero-design/references/visual-workflow.md +105 -0
  523. package/skills/ui/style-animaxxing/SKILL.md +48 -0
  524. package/skills/ui/style-animaxxing/agents/openai.yaml +7 -0
  525. package/skills/ui/style-animaxxing/references/motion-vocabulary.md +51 -0
  526. package/skills/ui/style-animaxxing/references/tokens.md +288 -0
  527. package/skills/ui/style-animaxxing/references/typography-and-layout.md +149 -0
  528. package/skills/ui/style-animaxxing/references/verification.md +38 -0
  529. package/skills/ui/typography-picker/SKILL.md +305 -0
  530. package/skills/ui/ui-core/SKILL.md +345 -0
  531. package/skills/ui/ui-core/references/accessibility.md +85 -0
  532. package/skills/ui/ui-core/references/build.md +666 -0
  533. package/skills/ui/ui-core/references/copy.md +70 -0
  534. package/skills/ui/ui-core/references/dark-mode.md +76 -0
  535. package/skills/ui/ui-core/references/direction.md +99 -0
  536. package/skills/ui/ui-core/references/redesign.md +74 -0
  537. package/skills/ui/ui-core/references/responsive.md +77 -0
  538. package/skills/ui/ui-core/references/styles.md +42 -0
  539. package/skills/ui/ui-core/references/system.md +190 -0
  540. package/skills/ui/ui-core/references/verify.md +37 -0
  541. package/skills/ui/ui-engineering/SKILL.md +436 -0
  542. package/skills/ui/ui-engineering/references/avatars.md +74 -0
  543. package/skills/ui/ui-engineering/references/card-patterns.md +66 -0
  544. package/skills/ui/ui-engineering/references/floating-actions.md +65 -0
  545. package/skills/ui/ui-engineering/references/navigation.md +81 -0
  546. package/skills/ui/ui-engineering/references/overlays.md +74 -0
  547. package/skills/ui/ui-engineering/references/pagination.md +71 -0
  548. package/skills/ui/ui-engineering/references/progress-indicators.md +77 -0
  549. package/skills/ui/ui-engineering/references/quality-bar.md +293 -0
  550. package/skills/ui/ui-engineering/references/search.md +68 -0
  551. package/skills/ui/ui-engineering/references/tailwind-architecture.md +81 -0
  552. package/skills/ui/ui-theme-picker/SKILL.md +522 -0
  553. package/skills/ui/ui-theme-picker/references/component-sources.md +223 -0
  554. package/skills/ui/ui-theme-picker/references/styles.md +298 -0
  555. package/skills/ui/vitepress-docs/SKILL.md +439 -0
  556. package/skills/ui/vitepress-docs/references/components.md +333 -0
  557. package/skills/ui/vitepress-docs/references/layout.md +128 -0
  558. package/skills/ui/vitepress-docs/references/tokens.md +87 -0
  559. package/skills/ui/vitepress-docs/references/typography.md +76 -0
  560. package/skills/workflow/careful/SKILL.md +48 -0
  561. package/skills/workflow/context-restore/SKILL.md +69 -0
  562. package/skills/workflow/context-save/SKILL.md +96 -0
  563. package/skills/workflow/health/SKILL.md +99 -0
  564. package/skills/workflow/learn/SKILL.md +95 -0
  565. package/skills/workflow/office-hours/SKILL.md +136 -0
  566. package/skills/workflow/ship/SKILL.md +95 -0
  567. package/vendor.json +80 -0
@@ -0,0 +1,666 @@
1
+ # Build the screen
2
+
3
+ ## The anti-slop tells (kill every one)
4
+
5
+ - Purple or blue glow gradients.
6
+ - Glowing buttons, oversized rounded cards.
7
+ - Three equal feature cards.
8
+ - The same five icons as every other AI output.
9
+ - Version labels in heroes (V0.6, BETA) unless it is a launch.
10
+ - Section-number eyebrows ("001", "01/4").
11
+ - Middle dots everywhere, decorative color dots.
12
+ - Filler words: Elevate, Seamless, Unleash, Next-Gen, Game-changer.
13
+ - Fake names and numbers: John Doe, Acme, 99.99%.
14
+ - Scroll cues, hero-bottom strips, mock-humble references.
15
+ - Cards in cards, div-fake product UI.
16
+ - Inter and Roboto as defaults.
17
+
18
+ ## Accessibility (built in, not checked later)
19
+
20
+ - Color contrast: 4.5:1 for body text, 3:1 for large text and UI
21
+ components. Test with actual text, not color picker values.
22
+ - Focus management: every interactive element must be keyboard reachable.
23
+ Focus order follows visual order. No keyboard traps.
24
+ - Focus visible: never remove focus styles. Custom focus rings must be
25
+ at least 2px, high contrast, and visible on both light and dark
26
+ backgrounds.
27
+ - ARIA: use semantic HTML first. Add ARIA only when HTML falls short.
28
+ aria-label for icon-only buttons, aria-describedby for help text,
29
+ aria-live for dynamic updates.
30
+ - Screen reader: decorative icons get aria-hidden="true". Status
31
+ messages use aria-live="polite". Errors use aria-live="assertive".
32
+ - Touch targets: 44x44px minimum on mobile, 32x32px on desktop. Gaps
33
+ between targets count toward size.
34
+ - Motion: respect prefers-reduced-motion. Provide reduced-motion
35
+ alternatives for all animations.
36
+ - Forms: every input has a label. Error messages are linked with
37
+ aria-describedby. Required fields use required, not just asterisks.
38
+ - Landmarks: use header, main, nav, footer, aside. One main landmark per
39
+ page. Skip links for keyboard users.
40
+ - Text alternatives: meaningful images have alt text. Decorative images
41
+ have alt="". SVG icons use aria-hidden or title/desc.
42
+ - Error prevention: destructive actions have confirmation. Inputs have
43
+ validation before submission, not after.
44
+ - Consistent navigation: same nav on every page. Current page indicated
45
+ visually and with aria-current="page".
46
+
47
+ ## Responsive design system
48
+
49
+ - Breakpoint scale: sm 640, md 768, lg 1024, xl 1280, 2xl 1536. Mobile
50
+ first, always.
51
+ - Reflow before resize: at each breakpoint, ask if the layout should
52
+ reflow or just resize. Reflow wins.
53
+ - Container queries over media queries when component width depends on
54
+ parent, not viewport.
55
+ - Touch targets: 44x44px minimum on touch devices. Spacing between
56
+ targets: 8px minimum gap.
57
+ - Density shifts: mobile gets larger touch targets and less dense
58
+ content. Desktop gets more columns and tighter spacing.
59
+ - Horizontal scroll banned: no element should overflow its container on
60
+ any viewport.
61
+ - Typography scales with viewport: use clamp() for font sizes, not
62
+ fixed breakpoint jumps.
63
+ - Images: max-width 100%, height auto. Use srcset and sizes for
64
+ responsive images. Art direction with <picture> when needed.
65
+ - Navigation: hamburger on mobile, full nav on desktop. Always visible,
66
+ never hidden behind hover.
67
+ - Tables: horizontal scroll on mobile, full table on desktop. Sticky
68
+ first column on mobile tables.
69
+ - Modals: full-screen on mobile, centered dialog on desktop. Bottom
70
+ sheet on mobile feels native.
71
+ - Forms: single column on mobile, multi-column on desktop when fields
72
+ are short. Labels above inputs on all viewports.
73
+
74
+ ## Dark mode implementation
75
+
76
+ - CSS variable architecture: all colors via CSS variables. Light and dark
77
+ variants in :root and .dark.
78
+ - Tailwind strategy: use dark: prefix. Never hardcode colors in JSX.
79
+ All colors reference tokens.
80
+ - System preference: default to system. Allow manual override with
81
+ localStorage. Respect prefers-color-scheme.
82
+ - Color adjustments: reduce saturation by 10-20% in dark mode. Dark
83
+ backgrounds need lighter text, not darker.
84
+ - Neutral scale: invert for dark mode. Background goes from light to
85
+ dark. Text goes from dark to light. Borders go from light to
86
+ semi-transparent light.
87
+ - Accent: keep the same hue, increase lightness by 5-10% in dark mode.
88
+ Don't change the accent color between light and dark.
89
+ - Shadows: eliminate in dark mode or use very subtle diffused shadows.
90
+ Borders replace shadows for separation in dark mode.
91
+ - Images: don't invert. Use opacity adjustments for images in dark mode
92
+ if needed. SVG icons with currentColor adapt automatically.
93
+ - Text: never pure white (#fff) on pure black (#000). Use gray-50 to
94
+ gray-100 on gray-900 to gray-950. Minimum 4.5:1 contrast.
95
+ - Form inputs: darker background, lighter border, lighter text. Focus
96
+ ring must be visible on dark backgrounds.
97
+ - Code blocks: darker background, lighter text. Syntax highlighting
98
+ must adapt to dark mode.
99
+ - Testing: verify every screen in both light and dark mode. Check
100
+ contrast, readability, and visual hierarchy.
101
+
102
+ ## Copy and UX writing standards
103
+
104
+ - Imperative mood for CTAs: "Create project", "Send message", not
105
+ "Create a project" or "Submit your request". Verb first.
106
+ - Sentence case for all UI text: capitalize first word and proper nouns
107
+ only. No title case, no all caps except for acronyms.
108
+ - Error messages: three parts. What happened, why it happened, how to
109
+ fix it. "Email is required" not "Error: invalid email".
110
+ - Success messages: what was done, not "Success!". "Project created"
111
+ not "Success! Your project has been created".
112
+ - Label brevity: one to three words. "Email" not "Email address".
113
+ "Save" not "Save changes". Use helper text for context.
114
+ - Micro-copy tone: calm, direct, human. No marketing speak. No
115
+ exclamation marks in functional text. One exclamation max per
116
+ marketing screen.
117
+ - Placeholder text: shows the format, not the label. "you@example.com"
118
+ not "Enter your email address".
119
+ - Button labels: action verb, no articles. "Delete account" not "Delete
120
+ the account". "Continue" not "Next".
121
+ - Help text: one sentence. Two max. Explain the constraint, not the
122
+ obvious. "8+ characters" not "Please enter at least 8 characters".
123
+ - Confirmation dialogs: title is the action, body is the consequence.
124
+ "Delete project" / "This will permanently remove all data. This
125
+ action cannot be undone."
126
+ - Empty states: what the user sees, what they can do. "No projects
127
+ yet. Create your first project to get started."
128
+ - Tooltips: one line, no punctuation. Context, not description.
129
+ "Sort by date" not "Click here to sort the list by date".
130
+
131
+ ## Animation state machine
132
+
133
+ Define behavior for each state. Motion answers "what happened?"
134
+
135
+ | State | Trigger | Motion | Duration | Notes |
136
+ |-------|---------|--------|----------|-------|
137
+ | Idle | Resting | None | - | No idle animations. No pulses, no floating. |
138
+ | Entering | Appear | Fade + slight scale or translate | 200ms | Spring curve. State lands first. |
139
+ | Entered | Settled | None | - | Static until next event. |
140
+ | Active | Hover, press, focus | Subtle state change | 150ms in, 100ms out | One motion per event. |
141
+ | Exiting | Disappear | Fade out, reverse of enter | 150ms | Matches enter direction. |
142
+ | Exited | Gone | None | - | Remove from DOM after animation. |
143
+ | Disabled | Invalid state | None | - | Visual state only, no motion. |
144
+ | Error | Validation fails | Shake or highlight | 200ms | Subtle, not distracting. |
145
+ | Loading | Async operation | None or subtle pulse | Infinite only if justified | Prefer skeleton over spinner. |
146
+ | Updating | Data changes | Layout animation or flash | 150ms | Only the changed element. |
147
+
148
+ Rules:
149
+ - One motion per event. Two springs competing reads as glitch.
150
+ - Exits exist. No one-frame vanishes.
151
+ - State lands first. Motion is polish on top.
152
+ - Reduced motion: all states become instant. No springs, no entrances.
153
+ - Interruptible: next event cancels current animation. Nobody waits.
154
+
155
+ ## Image and asset guidelines
156
+
157
+ - Format selection: WebP for photos, AVIF for graphics with gradients,
158
+ SVG for icons and illustrations, PNG only when transparency is
159
+ required and WebP/AVIF fail.
160
+ - Responsive images: use srcset and sizes. Provide 1x, 2x, and 3x
161
+ sources. Art direction with <picture> for major layout changes.
162
+ - Lazy loading: native loading="lazy" for below-fold images. Above-fold
163
+ images use loading="eager" with width and height attributes to
164
+ prevent layout shift.
165
+ - Placeholder patterns: low-quality image placeholder (LQIP) with blur
166
+ transition, solid color placeholder, or SVG silhouette. No broken
167
+ image icons.
168
+ - SVG optimization: remove metadata, minify paths, use currentColor for
169
+ dynamic coloring. Inline small SVGs, reference external for large.
170
+ - Icon fonts: avoid. Use SVG sprites or individual SVG files.
171
+ - Image sizing: never serve larger images than needed. Use image CDN or
172
+ build-time resizing. Max width per breakpoint.
173
+ - Decorative images: aria-hidden="true", empty alt. Don't clutter
174
+ screen readers with decoration.
175
+ - Favicon: 32x32 and 16x16 PNG, or SVG favicon. One favicon per site.
176
+ - Background images: use CSS background-image for decorative images.
177
+ Use <img> for content images. Never use img for pure decoration.
178
+
179
+ ## Form design standards
180
+
181
+ - Label placement: above the input, left-aligned. Never floating
182
+ labels. Never placeholder-as-label.
183
+ - Label association: use htmlFor matching input id. Screen readers
184
+ announce the label with the input.
185
+ - Input sizing: height 40-44px on desktop, 44-48px on mobile. Full
186
+ width on mobile, constrained on desktop.
187
+ - Validation timing: validate on blur for single fields, on submit for
188
+ the whole form. No inline validation while typing unless the field
189
+ has a clear format constraint (email, phone).
190
+ - Error display: below the input, red text, error icon. Linked with
191
+ aria-describedby. Show only the first error per field.
192
+ - Success indication: green border or checkmark on valid fields after
193
+ interaction. Don't show before user interacts.
194
+ - Required fields: required attribute, asterisk after label in red.
195
+ Don't use color alone. Screen reader announces "(required)".
196
+ - Submit button: disabled while submitting. Shows spinner or "Saving..."
197
+ text. Re-enable on error.
198
+ - Multi-step forms: show progress indicator. Save state between steps.
199
+ Allow back navigation. Don't lose data on refresh.
200
+ - Field grouping: use fieldset and legend for related fields. Radio
201
+ buttons and checkboxes always grouped.
202
+ - Auto-complete: use appropriate autocomplete attributes. Name, email,
203
+ address, credit card. Helps users and password managers.
204
+ - Password fields: show/hide toggle. Never auto-fill password managers
205
+ incorrectly. Use autocomplete="current-password" or
206
+ "new-password".
207
+ - Form layout: single column on mobile, two columns on desktop when
208
+ fields are short. Max width 600px for forms. Don't stretch full
209
+ width on desktop.
210
+
211
+ ## Loading and skeleton patterns
212
+
213
+ - Skeleton first: show skeleton before spinner. Skeleton matches the
214
+ content shape. Spinner is for unknown duration or full-page loading.
215
+ - Skeleton design: same layout as content, gray animated blocks. No
216
+ content-shaped skeletons that look like real data.
217
+ - Shimmer animation: light gradient moving across skeleton. 1.5s to
218
+ 2s duration, ease-in-out infinite. Respects reduced-motion.
219
+ - Progressive loading: load critical content first, then enhancements.
220
+ Show content as soon as available, don't wait for everything.
221
+ - Optimistic UI: update UI immediately, revert on error. Show subtle
222
+ indicator that update is pending. Don't block user interaction.
223
+ - Spinner usage: small spinner for buttons and inline. Medium spinner
224
+ for cards and panels. Large spinner for full-page. No spinner for
225
+ content that loads in under 300ms.
226
+ - Placeholder text: "Loading..." not "Please wait". Time estimates when
227
+ available: "Uploading... 2 of 5 files".
228
+ - Button loading: disable button, show spinner inside, change text to
229
+ "Saving..." or similar. Never submit twice.
230
+ - Infinite scroll: show skeleton at bottom while loading more. Don't
231
+ show spinner at bottom. Have a "Load more" button for explicit
232
+ control.
233
+ - Error recovery: if loading fails, show error with retry button.
234
+ Don't silently fail or show empty state.
235
+ - Image loading: show blur placeholder, then fade in. Don't show
236
+ broken image icon. Lazy load below-fold images.
237
+
238
+ ## Design token naming convention
239
+
240
+ - Semantic naming: use function, not appearance. --color-primary, not
241
+ --color-blue-500. --spacing-md, not --spacing-16px.
242
+ - Component tokens: --button-bg, --button-text, --input-border. Derived
243
+ from semantic tokens.
244
+ - Scale naming: 50-950 for color (50 lightest, 950 darkest). sm/md/lg
245
+ for spacing and sizing. xs, sm, md, lg, xl for icons and typography.
246
+ - Light/dark variants: --color-primary in :root, --color-primary in
247
+ .dark. Same name, different value. Never --color-primary-dark.
248
+ - Extension rules: add new tokens at the end of the scale. Never insert
249
+ in the middle. New scales need a reason and documentation.
250
+ - Token categories: color, spacing, radius, shadow, typography, motion,
251
+ z-index. One category per token prefix.
252
+ - Alias tokens: --color-text = --color-gray-900. Use aliases for
253
+ frequently used values. Reduces duplication.
254
+ - Deprecated tokens: mark with comment, don't delete. Migrate in next
255
+ major version. Keep old token working during transition.
256
+ - Documentation: every token has a comment explaining its purpose and
257
+ usage. No orphaned tokens.
258
+
259
+ ## i18n and text expansion
260
+
261
+ - Text expansion budget: design for 30-50% text expansion. German,
262
+ French, Spanish can be 30-50% longer than English. Don't break
263
+ layouts.
264
+ - Flexible containers: use min-width and max-width, not fixed widths.
265
+ Allow text to wrap naturally. Avoid fixed-width buttons.
266
+ - Text truncation: use line-clamp for headlines. Ellipsis for buttons
267
+ and labels. Never truncate error messages or instructions.
268
+ - RTL support: use logical properties (margin-inline-start, not
269
+ margin-left). Use dir="rtl" for Arabic, Hebrew. Test both
270
+ directions.
271
+ - Locale-aware formatting: dates, numbers, currency. Use user's locale.
272
+ Don't hardcode formats. Use Intl API.
273
+ - Number formatting: thousands separators, decimal separators vary by
274
+ locale. 1,000.00 in US, 1.000,00 in DE. Use Intl.NumberFormat.
275
+ - Date formatting: relative dates ("2 hours ago") and absolute dates
276
+ vary by locale. Use Intl.DateTimeFormat.
277
+ - Currency: symbol position varies. $100 in US, 100€ in DE. Use
278
+ Intl.NumberFormat with currency style.
279
+ - Pluralization: "1 file" vs "2 files". Use ICU message format or
280
+ similar. Don't concatenate strings.
281
+ - String externalization: all UI text in translation files. No hardcoded
282
+ strings in components. Use keys, not raw text.
283
+ - Font support: ensure fonts support required character sets. Noto fonts
284
+ for broad language support. Test with actual translated text.
285
+ - BCP 47 tags: use proper language tags (en-US, fr-FR, ar-SA). Don't
286
+ use generic "en" or "fr" when region matters.
287
+
288
+ ## Component composition patterns
289
+
290
+ - Compound components: related components that work together. <Select>,
291
+ <Select.Item>, <Select.Trigger>. Parent manages state, children
292
+ compose UI.
293
+ - Render props: pass function as child for flexibility. <List
294
+ items={items} renderItem={item => <Item {...item} />} />.
295
+ - Headless vs styled: separate logic from presentation. Headless
296
+ component handles state, accessibility, keyboard nav. Styled
297
+ component handles visuals.
298
+ - Slots: named slots for flexible composition. <Card header={...}
299
+ body={...} footer={...} />. Clear contract for each slot.
300
+ - Polymorphic components: render as different HTML elements. <Text
301
+ as="h1"> or <Text as="p">. Use "as" prop, never "component".
302
+ - Hook extraction: extract reusable logic to custom hooks. Use for
303
+ state, effects, accessibility. Keep hooks focused and single-purpose.
304
+ - Context for state sharing: use React Context for deeply nested state.
305
+ Avoid prop drilling beyond 2 levels. Split contexts by concern.
306
+ - Higher-order components: use sparingly. Prefer hooks. HOC for
307
+ cross-cutting concerns (auth, theme). Document the wrapped props.
308
+ - Component variants: use type variants, not conditional classes.
309
+ Button variants: primary, secondary, ghost. Use discriminated union.
310
+ - Composition over configuration: prefer props for composition, not
311
+ giant config objects. <Form><Input /><Input /></Form> over <Form
312
+ fields={[...]} />.
313
+ - Avoid premature abstraction: duplicate until it hurts. Extract when
314
+ three or more components share the same pattern. Not two.
315
+
316
+ ## Keyboard shortcut and command palette design
317
+
318
+ - Shortcut formatting: use platform symbols. ⌘ for Mac, Ctrl for
319
+ Windows/Linux. Display as text: "⌘K" not "Cmd+K" or "Command+K".
320
+ - Shortcut conflicts: check against browser and OS shortcuts. Don't
321
+ override browser shortcuts (⌘T, ⌘W, ⌘Q).
322
+ - Discoverability: show shortcuts in menus, tooltips, and help pages.
323
+ Command palette is the primary discovery mechanism.
324
+ - Command grouping: group by category. Navigation, actions, settings.
325
+ Use dividers. Most used commands at top.
326
+ - Command search: fuzzy search by default. Search by name, shortcut,
327
+ and description. Recent commands at top.
328
+ - Command feedback: show what the command does before executing.
329
+ Preview for navigation commands. Confirm for destructive commands.
330
+ - Keyboard navigation: arrow keys to navigate, Enter to execute, Esc
331
+ to close. Tab to skip between groups. Type to filter.
332
+ - Context-aware commands: show different commands based on current
333
+ page or selection. Hide unavailable commands, don't disable.
334
+ - Command palette trigger: ⌘K or Ctrl+K. Always available. Never
335
+ hidden behind menu.
336
+ - Custom shortcuts: allow user customization. Show current shortcut.
337
+ Warn on conflicts. Persist in user settings.
338
+
339
+ ## Notification and toast design
340
+
341
+ - Toast hierarchy: info, success, warning, error. Each has distinct
342
+ color and icon. Info is default, success is green, warning is amber,
343
+ error is red.
344
+ - Toast placement: bottom-right on desktop, bottom-center on mobile.
345
+ Don't cover primary content. Stack from bottom.
346
+ - Toast duration: 4s for info, 5s for success, 6s for warning, 8s for
347
+ error. User can dismiss early. Pause on hover.
348
+ - Toast actions: one action max. "Undo" for undoable actions. "View"
349
+ for navigation. No "OK" button. Dismiss is implicit.
350
+ - Toast stacking: max 3 toasts visible. New toasts push old ones up.
351
+ Don't stack more than 3. User sees all, not a wall.
352
+ - Persistent toasts: for errors requiring action. Don't auto-dismiss.
353
+ Require explicit dismiss or action.
354
+ - Inline vs toast: use toast for transient feedback. Use inline for
355
+ persistent status. Use alert for errors blocking the page.
356
+ - Toast icons: match the type. Checkmark for success, alert for error,
357
+ info for info. Don't use icons for dismiss.
358
+ - Toast accessibility: aria-live="polite" for info/success,
359
+ aria-live="assertive" for error. Focus stays on main content. Toast
360
+ doesn't steal focus.
361
+ - Toast styling: subtle shadow, border, background. Match the design
362
+ system. No glowing, no gradients. Compact on mobile.
363
+
364
+ ## Error boundary and error state design
365
+
366
+ - Error boundaries: wrap each major section, not just the whole app.
367
+ One error boundary per route or feature. Isolate failures.
368
+ - Inline errors: show next to the field. Red border, error icon, error
369
+ message below. Don't alert for field errors.
370
+ - Full-page errors: when the whole page fails. Error message,
371
+ description, retry button. Don't show stack traces to users.
372
+ - Error message structure: what happened, why (if helpful), how to
373
+ recover. "Something went wrong" is never enough.
374
+ - Recovery actions: primary action is retry. Secondary action is go
375
+ home or contact support. Always give user a way out.
376
+ - Technical details: collapsible section or link. Show for debugging,
377
+ hide by default. Never show stack traces unless user asks.
378
+ - Network errors: distinguish between 4xx and 5xx. 401/403 means auth
379
+ issue, redirect to login. 404 means not found, show not found page.
380
+ 5xx means server error, show retry.
381
+ - Form errors: field-level errors inline. Form-level errors above the
382
+ form. Don't mix them. Show form-level only after submit.
383
+ - Error prevention: destructive actions have confirmation. Auto-save
384
+ drafts. Show "You have unsaved changes" before navigation.
385
+ - Logging: log errors with context. User ID, action, timestamp. Don't
386
+ log sensitive data. Don't show internal error codes to users.
387
+ - Error pages: 404, 500, maintenance. Each has consistent design.
388
+ Navigation to home. Don't dead-end the user.
389
+
390
+ ## Performance and rendering guidelines
391
+
392
+ - Layout stability: reserve space for async content. Use aspect-ratio
393
+ boxes. Prevent layout shift. CLS under 0.1.
394
+ - Paint complexity: avoid box-shadow on large areas. Use border
395
+ instead. Avoid backdrop-filter on scroll. Test with DevTools
396
+ Performance.
397
+ - Animation performance: animate transform and opacity only. Avoid
398
+ layout animations. Use will-change sparingly. Remove after animation.
399
+ - Bundle impact: tree-shake animation libraries. Import only what you
400
+ use. motion.dev is lighter than Framer Motion. Lenis only when dial=3.
401
+ - Image optimization: WebP/AVIF, srcset, lazy loading. Use image CDN.
402
+ Serve correct sizes. Don't load 4k images for 400px containers.
403
+ - Font loading: use font-display: swap. Preload critical fonts.
404
+ Subset fonts to needed characters. Avoid layout shift from font
405
+ swap.
406
+ - JavaScript: code split by route. Lazy load below-fold components.
407
+ Avoid large dependencies. Use dynamic imports.
408
+ - Rendering: avoid unnecessary re-renders. Use React.memo for pure
409
+ components. Use useMemo and useCallback for expensive operations.
410
+ Don't over-optimize.
411
+ - Caching: cache static assets. Use service workers for offline.
412
+ Cache API responses when appropriate. Stale-while-revalidate for
413
+ dynamic content.
414
+ - Metrics targets: LCP under 2.5s, FID under 100ms, CLS under 0.1.
415
+ Measure with real user metrics, not just lab tests.
416
+ - Motion dial impact: dial=3 adds GSAP, ScrollTrigger, Lenis. Only
417
+ load when needed. Don't load on pages that don't use them.
418
+
419
+ ## Mobile-specific patterns
420
+
421
+ - Bottom sheets: use for mobile modals. Swipe to dismiss. Snap points
422
+ for height. Don't use centered modals on mobile.
423
+ - Swipe actions: swipe left for delete, swipe right for archive. Show
424
+ action buttons on swipe. Undo for destructive actions.
425
+ - Pull-to-refresh: for content feeds. Visual feedback during pull.
426
+ Don't use on forms or inputs. Disable when not applicable.
427
+ - Safe areas: respect safe area insets. Don't put content under
428
+ notches or home indicators. Use env(safe-area-inset-*).
429
+ - Thumb zone: primary actions in bottom third of screen. Secondary
430
+ actions in top. Navigation at bottom for mobile.
431
+ - Touch feedback: immediate visual feedback on touch. Ripple or
432
+ highlight. No 300ms delay. Use active state.
433
+ - Gestures: swipe for navigation, pinch for zoom, long-press for
434
+ context menu. Don't override system gestures.
435
+ - Keyboard handling: dismiss keyboard on scroll. Don't hide content
436
+ behind keyboard. Scroll to focused input.
437
+ - Orientation: support both portrait and landscape. Test both. Don't
438
+ lock orientation unless required.
439
+ - Performance: mobile devices have less power. Reduce animation
440
+ complexity. Lazy load aggressively. Test on low-end devices.
441
+ - Hover states: don't rely on hover for mobile. Use active and focus
442
+ states. Hover is enhancement, not requirement.
443
+ - Navigation: bottom tab bar for primary navigation. Hamburger menu
444
+ for secondary. Don't hide navigation behind gestures.
445
+
446
+ ## Notification and badge design
447
+
448
+ - Badge purpose: show count, status, or newness. One purpose per badge.
449
+ Don't combine count and status.
450
+ - Badge placement: top-right of the element. Don't cover icon or text.
451
+ Use offset to position clearly.
452
+ - Badge size: 16-20px for small icons, 20-24px for medium, 24-28px
453
+ for large. Scale with the element.
454
+ - Badge content: number up to 99, then "99+". For status, use dot or
455
+ icon. For newness, use "New" text or dot.
456
+ - Badge color: accent color for count, semantic color for status. Red
457
+ for error, green for success, amber for warning.
458
+ - Badge animation: subtle pulse for new badges. Stop after first view.
459
+ Don't pulse forever. No animation for count badges.
460
+ - Notification center: list of notifications. Group by date. Mark all
461
+ as read. Clear visual hierarchy.
462
+ - Unread indicator: dot or bold text. Not both. Don't use color alone.
463
+ - Badge accessibility: aria-label with count. "3 notifications" not
464
+ "notification". Screen reader announces the count.
465
+ - Badge density: one badge per element. Don't stack badges. If multiple
466
+ statuses, use a dot with tooltip.
467
+
468
+ ## Empty state design system
469
+
470
+ - Empty state purpose: explain why empty, what user can do. Not just
471
+ "No data". Tell the story.
472
+ - Empty state structure: illustration or icon, headline, description,
473
+ primary CTA. In that order.
474
+ - Illustration vs icon: illustration for major empty states (first
475
+ visit, no data). Icon for minor empty states (empty filter results).
476
+ Don't use illustration for every empty state.
477
+ - Empty state copy: headline is one line, max 8 words. Description is
478
+ one to two sentences. CTA is action verb. "Create your first project"
479
+ not "Click here to create a project".
480
+ - Empty state CTA: primary action only. One button. No secondary
481
+ actions. If multiple actions possible, show the most important one.
482
+ - Empty state placement: full panel for major empty states. Inline for
483
+ minor. Center for focused content. Don't hide empty state in corner.
484
+ - Filter empty state: "No results for [query]" with clear filter.
485
+ Show active filters. Offer to clear filters.
486
+ - Error state vs empty state: empty state is expected (no data yet).
487
+ Error state is unexpected (something broke). Different design,
488
+ different copy.
489
+ - Returning user empty state: acknowledge history. "You haven't
490
+ created any projects yet" not "No projects". Personalize when
491
+ possible.
492
+ - Empty state animation: subtle fade-in for illustration. No motion
493
+ for text. Keep it quiet. Empty state is not a showcase.
494
+
495
+
496
+ ## Hero rules
497
+
498
+ - Fits the viewport: headline max 2 lines, subtext max 20 words.
499
+ - One primary CTA, max one secondary. Nothing under the CTA: no
500
+ taglines, no trust strips, no avatar rows, no feature bullets.
501
+ - No pills, fake stats, badges, or tiny logos.
502
+ - Banned: centered dark mesh, generic background image.
503
+
504
+ ## Layout rules
505
+
506
+ - One layout family per section. A family appears once across 8
507
+ sections.
508
+ - Max two consecutive image-text splits.
509
+ - Grid over flex math. No w-[calc(33%-1rem)] style fractions.
510
+ - min-h-[100dvh], never h-screen.
511
+ - Bento: as many cells as content, no empty cells, 2-3 cells with real
512
+ visual variation.
513
+ - Split headers banned: stack vertically, body at 65ch.
514
+ - Sidebars: no multi-level nested scroll.
515
+
516
+ ## Typography discipline
517
+
518
+ - No 6-line wraps. A headline over 3 lines is a font-size error.
519
+ - Eyebrows: max one per 3 sections. Signature style: text-[11px]
520
+ uppercase tracking-[0.18em].
521
+ - One copy register across the whole page.
522
+ - No em dashes in visible text. Ever.
523
+
524
+ ## Content
525
+
526
+ - Real words, real numbers, real names.
527
+ - Lists over paragraphs. Spec tables become 2-column cards or grouped
528
+ chunks.
529
+ - Quotes under 3 lines with name and role.
530
+ - No Lorem Ipsum. Placeholder images: picsum with a seed, labeled TODO,
531
+ or generated.
532
+
533
+ ## Icons, imagery, motion
534
+
535
+ - Icon family: Phosphor, Radix, Tabler, or Doton. One family, one stroke
536
+ weight. Lucide only on request.
537
+ - Duo-tone or triple-tone icons also look great.
538
+ - Real imagery: hero plus supporting images, even in minimal builds.
539
+ SVG grayscale filters on photos are banned.
540
+ - Motion: see the motion skill. Springs, one motion per event, nothing
541
+ loops.
542
+ - No external widget dependencies in the first pass. Build the core
543
+ first, add libraries only when they earn it.
544
+
545
+ ## Chart and data visualization design
546
+
547
+ - Prefer minimal ink: remove gridlines, axis ticks, and borders until the
548
+ chart is unreadable, then add back the minimum needed.
549
+ - One accent per series. Use hue, not lightness, to distinguish series in
550
+ the same chart. Lightness is for emphasis within a series.
551
+ - Annotations over legends: label the line, don't make the reader match
552
+ color to name. Tooltips are a fallback, not the primary label.
553
+ - Type hierarchy in charts: title > axis label > tick label > annotation.
554
+ No more than three levels.
555
+ - Zero baseline for deltas, true zero for counts. A bar chart starting
556
+ at 50 exaggerates a 52-51 difference. A line chart can zoom when the
557
+ range is known.
558
+ - Interactivity earns complexity: static first, hover detail second,
559
+ draggable/brush only when the user asks for it. Every interactive
560
+ element must have a keyboard equivalent.
561
+ - Evil Charts is a strong reference for chart inspiration.
562
+
563
+ ## Testimonial and social proof patterns
564
+
565
+ - One quote, one name, one role. Three lines max for the quote. The name
566
+ and role sit below, smaller and quieter. No avatar rows, no logo grids,
567
+ no "trusted by" marquees in the hero.
568
+ - The quote is the UI element, not the person. Design the quote mark,
569
+ the type treatment, the spacing. The photo is optional and small.
570
+ - Static over carousel. A carousel implies scarcity. Show three strong
571
+ quotes stacked or in a clean grid. If space demands a carousel, make it
572
+ obvious there are more and let the user control pace.
573
+ - Attribution format: "Name, Role at Company" in body or hint weight.
574
+ Never bold the name alone. The role gives the quote weight.
575
+ - Make.design testimonial pages are a strong reference for polish and
576
+ layout rhythm.
577
+
578
+ ## Whitespace as a first-class principle
579
+
580
+ - Whitespace is a layout tool, not empty space. It separates, groups, and
581
+ establishes hierarchy the same way borders and shadows do, but quieter.
582
+ - Section padding: py-24 to py-32 on desktop, py-16 to py-24 on tablet,
583
+ py-12 to py-16 on mobile. Never drop below py-12 between distinct
584
+ sections.
585
+ - Component padding: p-6 to p-8 for cards, p-4 for compact controls.
586
+ Inconsistent padding is a visual error.
587
+ - Density ladder: hero is sparse, feature section is medium, data table
588
+ is dense. One density per section. Mixed density reads as sloppy.
589
+ - Kobbe.io is a strong reference for generous whitespace and clean
590
+ spacing rhythm.
591
+
592
+ ## Type scale system
593
+
594
+ - One scale, one ratio. Use modular scale: major third (1.25), perfect
595
+ fourth (1.333), or golden ratio (1.618) depending on density.
596
+ - Display scale: clamp() for responsive type. Example: text-[clamp(2.5rem,5vw,4.5rem)]
597
+ for hero headlines. Never hardcode breakpoint-specific font sizes.
598
+ - Hierarchy: display > headline > section > body > caption. Five levels
599
+ max. Body at 16px base, 1.5 line-height, max 65ch width.
600
+ - Weight ladder: 400 for body, 500 for emphasis, 600 for labels, 700 for
601
+ display. No 800 or 900 in UI text.
602
+ - Tracking: tighten display type (-0.02em to -0.04em), loosen small
603
+ labels (0.02em to 0.05em). Body tracking is default.
604
+ - Leading: display at 1.05 to 1.1, body at 1.5 to 1.6, caption at 1.4.
605
+ Tight leading for big type, loose for small.
606
+ - Mono for data only. JetBrains Mono, IBM Plex Mono, or Geist Mono.
607
+ Never use mono for body copy.
608
+
609
+ ## Color semantics
610
+
611
+ - One accent hue, multiple lightness stops. Use the same hue for primary
612
+ action, active state, focus ring, and selected state. Lightness
613
+ distinguishes the role, not hue.
614
+ - Accent usage order: primary CTA > active state > focus ring > selected
615
+ state > notification dot. Use it in this priority. When in doubt, the
616
+ primary CTA gets the full saturation.
617
+ - Neutral scale: nine stops from 0 to 100. Use 0-20 for backgrounds,
618
+ 40-60 for body text, 80-100 for disabled and hints. Never pure black
619
+ (#000) on white; use gray-950 or gray-900.
620
+ - Semantic colors: success, warning, danger, info. Each gets one hue,
621
+ used only in that semantic role. Warning never borrows from accent.
622
+ Danger never borrows from warning.
623
+ - Dark mode: invert the neutral scale, keep the accent hue, reduce
624
+ saturation by 10-20%. Dark backgrounds need lighter text, not darker
625
+ text.
626
+ - 4.5:1 contrast minimum for body text, 3:1 for large text and UI
627
+ components. Test with actual text, not color picker values.
628
+
629
+ ## Component state matrix
630
+
631
+ Every interactive component must define these states before it ships:
632
+
633
+ | State | Visual | Motion | Example |
634
+ |-------|--------|--------|---------|
635
+ | Default | Resting state, no highlight | None | Button at rest |
636
+ | Hover | Subtle background or border shift | 150ms ease-out | Button lightens |
637
+ | Focus | Focus ring, no outline | Instant | Ring appears |
638
+ | Active/Pressed | Scale 0.97 to 0.98, darker fill | 100ms spring | Button depresses |
639
+ | Disabled | Grayed, no interaction | None | Button unclickable |
640
+ | Loading | Spinner or skeleton inside | None or subtle pulse | Button shows spinner |
641
+ | Error | Red border or text, error icon | None or shake | Input shows error |
642
+ | Empty | Placeholder text or illustration | None or fade-in | Empty state panel |
643
+ | Selected | Accent background or border | 150ms ease-out | Tab or toggle active |
644
+
645
+ Rules:
646
+ - Motion is optional for non-interactive states (empty, error).
647
+ - Focus must always be visible. Never remove focus styles.
648
+ - Disabled state must be visually distinct from loading state.
649
+ - Error state must include a recovery action or explanation.
650
+ - Every state must have a keyboard equivalent. No mouse-only states.
651
+
652
+ ## Icon system
653
+
654
+ - Stroke weight: 1.5px for data-dense interfaces, 2px for marketing and
655
+ landing pages. One weight per product.
656
+ - Sizing: 16px for inline with body text, 20px for section headers, 24px
657
+ for standalone icons, 32px+ for feature illustrations.
658
+ - Filled vs outline: filled for active/selected state, outline for
659
+ default. Never mix in the same component.
660
+ - Duo-tone: primary element filled, secondary element outline. Use for
661
+ decorative icons that need hierarchy without color.
662
+ - Triple-tone: three opacity stops on a single icon. Use for
663
+ illustrations and empty states, not navigation.
664
+ - Icon as decoration: earns its place. An icon that does not convey
665
+ information or state is decoration. One per component max.
666
+ - Doton is approved for duo-tone and triple-tone icon sets.