@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,70 @@
1
+ # Copy and UX writing
2
+
3
+ Banning em dashes and Lorem Ipsum is not a copy standard, it is two
4
+ prohibitions. This is the standard.
5
+
6
+ ## Voice and mood
7
+
8
+ - CTAs and instructions: imperative mood. "Save changes", "Add member".
9
+ Not "You can save your changes" or "Saving changes".
10
+ - Sentence case for everything: buttons, headings, labels, menu items.
11
+ Title Case only for proper nouns. No ALL CAPS except the eyebrow
12
+ style already defined in system.md (11px uppercase tracking).
13
+ - One register for the whole product: pick plain-and-direct or
14
+ warm-and-conversational, not both. A confirm dialog that says
15
+ "Oops! Something went sideways" next to a button that says
16
+ "Terminate session" is two products.
17
+
18
+ ## CTAs and labels
19
+
20
+ - Verb + object, specific to the action: "Delete project", not
21
+ "Delete" alone when ambiguous, not "Yes" for a destructive confirm.
22
+ - Never label a button with what it is ("Submit button"). Label it
23
+ with what happens ("Create account").
24
+ - Max about 3 words for standard actions, but never truncate to
25
+ ambiguity. "Send" beats "Send inv." every time. Fix the button width
26
+ instead.
27
+
28
+ ## Error messages
29
+
30
+ Structure: what happened + what to do. Both parts, every time.
31
+
32
+ - Bad: "Error." / "Something went wrong." / "Invalid input."
33
+ - Good: "Couldn't save. Check your connection and try again."
34
+ "Email already in use. Sign in instead or use a different address."
35
+ - Name the field for form errors: "Password must be 8+ characters",
36
+ not "Invalid field" pointing vaguely at the form.
37
+ - Never expose raw technical detail (stack traces, status codes) in
38
+ user-facing copy. Log it. Show the human version. A "Show details"
39
+ disclosure is fine for power users, collapsed by default.
40
+ - Recovery action is a real next step (retry button, link to fix,
41
+ contact support). Not just restating the problem.
42
+
43
+ ## Label brevity
44
+
45
+ - Form labels: 1-3 words, no trailing colon, no "Please enter your...".
46
+ "Email" not "Please enter your email address:".
47
+ - Nav items: single words or short noun phrases, consistent part of
48
+ speech across the set (all nouns, not "Dashboard / Analyzing / Team").
49
+ - Tooltips and hints: one short sentence. If it needs two, it's not a
50
+ tooltip, it's a help panel.
51
+
52
+ ## Micro-copy tone
53
+
54
+ - Empty states: say what the user can do next (system.md already sets
55
+ this), in one line, imperative. "Add your first project" not
56
+ "No projects yet." alone.
57
+ - Success confirmations: quiet and brief. A saved indicator or a toast
58
+ under about 6 words. Save the words for things that need them.
59
+ - Placeholders inside inputs show a format example, never the label
60
+ itself (no placeholder-as-label, per system.md). "you@company.com",
61
+ not "Email".
62
+ - Loading copy, if any text is shown at all beyond a skeleton: describe
63
+ what's happening, not a generic "Loading...". Prefer no text over a
64
+ spinner-plus-vague-label when the skeleton already communicates it.
65
+
66
+ ## Verify additions
67
+
68
+ Add to the Phase 5 gate: every error state has a what-happened and a
69
+ what-to-do [dom], one copy register audited across the full page
70
+ [code], no placeholder-as-label anywhere [dom].
@@ -0,0 +1,76 @@
1
+ # Dark mode
2
+
3
+ "Dark mode works" is not a spec. This is the spec.
4
+
5
+ ## CSS variable architecture
6
+
7
+ - Semantic tokens, not raw colors, at every call site:
8
+ `bg-canvas`, `bg-surface`, `text-primary`, `text-muted`, `border`,
9
+ not `bg-white` / `bg-black` / `text-gray-900` anywhere in components.
10
+ - Two value sets behind the same token names, swapped by a `.dark`
11
+ class or `data-theme` attribute on `<html>`. Never per-component
12
+ `dark:` overrides scattered through the codebase for anything that's
13
+ a reusable token (page-specific one-offs are the only exception).
14
+ - Define the tokens once, in one file (`globals.css` or the design
15
+ system entry point). Components consume tokens; they don't define
16
+ colors.
17
+
18
+ ## Tailwind dark: strategy
19
+
20
+ - `darkMode: 'class'` (or `'selector'` in v4), not `'media'`. The
21
+ toggle needs to be user-controlled, not OS-only.
22
+ - Prefer semantic utility classes (`bg-surface`) over `dark:` variants
23
+ (`bg-white dark:bg-gray-900`) wherever the token system covers it.
24
+ Use `dark:` only for the token definitions themselves or genuine
25
+ one-offs.
26
+
27
+ ## System preference detection
28
+
29
+ - Default to `prefers-color-scheme` on first load (no flash of wrong
30
+ theme. Set the class before paint, for example inline script or SSR
31
+ cookie, not after hydration).
32
+ - Persist an explicit user choice (localStorage or cookie) once they
33
+ toggle it. That choice overrides the system preference until they
34
+ clear it or pick "system" again.
35
+ - Offer three states where a toggle exists: light, dark, system. Not
36
+ just a binary switch, unless the product genuinely has no system-sync
37
+ need.
38
+
39
+ ## Color adjustment rules
40
+
41
+ - Don't invert. Redesign each token. A light `canvas` (#fff) does not
42
+ become dark `canvas` (#000). It becomes a tinted near-black
43
+ (#0a0a0b to #121214 range), matching system.md's "no pure black"
44
+ rule in both themes.
45
+ - Reduce saturation on accents in dark mode. The same saturated hue
46
+ reads as glowing/neon against a dark background. Drop 10-20% and
47
+ usually lighten slightly.
48
+ - Text: dark mode primary text is off-white (#e8e8ea range), not pure
49
+ white. Pure white on dark surfaces creates halation/glare.
50
+ - Borders: light-mode borders are often a light gray. The dark-mode
51
+ equivalent is usually a lighter value than you'd guess (a border
52
+ needs contrast against a dark surface too), not just "the dark
53
+ version of the same gray."
54
+
55
+ ## Edge cases
56
+
57
+ - Shadows: box-shadows tuned for light mode disappear or look wrong on
58
+ dark surfaces. Use a lighter border or a subtle inset highlight
59
+ instead of a shadow for elevation in dark mode, or tint the shadow
60
+ color to something other than black (system.md already says tint
61
+ shadows to background hue. This applies doubly in dark mode).
62
+ - Images and logos: photos may need a slight brightness/contrast
63
+ reduction on dark backgrounds. Logos with dark-only ink need a light
64
+ variant swapped in, not just displayed as-is.
65
+ - Illustrations with transparent backgrounds: check they don't assume
66
+ a white canvas behind them (visible white halos or boxes).
67
+ - Code blocks / syntax highlighting: needs its own light/dark theme
68
+ pair, not the page's generic tokens.
69
+ - Charts: data-viz palettes need contrast-checked dark variants, not
70
+ the same hues dimmed uniformly.
71
+
72
+ ## Verify additions
73
+
74
+ Add to the Phase 5 gate: both themes hit AA contrast [dom], no
75
+ literal white/black utility classes in component code [code], theme
76
+ persists across reload and matches system on first load [dom].
@@ -0,0 +1,99 @@
1
+ # Direction
2
+
3
+ ## Context questions (max 3 per round, one word each where possible)
4
+
5
+ 1. What is it: landing, SaaS, dashboard, internal tool, portfolio,
6
+ e-commerce, dev tool, CLI wrapper, blog, mobile-first app.
7
+ 2. Who is it for: consumers, developers, enterprise, portfolio viewers.
8
+ 3. The vibe in one word. If they cannot say it, infer it and state it
9
+ back before proceeding.
10
+ 4. Constraints: brand color, logo, light, dark, both, none.
11
+ 5. The motion dial: 1 static, 5 a few signature moments, 10 cinematic.
12
+ Ask explicitly, never assume.
13
+ 6. The density dial only when not obvious: 1 airy, 5 normal app,
14
+ 10 cockpit.
15
+
16
+ ## Style families
17
+
18
+ Shortlist 2-3, never one, never all. The default is always clean SaaS
19
+ (house-style).
20
+
21
+ | Family | Feel | Anchor |
22
+ |---|---|---|
23
+ | Clean SaaS | Apple/Google calm, bought not generated | Linear, Vercel, Stripe |
24
+ | Minimalist | warm monochrome, editorial quiet | recipes in styles.md |
25
+ | Brutalist | raw grids, military terminal | recipes in styles.md |
26
+
27
+ Match on project type, audience, and the vibe word. Enterprise
28
+ dashboards almost never get brutalism. Consumers and enterprise want
29
+ whitespace and polish.
30
+
31
+ ## Present options
32
+
33
+ For each: name, one-line feel, why it fits this project, one concrete
34
+ visual anchor. Tight, a few lines.
35
+
36
+ ## Token output
37
+
38
+ 1. Palette hexes: background, surface, border, text, primary, accent.
39
+ Light and dark.
40
+ 2. Type pairing: real font names plus the scale.
41
+ 3. Spacing and radius.
42
+ 4. Shadows or the explicit line "no shadows".
43
+ 5. Motion character in one line.
44
+ 6. Ready to paste: Tailwind v4 @theme in globals.css, or v3
45
+ theme.extend. Diff against existing tokens, never replace
46
+ everything.
47
+ 7. Semantics: bg-background text-foreground border-border. No raw hex
48
+ in JSX.
49
+
50
+ ## Refine-existing mode
51
+
52
+ - Audit first: list current primitives and duplicated one-offs.
53
+ - Extract principles, not pixels.
54
+ - Protect: brand colors, logo, layout, copy. State the user's non-goals
55
+ as hard constraints.
56
+ - Output a token diff.
57
+
58
+ ## Tailwind strictness
59
+
60
+ - Tailwind is the only styling output. No raw CSS leakage, no
61
+ module.css, no style props except dynamic runtime values.
62
+ - Detect v4 vs v3 and wire it before coding.
63
+ - Existing tokens are the source of truth. Extend, do not duplicate.
64
+ - In monorepos, shared tokens live in packages/ui.
65
+ - Keyframes live in @theme for v4, not in separate CSS files.
66
+
67
+ ## Signature interaction
68
+
69
+ Pick one product-native interaction and do it exceptionally well:
70
+ command palette for tools, direct manipulation for canvas, inline
71
+ editing for docs. Hand-buildable code by default; name a library only
72
+ when it is genuinely better (3D, particles).
73
+
74
+ ## Productization pass (when the ask is a product, not a page)
75
+
76
+ 1. Identity: one distinctive visual idea that comes from the product's
77
+ purpose.
78
+ 2. Information architecture: the most important thing is dominant and
79
+ understood in seconds.
80
+ 3. Interaction model: every action has an obvious model and a visible
81
+ state.
82
+ 4. Component language: one small grammar, same behavior everywhere.
83
+ 5. Density: one intentional level.
84
+ 6. Hierarchy before decoration: structure first, effects last.
85
+ 7. Signature interaction: one memorable, product-appropriate moment.
86
+ 8. Micro-polish: focus rings, pressed states, tooltips, cursors,
87
+ truncation as one system.
88
+ 9. Remove generic AI UI: cards everywhere, rounded containers, gradient
89
+ backgrounds, oversized heroes, badges, decorative icons, default
90
+ 3-column grids.
91
+ 10. Screenshot test: it must look like a shipped product with no
92
+ context.
93
+
94
+ ## Reference products (study the why, never copy the pixels)
95
+
96
+ Excalidraw: direct manipulation, forgiving. Linear: dense but calm.
97
+ Raycast: finished utility. Vercel: restrained system. Figma: complex
98
+ coherence. Notion: approachable scale. Stripe: typography and density.
99
+ Arc: intentional weirdness.
@@ -0,0 +1,74 @@
1
+ # Redesign or audit
2
+
3
+ ## The workflow
4
+
5
+ 1. Scan: read the codebase, find the framework, the styling method, the
6
+ current patterns.
7
+ 2. Diagnose: run the audit below, list every generic pattern and weak
8
+ point.
9
+ 3. Fix: targeted upgrades on the existing stack. Never rewrite from
10
+ scratch.
11
+
12
+ Preserve: information architecture, slugs, nav labels, copy voice,
13
+ accessibility, analytics.
14
+
15
+ ## The feel contract (write first, 3-5 lines)
16
+
17
+ 1. Temperament in one word: calm, playful, precise, rugged.
18
+ 2. What the product believes: one sentence.
19
+ 3. Anti-goals: what it refuses to be.
20
+ 4. Two reference products and why they feel good.
21
+ 5. Where the feel lives: 2-3 contact points, like stroke language,
22
+ spring feel, or selection behavior.
23
+
24
+ Test: would a user who loves the reference recognize this as the same
25
+ product?
26
+
27
+ ## The audit
28
+
29
+ - Typography: font swap, display presence, 65ch body, weights 500/600,
30
+ tabular figures, text-wrap balance.
31
+ - Color: no pure black, accent under 80% saturation, one gray family,
32
+ no AI gradients, tinted shadows.
33
+ - Layout: break symmetry, kill the three equal cards, 100dvh, grid over
34
+ flex, 1400px max.
35
+ - Interactivity: hover, pressed, focus rings, skeletons, composed empty
36
+ states, inline errors, no dead links.
37
+ - Content: real names, organic numbers, banned cliches, sentence case,
38
+ no exclamation marks.
39
+ - Components: cards only with elevation, tertiary buttons, no pill
40
+ badges, side-by-side FAQ entries.
41
+ - Icons: non-cliche metaphors, one stroke weight, branded favicon.
42
+ - Code: semantic HTML, z-index scale, no dead code, meta tags.
43
+
44
+ ## Priority order
45
+
46
+ P0 broken or confusing. P1 visibly unfinished. P2 major quality.
47
+ P3 polish. Fix all P0 before any P2.
48
+
49
+ Upgrade levers in order: typography, spacing, color, motion, hero,
50
+ then the full block.
51
+
52
+ ## Product-quality pass (for app-like surfaces)
53
+
54
+ - Full-state audit: instant operations have no loader, short operations
55
+ a subtle indicator, long operations progress plus context. Empty
56
+ states say what to do. Errors say what happened and how to recover.
57
+ - Feedback mechanism: direct manipulation gets a visual state on the
58
+ thing itself; completed work gets a small contextual status;
59
+ destructive gets confirm only when dangerous; undoable gets undo
60
+ over confirm.
61
+ - Keyboard-first: tool activation, undo redo, Escape exits, no focus
62
+ traps, no mouse-only controls.
63
+ - First-run: lightweight guidance that self-disappears.
64
+ - Finish details: no layout jump, consistent panel directions, selected
65
+ controls stay selected, no clipped shadows, no hover-caused movement,
66
+ no dead controls.
67
+ - The 10-minute test: walk the core journey and ask at each step:
68
+ understood, feedback, unfinished, slow. Then describe the feeling of
69
+ each interaction.
70
+
71
+ ## Do not overdesign
72
+
73
+ Must not become a copy of Linear, Notion, Figma, or a glassmorphism
74
+ dashboard. When in doubt, remove.
@@ -0,0 +1,77 @@
1
+ # Responsive design
2
+
3
+ The seven verify viewports (1440, 1280, 1024, 768, 640, 390, 375) tell
4
+ you where to check. This file tells you what should change at each
5
+ stop and why.
6
+
7
+ ## Breakpoint scale
8
+
9
+ Tailwind defaults, used as-is unless the brief specifies devices:
10
+
11
+ - `sm` 640: large phone / small phone landscape.
12
+ - `md` 768: tablet portrait.
13
+ - `lg` 1024: tablet landscape / small laptop.
14
+ - `xl` 1280: laptop.
15
+ - `2xl` 1536: desktop.
16
+
17
+ Don't invent custom breakpoints for one component. If a card wraps
18
+ badly at 810px, that's a component fix (min-width, flex-wrap), not a
19
+ new breakpoint.
20
+
21
+ ## Reflow vs resize
22
+
23
+ - Resize (same layout, smaller): fine down to the point text or targets
24
+ break. Most spacing scales this way (clamp(), fluid type).
25
+ - Reflow (structure changes) happens at these tiers, matching Phase 5's
26
+ hierarchy rule:
27
+ - Desktop (1024+): full chrome. Sidebar visible, multi-column,
28
+ secondary actions inline.
29
+ - Tablet (768–1023): reduced secondary chrome. Sidebar collapses to
30
+ icon rail or drawer, 2-column becomes stacked where content needs
31
+ the width.
32
+ - Mobile (<768): one column, primary action first, secondary actions
33
+ behind a menu or moved below the fold.
34
+ - A "squeezed desktop" (same layout, everything just smaller and
35
+ cramped) at any tier fails verify.
36
+
37
+ ## Container queries vs media queries
38
+
39
+ - Use a container query when a component's layout depends on the space
40
+ it has, not the viewport (a card that's sometimes in a 3-column
41
+ grid, sometimes a sidebar).
42
+ - Use a media query for page-level structure: nav, page grid, whether a
43
+ sidebar exists at all.
44
+ - Don't container-query something that only ever appears full-width.
45
+ That's a media query with extra steps.
46
+
47
+ ## Touch targets
48
+
49
+ - 44x44px minimum hit area (per verify.md), including padding. A 24px
50
+ icon with 10px padding on each side clears it. A bare 24px icon does
51
+ not.
52
+ - Adjacent tappable targets (list row actions, toolbar icons): 8px
53
+ minimum gap so mis-taps don't fire the neighbor.
54
+ - Targets near screen edges or in a bottom bar get extra margin. Thumb
55
+ reach is worse at the very edge.
56
+ - Desktop-only affordances (small close buttons, drag handles) can stay
57
+ small only if they never render on a touch viewport.
58
+
59
+ ## Density shifts per viewport
60
+
61
+ - Desktop: information density can be higher. More columns, inline
62
+ metadata, hover-revealed actions.
63
+ - Mobile: density drops. One primary value per row, secondary info
64
+ becomes a second line, hover actions become always-visible or
65
+ swipe/long-press.
66
+ - Tables: desktop keeps the table. Mobile becomes stacked cards (label:
67
+ value pairs) once columns can't fit at 16px min column width.
68
+ Never horizontal-scroll a data table as the only mobile treatment
69
+ unless the data is genuinely tabular-only (for example, a
70
+ spreadsheet-like tool).
71
+
72
+ ## Verify additions
73
+
74
+ Per class (already in verify.md) plus: container-queried components
75
+ tested at their narrowest realistic container, not just narrowest
76
+ viewport; bottom-bar/thumb-zone targets checked with extra edge margin
77
+ on mobile.
@@ -0,0 +1,42 @@
1
+ # Style recipes
2
+
3
+ Only when explicitly asked. The default is always the clean Apple/Google
4
+ look from the main skill.
5
+
6
+ ## Minimalist
7
+
8
+ - Type: SF Pro Display, Geist, or Helvetica Neue for body. Editorial
9
+ serif for heroes and quotes with tracking -0.02em to -0.04em, leading
10
+ 1.1. Mono for labels.
11
+ - Colors: white or warm off-white canvas, near-black text, 1px light
12
+ dividers. Pastel accents only: pale red, pale blue, pale green, pale
13
+ yellow, each with dark readable text.
14
+ - Radius: 8px max, 12px for cards. No pill containers.
15
+ - Buttons: near-black fill, white text, radius 4-6px, no shadow, hover
16
+ darkens or scales to 0.98.
17
+ - Borders: 1px solid #EAEAEA everywhere. No shadow-md and above.
18
+ - Layout: asymmetric grid, bento, generous py-24 to py-32 whitespace.
19
+ - Motion: fade-up 12px over 600ms with ease-out spring, stagger 80ms,
20
+ hover shadow at 2px 8px and 0.04 opacity.
21
+ - Bans: gradients, neon, glassmorphism, rounded-full containers, emojis,
22
+ cliche copy.
23
+
24
+ ## Brutalist
25
+
26
+ Two archetypes, pick one, never mix.
27
+
28
+ Swiss Industrial Print: off-white substrate, heavy sans uppercase
29
+ (Archivo Black, Monument Extended), visible 1px grid lines,
30
+ viewport-bleeding numerals, one harvest red accent. Zero radius.
31
+ clamp() type at extreme scale.
32
+
33
+ Tactical Telemetry: dark exclusive, mono dominance (JetBrains Mono, IBM
34
+ Plex Mono), tabular data, ASCII framing, crosshairs, phosphor glow,
35
+ scanlines, low bit depth. Terminal green for one element max.
36
+
37
+ - Color: one substrate. Light: #F4F4F0 canvas with near-black text and
38
+ red accent. Dark: #0A0A0A or #121212, never pure black.
39
+ - Layout: strict grid anchoring, 1px or 2px solid borders, full-width
40
+ rules, bimodal density, zero border radius.
41
+ - Effects: halftone and dithering, CRT scanlines, low-opacity noise.
42
+ - Bans: gradients, shadows, translucency.
@@ -0,0 +1,190 @@
1
+ # Design system
2
+
3
+ ## Constraint budget
4
+
5
+ One accent, one gray family, one radius scale, one icon family, one
6
+ stroke weight, one motion curve family, one surface language. Every
7
+ addition needs a reason tied to the product.
8
+
9
+ ## Color
10
+
11
+ - Max one accent, saturation under 80%.
12
+ - One gray family: warm or cool, not both.
13
+ - No pure black: use tinted near-blacks.
14
+ - Neutral roles: canvas, surface, text, muted text, border.
15
+ - Pastel accents with dark text for tags and badges.
16
+ - One palette per project. Accent identical across the page.
17
+ - No purple or blue AI gradients anywhere.
18
+ - Semantic colors: success, warning, danger, info. Each gets one hue,
19
+ used only in that role. Warning never borrows from accent. Danger never
20
+ borrows from warning.
21
+ - Dark mode: invert the neutral scale, keep the accent hue, reduce
22
+ saturation by 10-20%. See Dark mode in build.md.
23
+
24
+ ## Type
25
+
26
+ - Sans body candidates: Geist, Outfit, Cabinet Grotesk, Satoshi. Inter
27
+ and Roboto are the AI default; banned unless the brand names one.
28
+ - Display: tight tracking, leading near 1.1, negative letter spacing.
29
+ - Body: 16px base, line-height 1.6, max width 65ch.
30
+ - Data: tabular figures (font-variant-numeric).
31
+ - One family. Italic or bold of the same family for emphasis.
32
+ - Serif only when the brand asks or the brief is editorial.
33
+ - Modular scale: major third (1.25), perfect fourth (1.333), or golden
34
+ ratio (1.618). See Type scale in build.md.
35
+
36
+ ## Scale
37
+
38
+ - Three levels: headline, sentence, hint. Never five sizes of bold.
39
+ - Headline under 8 words. Subtext under 25 words.
40
+ - Tighter tracking as size grows.
41
+ - text-wrap balance and pretty for headers.
42
+ - Weight ladder: 400 for body, 500 for emphasis, 600 for labels, 700
43
+ for display. No 800 or 900 in UI text.
44
+ - Leading: display at 1.05 to 1.1, body at 1.5 to 1.6, caption at 1.4.
45
+ - Mono for data only: JetBrains Mono, IBM Plex Mono, or Geist Mono.
46
+ Never mono for body copy.
47
+
48
+ ## Spacing
49
+
50
+ - Macro whitespace first: py-24 to py-40 for sections.
51
+ - Section gaps: clamp(3rem, 8vw, 6rem).
52
+ - Content max width 1400px or max-w-7xl.
53
+ - Component padding: p-6 to p-8 for cards, p-4 for compact controls.
54
+ Inconsistent padding is a visual error.
55
+ - Density ladder: hero is sparse, feature section is medium, data table
56
+ is dense. One density per section.
57
+ - Minimum section padding: py-12 on mobile, py-16 on tablet, py-24 on
58
+ desktop. Never drop below py-12 between distinct sections.
59
+
60
+ ## Radius
61
+
62
+ - One radius language per page: sharp 0, all-soft 12-16px, or all-pill.
63
+ Mixed only with a documented rule.
64
+ - The bought-not-generated band: 12 to 30px. Skip the 40px outliers.
65
+
66
+ ## Shadows
67
+
68
+ - Tint shadows to the background hue.
69
+ - Diffuse, low opacity. shadow-md and above are banned as defaults.
70
+ - High density: 1px lines instead of cards.
71
+ - Dark mode: eliminate shadows or use very subtle diffused shadows.
72
+ Borders replace shadows for separation.
73
+
74
+ ## Components
75
+
76
+ - Buttons: flat or barely rounded, solid contrast, no glow, no gradient.
77
+ Pressed state: scale 0.98. One CTA per intent, no duplicated labels.
78
+ - Cards: only when elevation is hierarchy. No cards in cards. High
79
+ density: border-top instead.
80
+ - Inputs: label above, error below, accent focus ring. No
81
+ placeholder-as-label, no floating labels.
82
+ - Badges: pastel, pill, tiny. Max one per metadata line.
83
+ - Skeleton loaders shaped like the content, not spinners.
84
+ - Empty states that say what the user can do next.
85
+ - Icon system: stroke weight 1.5px for data-dense, 2px for marketing.
86
+ 16px inline, 20px section headers, 24px standalone, 32px+ feature.
87
+ See Icon system in build.md.
88
+ - Form design: label above, validate on blur, error below input, submit
89
+ button shows loading state. See Form design in build.md.
90
+ - Component state matrix: every interactive component defines Default,
91
+ Hover, Focus, Active, Disabled, Loading, Error, Empty, Selected.
92
+ See Component state matrix in build.md.
93
+
94
+ ## Dark mode
95
+
96
+ - CSS variable architecture: all colors via CSS variables. Light and
97
+ dark variants in :root and .dark.
98
+ - Tailwind strategy: use dark: prefix. Never hardcode colors in JSX.
99
+ - System preference: default to system. Allow manual override with
100
+ localStorage. Respect prefers-color-scheme.
101
+ - Color adjustments: reduce saturation 10-20% in dark mode. Dark
102
+ backgrounds need lighter text, not darker.
103
+ - Accent: keep same hue, increase lightness 5-10% in dark mode.
104
+ - Shadows: eliminate in dark mode. Borders replace shadows.
105
+ - Images: don't invert. Use opacity adjustments if needed. SVG icons
106
+ with currentColor adapt automatically.
107
+ - Text: never pure white on pure black. Use gray-50 to gray-100 on
108
+ gray-900 to gray-950. Minimum 4.5:1 contrast.
109
+ - Testing: verify every screen in both light and dark mode.
110
+
111
+ ## Responsive
112
+
113
+ - Breakpoint scale: sm 640, md 768, lg 1024, xl 1280, 2xl 1536.
114
+ Mobile first.
115
+ - Reflow before resize: at each breakpoint, ask if layout should reflow
116
+ or resize. Reflow wins.
117
+ - Container queries: use when component width depends on parent, not
118
+ viewport.
119
+ - Touch targets: 44x44px minimum on touch devices. 8px minimum gap
120
+ between targets.
121
+ - Density shifts: mobile gets larger targets and less dense content.
122
+ Desktop gets more columns and tighter spacing.
123
+ - Horizontal scroll banned: no element overflows container on any
124
+ viewport.
125
+ - Typography: use clamp() for font sizes. Scale with viewport.
126
+ - Navigation: hamburger on mobile, full nav on desktop.
127
+ - Tables: horizontal scroll on mobile, full table on desktop.
128
+ - Modals: full-screen on mobile, centered on desktop.
129
+ - Forms: single column on mobile, multi-column on desktop.
130
+
131
+ ## Accessibility
132
+
133
+ - Color contrast: 4.5:1 for body, 3:1 for large text and UI.
134
+ - Focus management: every interactive element keyboard reachable. Focus
135
+ order follows visual order.
136
+ - Focus visible: 2px minimum, high contrast, visible on light and dark.
137
+ - ARIA: semantic HTML first. ARIA only when HTML falls short.
138
+ - Screen reader: decorative icons aria-hidden. Status messages
139
+ aria-live="polite". Errors aria-live="assertive".
140
+ - Touch targets: 44x44px on mobile, 32x32px on desktop.
141
+ - Forms: every input has label. Error linked with aria-describedby.
142
+ Required uses required attribute.
143
+ - Landmarks: header, main, nav, footer, aside. One main per page. Skip
144
+ links for keyboard users.
145
+ - Error prevention: destructive actions have confirmation. Validation
146
+ before submission.
147
+
148
+ ## Motion
149
+
150
+ - Spring curves: cubic-bezier(0.16, 1, 0.3, 1). No ease-in-out.
151
+ - Durations: 200ms in, 150ms out. Micro means micro.
152
+ - Animate transform and opacity only. Layout animations stutter.
153
+ - One motion per event. Two springs competing reads as glitch.
154
+ - Exits exist. No one-frame vanishes.
155
+ - State lands first. Motion is polish on top.
156
+ - Interruptible: next event cancels current. Nobody waits.
157
+ - Reduced motion: all states instant. No springs, no entrances.
158
+ - Animation state machine: Idle, Entering, Entered, Active, Exiting,
159
+ Exited, Disabled, Error, Loading, Updating. See Animation state
160
+ machine in build.md.
161
+
162
+ ## Iconography
163
+
164
+ - Families: Phosphor, Radix, Tabler, or Doton. One family per product.
165
+ - Stroke weight: 1.5px for data-dense, 2px for marketing.
166
+ - Sizing: 16px inline, 20px headers, 24px standalone, 32px+ feature.
167
+ - Filled vs outline: filled for active/selected, outline for default.
168
+ - Duo-tone: primary filled, secondary outline.
169
+ - Triple-tone: three opacity stops for illustrations, not navigation.
170
+ - Decoration limit: one decorative icon per component max.
171
+ - Accessibility: decorative icons aria-hidden. Meaningful icons have
172
+ aria-label or title.
173
+
174
+ ## DESIGN.md (when a design system doc is asked for)
175
+
176
+ Ten mandatory sections:
177
+
178
+ 1. Visual theme and atmosphere: density, variance, motion bands.
179
+ 2. Color palette and roles: descriptive name, hex, functional role,
180
+ light/dark variants, semantic colors.
181
+ 3. Typography: families, scale, usage rules, responsive behavior.
182
+ 4. Component stylings: each component with its states, variants,
183
+ composition patterns.
184
+ 5. Layout principles: grid, containers, responsive behavior, breakpoints.
185
+ 6. Motion and interaction: curves, durations, state machine, what
186
+ animates.
187
+ 7. Accessibility: contrast, focus, ARIA, keyboard, screen reader.
188
+ 8. Dark mode: CSS variable architecture, color adjustments, testing.
189
+ 9. Iconography: family, stroke weight, sizing, variants, usage rules.
190
+ 10. Anti-patterns: the banned list for this project.
@@ -0,0 +1,37 @@
1
+ # Verify (the finish gate)
2
+
3
+ Nothing ships without this gate. Evidence classes: [capture] screenshot
4
+ at the stated viewport, [dom] computed style or DOM check, [code]
5
+ source with file:line. Assertions are not evidence.
6
+
7
+ ## The gate
8
+
9
+ 1. Seven viewports render without overflow: 1440, 1280, 1024, 768, 640,
10
+ 390, 375. [capture]
11
+ 2. Hierarchy changes per class, not just shrinks: desktop full chrome,
12
+ tablet reduced secondary chrome, mobile one-column with primary
13
+ action first. A squeezed desktop is a failed adaptation. [capture]
14
+ 3. No surface renders blank: every list, panel, search, trash has empty,
15
+ loading, and error states. [dom]
16
+ 4. Error states explain what happened and give a recovery action. [dom,
17
+ code]
18
+ 5. No P0 or P1 issues remain. [code, dom]
19
+ 6. Feedback matches the mechanism table. [code]
20
+ 7. Keyboard: Escape exits transient states, focus never gets trapped,
21
+ no mouse-only controls. [code, dom]
22
+ 8. First-run guidance exists and self-disappears. [capture]
23
+ 9. prefers-reduced-motion respected. [code]
24
+ 10. The 10-minute journey runs clean at every step. [per-step result]
25
+ 11. Lint and build pass. [command output]
26
+
27
+ Per class also verify: nav collapse, hero reflow, multi-column
28
+ fallbacks, touch targets at 44px minimum, nothing scrolls horizontally,
29
+ container-queried components at their narrowest realistic container.
30
+
31
+ Accessibility, responsive, dark mode, and copy each have a dedicated
32
+ gate. See references/accessibility.md, references/responsive.md,
33
+ references/dark-mode.md, references/copy.md.
34
+
35
+ Zero failures to declare done. Fix and re-run the failed rows. If no
36
+ browser tooling exists, say "visual verification was NOT performed" and
37
+ downgrade captures to dom and code. Never skip silently.