@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,436 @@
1
+ ---
2
+ name: ui-engineering
3
+ description: The complete UI engineering orchestrator. Load when user says "build the FE", "build the UI", "build the frontend", "make the UI", "design the frontend", or any request to build/design a frontend. This skill owns the quality of the interface. It does not wait for design instructions. It makes the decisions, builds the product, and ships finished UI.
4
+ ---
5
+
6
+ # UI Engineering: Master Orchestrator
7
+
8
+ **One job:** When user wants frontend/UI, this skill runs the complete process. It asks, plans, loads sub-skills, and ships masterpiece quality.
9
+
10
+ ---
11
+
12
+ ## Product-Ready UI Standard
13
+
14
+ This is the default quality bar for every frontend/UI task. It sits
15
+ above every phase. It is the operating principle, not a checklist item.
16
+
17
+ The objective is not merely to implement the requested UI.
18
+
19
+ The objective is to deliver a UI that feels like a real, intentional,
20
+ production-ready product.
21
+
22
+ The user should not need to supervise routine design decisions. When
23
+ requirements are sufficiently clear, make reasonable product and design
24
+ decisions autonomously. Do not repeatedly ask the user to choose colors,
25
+ spacing, typography, component shapes, interaction states, responsive
26
+ behavior, or animation details unless the choice materially affects the
27
+ product or business requirements.
28
+
29
+ ### Own the interface
30
+
31
+ Treat yourself as both the implementer and the product designer.
32
+
33
+ Do not interpret "build a dashboard" as "create some cards that
34
+ resemble a dashboard." Instead determine:
35
+
36
+ - What is the user's primary goal?
37
+ - What is the primary action?
38
+ - What information matters most?
39
+ - What should be visible immediately?
40
+ - What can be secondary or progressively disclosed?
41
+ - What happens when there is no data?
42
+ - What happens while loading?
43
+ - What happens when something fails?
44
+ - What happens after success?
45
+ - How does the workflow work on mobile?
46
+ - Which interactions should feel especially good?
47
+
48
+ Make those decisions yourself unless the project requirements require
49
+ user input.
50
+
51
+ ### Product-ready means more than visually polished
52
+
53
+ A UI is not complete simply because it has good colors, typography,
54
+ and spacing. A product-ready interface has:
55
+
56
+ 1. Clear product identity
57
+ 2. Clear information hierarchy
58
+ 3. A coherent interaction model
59
+ 4. Consistent component behavior
60
+ 5. Complete UI states
61
+ 6. Realistic content
62
+ 7. Responsive behavior
63
+ 8. Accessible interaction states
64
+ 9. Intentional motion
65
+ 10. A coherent visual language
66
+
67
+ Do not stop at "the page looks good." The finished result should feel
68
+ like someone deliberately designed the product.
69
+
70
+ ### Complete the states
71
+
72
+ Never design only the happy path. For every meaningful interactive
73
+ surface, consider:
74
+
75
+ - initial
76
+ - loading
77
+ - populated
78
+ - empty
79
+ - error
80
+ - disabled
81
+ - hover
82
+ - focus
83
+ - active
84
+ - selected
85
+ - success
86
+ - partial or limited
87
+ - permission denied
88
+ - offline where relevant
89
+
90
+ Empty states should explain what happened and what the user can do
91
+ next. Errors should be actionable. Loading states should preserve
92
+ layout where practical.
93
+
94
+ ### Use realistic content
95
+
96
+ Avoid lorem ipsum and obviously fake placeholder content unless the
97
+ task specifically requires placeholder data. Use realistic names,
98
+ titles, labels, descriptions, dates, statuses, numbers, file names,
99
+ and notifications. Copy is part of the interface. A polished layout
100
+ with obviously artificial content still looks unfinished.
101
+
102
+ ### Establish interaction consistency
103
+
104
+ The same interaction should behave the same way throughout the
105
+ product. Dropdowns open consistently. Menus have consistent spacing
106
+ and positioning. Destructive actions follow the same confirmation
107
+ pattern. Buttons have consistent height and feedback. Inputs have
108
+ consistent focus treatment.
109
+
110
+ ### Do not make everything a card
111
+
112
+ Cards are not a default layout primitive. Use cards when grouping
113
+ content benefits from a distinct surface. Otherwise prefer whitespace,
114
+ typography, dividers, lists, tables, inline controls, sections, and
115
+ grouped controls. If every element is boxed, nothing has hierarchy.
116
+
117
+ ### Responsive design is not an afterthought
118
+
119
+ Do not simply stack desktop elements vertically. Design mobile
120
+ intentionally. Determine what remains visible, what becomes a drawer,
121
+ what becomes sticky, what becomes horizontally scrollable, what
122
+ disappears, what changes priority, how navigation changes, and how
123
+ dense information is transformed.
124
+
125
+ ### Motion should communicate something
126
+
127
+ Animation is optional. Poor animation makes a product feel cheaper,
128
+ not better. Use motion when it explains hierarchy, communicates state,
129
+ guides attention, confirms an action, establishes spatial
130
+ relationships, makes an interaction feel natural, or reinforces product
131
+ identity. Respect prefers-reduced-motion. Do not add animation merely
132
+ because an animation library is available.
133
+
134
+ ### Visual restraint
135
+
136
+ Avoid decoration without purpose. Do not automatically use gradients,
137
+ glows, glassmorphism, excessive shadows, giant rounded cards, floating
138
+ blobs, particles, excessive borders, or excessive animation. These
139
+ techniques can be excellent when they belong to the product. They
140
+ should never be the default definition of "modern." A simple interface
141
+ with excellent hierarchy is better than a visually busy interface
142
+ trying to appear sophisticated.
143
+
144
+ ### Marketing pages need product storytelling
145
+
146
+ For marketing websites, do not fall into hero, three generic cards,
147
+ testimonials, CTA. Instead create a visual narrative. A strong default
148
+ structure is: statement, product proof, core workflow, explanation,
149
+ deeper product detail, trust and proof, final action. Whenever
150
+ possible, show the real product rather than replacing it with generic
151
+ illustrations.
152
+
153
+ ### Autonomous productization pass
154
+
155
+ Before declaring the UI complete, stop and review it as a product
156
+ designer. Ask:
157
+
158
+ - Does this feel like a specific product or a generic AI-generated
159
+ interface?
160
+ - Can a new user understand what matters within a few seconds?
161
+ - Is the primary action obvious?
162
+ - Is information organized without becoming cluttered?
163
+ - Do similar controls behave and look the same?
164
+ - Are loading, empty, error, disabled, hover, focus, selected, and
165
+ success states handled?
166
+ - Does the copy feel real?
167
+ - Does mobile feel intentionally designed?
168
+ - Can keyboard users understand and operate the interface?
169
+ - Does animation improve comprehension or interaction?
170
+ - Can anything be removed without reducing usability?
171
+ - Could this screenshot be mistaken for a generic template?
172
+
173
+ If the answer to the last question is yes, continue refining. Do not
174
+ merely report the problems. Fix them.
175
+
176
+ ### The final quality rule
177
+
178
+ Do not finish when "the requested components exist." Finish when "the
179
+ requested workflow works and the interface feels like a coherent
180
+ product."
181
+
182
+ The user should not have to provide a second round of instructions
183
+ saying "make it look more polished," "add empty states," "make mobile
184
+ better," "fix the spacing," "add hover states," or "make it feel less
185
+ generic." Anticipate these requirements and handle them during the
186
+ initial implementation.
187
+
188
+ The standard is:
189
+
190
+ FUNCTIONAL
191
+ -> USABLE
192
+ -> PRODUCT-READY
193
+ -> POLISHED
194
+ -> DISTINCTIVE
195
+
196
+ Default target: PRODUCT-READY + POLISHED. Go beyond that when the
197
+ product and available time justify it.
198
+
199
+ ---
200
+
201
+ ## The Quality Bar (Non-Negotiable)
202
+
203
+ Reference these. If the output doesn't feel like these, it's not done.
204
+
205
+ | Tier | References | What to Steal |
206
+ |------|------------|---------------|
207
+ | **SaaS Gold Standard** | Linear, Raycast, Stripe, Vercel, Arc, Attio/Cron | Command palette, page transitions, cursor states, scroll reveals, gradient morphs, geometric motion, micro-copy + micro-animation |
208
+ | **Agency/Showcase** | Awwwards SOTD, Locomotive, Basement.studio, Cuberto, Resn, Active Theory | GSAP/ScrollTrigger, smooth scroll (Lenis), parallax, WebGL, Rive |
209
+ | **Pattern Libraries** | Mobbin, Godly, SiteInspire | Real-world patterns, not hero-section porn |
210
+
211
+ **Libraries to use (via `pick-ui-library` + `ask-*` skills):**
212
+ - Primitives: `base-ui` (dialogs, popovers, selects, menus)
213
+ - Toasts: `Sonner`
214
+ - Motion: `motion.dev` (Framer Motion) + `GSAP` + `ScrollTrigger` + `Lenis`
215
+ - Command palette: `cmdk`
216
+ - Forms: `react-hook-form` + `zod`
217
+ - Tables: `TanStack Table`
218
+ - Virtual lists: `Virtuoso`
219
+ - Drawers: `Vaul`
220
+ - Interactive vectors: `Rive`
221
+
222
+ ---
223
+
224
+ ## Phase 0: Clarify (Mandatory: Never Skip)
225
+
226
+ Before ANY code, ask these. One round. Get answers.
227
+
228
+ ```markdown
229
+ ## UI Engineering Brief
230
+
231
+ **1. What is this?** (Landing page, dashboard, app shell, settings, onboarding, canvas, etc.)
232
+
233
+ **2. Who is it for?** (Devs, consumers, enterprise, internal tool)
234
+
235
+ **3. Vibe in one word?** (Clinical, playful, dense, editorial, brutal, calm, sharp)
236
+
237
+ **4. Animation dial?** (0 = none, 1 = micro only, 2 = meaningful transitions, 3 = showcase/motion-heavy)
238
+
239
+ **5. Must-have interactions?** (Command palette, drag-drop, canvas, real-time sync, keyboard shortcuts, etc.)
240
+
241
+ **6. Existing stack?** (Framework, styling, motion lib already installed: check package.json)
242
+
243
+ **7. Dark mode?** (Yes/No/System)
244
+
245
+ **8. Accessibility bar?** (WCAG AA default, higher if specified)
246
+ ```
247
+
248
+ **If user gives vague answers, push back with concrete options.** "Clinical like Linear? Playful like Arc? Dense like Bloomberg terminal?" Show reference screenshots if needed.
249
+
250
+ ---
251
+
252
+ ## Phase 1: Direction & Tokens (Load `ui` + `house-style`)
253
+
254
+ - `house-style` = law (philosophy, restraint, no purple slop)
255
+ - `ui` skill runs: Pick direction → Design system → Build screen → Verify
256
+ - Output: palette, type pairing, spacing, radius, shadow, motion character
257
+
258
+ **Token budget (constraint):**
259
+ - 1 accent color, 1 gray family, 1 radius scale, 1 icon family, 1 stroke weight, 1 motion curve family
260
+ - To add somewhere, remove elsewhere
261
+
262
+ ---
263
+
264
+ ## Phase 2: Component Architecture (Load `pick-ui-library`)
265
+
266
+ For EACH interaction needed, invoke `pick-ui-library` to get the right library, then load its `ask-*` skill.
267
+
268
+ | Interaction | Pattern Skill | Library Skill |
269
+ |-------------|---------------|---------------|
270
+ | Dialogs, sheets, popovers, menus, selects | `ask-modal` | `ask-base-ui` |
271
+ | Toasts, notifications, loading states | `ask-toast` | `ask-sonner` |
272
+ | Transitions, springs, scroll animations, gestures | `ask-animation` | `ask-motion` |
273
+ | Command palette (⌘K) | `ask-command-menu` | `ask-cmdk` |
274
+ | Forms, validation, server actions | `ask-form` | `ask-rhf` |
275
+ | Data tables, sorting, filtering, virtualization | `ask-table` | `ask-tanstack-table` |
276
+ | Long lists, infinite scroll | `ask-virtual-list` | `ask-virtuoso` |
277
+ | Drawers (mobile sheets) | `ask-drawer` | `ask-vaul` |
278
+
279
+ **Rule:** Never pick a library directly. Always go through `pick-ui-library` → it recommends → load the `ask-*` skill for implementation.
280
+
281
+ ---
282
+
283
+ ## Phase 3: Motion Design (Load `motion`)
284
+
285
+ `motion` skill runs: Name it → Decide → Build → Review
286
+
287
+ **House-style motion rules (law):**
288
+ - Fast, physical, quiet, purposeful
289
+ - State lands first. Nobody waits on a spring.
290
+ - Animate `transform` and `opacity` only. Layout animations stutter.
291
+ - Nothing loops forever.
292
+ - `prefers-reduced-motion: reduce` = instant state changes.
293
+ - One motion per event. Pick the element that carries the change.
294
+ - 200ms in, 150ms out. Spring curves (`cubic-bezier(0.16, 1, 0.3, 1)`), not keywords.
295
+ - Exits exist. Whatever appears animated leaves animated.
296
+
297
+ **For showcase tier (dial 3):** Add `GSAP` + `ScrollTrigger` + `Lenis` via `ask-motion`.
298
+
299
+ ---
300
+
301
+ ## Phase 4: Build & Verify (Load `impeccable`)
302
+
303
+ `impeccable` commands for each screen/component:
304
+ - `audit`: full UX/UI review against craft bar
305
+ - `polish`: micro-interactions, hover states, focus states, error states
306
+ - `animate`: add purposeful motion
307
+ - `verify`: finish gate (mandatory before ship)
308
+
309
+ **Finish gate checklist (from `impeccable/references/verify.md`):**
310
+ - [ ] One clear action per screen
311
+ - [ ] Color in small doses (1 accent)
312
+ - [ ] Whitespace separates, not borders/shadows
313
+ - [ ] Real type hierarchy (display, body, hint: not 5 bold sizes)
314
+ - [ ] Feedback matches action (press = visual state, done = quiet status, destructive = confirmation)
315
+ - [ ] Dark mode works (both themes, contrast, no inversion)
316
+ - [ ] Reduced motion works
317
+ - [ ] No em dashes in visible text
318
+ - [ ] Accessibility: keyboard nav, ARIA, focus visible, contrast, screen reader
319
+ - [ ] Responsive: 7 viewports, reflow not resize, touch targets 44px
320
+ - [ ] Forms: labels above, validate on blur, errors below, loading state
321
+ - [ ] Loading and skeletons: skeleton before spinner, progressive loading
322
+ - [ ] Component states: all 9 states defined (Default, Hover, Focus, Active, Disabled, Loading, Error, Empty, Selected)
323
+ - [ ] Design tokens: semantic naming, light/dark variants, no orphans
324
+ - [ ] i18n: text expansion handled, RTL tested, locale formatting
325
+ - [ ] Performance: CLS under 0.1, LCP under 2.5s, images optimized
326
+ - [ ] Mobile: bottom sheets, swipe actions, safe areas, thumb zone
327
+ - [ ] Notifications/badges: one purpose per badge, accessible
328
+ - [ ] Empty states: purpose clear, copy structured, CTA present
329
+
330
+ ---
331
+
332
+ ## Phase 5: Divergence (Optional: Load `prototype`)
333
+
334
+ When direction is ambiguous or user wants options:
335
+ - Load `prototype` skill
336
+ - Build 3 genuinely different variants on named axes (layout, density, personality, motion, interaction model)
337
+ - User picks winner → integrate into production
338
+
339
+ ---
340
+
341
+ ## Sub-Skill Loading Map
342
+
343
+ ```
344
+ User: "Build the FE/UI"
345
+ │
346
+ ├─► ui-engineering (THIS SKILL: orchestrates all)
347
+ │
348
+ ├─► house-style (LAW: always loaded)
349
+ │
350
+ ├─► ui (process: direction → system → build → verify)
351
+ │
352
+ ├─► pick-ui-library (for each interaction needed)
353
+ │ ├─► ask-modal → ask-base-ui
354
+ │ ├─► ask-toast → ask-sonner
355
+ │ ├─► ask-animation → ask-motion
356
+ │ ├─► ask-command-menu → ask-cmdk
357
+ │ ├─► ask-form → ask-rhf
358
+ │ ├─► ask-table → ask-tanstack-table
359
+ │ ├─► ask-virtual-list → ask-virtuoso
360
+ │ └─► ask-drawer → ask-vaul
361
+ │
362
+ ├─► motion (name → decide → build → review)
363
+ │
364
+ ├─► impeccable (audit → polish → animate → verify)
365
+ │
366
+ └─► prototype (optional: divergence exploration)
367
+ │
368
+ └─► References: references/quality-bar.md (sites, libraries, galleries)
369
+ ```
370
+
371
+ ---
372
+
373
+ ## Anti-Slop Rules (Enforced)
374
+
375
+ - **No Aceternity/Magic UI copy-paste.** Those are reference implementations. Build from primitives.
376
+ - **No purple gradients, glowing buttons, oversized rounded cards.** Ever.
377
+ - **No "hero section with floating orbs" unless the product IS orbs.**
378
+ - **No stagger on every load.** Stagger = rare moments only.
379
+ - **No scroll-jack, parallax, infinite marquee unless dial = 3 AND justified.**
380
+ - **Every component from primitives (base-ui) + custom composition.**
381
+ - **Real copy. Real data shapes. No lorem ipsum. No "Item 1, Item 2".**
382
+
383
+ ---
384
+
385
+ ## When User Says Vague Things: Translate
386
+
387
+ | User Says | You Do |
388
+ |-----------|--------|
389
+ | "Make it pop" | Ask: "Linear-sharp? Arc-playful? Stripe-gradient?" → Pick one |
390
+ | "Add animations" | Load `motion` → Run Decide phase → Build only what passes |
391
+ | "Nice toast" | Load `ask-toast` → `ask-sonner` → Implement with `richColors`, action buttons |
392
+ | "Command palette" | Load `ask-command-menu` → `ask-cmdk` → Full keyboard nav, fuzzy search |
393
+ | "Smooth scroll" | Load `ask-animation` → `ask-motion` → GSAP + Lenis + ScrollTrigger |
394
+ | "Data table" | Load `ask-table` → `ask-tanstack-table` → Virtualized, sortable, filterable |
395
+ | "Form" | Load `ask-form` → `ask-rhf` → Zod schema, server actions, loading states |
396
+
397
+ ---
398
+
399
+ ## Output Standard
400
+
401
+ Every deliverable:
402
+ 1. **Real component**: not a demo, production-ready
403
+ 2. **TypeScript**: strict, no `any`, discriminated unions for variants
404
+ 3. **Tailwind**: component-based, tokens first, raw CSS only when needed
405
+ 4. **Motion**: spring curves, reduced-motion, exits, state lands first
406
+ 5. **Accessibility**: keyboard, ARIA, focus, contrast
407
+ 6. **Dark mode**: `theme="system"` wired
408
+ 7. **Tests**: if test setup exists, add tests
409
+
410
+ ---
411
+
412
+ ## References
413
+
414
+ - `references/quality-bar.md`: Full site/library/gallery list with what to steal
415
+ - `references/tokens.md`: Token templates for each vibe
416
+ - `references/motion-recipes.md`: Common motion patterns with code
417
+ - `references/component-checklist.md`: Per-component finish gate
418
+ - `references/navigation.md`: Sidebar vs topbar, breadcrumbs, tabs, mobile nav, nested nav
419
+ - `references/search.md`: Search placement, autocomplete, debounce, empty state, highlighting, keyboard nav
420
+ - `references/pagination.md`: Numbered vs load-more vs infinite scroll, cursor vs offset, page-size, scroll restoration
421
+ - `references/progress-indicators.md`: Determinate vs indeterminate, step indicators, multi-stage, bar vs spinner vs skeleton
422
+ - `references/avatars.md`: Sizing, fallbacks, groups, presence dots, shape consistency
423
+ - `references/overlays.md`: Dropdown, tooltip, popover positioning, collision handling, placement rules
424
+ - `references/floating-actions.md`: FAB when-to-use, single vs speed-dial, placement, conflicts
425
+ - `references/card-patterns.md`: Card subtypes, elevation, clickable hit area, grid vs list
426
+ - `references/tailwind-architecture.md`: v3 vs v4, @theme vs theme.extend, token naming, dark-mode wiring
427
+ - `skills/ui/ui-core/references/build.md`: Anti-slop tells, hero rules, layout rules, typography, content, icons/imagery/motion, charts, testimonials, whitespace, type scale, color semantics, component states, icons, forms, loading, skeletons, i18n, composition, keyboard shortcuts, toasts, errors, performance, mobile, badges, empty states
428
+ - `skills/ui/ui-core/references/verify.md`: Finish gate, accessibility, dark mode, responsive, forms, loading, states, tokens, i18n, performance, mobile, notifications, empty states
429
+ - `skills/ui/ui-core/references/system.md`: Constraint budget, color, type, scale, spacing, radius, shadows, components, dark mode, responsive, accessibility, motion, iconography, DESIGN.md template
430
+ - `skills/ui/ui-core/references/accessibility.md`: Color contrast, focus management, ARIA, keyboard, screen reader
431
+ - `skills/ui/ui-core/references/responsive.md`: Breakpoints, reflow vs resize, container queries, touch targets, density shifts
432
+ - `skills/ui/ui-core/references/dark-mode.md`: CSS variables, Tailwind strategy, system preference, color adjustments, edge cases
433
+ - `skills/ui/ui-core/references/copy.md`: Voice, CTAs, error messages, labels, micro-copy tone
434
+ - `skills/ui/ui-core/references/direction.md`: Context questions, style families, token output, refine mode, signature interaction, productization pass
435
+ - `skills/ui/ui-core/references/styles.md`: Minimalist and brutalist style recipes
436
+ - `skills/ui/ui-core/references/redesign.md`: Workflow, feel contract, audit, priority order, product-quality pass
@@ -0,0 +1,74 @@
1
+ # Avatar patterns
2
+
3
+ Rules for sizing, fallbacks, groups, and presence indicators. For
4
+ accessibility, see accessibility.md.
5
+
6
+ ## Sizing scale
7
+
8
+ - xs 24px: inline with body text, comment threads, compact lists.
9
+ - sm 32px: default for most UI, list rows, table cells.
10
+ - md 40px: expanded lists, cards, comments.
11
+ - lg 56px: profile headers, detail pages.
12
+ - xl 80px: account pages, hero sections.
13
+ - Don't invent sizes between these. If 48px feels right, you're
14
+ solving a layout problem with a new size instead of using md or lg.
15
+
16
+ ## Fallback hierarchy
17
+
18
+ - Level 1: user-uploaded image. Load with lazy loading, show skeleton
19
+ or initials while loading.
20
+ - Level 2: initials. Generated from the user's name. One or two
21
+ characters, centered, contrasting background.
22
+ - Level 3: generic icon. Use only when there's no name to generate
23
+ initials from. Don't show a silhouette for every user without a photo.
24
+ Initials are more personal.
25
+ - Fallback background: use the accent color or a muted neutral. Don't
26
+ use a different color per user unless the color is derived from the
27
+ user's name or id (deterministic, not random).
28
+
29
+ ## Avatar groups / stacking
30
+
31
+ - Max 4 to 5 avatars visible before overflow. Show "+N" for the rest.
32
+ - Overlap: 25 to 33% overlap (avatar width minus gap). Gap should be
33
+ 2 to 4px.
34
+ - Overflow indicator: "+N" in a circle, same size as avatars, muted
35
+ background. Don't use a square or a different shape.
36
+ - Order: primary user first, then by relevance or alphabetically.
37
+ Don't reorder on every render.
38
+ - Click behavior: clicking the overflow indicator shows the full list.
39
+ Clicking an avatar navigates to that user's profile.
40
+
41
+ ## Presence / status dot
42
+
43
+ - Placement: bottom-right of the avatar, offset by 2 to 4px. Don't
44
+ center it. It overlaps the avatar content.
45
+ - Size: 25% of avatar width. 6px for sm (32px), 8px for md (40px),
46
+ 10px for lg (56px).
47
+ - Colors: green (online), amber (away), red (busy), gray (offline).
48
+ Don't use semantic colors for non-semantic states.
49
+ - Border: 2px solid background color to separate dot from avatar edge.
50
+ Don't use a shadow. It bleeds.
51
+ - Don't show presence for groups. Presence is per user, not per group.
52
+
53
+ ## Shape consistency
54
+
55
+ - Circle: default for user avatars. Use everywhere, no exceptions.
56
+ - Square: use for teams, projects, or organizations. Radius 4 to 8px,
57
+ same as the product's radius language.
58
+ - Don't mix circles and squares in the same avatar group. Pick one
59
+ shape per context.
60
+ - Rounded square: acceptable for teams, but don't use for users. User
61
+ avatars are circles.
62
+
63
+ ## Don'ts
64
+
65
+ - Don't show broken-image icons as fallbacks. Use initials or generic
66
+ icon.
67
+ - Don't stack more than 5 avatars without an overflow indicator. Six
68
+ overlapping circles is noise.
69
+ - Don't use presence dots for non-presence states. A dot is not a
70
+ notification badge.
71
+ - Don't change avatar size within the same component. Size is per
72
+ context, not per user.
73
+ - Don't use random colors for fallback backgrounds. Derive from name
74
+ or id, or use a single accent.
@@ -0,0 +1,66 @@
1
+ # Card patterns
2
+
3
+ Rules for card subtypes, elevation, and layout. For card anti-patterns,
4
+ see ui-core/references/build.md.
5
+
6
+ ## Card subtypes
7
+
8
+ - Media card: image or video on top, text below. Use for articles,
9
+ products, portfolio items. Image aspect ratio is fixed per row.
10
+ - Text-only card: no media, just text content. Use for settings,
11
+ notes, descriptions. Relies on typography and whitespace, not
12
+ imagery.
13
+ - Action card: contains one or more actions. Use for tasks, tickets,
14
+ requests. Action buttons are at the bottom, always visible.
15
+ - Stat/summary card: shows a single metric with optional context. Use
16
+ for dashboards, analytics. Number is dominant, label is secondary.
17
+ - Don't mix subtypes in the same row. A media card next to a stat card
18
+ is fine. A media card next to an action card in the same row needs a
19
+ documented reason.
20
+
21
+ ## Elevation and border rules
22
+
23
+ - Elevated card: shadow or border-top. Use when the card needs to float
24
+ above the surface (draggable, clickable, in a grid).
25
+ - Flat card: border only, no shadow. Use when cards are in a dense
26
+ list or table. Shadow on dense cards creates visual noise.
27
+ - No card: use when the content doesn't need grouping. A single text
28
+ block doesn't need a card wrapper.
29
+ - Dark mode: eliminate shadow, use border. See ui-core/references/
30
+ dark-mode.md.
31
+
32
+ ## Clickable card hit area
33
+
34
+ - The whole card is clickable, but the hit area is the card bounds plus
35
+ padding. Don't make the image clickable and the text unclickable, or
36
+ vice versa.
37
+ - Focus state: the whole card gets a focus ring when focused via
38
+ keyboard. Don't only focus the link inside.
39
+ - Hover state: subtle background tint or border shift. Don't lift the
40
+ card on hover. That's a card flip, not a hover state.
41
+ - Don't put interactive elements inside a clickable card unless the
42
+ whole card navigates. A card that navigates but contains a button is
43
+ ambiguous. Does the button navigate or does the card?
44
+
45
+ ## Card grid vs list layout
46
+
47
+ - Grid: use when cards have similar height and the user is browsing.
48
+ Bento grid for mixed content, uniform grid for homogeneous content.
49
+ - List: use when cards are dense, have variable height, or the user is
50
+ scanning. List is more compact than grid.
51
+ - Don't force grid for variable-height content. If cards have
52
+ different heights, use a masonry layout or a list. A uniform grid
53
+ with empty space is sloppy.
54
+
55
+ ## Don'ts
56
+
57
+ - Don't put cards inside cards. If you need nested content, use a
58
+ card with a header and body, not two cards.
59
+ - Don't use cards for single items. A single button doesn't need a card
60
+ wrapper.
61
+ - Don't add shadow to every card. Shadow is for hierarchy, not
62
+ decoration. Flat cards are valid.
63
+ - Don't make every card clickable. Some cards are containers, not
64
+ links. A card with a "Delete" button is not a link.
65
+ - Don't use different card styles in the same row without a documented
66
+ reason. Consistency within a section is a craft requirement.
@@ -0,0 +1,65 @@
1
+ # Floating action buttons
2
+
3
+ Rules for when a FAB earns its place, placement, and variants. For
4
+ mobile patterns and thumb-zone rules, see responsive.md.
5
+
6
+ ## When a FAB earns its place
7
+
8
+ - FAB is for the primary action on a screen that is not in the header
9
+ or content. Examples: compose new email, add new item, create post.
10
+ - If the primary action is already visible in the header or content,
11
+ do not add a FAB. One primary action per screen, one place to find it.
12
+ - Do not use FAB for secondary actions. A FAB that says "Share" next to
13
+ a primary "Create" button is the wrong pattern. The secondary action
14
+ belongs in a menu or inline.
15
+ - Avoid on dense screens. FABs need whitespace to breathe. On a dense
16
+ dashboard, a FAB is noise.
17
+
18
+ ## Single vs speed-dial
19
+
20
+ - Single FAB: use when there is one primary action. The default.
21
+ - Speed-dial: use when there are 2 to 4 related actions that share the
22
+ same context. Expands on tap, showing smaller FABs stacked.
23
+ - Do not use speed-dial for unrelated actions. If the actions are
24
+ "Save", "Share", and "Delete", they do not belong in a speed-dial.
25
+ Save and Share might. Delete is separate.
26
+ - Do not use speed-dial on mobile unless the parent FAB is clearly
27
+ labeled. An unlabeled FAB that expands into more unlabeled FABs is
28
+ unusable.
29
+
30
+ ## Placement across breakpoints
31
+
32
+ - Desktop: bottom-right corner, 24px from edges. Matches the toast
33
+ placement zone.
34
+ - Tablet: bottom-right corner, 16px from edges.
35
+ - Mobile: bottom-right corner, 16px from edges, above the bottom nav
36
+ if present. If there is a bottom nav, the FAB floats above it, not
37
+ behind it.
38
+ - Do not place FAB in the top-right. That is where secondary actions and
39
+ menus live. FAB is primary, bottom-right.
40
+ - Do not cover content. The FAB should float above content, not push it
41
+ down. Use fixed positioning, not margin.
42
+
43
+ ## Conflict rules
44
+
45
+ - Bottom nav: FAB floats above the nav, not behind it. The FAB is
46
+ closer to the content edge than the nav.
47
+ - Bottom sheet: FAB hides when a bottom sheet is open. Two floating
48
+ elements compete for the same space.
49
+ - Scroll: FAB hides on scroll down, reappears on scroll up. Do not hide
50
+ on scroll up. The user is moving toward the action.
51
+ - Do not show FAB on a screen with no primary action. If there is nothing
52
+ to create, there is no FAB.
53
+
54
+ ## Avoid
55
+
56
+ - Do not use FAB for navigation. FAB is for creation or primary action,
57
+ not for moving between screens.
58
+ - Do not use FAB as a "more" button. If you need more actions, use a
59
+ menu or a bottom sheet.
60
+ - Do not animate FAB on every scroll event. Hide/show on scroll
61
+ direction change, not on every pixel.
62
+ - Do not use FAB on landing pages. Landing pages have one CTA in the
63
+ hero. A FAB implies the user is inside the product.
64
+ - Do not label FAB with text unless it is a speed-dial parent. FAB is
65
+ icon-only. If the action needs a label, it is not a FAB.