@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Nalin Dalal
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,351 @@
1
+ # skillset
2
+
3
+ 69 agent skills in 10 categories (ui, backend, devops, architecture, engineering, quality, business, nerdev, ai-agent, workflow) with a CLI to install them into any harness (Claude Code, OpenCode, Cursor, Codex, Gemini) and a CI/CD pipeline that syncs a handful from upstream repos.
4
+
5
+ > **Owned, not copied.** Synced skills are a base, not the final word. Any skill
6
+ > you care about gets a `curations/<skill>/` layer that survives every upstream
7
+ > re-sync: your taste, your whys, never clobbered. See [Ownership model](#ownership-model).
8
+
9
+ ## What's inside
10
+
11
+ ### Categories
12
+
13
+ ```
14
+ skills/
15
+ ├── ui/ 28 skills Components, animations, design systems
16
+ ├── backend/ 5 skills API, auth, database, realtime, security
17
+ ├── devops/ 4 skills CI/CD, deployment, testing, performance
18
+ ├── architecture/ 4 skills Planning, onboarding, research
19
+ ├── engineering/ 4 skills TDD, code review, verification, standards
20
+ ├── quality/ 2 skills Writing quality, anti-slop
21
+ ├── business/ 8 skills Freelancing, startup, career, marketing
22
+ ├── nerdev/ 3 skills Nerdev skill family
23
+ ├── ai-agent/ 2 skills Agent docs, context management
24
+ └── workflow/ 7 skills Ship, context, health, learn
25
+ ```
26
+
27
+ ### Synced from upstream (5 skills, auto-updated nightly)
28
+
29
+ | Upstream | Skills |
30
+ | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
31
+ | [pbakaus/impeccable](https://github.com/pbakaus/impeccable) (59k★) | `ui/impeccable`: 23 design commands, 59 deterministic detector rules, live browser iteration |
32
+ | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill) (77k★) | `quality/output-skill` |
33
+ | [emilkowalski/skills](https://github.com/emilkowalski/skills) (30k★) | `ui/ask-sonner`, `ui/pick-ui-library`, `ui/prototype` |
34
+ | [cursor/plugins pstack](https://github.com/cursor/plugins/tree/main/pstack/skills/unslop) | `quality/unslop`: cuts AI tells from any writing |
35
+
36
+ These four repos are pinned in `vendor.json`. `.github/workflows/sync.yml` checks them nightly and opens a PR when they move. You never hand-copy a file from them.
37
+
38
+ ### Everything else (64 skills, owned outright)
39
+
40
+ Not synced from anywhere. Written for this repo, live only here, edited directly in `skills/<category>/<name>/`.
41
+
42
+ **ui/**: `house-style` (the law: how UI, code, and docs should look and feel), `ui-engineering` (loads the rest of the UI family for a full build), `ui-core` (whole UI job: direction → system → build → verify), `typography-picker` (font pairing, type scale, text motion), `motion` (whole motion job: name → decide → build → review), `imagegen` (design-reference image generation), `frontend-craftsmanship` (product design thinking, visual systems, interaction design, reverse engineering, learning roadmap), `product-site` (product site architecture: which pages exist, what each page accomplishes, page relationships, legal/trust/support/operational pages), `product-messaging` (landing page content hierarchy, hero/value prop/section copy, what each section should actually communicate).
43
+
44
+ **Pattern → library pairs**: ask "how do I build X" and you get the pattern skill; it names the library and hands off to the library-specific guide:
45
+
46
+ | Pattern skill | Hands off to |
47
+ | ------------------ | --------------------------------------------------- |
48
+ | `ui/ask-modal` | `ui/ask-base-ui` |
49
+ | `ui/ask-toast` | `ui/ask-sonner` |
50
+ | `ui/ask-animation` | `ui/ask-motion` (or `ui/ask-gsap` for showcase-tier) |
51
+ | `ui/ask-form` | `ui/ask-rhf` |
52
+ | `ui/ask-table` | `ui/ask-tanstack-table` |
53
+ | `ui/ask-command-menu` | `ui/ask-cmdk` |
54
+ | `ui/ask-virtual-list` | `ui/ask-virtuoso` |
55
+ | `ui/ask-drawer` | `ui/ask-vaul` |
56
+
57
+ **backend/**: `api-design`, `auth`, `database`, `realtime`, `security`.
58
+
59
+ **devops/**: `deployments`, `git-ci`, `performance`, `testing`.
60
+
61
+ **architecture/**: `blueprint` (multi-PR construction plans), `code-tour` (guided codebase walkthroughs), `search-first` (research-before-coding), `progress-guard` (catches motion-not-progress on side work).
62
+
63
+ **engineering/**: `tdd-workflow` (RED/GREEN/REFACTOR cycle), `code-review` (confidence-weighted, noise-free review), `verification-loop` (6-phase pre-PR gate), `coding-standards` (cross-project conventions).
64
+
65
+ **quality/**: `unslop` (cuts AI tells), `output-skill` (elite writing quality).
66
+
67
+ **nerdev/**: `nerdev-monorepo` (Turborepo + Bun structure, CI/CD, deploy), `nerdev-docs` (ADRs, design docs, runbooks), `nerdev-abstraction` (interface-first, registry-based plug-and-play).
68
+
69
+ **ai-agent/**: `agent-docs-writer` (README/AGENTS.md), `ultra-context-engine` (token-efficiency layer).
70
+
71
+ **business/**: `freelancing`, `startup-founder`, `resume-revamp-jake-ats`, `pricing` (SaaS pricing strategy, value metrics, tiers), `customer-research` (interviews, surveys, persona generation, JTBD), `copywriting` (landing page copy, headlines, CTAs), `launch` (ORB framework, five-phase approach, Product Hunt), `marketing-psychology` (mental models, persuasion, buyer behavior), `brag` (turn any project into a launch video with Hyperframes).
72
+
73
+ **workflow/**: `office-hours` (YC-style product interrogation), `ship` (detect base, test, review, commit, push, PR), `careful` (destructive command guardrails), `context-save` (save working state to disk), `context-restore` (restore from saved context), `health` (code quality dashboard with composite scoring), `learn` (project learnings manager).
74
+
75
+ ## Install
76
+
77
+ **Via GitHub (no npm account/token needed, always works):**
78
+
79
+ ```bash
80
+ npx github:NalinDalal/skillset install # install all skills, all harnesses (global)
81
+ bunx github:NalinDalal/skillset install # bun equivalent
82
+ ```
83
+
84
+ **From npm (if/when published as `@nalindalal/skillset`):**
85
+
86
+ ```bash
87
+ npx @nalindalal/skillset install
88
+ bunx @nalindalal/skillset install
89
+ ```
90
+
91
+ **From the repo directly:**
92
+
93
+ ```bash
94
+ git clone https://github.com/NalinDalal/skillset.git
95
+ cd skillset
96
+ npm link # or bun link, then `skillset` is on your PATH
97
+ ```
98
+
99
+ ## Quick start (local project)
100
+
101
+ ```bash
102
+ # 1. Install skills into your project
103
+ cd my-project
104
+ skillset install --scope project --target opencode # or claude, cursor, etc.
105
+
106
+ # 2. Open your agent in that directory
107
+ opencode # or claude, cursor, etc.
108
+
109
+ # 3. Say what you want, the matching skill loads automatically
110
+ > add a toast notification to this page
111
+ # → ask-toast fires → hands off to ask-sonner → you get working code
112
+
113
+ # Or name a skill explicitly if it doesn't auto-load
114
+ > use the motion skill to review these animations
115
+ ```
116
+
117
+ That's it. Skills are just markdown files your agent reads, no build step, no runtime. Install them, then talk to your agent naturally.
118
+
119
+ ## Usage
120
+
121
+ ```bash
122
+ skillset list # see all 66 skills + descriptions
123
+ skillset install # everything → ~/.claude, ~/.config/opencode, ~/.cursor, ~/.agents, ~/.gemini
124
+ skillset install --skill ui/motion # just one skill (category/name)
125
+ skillset install --target claude,opencode # only specific harnesses
126
+ skillset install --scope project # into ./project/.claude/skills etc. instead of global
127
+ skillset install --dry-run # preview without touching anything
128
+ skillset install --undo # remove everything this CLI installed
129
+ skillset sync # pull latest from the 4 upstream repos (local)
130
+ ```
131
+
132
+ Restart or reload your agent after installing:
133
+ - **OpenCode**: just start a new session (`opencode`)
134
+ - **Claude Code**: `/clear` or start a new session
135
+ - **Cursor**: reload window (`Cmd+Shift+P` → "Reload Window")
136
+ - **Codex**: start a new session
137
+
138
+ ## What to say for what you want
139
+
140
+ Skills fire from their description, not from a command you type. Say what you want in plain words; the closest-matching skill loads. If it doesn't auto-load, name it: _"use the motion skill to review these animations."_
141
+
142
+ **UI / frontend:**
143
+
144
+ | You say | Skill fires |
145
+ | -------------------------------------------------------- | ------------------------------------------------------------------ |
146
+ | "build the FE / build the frontend / design the UI" | `ui/ui-engineering` (loads the rest of the UI family) |
147
+ | "make this screen not look templated" | `ui/ui-core` |
148
+ | "what's it called when a popover bounces open" | `ui/motion` |
149
+ | "pick a design direction / theme" | `ui/ui-core`, `ui/house-style` |
150
+ | "pick a font / typeface / type scale / text motion" | `ui/typography-picker` |
151
+ | "generate a web/mobile design reference" | `ui/imagegen` |
152
+ | "add a modal / dialog / sheet / popover / menu / select" | `ui/ask-modal` → `ui/ask-base-ui` |
153
+ | "add a toast / notification / loading state" | `ui/ask-toast` → `ui/ask-sonner` |
154
+ | "add animations / transitions / motion" | `ui/ask-animation` → `ui/ask-motion` (or `ui/ask-gsap` for showcase) |
155
+ | "build a form with validation" | `ui/ask-form` → `ui/ask-rhf` |
156
+ | "build a data table / sorting / filtering" | `ui/ask-table` → `ui/ask-tanstack-table` |
157
+ | "add a command palette / ⌘K" | `ui/ask-command-menu` → `ui/ask-cmdk` |
158
+ | "build a virtual list / infinite scroll / feed / chat" | `ui/ask-virtual-list` → `ui/ask-virtuoso` |
159
+ | "add a mobile drawer / bottom sheet" | `ui/ask-drawer` → `ui/ask-vaul` |
160
+ | "what pages does my product site need" | `ui/product-site` (page architecture, funnel, legal/support/auth pages) |
161
+ | "write my landing page / hero copy / value prop" | `ui/product-messaging` (what to say, section hierarchy, actual copy) |
162
+
163
+ **Backend / dev workflow:**
164
+
165
+ | You say | Skill fires |
166
+ | --------------------------------------------------------------------- | ------------------------ |
167
+ | "design/review this REST or tRPC or GraphQL API" | `backend/api-design` |
168
+ | "add auth / OAuth / JWT / MFA / passwordless" | `backend/auth` |
169
+ | "design the Prisma schema / optimize this query" | `backend/database` |
170
+ | "set up CI / commit conventions / release automation" | `devops/git-ci` |
171
+ | "reduce bundle size / fix Core Web Vitals / find a memory leak" | `devops/performance` |
172
+ | "build live cursors / chat / multiplayer / presence" | `backend/realtime` |
173
+ | "harden security / add CSP / rate limiting / review security posture" | `backend/security` |
174
+ | "write tests / set up Vitest or Playwright / fix flaky tests" | `devops/testing` |
175
+
176
+ **Architecture / planning:**
177
+
178
+ | You say | Skill fires |
179
+ | --------------------------------------------------------------------- | -------------------------------- |
180
+ | "plan a complex feature / break work into PRs" | `architecture/blueprint` |
181
+ | "create a codebase walkthrough for onboarding" | `architecture/code-tour` |
182
+ | "research existing solutions before building" | `architecture/search-first` |
183
+
184
+ **Engineering / quality:**
185
+
186
+ | You say | Skill fires |
187
+ | --------------------------------------------------------------------- | -------------------------------- |
188
+ | "write tests first / use TDD" | `engineering/tdd-workflow` |
189
+ | "review this code / check for issues" | `engineering/code-review` |
190
+ | "verify before PR / run all checks" | `engineering/verification-loop` |
191
+ | "enforce coding standards / clean code" | `engineering/coding-standards` |
192
+
193
+ **Repo & process:**
194
+
195
+ | You say | Skill fires |
196
+ | ------------------------------------------------- | ------------------------------- |
197
+ | "help me deploy this repo to a VPS/EC2" | `devops/deployments` |
198
+ | "write an AGENTS.md / audit this README" | `ai-agent/agent-docs-writer` |
199
+ | "clean up this sloppy AI-sounding text" | `quality/unslop` |
200
+ | "scaffold a new Turborepo + Bun monorepo" | `nerdev/nerdev-monorepo` |
201
+ | "add a plug-and-play tool system with a registry" | `nerdev/nerdev-abstraction` |
202
+ | "create an ADR / design doc / incident template" | `nerdev/nerdev-docs` |
203
+
204
+ **Business:**
205
+
206
+ | You say | Skill fires |
207
+ | ---------------------------------- | ------------------------------- |
208
+ | "I want to start freelancing" | `business/freelancing` |
209
+ | "should I build this startup idea" | `business/startup-founder` |
210
+ | "revamp my resume for this JD" | `business/resume-revamp-jake-ats` |
211
+ | "help me price this SaaS" | `business/pricing` |
212
+ | "what are customers actually saying" | `business/customer-research` |
213
+ | "write copy for this landing page" | `business/copywriting` |
214
+ | "plan a Product Hunt launch" | `business/launch` |
215
+ | "why do people buy this stuff" | `business/marketing-psychology` |
216
+ | "make a launch video for this" | `business/brag` |
217
+
218
+ **Workflow:**
219
+
220
+ | You say | Skill fires |
221
+ | ---------------------------------- | ------------------------------- |
222
+ | "brainstorm this idea" | `workflow/office-hours` |
223
+ | "ship it / create a PR" | `workflow/ship` |
224
+ | "be careful with that command" | `workflow/careful` |
225
+ | "save my progress" | `workflow/context-save` |
226
+ | "where was I / resume" | `workflow/context-restore` |
227
+ | "code health check" | `workflow/health` |
228
+ | "what have we learned" | `workflow/learn` |
229
+
230
+ `architecture/progress-guard` and `ai-agent/ultra-context-engine` don't wait to be called by name. They run in the background whenever their trigger conditions show up in the conversation (side-work-instead-of-shipping, and token-budget pressure, respectively).
231
+
232
+ **See what's installed:** `skillset list`. **Remove one:** `skillset install --undo --skill ui/motion`.
233
+
234
+ ### Using your local skills (nerdev/*)
235
+
236
+ The three `nerdev/*` skills live in `skills/nerdev/` but **aren't managed by the sync script**. They're owned directly in this repo, same as everything in "Everything else" above.
237
+
238
+ **Option A: Use from this repo (recommended)**
239
+
240
+ ```bash
241
+ # From skillset root
242
+ opencode # opencode.json points to ./skills
243
+ # skill nerdev/nerdev-monorepo → works
244
+ ```
245
+
246
+ **Option B: Symlink globally (works everywhere)**
247
+
248
+ ```bash
249
+ ln -sf /path/to/skillset/opencode.json ~/.config/opencode/opencode.json
250
+ # Now in ANY directory:
251
+ opencode
252
+ # skill nerdev/nerdev-monorepo → works
253
+ ```
254
+
255
+ **Option C: Copy to a project**
256
+
257
+ ```bash
258
+ cp -r /path/to/skillset/skills/nerdev/nerdev-monorepo /my-project/.opencode/skills/
259
+ # In /my-project:
260
+ opencode
261
+ # skill nerdev/nerdev-monorepo → works
262
+ ```
263
+
264
+ **Compose them:**
265
+
266
+ ```bash
267
+ skill nerdev/nerdev-monorepo # Repo skeleton + conventions
268
+ skill nerdev/nerdev-abstraction # Plug-and-play architecture
269
+ skill nerdev/nerdev-docs # Living docs + ADRs + runbooks
270
+ ```
271
+
272
+ ## CI/CD: how updates flow
273
+
274
+ The `.github/workflows/sync.yml` workflow runs **nightly at 03:00 UTC** (and on demand via _Actions → Sync upstream skills → Run workflow_):
275
+
276
+ 1. `scripts/sync.mjs` shallow-clones each upstream repo from `vendor.json`, compares the pinned commit against `origin/HEAD`
277
+ 2. If upstream moved, the skill folders are re-vendored into `skills/` and `vendor.json` is bumped
278
+ 3. Every owned skill's `curations/<skill>/overlay/` is re-applied on top: upstream churn never overwrites your voice
279
+ 4. A PR titled `chore: sync skills from upstreams` is auto-opened against `main`
280
+ 5. Merge it, then publish:
281
+
282
+ ```bash
283
+ npm version patch && npm publish
284
+ ```
285
+
286
+ `.github/workflows/sync.yml` also runs `npm run lint:ste` on every push. Every owned `.md` file has to stay under 5.0 STE violations per 100 words (synced upstream files are exempt).
287
+
288
+ New versions flow: upstream repo → nightly sync → PR → merge → publish → `npx @nalindalal/skillset install` on any machine.
289
+
290
+ ## Ownership model
291
+
292
+ Upstream SKILL.md files encode someone else's judgment about someone else's
293
+ codebase. The moment a skill matters to you, it should encode yours.
294
+
295
+ ```text
296
+ curations/
297
+ <skill>/
298
+ overlay/ # your owned versions, copied over skills/<category>/<skill>/ after EVERY sync
299
+ WHY.md # why you own it this way; read by sync, never shipped
300
+ ```
301
+
302
+ - **Pick what to own.** Upstream never ships a file you've overlaid. Your
303
+ version always wins. Everything else in that skill still tracks upstream.
304
+ - **Never edit `skills/<category>/<skill>/` directly** for the 5 synced skills. The next
305
+ sync deletes the folder. If you want it in your voice, put it in
306
+ `curations/<skill>/overlay` first. (This does not apply to the 61 owned
307
+ skills, those you edit directly, since nothing re-vendors them.)
308
+ - **Write the why.** `WHY.md` is the difference between curation and
309
+ copy-paste. Future-you and future agents read it.
310
+
311
+ Try it:
312
+
313
+ ```bash
314
+ cp -R curations/TEMPLATE curations/impeccable # then fill in overlay/ + WHY.md
315
+ npm run sync # overlay survives, check git diff
316
+ ```
317
+
318
+ ## Manual sync
319
+
320
+ ```bash
321
+ node scripts/sync.mjs # check + apply updates
322
+ node scripts/sync.mjs --dry-run # report only
323
+ node scripts/sync.mjs --repo taste-skill # one upstream only
324
+ ```
325
+
326
+ ## Structure
327
+
328
+ ```
329
+ skills/
330
+ ├── ui/ # UI components, animations, design systems
331
+ ├── backend/ # API, auth, database, realtime, security
332
+ ├── devops/ # CI/CD, deployment, testing, performance
333
+ ├── architecture/ # Planning, onboarding, research
334
+ ├── engineering/ # TDD, code review, verification, standards
335
+ ├── quality/ # Writing quality, anti-slop
336
+ ├── business/ # Freelancing, startup, career, marketing
337
+ ├── nerdev/ # Nerdev skill family
338
+ ├── ai-agent/ # Agent docs, context management
339
+ └── workflow/ # Ship, context save/restore, health, learn
340
+
341
+ curations/<name>/ # your ownership layer: overlay/ + WHY.md (never touched by sync)
342
+ vendor.json # upstream repos + pinned commits + skill maps
343
+ scripts/sync.mjs # re-vendor logic (used by CI and manually)
344
+ scripts/ste-gate.mjs # STE prose-quality gate, runs on every push
345
+ bin/skillset.mjs # the CLI (npm bin target)
346
+ .github/workflows/sync.yml # nightly auto-sync + PR
347
+ ```
348
+
349
+ ## License
350
+
351
+ MIT: see [LICENSE](LICENSE).
@@ -0,0 +1,205 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * skillset: install, list, and sync agent skills from this repo.
4
+ *
5
+ * skillset list list available skills
6
+ * skillset install [--skill <name>]... install into agent harnesses
7
+ * --target claude,opencode,cursor,codex,gemini (default: all detected)
8
+ * --scope global|project (default: global)
9
+ * --dry-run
10
+ * skillset sync [--dry-run] re-vendor from upstream repos
11
+ */
12
+
13
+ import { execSync } from "node:child_process";
14
+ import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync } from "node:fs";
15
+ import { homedir } from "node:os";
16
+ import { dirname, join, resolve } from "node:path";
17
+ import { fileURLToPath } from "node:url";
18
+
19
+ const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
20
+ const SKILLS_DIR = join(ROOT, "skills");
21
+
22
+ const HARNESSES = {
23
+ claude: { global: join(homedir(), ".claude", "skills"), project: ".claude/skills" },
24
+ opencode: { global: join(homedir(), ".config", "opencode", "skills"), project: ".opencode/skills" },
25
+ cursor: { global: join(homedir(), ".cursor", "skills"), project: ".cursor/skills" },
26
+ codex: { global: join(homedir(), ".agents", "skills"), project: ".agents/skills" },
27
+ gemini: { global: join(homedir(), ".gemini", "skills"), project: ".gemini/skills" },
28
+ };
29
+
30
+ const args = process.argv.slice(2);
31
+ const command = args[0] ?? "help";
32
+ const rest = args.slice(1);
33
+
34
+ function flag(name) {
35
+ for (let i = 0; i < rest.length; i++) {
36
+ if (rest[i] === `--${name}`) {
37
+ const next = rest[i + 1];
38
+ if (next && !next.startsWith("--")) return next;
39
+ } else if (rest[i].startsWith(`--${name}=`)) {
40
+ return rest[i].split("=").slice(1).join("=");
41
+ }
42
+ }
43
+ return undefined;
44
+ }
45
+ function hasFlag(name) {
46
+ return rest.includes(name);
47
+ }
48
+ function flagValues(name) {
49
+ const vals = [];
50
+ for (let i = 0; i < rest.length; i++) {
51
+ if (rest[i] === `--${name}`) {
52
+ const next = rest[i + 1];
53
+ if (next && !next.startsWith("--")) {
54
+ vals.push(next);
55
+ i++;
56
+ }
57
+ } else if (rest[i].startsWith(`--${name}=`)) {
58
+ vals.push(rest[i].split("=").slice(1).join("="));
59
+ }
60
+ }
61
+ return vals;
62
+ }
63
+
64
+ function walkSkills(dir, prefix) {
65
+ const results = [];
66
+ for (const e of readdirSync(dir, { withFileTypes: true })) {
67
+ if (!e.isDirectory()) continue;
68
+ const rel = prefix ? `${prefix}/${e.name}` : e.name;
69
+ const full = join(dir, e.name);
70
+ if (existsSync(join(full, "SKILL.md"))) {
71
+ results.push(rel);
72
+ }
73
+ results.push(...walkSkills(full, rel));
74
+ }
75
+ return results;
76
+ }
77
+
78
+ function listSkills() {
79
+ return walkSkills(SKILLS_DIR, "").sort();
80
+ }
81
+
82
+ function readDescription(relPath) {
83
+ try {
84
+ const md = readFileSync(join(SKILLS_DIR, relPath, "SKILL.md"), "utf8");
85
+ const m = md.match(/^description:\s*(.*)$/m);
86
+ if (!m) return "";
87
+ return m[1].replace(/^["']|["']$/g, "").slice(0, 120) + (m[1].length > 120 ? "…" : "");
88
+ } catch {
89
+ return "";
90
+ }
91
+ }
92
+
93
+ function cmdList() {
94
+ const skills = listSkills();
95
+ console.log(`skillset: ${skills.length} skills\n`);
96
+ for (const name of skills) {
97
+ const desc = readDescription(name);
98
+ console.log(` ${name.padEnd(32)} ${desc}`);
99
+ }
100
+ }
101
+
102
+ function cmdInstall() {
103
+ const scope = flag("scope") ?? "global";
104
+ const targetFlag = flag("target");
105
+ const onlySkills = flagValues("skill");
106
+ const dry = hasFlag("--dry-run");
107
+ const undo = hasFlag("--undo");
108
+
109
+ const targets = targetFlag
110
+ ? targetFlag.split(",").map((t) => t.trim()).filter(Boolean)
111
+ : Object.keys(HARNESSES);
112
+
113
+ const all = listSkills();
114
+ const allLeaf = all.map((p) => p.split("/").pop());
115
+ const skills = onlySkills.length
116
+ ? onlySkills.filter((s) => all.includes(s) || allLeaf.includes(s)).map((s) => {
117
+ const idx = all.indexOf(s);
118
+ return idx >= 0 ? all[idx] : all[allLeaf.indexOf(s)];
119
+ })
120
+ : all;
121
+ const missing = onlySkills.filter((s) => !all.includes(s) && !allLeaf.includes(s));
122
+ if (missing.length) console.warn(` ! unknown skill(s): ${missing.join(", ")}. Skipped\n`);
123
+
124
+ let installed = 0;
125
+ for (const target of targets) {
126
+ const cfg = HARNESSES[target];
127
+ if (!cfg) {
128
+ console.warn(` ! unknown target "${target}" (valid: ${Object.keys(HARNESSES).join(", ")})`);
129
+ continue;
130
+ }
131
+ const destBase = scope === "project" ? join(process.cwd(), cfg.project) : cfg.global;
132
+ for (const skill of skills) {
133
+ const leafName = skill.split("/").pop();
134
+ const safeSkill = leafName.replace(/\.\./g, "").replace(/[/\\]/g, "");
135
+ if (safeSkill !== leafName) {
136
+ console.warn(` ! sanitized skill name: ${leafName} → ${safeSkill}`);
137
+ }
138
+ const dest = join(destBase, safeSkill);
139
+ if (dry) {
140
+ console.log(` ~ ${target}: would install ${skill} → ${dest}`);
141
+ continue;
142
+ }
143
+ if (undo) {
144
+ if (existsSync(dest)) {
145
+ rmSync(dest, { recursive: true, force: true });
146
+ installed++;
147
+ console.log(` ✗ ${target}: removed ${safeSkill}`);
148
+ }
149
+ continue;
150
+ }
151
+ mkdirSync(destBase, { recursive: true });
152
+ cpSync(join(SKILLS_DIR, skill), dest, { recursive: true });
153
+ installed++;
154
+ console.log(` ✓ ${target}: installed ${skill} → ${dest}`);
155
+ }
156
+ }
157
+
158
+ if (dry) {
159
+ console.log(`\n[dry-run] would ${undo ? "remove" : "install"} ${skills.length} skill(s) ${undo ? "from" : "into"} ${targets.join(", ")} (${scope})`);
160
+ } else {
161
+ const verb = undo ? "removed" : "installed";
162
+ console.log(`\nDone. ${installed} skill(s) ${verb} (${scope}). Restart/reload your agent to pick them up.`);
163
+ }
164
+ }
165
+
166
+ function cmdSync() {
167
+ const dry = hasFlag("--dry-run");
168
+ execSync(`${process.execPath} ${join(ROOT, "scripts", "sync.mjs")} ${dry ? "--dry-run" : ""}`, {
169
+ stdio: "inherit",
170
+ });
171
+ }
172
+
173
+ function cmdHelp() {
174
+ console.log(`skillset: install, list, and sync agent skills.
175
+
176
+ Usage:
177
+ skillset list list available skills (category/name)
178
+ skillset install [--skill <name>] install skills into agent harnesses
179
+ --target <claude,opencode,cursor,codex,gemini> (default: all)
180
+ --scope <global|project> (default: global)
181
+ --dry-run
182
+ --undo remove installed skills
183
+ skillset sync [--dry-run] re-vendor skills from upstream repos
184
+
185
+ Examples:
186
+ skillset install # everything, global
187
+ skillset install --skill ui/motion --skill backend/auth
188
+ skillset install --target claude,opencode --scope project
189
+ skillset install --undo # remove everything installed
190
+ `);
191
+ }
192
+
193
+ switch (command) {
194
+ case "list":
195
+ cmdList();
196
+ break;
197
+ case "install":
198
+ cmdInstall();
199
+ break;
200
+ case "sync":
201
+ cmdSync();
202
+ break;
203
+ default:
204
+ cmdHelp();
205
+ }
@@ -0,0 +1,53 @@
1
+ # Curation layer: skills are owned, not copied
2
+
3
+ Upstream SKILL.md files are a **base**, never the final word. A skill you run
4
+ every day should sound like *you*: it should encode how you like this codebase,
5
+ how you want things done, and why, not whatever the upstream author happened
6
+ to write.
7
+
8
+ This directory is where that ownership lives. It never gets deleted,
9
+ re-cloned, or overwritten by `scripts/sync.mjs`. Upstream can move, and your
10
+ voice survives verbatim.
11
+
12
+ ## Layout
13
+
14
+ ```
15
+ curations/
16
+ <skill>/
17
+ overlay/ # files copied ON TOP of skills/<skill>/ after every sync
18
+ WHY.md # your rationale, read by sync output, never shipped
19
+ ```
20
+
21
+ - `overlay/` files replace the same-named files in `skills/<skill>/` after each
22
+ re-vendor. Upstream updated the skill's scripts? They still land. Upstream
23
+ rewrote the SKILL.md with someone else's taste? Your `overlay/SKILL.md` wins.
24
+ - `WHY.md` is the record of intent: what you changed and why. The first line is
25
+ echoed in sync output so you can see the reason at a glance.
26
+ - Files you don't put in `overlay/` track upstream freely. Own what matters,
27
+ let the rest ride.
28
+
29
+ ## How ownership works
30
+
31
+ 1. Make a copy: `mkdir -p curations/<skill>/overlay`
32
+ 2. Write your version of the files you own into `overlay/` (usually just
33
+ `SKILL.md`).
34
+ 3. Write `WHY.md` with the real reasons: how you like things, why. This is
35
+ the part that makes it yours; future-you (and future agents) will ask.
36
+ 4. Run `npm run sync` (or let CI) and the overlay is re-applied after every
37
+ upstream update. `git diff` shows upstream changes and your layer cleanly
38
+ separated.
39
+
40
+ ## How to NOT use it
41
+
42
+ - Don't hand-edit `skills/<skill>/SKILL.md` directly. The next sync deletes
43
+ the folder and you lose it. That's the sloppiness this layer exists to kill.
44
+ - Don't copy a curation wholesale from someone else. The point is your
45
+ judgment about your codebase, not a secondhand opinion.
46
+
47
+ ## Template
48
+
49
+ See `curations/TEMPLATE/` for a ready-to-fill skeleton:
50
+
51
+ ```
52
+ cp -R curations/TEMPLATE curations/<skill>
53
+ ```
@@ -0,0 +1,23 @@
1
+ # WHY.md: why this skill is owned, not synced
2
+
3
+ > First line is echoed by `npm run sync`. Write it like a note to future-you.
4
+
5
+ Replace this with a one-line reason (echoed in sync output).
6
+
7
+ ## What I changed
8
+
9
+ - (which files in overlay/ exist and what they say)
10
+
11
+ ## How I like things
12
+
13
+ - (your preferences: tone, structure, scope, when to use this skill)
14
+
15
+ ## Why these changes matter to my codebase
16
+
17
+ - (what upstream gets wrong / misses about how you work, and the concrete
18
+ consequences of having it your way)
19
+
20
+ ## Review cadence
21
+
22
+ - (when to revisit: after each upstream update? when a project hits a
23
+ milestone?)
@@ -0,0 +1,6 @@
1
+ Copy this file into overlay/ as the file you want to own (usually SKILL.md),
2
+ then rewrite it in your voice.
3
+
4
+ The version here replaces the upstream file after every sync. Upstream
5
+ contributions to other files in the skill still land fresh. Only what you put
6
+ in overlay/ is frozen to your taste.