@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,81 @@
1
+ # Navigation patterns
2
+
3
+ Rules for choosing and implementing navigation patterns. For
4
+ accessibility and responsive behavior, see accessibility.md and
5
+ responsive.md.
6
+
7
+ ## Sidebar vs topbar
8
+
9
+ - Sidebar: use when the app has 5 or more top-level destinations,
10
+ persistent state per section, or dense tooling (dashboards, IDEs,
11
+ mail clients). Left rail on desktop, drawer on mobile.
12
+ - Topbar: use when there are 3 to 5 destinations, the page is
13
+ content-led, or the product is marketing/landing. Horizontal links
14
+ or tabs.
15
+ - Mixed: sidebar for app chrome, topbar for page-level tabs within a
16
+ section. Don't nest both at the same level. One owns the primary
17
+ hierarchy.
18
+ - Collapse rule: sidebar collapses to icon rail at `md`, to drawer at
19
+ `sm`. Icon rail labels appear on hover or on `lg+`.
20
+
21
+ ## Breadcrumbs
22
+
23
+ - Show when the user is more than one level deep in a hierarchy.
24
+ Suppress on the home/landing level.
25
+ - Truncate middle segments with an ellipsis when the path exceeds 4
26
+ segments. Keep the first and last two segments visible.
27
+ - Clickable segments: every crumb except the current page is a link.
28
+ Current page is plain text, aria-current="page".
29
+ - Separator: `/` or `›`. Pick one, stay consistent. Don't use chevrons
30
+ for every level in deep hierarchies. It becomes visual noise.
31
+
32
+ ## Tab bar vs segmented control
33
+
34
+ - Tab bar: use for top-level destinations within a page or section.
35
+ Horizontal, always visible, under a section header.
36
+ - Segmented control: use for toggling between 2 to 4 views of the same
37
+ data. Compact, inline, looks like a toggle group.
38
+ - Don't mix: if the user needs to navigate to a different page, use
39
+ tabs or links. If the user needs to filter the same data, use a
40
+ segmented control.
41
+
42
+ ## Active-state indication
43
+
44
+ - Current page: filled tab, bottom border, or background tint. Pick one
45
+ per product. Never underline + background + color change together.
46
+ - Visited state: optional. If used, keep it subtle (slightly darker
47
+ text, not a color change). Don't treat visited like selected.
48
+ - Hover state: background tint or underline. Never color shift alone.
49
+ Color is for active, not hover.
50
+
51
+ ## Mobile nav collapse patterns
52
+
53
+ - Hamburger: use when there are more than 4 top-level destinations, or
54
+ when destinations are secondary. Icon-only button, aria-label
55
+ "Menu".
56
+ - Bottom tab bar: use for 3 to 5 primary destinations in a mobile app.
57
+ Fixed to viewport bottom, safe-area-inset padding.
58
+ - Tab bar in-page: use for 2 to 4 secondary destinations within a
59
+ single mobile screen. Horizontal scroll if needed, not dropdown.
60
+ - Don't hide primary navigation behind a hamburger on mobile. If a
61
+ destination is primary, it belongs in a tab bar or topbar.
62
+
63
+ ## Nested nav: drawer vs flyout
64
+
65
+ - Drawer: use for navigation trees deeper than 2 levels, or when the
66
+ secondary nav has its own structure. Swipe to dismiss on mobile.
67
+ - Flyout: use for 2-level nav where the second level is short (3 to 5
68
+ items). Appears on hover/focus on desktop, tap on mobile.
69
+ - Avoid: flyouts deeper than 2 levels. If the tree is deep, use a
70
+ drawer or a dedicated page.
71
+
72
+ ## Don'ts
73
+
74
+ - Don't use breadcrumbs on a single-level page.
75
+ - Don't mix tab-bar and topbar for the same hierarchy level.
76
+ - Don't hide the active state. The user should never have to guess
77
+ where they are.
78
+ - Don't use dropdowns for primary navigation. Dropdowns hide options.
79
+ Navigation should reveal them.
80
+ - Don't animate nav reflows with stagger. One motion: the new state
81
+ appears, the old one leaves.
@@ -0,0 +1,74 @@
1
+ # Overlays
2
+
3
+ Rules for dropdowns, tooltips, popovers, and positioning. For
4
+ accessibility requirements, see accessibility.md.
5
+
6
+ ## Dropdown / select / menu
7
+
8
+ - Positioning: below trigger, left-aligned by default. Above if
9
+ overflow. Collision handling is required, not optional.
10
+ - Width: match the trigger width, or min 200px. Don't let the dropdown
11
+ shrink below the widest item.
12
+ - Scroll: show scrollbar when items exceed viewport height minus 2x
13
+ item height. Max height 320px.
14
+ - Selection: single-select uses a checkmark or highlight. Multi-select
15
+ uses checkboxes. Don't use checkmarks for multi-select.
16
+ - Empty state: "No options" or "No results". Don't show an empty list
17
+ with no message.
18
+ - Keyboard: arrow keys navigate, Enter selects, Esc closes. See
19
+ accessibility.md.
20
+
21
+ ## Tooltip
22
+
23
+ - Placement: top by default, bottom if not enough space above.
24
+ Left/right for long text. Don't use tooltips for critical
25
+ information. Tooltips are discoverable, not guaranteed.
26
+ - Trigger: hover for desktop, focus for keyboard. Don't show on click
27
+ alone.
28
+ - Delay: 300 to 500ms show delay on hover. No delay on focus. Don't
29
+ make the user wait for a tooltip they triggered with keyboard.
30
+ - Duration: stay visible while hovered. Don't auto-hide after a
31
+ timeout. The user controls dismissal.
32
+ - Rich vs plain: plain tooltip is text only, max 1 to 2 lines. Rich
33
+ tooltip includes an icon or link, max 200px wide. Don't use rich
34
+ tooltips for simple descriptions.
35
+ - Accessibility: tooltips are supplementary. The trigger must work
36
+ without the tooltip. Don't put critical instructions only in a
37
+ tooltip.
38
+
39
+ ## Popover vs tooltip vs dropdown
40
+
41
+ - Popover: use when the overlay contains interactive content (forms,
42
+ buttons, links). Stays open on interaction. Focus moves inside.
43
+ - Tooltip: use when the overlay is non-interactive text. Dismisses on
44
+ hover/focus loss. Focus doesn't move inside.
45
+ - Dropdown: use when the overlay is a list of options. Selection is
46
+ explicit. Dismisses on selection or Esc.
47
+ - Don't use a tooltip for a form field hint. Use help text or a
48
+ placeholder. Tooltips are for supplementary info, not required
49
+ reading.
50
+
51
+ ## Positioning and collision handling
52
+
53
+ - Default position: below trigger, left-aligned. Above if overflow.
54
+ - Flip: flip to the opposite side before clipping. Flip before
55
+ shifting.
56
+ - Shift: shift along the axis if still clipping after flip. Don't
57
+ shift more than 50% of the overlay width.
58
+ - Arrow: show arrow pointing to trigger when there's room. Hide when
59
+ close to edge. Arrow is decorative, not interactive.
60
+ - Safe areas: don't position overlays under notches, home indicators,
61
+ or system UI. Use env(safe-area-inset-*) on mobile.
62
+
63
+ ## Don'ts
64
+
65
+ - Don't show tooltips on touch devices by default. Touch doesn't have
66
+ hover. Use long-press or a dedicated info button instead.
67
+ - Don't nest overlays. A dropdown inside a dropdown inside a popover is
68
+ a navigation dead end.
69
+ - Don't use dropdowns for single actions. If there's only one option,
70
+ show the action directly.
71
+ - Don't let overlays cover the trigger. The trigger must remain visible
72
+ or be clearly replaceable by the overlay.
73
+ - Don't use tooltips for error messages. Errors belong inline, near the
74
+ field.
@@ -0,0 +1,71 @@
1
+ # Pagination and load-more patterns
2
+
3
+ Rules for choosing between numbered pagination, "load more", and
4
+ infinite scroll. For infinite-scroll implementation details, see
5
+ ui-core/references/build.md.
6
+
7
+ ## Decision criteria
8
+
9
+ - Numbered pagination: use when the user needs to jump to a specific
10
+ page, compare pages, or the data is truly paginated (search results,
11
+ table data). Shows page numbers, prev/next, and total count.
12
+ - "Load more" button: use when the user is browsing a feed or list and
13
+ needs explicit control over pacing. Shows a button at the bottom of
14
+ the list.
15
+ - Infinite scroll: use when the content is a continuous feed (social,
16
+ notifications) and the user is consuming, not searching. See
17
+ ui-core/references/build.md for implementation rules.
18
+ - Don't mix: choose one pattern per list. A list with both "load more"
19
+ and infinite scroll is confusing.
20
+
21
+ ## Cursor-based vs offset-based pagination
22
+
23
+ - Cursor-based: use for real-time or frequently changing data. The
24
+ cursor points to the last item, not a page number. UI shows "Load
25
+ more" or infinite scroll, not page numbers.
26
+ - Offset-based: use for static or rarely changing data (archived posts,
27
+ reports). UI shows numbered pages.
28
+ - UI difference: cursor-based never shows page numbers. Offset-based
29
+ can show page numbers, but doesn't have to.
30
+
31
+ ## Page-size selection
32
+
33
+ - Show when the user is working with dense data (tables, lists) and
34
+ the page size affects usability. Hide for content feeds.
35
+ - Placement: above the list, not below. Users look for controls before
36
+ they start consuming.
37
+ - Options: 10, 25, 50, 100. Don't offer more than 4 options. Default
38
+ to 25 unless the data is dense (then 50) or sparse (then 10).
39
+ - Persist: remember the user's choice per view. Don't reset on every
40
+ navigation.
41
+
42
+ ## Total counts
43
+
44
+ - Show total count when the user needs to know the scope ("Showing 1-25
45
+ of 342 results"). Hide for infinite scroll feeds where the total is
46
+ unknown or not meaningful.
47
+ - Format: "Showing 1-25 of 342" not "342 results". The first form
48
+ tells the user where they are, not just how much there is.
49
+ - Don't show "Page 1 of 15" without also showing the range. Page
50
+ numbers alone don't tell the user how much data they're missing.
51
+
52
+ ## Scroll-position restoration
53
+
54
+ - Restore scroll position when navigating back to a paginated list.
55
+ The user expects to return to where they were, not the top.
56
+ - Implementation: store scroll position in a ref or state keyed by the
57
+ list identity. Restore on mount.
58
+ - Don't restore for infinite scroll feeds. In infinite scroll, the
59
+ content is new every time. Restoring position would show stale data.
60
+
61
+ ## Don'ts
62
+
63
+ - Don't show page numbers for cursor-based pagination. The cursor is
64
+ opaque. Page numbers are meaningless.
65
+ - Don't use "load more" for search results. Search implies completion.
66
+ "Load more" implies there's more to find.
67
+ - Don't hide the total count for paginated data. The user needs to know
68
+ the scope to make decisions.
69
+ - Don't reset page size on every navigation. Persist per view.
70
+ - Don't use infinite scroll for task-oriented lists. Infinite scroll is
71
+ for consumption, not completion.
@@ -0,0 +1,77 @@
1
+ # Progress indicators
2
+
3
+ Rules for choosing and implementing progress indicators. For skeleton
4
+ and spinner patterns, see ui-core/references/build.md.
5
+
6
+ ## Determinate vs indeterminate
7
+
8
+ - Determinate: use when the progress can be measured (upload, install,
9
+ form completion). Shows percentage or step.
10
+ - Indeterminate: use when the duration is unknown but progress is
11
+ happening (loading data, processing). Shows animation, no percentage.
12
+ - Do not guess: if you do not know the duration, use indeterminate. A
13
+ determinate bar that stalls at 90% is worse than an indeterminate
14
+ spinner.
15
+
16
+ ## Progress bar rules
17
+
18
+ - Height: 4 to 8px for inline bars, 8 to 12px for standalone bars.
19
+ Thinner bars are subtler. Thicker bars are more prominent.
20
+ - Fill direction: left to right for LTR, right to left for RTL. Use
21
+ logical properties or CSS transforms.
22
+ - Percentage label: show when the percentage is meaningful (more than
23
+ 10% steps). Hide for rapid progress where the number changes faster
24
+ than the user can read it.
25
+ - Color: accent color for fill, muted border for track. Do not use
26
+ multiple colors to indicate "health". That is a status indicator, not
27
+ a progress bar.
28
+ - Animation: smooth transition between values. Do not jump. 300ms ease
29
+ is fine here because the bar is the feedback, not a micro-interaction.
30
+
31
+ ## Step / wizard indicators
32
+
33
+ - Linear steps: use when every step must be completed in order
34
+ (onboarding, checkout). Show step number, label, and completion
35
+ state.
36
+ - Non-linear steps: use when steps can be skipped or reordered
37
+ (settings, configuration). Show steps as a list, not a progress bar.
38
+ - Completed state: checkmark or filled step. Never remove completed
39
+ steps. The user needs to see progress.
40
+ - Current step: accent color, larger or bolder. Do not use animation to
41
+ indicate the current step. Animation is for progress, not state.
42
+ - Future steps: muted text or outline. Do not gray them out completely.
43
+ The user needs to see what is coming.
44
+
45
+ ## Multi-stage progress
46
+
47
+ - Multi-stage: use when an operation has distinct phases (upload +
48
+ processing + complete). Show stage name and progress within the
49
+ current stage.
50
+ - Stage transition: animate the stage name change, not the bar. The bar
51
+ resets for the new stage.
52
+ - Error in multi-stage: show which stage failed, why, and how to retry
53
+ that stage. Do not restart from stage one.
54
+
55
+ ## Skeleton vs spinner vs progress bar
56
+
57
+ - Skeleton: use when the content shape is known and the load is fast
58
+ (under 2s). See ui-core/references/build.md.
59
+ - Spinner: use when the duration is unknown or the load is full-page.
60
+ See ui-core/references/build.md.
61
+ - Progress bar: use when the progress is measurable. Do not use a
62
+ spinner when you can show a bar.
63
+ - Do not show all three together. Pick one per loading state.
64
+
65
+ ## Avoid
66
+
67
+ - Do not use indeterminate progress bars for operations that have a
68
+ known duration. If you know it takes 5 seconds, show a determinate
69
+ bar.
70
+ - Do not animate progress bars with spring curves. Linear or ease-out
71
+ only.
72
+ - Do not show percentage for very fast operations (under 1s). The
73
+ number changes too fast to read.
74
+ - Do not use progress bars for multi-step wizards without showing the
75
+ step names. A bar alone does not tell the user where they are.
76
+ - Do not hide progress indicators behind hover. Progress is critical
77
+ feedback. It must be visible.
@@ -0,0 +1,293 @@
1
+ # Quality Bar References
2
+
3
+ **The standard.** Every UI decision should trace back to these references.
4
+
5
+
6
+ ## SaaS Gold Standard (Best "Feel": Snappy, Physics-Based)
7
+
8
+ | Site | What to Steal | Why It Works |
9
+ |------|---------------|--------------|
10
+ | **Linear** | Command palette (⌘K), page transitions, cursor states, issue hover cards, keyboard shortcuts everywhere | Gold standard. Everything feels instant and intentional. |
11
+ | **Raycast** | Website mirrors app speed; hover states, scroll reveals, copy-to-clipboard toast, keyboard-first nav | Razor-tight. No wasted motion. |
12
+ | **Stripe** | Subtle gradient animations, docs pages with live code that morphs on scroll, careful color use | Restrained but delightful. Code blocks that animate on scroll. |
13
+ | **Vercel** | Geometric motion, great restraint (not everything animates), clean type hierarchy | Confident minimalism. |
14
+ | **Arc (The Browser Company)** | Playful micro-copy + micro-animation combo, onboarding flow, personality | Personality without chaos. |
15
+ | **Attio / Cron (Notion Calendar)** | SaaS onboarding-style micro-interactions, drag-drop, inline editing | Product-led growth patterns. |
16
+
17
+
18
+ ## Agency/Showcase Tier (Heavier Animation, GSAP/WebGL)
19
+
20
+ | Site | What to Steal | When to Use |
21
+ |------|---------------|-------------|
22
+ | **Awwwards Site of the Day** | Current trends, not fixed set | Dial = 3 only |
23
+ | **Locomotive** | Smooth-scroll + parallax done right | Showcase landing pages |
24
+ | **Basement.studio** | Experimental interactions, WebGL | Dial = 3, creative brands |
25
+ | **Cuberto** | Character animation, fluid motion | Dial = 3 |
26
+ | **Resn** | Immersive WebGL experiences | Dial = 3 |
27
+ | **Active Theory** | Three.js + GSAP mastery | Dial = 3 |
28
+
29
+
30
+ ## Libraries/Tools (Beyond Aceternity)
31
+
32
+ ### Animation Engines
33
+ | Library | Use For | Notes |
34
+ |---------|---------|-------|
35
+ | **motion.dev (Framer Motion)** | Page transitions, layout animations, enter/exit, gestures, basic scroll | Primary motion lib. `npm i motion` |
36
+ | **GSAP + ScrollTrigger** | Scroll scrub, pin, snap, timelines, text/SVG morph, complex sequences | Showcase tier (dial=3). `npm i gsap` |
37
+ | **Lenis** | Smooth scroll, pairs with GSAP | `npm i @studio-freight/lenis` |
38
+ | **Rive** | Interactive vector animations that respond to state | Advanced, `npm i @rive-app/canvas` |
39
+
40
+ ### UI Primitives
41
+ | Library | Use For | Notes |
42
+ |---------|---------|-------|
43
+ | **base-ui** | Dialogs, popovers, menus, selects, tooltips, combobox, tabs, accordion | Unstyled, accessible. `@base-ui-components/react` |
44
+ | **Vaul** | Drawers, bottom sheets, side sheets | Gesture-driven. `npm i vaul` |
45
+ | **cmdk** | Command palette (⌘K) | `npm i cmdk` |
46
+ | **Radix UI** | Alternative to base-ui | More packages, similar philosophy |
47
+
48
+ ### Data & Forms
49
+ | Library | Use For | Notes |
50
+ |---------|---------|-------|
51
+ | **TanStack Table** | Data tables, sorting, filtering, pagination, virtualization | `@tanstack/react-table` + `@tanstack/react-virtual` |
52
+ | **Virtuoso** | Virtualized lists, feeds, chat, variable heights | `npm i react-virtuoso` |
53
+ | **React Hook Form + Zod** | Forms, validation, server actions | `npm i react-hook-form @hookform/resolvers zod` |
54
+ | **Sonner** | Toasts, notifications | `npm i sonner` |
55
+
56
+ ### Interaction Layer
57
+ | Library | Use For |
58
+ |---------|---------|
59
+ | **dnd-kit** | Drag and drop |
60
+ | **Vaul** | Drawers (already listed) |
61
+ | **Radix/base-ui** | Popovers, tooltips, menus, selects |
62
+
63
+
64
+ ## Inspiration Galleries (Browse, Don't Copy)
65
+
66
+ | Site | Best For |
67
+ |------|----------|
68
+ | **Awwwards** | Cutting-edge motion, WebGL |
69
+ | **Mobbin** | Real UI patterns (not just heroes): mobile + desktop |
70
+ | **Godly** | Curated landing pages |
71
+ | **SiteInspire** | Design inspiration |
72
+ | **Dribbble** | Micro-interaction concepts (search "micro-interaction") |
73
+ | **Evil Charts** | Chart inspiration for data visualization UI |
74
+ | **Kobbe.io** | Generous whitespace, clean typography, rounded aesthetic |
75
+ | **Make.design** | Testimonial pages and polished design systems |
76
+ | **Timmo.co.in** | Clean layout and modern SaaS feel |
77
+
78
+ ## What to Steal (Transferable Principles)
79
+
80
+ | Reference | Principle to Extract |
81
+ |-----------|----------------------|
82
+ | **Linear** | Command palette as primary navigation. Hover cards that surface context without leaving the page. Page transitions that feel like state changes, not scenes. |
83
+ | **Raycast** | Hover states that are near-instant. Copy-to-clipboard feedback that is visible but not intrusive. Keyboard-first means every click target has a keyboard target. |
84
+ | **Stripe** | Gradient animations tied to scroll, not decoration. Code blocks that respond to user action. Color that leads the eye, not decorates it. |
85
+ | **Vercel** | Geometric motion where the shape change is the feedback. Type hierarchy so strong it needs no color. Restraint as a feature, not a limit. |
86
+ | **Arc** | Micro-copy that matches micro-animation. Onboarding that teaches through doing, not explaining. Personality in the pauses, not the noise. |
87
+ | **Attio/Cron** | Inline editing that feels like paper, not a form. Drag-drop that snaps with intention. Micro-interactions that confirm the action, not announce it. |
88
+ | **Kobbe.io** | Whitespace as rhythm. Generous section padding that lets content breathe. Typography with clean roundness that feels modern without being bubbly. |
89
+ | **Make.design** | Testimonial pages where the quote is the hero, not the logo. Attribution that adds weight through simplicity. Visual rhythm that makes scrolling feel intentional. |
90
+ | **Evil Charts** | Minimal ink: gridlines removed until the chart breaks, then added back sparingly. Annotations over legends. One accent per series, hue not lightness for distinction. |
91
+ | **Timmo.co.in** | Clean SaaS feel through consistent spacing and restrained color. Layout that trusts the content without over-decorating. |
92
+
93
+
94
+ ## GitHub Repos to Study
95
+
96
+ | Repo | Why |
97
+ |------|-----|
98
+ | `gastownhall/beads` | Motion primitives, gesture handling |
99
+ | `addyosmani/agent-skills` | AI agent patterns |
100
+ | `mattpocock/skills` | TypeScript patterns |
101
+
102
+
103
+ ## Token Templates (Starting Points)
104
+
105
+ ### Clinical (Linear-style)
106
+ ```css
107
+ :root {
108
+ --accent: 220 100% 50%; /* Blue */
109
+ --gray: 220 15% 20%; /* Cool gray */
110
+ --radius: 0.5rem; /* 8px */
111
+ --font-sans: 'Inter', system-ui;
112
+ --font-mono: 'JetBrains Mono', monospace;
113
+ --transition: 150ms cubic-bezier(0.16, 1, 0.3, 1);
114
+ }
115
+ ```
116
+
117
+ ### Sharp/Editorial (Stripe-style)
118
+ ```css
119
+ :root {
120
+ --accent: 340 100% 50%; /* Pink/red */
121
+ --gray: 240 10% 15%; /* Warm dark */
122
+ --radius: 0.375rem; /* 6px */
123
+ --font-sans: 'Space Grotesk', system-ui;
124
+ --font-display: 'Space Grotesk', system-ui;
125
+ --transition: 200ms cubic-bezier(0.16, 1, 0.3, 1);
126
+ }
127
+ ```
128
+
129
+ ### Playful (Arc-style)
130
+ ```css
131
+ :root {
132
+ --accent: 280 100% 60%; /* Purple */
133
+ --gray: 260 10% 15%; /* Purple-tinted dark */
134
+ --radius: 0.75rem; /* 12px */
135
+ --font-sans: 'DM Sans', system-ui;
136
+ --font-display: 'DM Sans', system-ui;
137
+ --transition: 250ms cubic-bezier(0.34, 1.56, 0.64, 1); /* Bouncier */
138
+ }
139
+ ```
140
+
141
+ ### Dense/Terminal (Bloomberg-style)
142
+ ```css
143
+ :root {
144
+ --accent: 120 100% 40%; /* Green */
145
+ --gray: 0 0% 10%; /* True black/white */
146
+ --radius: 0; /* No radius */
147
+ --font-sans: 'IBM Plex Mono', monospace;
148
+ --font-mono: 'IBM Plex Mono', monospace;
149
+ --transition: 100ms ease-out;
150
+ }
151
+ ```
152
+
153
+
154
+ ## Motion Recipes (Copy-Paste Starting Points)
155
+
156
+ ### Page Transition (Linear)
157
+ ```tsx
158
+ // app/layout.tsx
159
+ <AnimatePresence mode="wait" initial={false}>
160
+ <motion.div
161
+ key={pathname}
162
+ initial={{ opacity: 0, y: 16 }}
163
+ animate={{ opacity: 1, y: 0 }}
164
+ exit={{ opacity: 0, y: -16 }}
165
+ transition={{ type: 'spring', stiffness: 500, damping: 30 }}
166
+ >
167
+ {children}
168
+ </motion.div>
169
+ </AnimatePresence>
170
+ ```
171
+
172
+ ### Modal/Sheet Enter/Exit
173
+ ```tsx
174
+ const modalTransition = {
175
+ initial: { opacity: 0, scale: 0.97 },
176
+ animate: { opacity: 1, scale: 1 },
177
+ exit: { opacity: 0, scale: 0.97 },
178
+ transition: { type: 'spring', stiffness: 500, damping: 30 },
179
+ }
180
+ ```
181
+
182
+ ### Button Press (Raycast)
183
+ ```tsx
184
+ <motion.button
185
+ whileHover={{ scale: 1.02 }}
186
+ whileTap={{ scale: 0.97 }}
187
+ transition={{ type: 'spring', stiffness: 600, damping: 20 }}
188
+ >
189
+ ```
190
+
191
+ ### Stagger (Onboarding Only)
192
+ ```tsx
193
+ <motion.ul
194
+ initial="hidden"
195
+ animate="show"
196
+ variants={{
197
+ hidden: { opacity: 0 },
198
+ show: { transition: { staggerChildren: 0.05 } },
199
+ }}
200
+ >
201
+ {items.map(item => (
202
+ <motion.li key={item.id} variants={{ hidden: { opacity: 0, x: -20 }, show: { opacity: 1, x: 0 } }}>
203
+ {item.label}
204
+ </motion.li>
205
+ ))}
206
+ </motion.ul>
207
+ ```
208
+
209
+ ### Scroll Reveal (Stripe)
210
+ ```tsx
211
+ // Use GSAP for this
212
+ gsap.from('.reveal', {
213
+ y: 60,
214
+ opacity: 0,
215
+ duration: 1,
216
+ ease: 'power3.out',
217
+ scrollTrigger: { trigger: '.reveal', start: 'top 85%' },
218
+ })
219
+ ```
220
+
221
+
222
+ ## Component Checklist (Finish Gate)
223
+
224
+ Every component must pass:
225
+
226
+ - [ ] **One clear action**: Primary CTA obvious
227
+ - [ ] **Color in small doses**: 1 accent, used only for actions
228
+ - [ ] **Whitespace separates**: No borders/shadows for separation
229
+ - [ ] **Real type hierarchy**: Display / Body / Hint (not 5 bold sizes)
230
+ - [ ] **Feedback matches action**: Press = visual, Done = quiet, Destructive = confirm
231
+ - [ ] **Dark mode works**: `theme="system"` wired
232
+ - [ ] **Reduced motion works**: Instant state changes
233
+ - [ ] **No em dashes**: In visible text
234
+ - [ ] **Accessibility**: Keyboard, ARIA, focus visible, contrast AA
235
+ - [ ] **TypeScript strict**: No `any`, discriminated unions
236
+ - [ ] **Tailwind component-based**: Tokens first, raw CSS only with reason
237
+
238
+
239
+ ## Anti-Patterns (Auto-Reject)
240
+
241
+ | Pattern | Rejection Reason |
242
+ |---------|------------------|
243
+ | Purple gradient background | AI slop marker |
244
+ | Glowing buttons | AI slop marker |
245
+ | Oversized rounded cards (2xl+) | AI slop marker |
246
+ | Floating orbs in hero | Unless product IS orbs |
247
+ | Stagger on every page load | Daily interactions = subtle/fast |
248
+ | Scroll-jacking | User owns scroll |
249
+ | Infinite marquee | Loops forever = no purpose |
250
+ | `transition: all 0.3s ease` | Lazy, animates layout |
251
+ | `ease-in-out` | Elevator curve, not UI |
252
+ | No reduced-motion support | Accessibility fail |
253
+ | Missing exit animation | One-frame vanish = flicker |
254
+ | Focus not trapped in modal | Keyboard trap |
255
+ | No ESC to close modal | UX fail |
256
+
257
+
258
+ ## Decision Tree (When User Says Vague Things)
259
+
260
+ | User Says | You Ask | You Pick |
261
+ |-----------|---------|----------|
262
+ | "Make it pop" | "Linear-sharp? Arc-playful? Stripe-gradient?" | One |
263
+ | "Add animations" | Load `motion` → Run Decide phase | Only what passes |
264
+ | "Nice toast" | Load `ask-toast` → `ask-sonner` | `richColors`, action buttons |
265
+ | "Command palette" | Load `ask-command-menu` → `ask-cmdk` | Full keyboard nav |
266
+ | "Smooth scroll" | Dial check: if 3 → GSAP+Lenis, else motion.dev | Appropriate lib |
267
+ | "Data table" | Load `ask-table` → `ask-tanstack-table` | Virtualized, sortable |
268
+ | "Form" | Load `ask-form` → `ask-rhf` | Zod schema, server actions |
269
+
270
+
271
+ ## Quick Reference: Skill Loading Map
272
+
273
+ ```
274
+ User: "Build the FE/UI"
275
+ │
276
+ ├─► ui-engineering (orchestrates all)
277
+ │ ├─► house-style (LAW)
278
+ │ ├─► ui (process)
279
+ │ ├─► pick-ui-library (per interaction)
280
+ │ │ ├─► ask-modal → ask-base-ui
281
+ │ │ ├─► ask-toast → ask-sonner
282
+ │ │ ├─► ask-animation → ask-motion (or ask-gsap if dial=3)
283
+ │ │ ├─► ask-command-menu → ask-cmdk
284
+ │ │ ├─► ask-form → ask-rhf
285
+ │ │ ├─► ask-table → ask-tanstack-table
286
+ │ │ ├─► ask-virtual-list → ask-virtuoso
287
+ │ │ └─► ask-drawer → ask-vaul
288
+ │ ├─► motion (name→decide→build→review)
289
+ │ ├─► impeccable (audit→polish→animate→verify)
290
+ │ └─► prototype (optional divergence)
291
+ │
292
+ └─► References: quality-bar + tokens + motion-recipes + component-checklist + navigation + search + pagination + progress-indicators + avatars + overlays + floating-actions + card-patterns + tailwind-architecture + ui-core (build, verify, system, accessibility, responsive, dark-mode, copy, direction, styles, redesign)
293
+ ```
@@ -0,0 +1,68 @@
1
+ # Search patterns
2
+
3
+ Rules for search input placement, behavior, and results. For keyboard
4
+ nav within results, see accessibility.md. For command-palette search,
5
+ see the cmdk skill.
6
+
7
+ ## Input placement
8
+
9
+ - Inline search: use when search is the primary action on a page
10
+ (inbox, docs, file browser). Full width on mobile, constrained on
11
+ desktop.
12
+ - Command palette: use when search is a power-user shortcut across the
13
+ whole product. Triggered by ⌘K, not always visible. See
14
+ ask-command-menu.
15
+ - Inline + command palette: both can coexist. Inline is the visible
16
+ entry point. Command palette is the keyboard-accessible expansion.
17
+ - Don't bury inline search inside a dropdown. If search is primary, it
18
+ should be visible.
19
+
20
+ ## Autocomplete and suggestions
21
+
22
+ - Show suggestions after 2 or more characters, not on focus alone.
23
+ Focus alone is a convenience, not a search trigger.
24
+ - Debounce: 200-300ms for local data, 300-500ms for remote. Faster
25
+ feels instant. Slower feels laggy.
26
+ - Keyboard nav: arrow keys move through results, Enter selects, Esc
27
+ closes. See accessibility.md for focus management.
28
+ - Highlight: bold the matching substring in results. Don't highlight
29
+ the whole result. That defeats the purpose.
30
+ - Recent searches: show below the input when empty, above live results
31
+ when typing. Max 5 recent items. Allow delete per item and clear all.
32
+
33
+ ## Empty search state
34
+
35
+ - No query yet: show placeholder text with a format hint ("Search
36
+ projects..."), not a label ("Search").
37
+ - No results: "No results for [query]" with a clear-filter action.
38
+ Don't show "Try different keywords". That's condescending.
39
+ - Error state: "Something went wrong" is never enough. Say what
40
+ happened and offer retry.
41
+
42
+ ## Result highlighting
43
+
44
+ - Highlight matching text in the result, not the surrounding context.
45
+ Context is helpful, but the match is what the user is looking for.
46
+ - Don't highlight more than 2 or 3 segments per result. Too much
47
+ highlighting looks like noise.
48
+ - Case-insensitive matching. Preserve original casing in results.
49
+
50
+ ## Keyboard nav within results
51
+
52
+ - Arrow keys navigate results, Enter selects, Esc closes. See
53
+ accessibility.md for focus-trap rules.
54
+ - Type-ahead: typing while results are open jumps to the next result
55
+ starting with that character. Don't require reopening the list.
56
+ - Don't trap focus in the search input. Tab should move to the next
57
+ interactive element, not cycle within results.
58
+
59
+ ## Don'ts
60
+
61
+ - Don't search on focus. Search is an action, not a reveal.
62
+ - Don't show more than 8 to 10 results without a "Show all" link.
63
+ Infinite scroll in search results is disorienting.
64
+ - Don't highlight every occurrence. One or two matches per result is
65
+ enough.
66
+ - Don't use dropdowns for search results. Dropdowns imply a single
67
+ selection. Search results imply a list of options.
68
+ - Don't forget the empty state. An empty result is still a result.