@hasna/skills 0.0.2 → 0.0.3

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 (387) hide show
  1. package/bin/index.js +253 -715
  2. package/bin/mcp.js +221 -683
  3. package/package.json +1 -1
  4. package/src/cli/cli.test.ts +14 -14
  5. package/src/cli/index.tsx +1 -1
  6. package/src/lib/installer.test.ts +41 -41
  7. package/src/lib/registry.test.ts +10 -10
  8. package/src/lib/registry.ts +10 -472
  9. package/src/lib/skillinfo.test.ts +12 -12
  10. package/src/mcp/index.ts +1 -1
  11. package/skills/skill-architecture-docs/CLAUDE.md +0 -19
  12. package/skills/skill-architecture-docs/package.json +0 -32
  13. package/skills/skill-architecture-docs/src/index.ts +0 -543
  14. package/skills/skill-auto-format/CLAUDE.md +0 -19
  15. package/skills/skill-auto-format/package.json +0 -32
  16. package/skills/skill-auto-format/src/index.ts +0 -103
  17. package/skills/skill-auto-format/tsconfig.json +0 -14
  18. package/skills/skill-brainstorm/README.md +0 -17
  19. package/skills/skill-brainstorm/install.sh +0 -112
  20. package/skills/skill-brainstorm/src/auth.ts +0 -49
  21. package/skills/skill-brainstorm/src/installer.ts +0 -324
  22. package/skills/skill-brainstorm/src/skill-install.ts +0 -205
  23. package/skills/skill-browser-agent/CLAUDE.md +0 -19
  24. package/skills/skill-browser-agent/package.json +0 -32
  25. package/skills/skill-browser-agent/src/index.ts +0 -626
  26. package/skills/skill-browser-agent/tsconfig.json +0 -14
  27. package/skills/skill-browseruse/LICENSE +0 -21
  28. package/skills/skill-browseruse/README.md +0 -27
  29. package/skills/skill-browseruse/SKILL.md +0 -113
  30. package/skills/skill-browseruse/install.sh +0 -112
  31. package/skills/skill-browseruse/package.json +0 -31
  32. package/skills/skill-browseruse/src/auth.ts +0 -49
  33. package/skills/skill-browseruse/src/installer.ts +0 -324
  34. package/skills/skill-browseruse/src/skill-install.ts +0 -174
  35. package/skills/skill-calculate/LICENSE +0 -21
  36. package/skills/skill-calculate/README.md +0 -17
  37. package/skills/skill-calculate/install.sh +0 -112
  38. package/skills/skill-calculate/package.json +0 -31
  39. package/skills/skill-calculate/src/auth.ts +0 -49
  40. package/skills/skill-calculate/src/installer.ts +0 -324
  41. package/skills/skill-calculate/src/skill-install.ts +0 -205
  42. package/skills/skill-chromedevtools/LICENSE +0 -21
  43. package/skills/skill-chromedevtools/README.md +0 -27
  44. package/skills/skill-chromedevtools/SKILL.md +0 -110
  45. package/skills/skill-chromedevtools/install.sh +0 -112
  46. package/skills/skill-chromedevtools/package.json +0 -31
  47. package/skills/skill-chromedevtools/src/auth.ts +0 -49
  48. package/skills/skill-chromedevtools/src/installer.ts +0 -324
  49. package/skills/skill-chromedevtools/src/skill-install.ts +0 -174
  50. package/skills/skill-companyguide/LICENSE +0 -21
  51. package/skills/skill-companyguide/README.md +0 -17
  52. package/skills/skill-companyguide/install.sh +0 -112
  53. package/skills/skill-companyguide/package.json +0 -31
  54. package/skills/skill-companyguide/src/auth.ts +0 -49
  55. package/skills/skill-companyguide/src/installer.ts +0 -324
  56. package/skills/skill-companyguide/src/skill-install.ts +0 -205
  57. package/skills/skill-compose-gmail/tsconfig.json +0 -14
  58. package/skills/skill-context7/LICENSE +0 -21
  59. package/skills/skill-context7/README.md +0 -27
  60. package/skills/skill-context7/SKILL.md +0 -103
  61. package/skills/skill-context7/install.sh +0 -112
  62. package/skills/skill-context7/package.json +0 -31
  63. package/skills/skill-context7/src/auth.ts +0 -49
  64. package/skills/skill-context7/src/installer.ts +0 -324
  65. package/skills/skill-context7/src/skill-install.ts +0 -174
  66. package/skills/skill-crawl/LICENSE +0 -21
  67. package/skills/skill-crawl/README.md +0 -17
  68. package/skills/skill-crawl/install.sh +0 -112
  69. package/skills/skill-crawl/package.json +0 -31
  70. package/skills/skill-crawl/src/auth.ts +0 -49
  71. package/skills/skill-crawl/src/installer.ts +0 -324
  72. package/skills/skill-crawl/src/skill-install.ts +0 -205
  73. package/skills/skill-csv-transformer/CLAUDE.md +0 -19
  74. package/skills/skill-csv-transformer/package.json +0 -32
  75. package/skills/skill-csv-transformer/src/index.ts +0 -81
  76. package/skills/skill-csv-transformer/tsconfig.json +0 -14
  77. package/skills/skill-debug/LICENSE +0 -21
  78. package/skills/skill-debug/README.md +0 -17
  79. package/skills/skill-debug/install.sh +0 -112
  80. package/skills/skill-debug/package.json +0 -31
  81. package/skills/skill-debug/src/auth.ts +0 -49
  82. package/skills/skill-debug/src/installer.ts +0 -324
  83. package/skills/skill-debug/src/skill-install.ts +0 -205
  84. package/skills/skill-deep-research/CLAUDE.md +0 -19
  85. package/skills/skill-deep-research/package.json +0 -32
  86. package/skills/skill-deep-research/src/index.ts +0 -1149
  87. package/skills/skill-deep-research/tsconfig.json +0 -14
  88. package/skills/skill-dns-manager/CLAUDE.md +0 -19
  89. package/skills/skill-dns-manager/package.json +0 -32
  90. package/skills/skill-dns-manager/src/index.ts +0 -92
  91. package/skills/skill-dns-manager/tsconfig.json +0 -14
  92. package/skills/skill-download/LICENSE +0 -21
  93. package/skills/skill-download/README.md +0 -17
  94. package/skills/skill-download/install.sh +0 -112
  95. package/skills/skill-download/package.json +0 -31
  96. package/skills/skill-download/src/auth.ts +0 -49
  97. package/skills/skill-download/src/installer.ts +0 -324
  98. package/skills/skill-download/src/skill-install.ts +0 -205
  99. package/skills/skill-exa/LICENSE +0 -21
  100. package/skills/skill-exa/README.md +0 -26
  101. package/skills/skill-exa/SKILL.md +0 -92
  102. package/skills/skill-exa/install.sh +0 -112
  103. package/skills/skill-exa/package.json +0 -31
  104. package/skills/skill-exa/src/auth.ts +0 -49
  105. package/skills/skill-exa/src/installer.ts +0 -324
  106. package/skills/skill-exa/src/skill-install.ts +0 -174
  107. package/skills/skill-filesearch/LICENSE +0 -21
  108. package/skills/skill-filesearch/README.md +0 -17
  109. package/skills/skill-filesearch/install.sh +0 -112
  110. package/skills/skill-filesearch/package.json +0 -31
  111. package/skills/skill-filesearch/src/auth.ts +0 -49
  112. package/skills/skill-filesearch/src/installer.ts +0 -324
  113. package/skills/skill-filesearch/src/skill-install.ts +0 -205
  114. package/skills/skill-fill/LICENSE +0 -21
  115. package/skills/skill-fill/README.md +0 -17
  116. package/skills/skill-fill/install.sh +0 -112
  117. package/skills/skill-fill/package.json +0 -31
  118. package/skills/skill-fill/src/auth.ts +0 -49
  119. package/skills/skill-fill/src/installer.ts +0 -324
  120. package/skills/skill-fill/src/skill-install.ts +0 -205
  121. package/skills/skill-generate-audio/CLAUDE.md +0 -3
  122. package/skills/skill-generate-audio/SKILL.md +0 -53
  123. package/skills/skill-generate-audio/package.json +0 -30
  124. package/skills/skill-generate-audio/src/index.ts +0 -656
  125. package/skills/skill-generate-audio/tsconfig.json +0 -18
  126. package/skills/skill-generate-readme/CLAUDE.md +0 -19
  127. package/skills/skill-generate-readme/package.json +0 -32
  128. package/skills/skill-generate-readme/src/index.ts +0 -867
  129. package/skills/skill-generate-readme/tsconfig.json +0 -14
  130. package/skills/skill-generate-slides/CLAUDE.md +0 -19
  131. package/skills/skill-generate-slides/package.json +0 -32
  132. package/skills/skill-generate-slides/src/ai.ts +0 -140
  133. package/skills/skill-generate-slides/src/cli.ts +0 -161
  134. package/skills/skill-generate-slides/src/export.ts +0 -65
  135. package/skills/skill-generate-slides/src/index.ts +0 -1417
  136. package/skills/skill-generate-slides/src/layout.ts +0 -31
  137. package/skills/skill-generate-slides/src/parse.ts +0 -282
  138. package/skills/skill-generate-slides/src/render.ts +0 -711
  139. package/skills/skill-generate-slides/tsconfig.json +0 -14
  140. package/skills/skill-get-api-docs/CLAUDE.md +0 -19
  141. package/skills/skill-get-api-docs/package.json +0 -32
  142. package/skills/skill-get-api-docs/src/index.ts +0 -1176
  143. package/skills/skill-get-api-docs/tsconfig.json +0 -14
  144. package/skills/skill-googledrive/LICENSE +0 -21
  145. package/skills/skill-googledrive/README.md +0 -27
  146. package/skills/skill-googledrive/SKILL.md +0 -140
  147. package/skills/skill-googledrive/install.sh +0 -112
  148. package/skills/skill-googledrive/package.json +0 -31
  149. package/skills/skill-googledrive/src/auth.ts +0 -49
  150. package/skills/skill-googledrive/src/installer.ts +0 -324
  151. package/skills/skill-googledrive/src/skill-install.ts +0 -174
  152. package/skills/skill-grant-compliance-scanner/CLAUDE.md +0 -19
  153. package/skills/skill-grant-compliance-scanner/package.json +0 -32
  154. package/skills/skill-grant-compliance-scanner/src/index.ts +0 -94
  155. package/skills/skill-grant-compliance-scanner/tsconfig.json +0 -14
  156. package/skills/skill-hubsearch/LICENSE +0 -21
  157. package/skills/skill-hubsearch/README.md +0 -17
  158. package/skills/skill-hubsearch/install.sh +0 -112
  159. package/skills/skill-hubsearch/package.json +0 -31
  160. package/skills/skill-hubsearch/src/auth.ts +0 -49
  161. package/skills/skill-hubsearch/src/installer.ts +0 -324
  162. package/skills/skill-hubsearch/src/skill-install.ts +0 -205
  163. package/skills/skill-implementation-architecture/CLAUDE.md +0 -19
  164. package/skills/skill-implementation-architecture/package.json +0 -32
  165. package/skills/skill-implementation-architecture/src/index.ts +0 -460
  166. package/skills/skill-implementation-architecture/tsconfig.json +0 -14
  167. package/skills/skill-implementation-audit/CLAUDE.md +0 -19
  168. package/skills/skill-implementation-audit/package.json +0 -32
  169. package/skills/skill-implementation-audit/src/index.ts +0 -502
  170. package/skills/skill-implementation-audit/tsconfig.json +0 -14
  171. package/skills/skill-implementation-cost/CLAUDE.md +0 -19
  172. package/skills/skill-implementation-cost/package.json +0 -32
  173. package/skills/skill-implementation-cost/src/index.ts +0 -873
  174. package/skills/skill-implementation-cost/tsconfig.json +0 -14
  175. package/skills/skill-implementation-dispatch/CLAUDE.md +0 -19
  176. package/skills/skill-implementation-dispatch/package.json +0 -32
  177. package/skills/skill-implementation-dispatch/src/index.ts +0 -390
  178. package/skills/skill-implementation-dispatch/tsconfig.json +0 -14
  179. package/skills/skill-implementation-hook/CLAUDE.md +0 -19
  180. package/skills/skill-implementation-hook/package.json +0 -32
  181. package/skills/skill-implementation-hook/src/index.ts +0 -787
  182. package/skills/skill-implementation-hook/tsconfig.json +0 -14
  183. package/skills/skill-implementation-index/CLAUDE.md +0 -19
  184. package/skills/skill-implementation-index/package.json +0 -32
  185. package/skills/skill-implementation-index/src/index.ts +0 -767
  186. package/skills/skill-implementation-index/tsconfig.json +0 -14
  187. package/skills/skill-implementation-init/CLAUDE.md +0 -19
  188. package/skills/skill-implementation-init/package.json +0 -32
  189. package/skills/skill-implementation-init/src/index.ts +0 -378
  190. package/skills/skill-implementation-init/tsconfig.json +0 -14
  191. package/skills/skill-implementation-memento/CLAUDE.md +0 -19
  192. package/skills/skill-implementation-memento/package.json +0 -32
  193. package/skills/skill-implementation-memento/src/index.ts +0 -442
  194. package/skills/skill-implementation-memento/tsconfig.json +0 -14
  195. package/skills/skill-linear/LICENSE +0 -21
  196. package/skills/skill-linear/README.md +0 -28
  197. package/skills/skill-linear/SKILL.md +0 -94
  198. package/skills/skill-linear/install.sh +0 -112
  199. package/skills/skill-linear/package.json +0 -31
  200. package/skills/skill-linear/src/auth.ts +0 -49
  201. package/skills/skill-linear/src/installer.ts +0 -324
  202. package/skills/skill-linear/src/skill-install.ts +0 -174
  203. package/skills/skill-mail/LICENSE +0 -21
  204. package/skills/skill-mail/README.md +0 -17
  205. package/skills/skill-mail/install.sh +0 -112
  206. package/skills/skill-mail/package.json +0 -31
  207. package/skills/skill-mail/src/auth.ts +0 -49
  208. package/skills/skill-mail/src/installer.ts +0 -324
  209. package/skills/skill-mail/src/skill-install.ts +0 -205
  210. package/skills/skill-manage-gmail/CLAUDE.md +0 -19
  211. package/skills/skill-manage-gmail/package.json +0 -32
  212. package/skills/skill-manage-gmail/src/index.ts +0 -504
  213. package/skills/skill-manage-gmail/tsconfig.json +0 -14
  214. package/skills/skill-merch-mockup-factory/CLAUDE.md +0 -19
  215. package/skills/skill-merch-mockup-factory/package.json +0 -32
  216. package/skills/skill-merch-mockup-factory/src/index.ts +0 -296
  217. package/skills/skill-merch-mockup-factory/tsconfig.json +0 -14
  218. package/skills/skill-message/LICENSE +0 -21
  219. package/skills/skill-message/README.md +0 -17
  220. package/skills/skill-message/install.sh +0 -112
  221. package/skills/skill-message/package.json +0 -31
  222. package/skills/skill-message/src/auth.ts +0 -49
  223. package/skills/skill-message/src/installer.ts +0 -324
  224. package/skills/skill-message/src/skill-install.ts +0 -205
  225. package/skills/skill-newsletter-campaign-planner/CLAUDE.md +0 -19
  226. package/skills/skill-newsletter-campaign-planner/package.json +0 -32
  227. package/skills/skill-newsletter-campaign-planner/src/index.ts +0 -252
  228. package/skills/skill-newsletter-campaign-planner/tsconfig.json +0 -14
  229. package/skills/skill-notify/LICENSE +0 -21
  230. package/skills/skill-notify/README.md +0 -17
  231. package/skills/skill-notify/install.sh +0 -112
  232. package/skills/skill-notify/package.json +0 -31
  233. package/skills/skill-notify/src/auth.ts +0 -49
  234. package/skills/skill-notify/src/installer.ts +0 -324
  235. package/skills/skill-notify/src/skill-install.ts +0 -205
  236. package/skills/skill-notion/LICENSE +0 -21
  237. package/skills/skill-notion/README.md +0 -27
  238. package/skills/skill-notion/SKILL.md +0 -115
  239. package/skills/skill-notion/install.sh +0 -112
  240. package/skills/skill-notion/package.json +0 -31
  241. package/skills/skill-notion/src/auth.ts +0 -49
  242. package/skills/skill-notion/src/installer.ts +0 -324
  243. package/skills/skill-notion/src/skill-install.ts +0 -174
  244. package/skills/skill-parse-pdf/CLAUDE.md +0 -19
  245. package/skills/skill-parse-pdf/package.json +0 -32
  246. package/skills/skill-parse-pdf/src/index.ts +0 -581
  247. package/skills/skill-parse-pdf/tsconfig.json +0 -14
  248. package/skills/skill-playwright/LICENSE +0 -21
  249. package/skills/skill-playwright/README.md +0 -27
  250. package/skills/skill-playwright/SKILL.md +0 -116
  251. package/skills/skill-playwright/install.sh +0 -112
  252. package/skills/skill-playwright/package.json +0 -31
  253. package/skills/skill-playwright/src/auth.ts +0 -49
  254. package/skills/skill-playwright/src/installer.ts +0 -324
  255. package/skills/skill-playwright/src/skill-install.ts +0 -174
  256. package/skills/skill-projectbuild/LICENSE +0 -21
  257. package/skills/skill-projectbuild/README.md +0 -17
  258. package/skills/skill-projectbuild/install.sh +0 -112
  259. package/skills/skill-projectbuild/package.json +0 -31
  260. package/skills/skill-projectbuild/src/auth.ts +0 -49
  261. package/skills/skill-projectbuild/src/installer.ts +0 -324
  262. package/skills/skill-projectbuild/src/skill-install.ts +0 -205
  263. package/skills/skill-read-gmail/CLAUDE.md +0 -19
  264. package/skills/skill-read-gmail/package.json +0 -32
  265. package/skills/skill-read-gmail/src/index.ts +0 -343
  266. package/skills/skill-read-gmail/tsconfig.json +0 -14
  267. package/skills/skill-remember/LICENSE +0 -21
  268. package/skills/skill-remember/README.md +0 -17
  269. package/skills/skill-remember/install.sh +0 -112
  270. package/skills/skill-remember/package.json +0 -31
  271. package/skills/skill-remember/src/auth.ts +0 -49
  272. package/skills/skill-remember/src/installer.ts +0 -324
  273. package/skills/skill-remember/src/skill-install.ts +0 -205
  274. package/skills/skill-schedule/README.md +0 -17
  275. package/skills/skill-schedule/install.sh +0 -112
  276. package/skills/skill-schedule/src/auth.ts +0 -49
  277. package/skills/skill-schedule/src/installer.ts +0 -324
  278. package/skills/skill-schedule/src/skill-install.ts +0 -205
  279. package/skills/skill-search/LICENSE +0 -21
  280. package/skills/skill-search/README.md +0 -17
  281. package/skills/skill-search/install.sh +0 -112
  282. package/skills/skill-search/package.json +0 -31
  283. package/skills/skill-search/src/auth.ts +0 -49
  284. package/skills/skill-search/src/installer.ts +0 -324
  285. package/skills/skill-search/src/skill-install.ts +0 -205
  286. package/skills/skill-shadcn/LICENSE +0 -21
  287. package/skills/skill-shadcn/README.md +0 -27
  288. package/skills/skill-shadcn/SKILL.md +0 -113
  289. package/skills/skill-shadcn/install.sh +0 -112
  290. package/skills/skill-shadcn/package.json +0 -31
  291. package/skills/skill-shadcn/src/auth.ts +0 -49
  292. package/skills/skill-shadcn/src/installer.ts +0 -324
  293. package/skills/skill-shadcn/src/skill-install.ts +0 -174
  294. package/skills/skill-shadcn-theme/CLAUDE.md +0 -19
  295. package/skills/skill-shadcn-theme/package.json +0 -32
  296. package/skills/skill-shadcn-theme/src/index.ts +0 -16
  297. package/skills/skill-shadcn-theme/tsconfig.json +0 -14
  298. package/skills/skill-social-template-kit/CLAUDE.md +0 -19
  299. package/skills/skill-social-template-kit/package.json +0 -32
  300. package/skills/skill-social-template-kit/src/index.ts +0 -303
  301. package/skills/skill-social-template-kit/tsconfig.json +0 -14
  302. package/skills/skill-summarize/LICENSE +0 -21
  303. package/skills/skill-summarize/README.md +0 -17
  304. package/skills/skill-summarize/install.sh +0 -112
  305. package/skills/skill-summarize/package.json +0 -31
  306. package/skills/skill-summarize/src/auth.ts +0 -49
  307. package/skills/skill-summarize/src/installer.ts +0 -324
  308. package/skills/skill-summarize/src/skill-install.ts +0 -205
  309. package/skills/skill-sync/LICENSE +0 -21
  310. package/skills/skill-sync/README.md +0 -17
  311. package/skills/skill-sync/install.sh +0 -112
  312. package/skills/skill-sync/package.json +0 -31
  313. package/skills/skill-sync/src/auth.ts +0 -49
  314. package/skills/skill-sync/src/installer.ts +0 -324
  315. package/skills/skill-sync/src/skill-install.ts +0 -205
  316. package/skills/skill-time-blocking-orchestrator/CLAUDE.md +0 -19
  317. package/skills/skill-time-blocking-orchestrator/package.json +0 -32
  318. package/skills/skill-time-blocking-orchestrator/src/index.ts +0 -328
  319. package/skills/skill-time-blocking-orchestrator/tsconfig.json +0 -14
  320. package/skills/skill-transform/.env.example +0 -2
  321. package/skills/skill-transform/LICENSE +0 -21
  322. package/skills/skill-transform/README.md +0 -17
  323. package/skills/skill-transform/SKILL.md +0 -127
  324. package/skills/skill-transform/install.sh +0 -112
  325. package/skills/skill-transform/package.json +0 -37
  326. package/skills/skill-transform/src/auth.ts +0 -49
  327. package/skills/skill-transform/src/http-client.ts +0 -128
  328. package/skills/skill-transform/src/index-http.ts +0 -111
  329. package/skills/skill-transform/src/index-local.ts +0 -368
  330. package/skills/skill-transform/src/index.ts +0 -111
  331. package/skills/skill-transform/src/installer.ts +0 -324
  332. package/skills/skill-transform/src/skill-install.ts +0 -205
  333. package/skills/skill-transform/src/transformers/ai-transformer.ts +0 -202
  334. package/skills/skill-transform/src/transformers/format-detector.ts +0 -147
  335. package/skills/skill-transform/src/types.ts +0 -95
  336. package/skills/skill-transform/tsconfig.json +0 -18
  337. package/skills/skill-translate/LICENSE +0 -21
  338. package/skills/skill-translate/README.md +0 -17
  339. package/skills/skill-translate/install.sh +0 -112
  340. package/skills/skill-translate/package.json +0 -31
  341. package/skills/skill-translate/src/auth.ts +0 -49
  342. package/skills/skill-translate/src/installer.ts +0 -324
  343. package/skills/skill-translate/src/skill-install.ts +0 -205
  344. package/skills/skill-vendor-comparison-coach/CLAUDE.md +0 -19
  345. package/skills/skill-vendor-comparison-coach/package.json +0 -32
  346. package/skills/skill-vendor-comparison-coach/src/index.ts +0 -337
  347. package/skills/skill-vendor-comparison-coach/tsconfig.json +0 -14
  348. package/skills/skill-videodownload/.env.example +0 -5
  349. package/skills/skill-videodownload/CLAUDE.md +0 -64
  350. package/skills/skill-videodownload/LICENSE +0 -21
  351. package/skills/skill-videodownload/README.md +0 -166
  352. package/skills/skill-videodownload/package.json +0 -49
  353. package/skills/skill-videodownload/src/commands/config.ts +0 -89
  354. package/skills/skill-videodownload/src/commands/download.ts +0 -61
  355. package/skills/skill-videodownload/src/commands/info.ts +0 -83
  356. package/skills/skill-videodownload/src/commands/list.ts +0 -84
  357. package/skills/skill-videodownload/src/lib/downloader.ts +0 -270
  358. package/skills/skill-videodownload/src/lib/storage.ts +0 -167
  359. package/skills/skill-videodownload/src/types/index.ts +0 -64
  360. package/skills/skill-videodownload/src/utils/logger.ts +0 -49
  361. package/skills/skill-videodownload/src/utils/paths.ts +0 -94
  362. package/skills/skill-videodownload/tsconfig.json +0 -17
  363. package/skills/skill-voiceover/.env.example +0 -5
  364. package/skills/skill-voiceover/CLAUDE.md +0 -40
  365. package/skills/skill-voiceover/LICENSE +0 -21
  366. package/skills/skill-voiceover/README.md +0 -64
  367. package/skills/skill-voiceover/package.json +0 -43
  368. package/skills/skill-voiceover/src/commands/config.ts +0 -38
  369. package/skills/skill-voiceover/src/commands/generate.ts +0 -37
  370. package/skills/skill-voiceover/src/commands/voices.ts +0 -33
  371. package/skills/skill-voiceover/src/lib/generator.ts +0 -159
  372. package/skills/skill-voiceover/src/lib/storage.ts +0 -55
  373. package/skills/skill-voiceover/src/types/index.ts +0 -55
  374. package/skills/skill-voiceover/src/utils/logger.ts +0 -30
  375. package/skills/skill-voiceover/src/utils/paths.ts +0 -22
  376. package/skills/skill-voiceover/tsconfig.json +0 -17
  377. package/skills/skill-websearch/LICENSE +0 -21
  378. package/skills/skill-websearch/README.md +0 -17
  379. package/skills/skill-websearch/install.sh +0 -112
  380. package/skills/skill-websearch/package.json +0 -31
  381. package/skills/skill-websearch/src/auth.ts +0 -49
  382. package/skills/skill-websearch/src/installer.ts +0 -324
  383. package/skills/skill-websearch/src/skill-install.ts +0 -205
  384. /package/skills/{skill-compose-gmail → skill-gmail}/CLAUDE.md +0 -0
  385. /package/skills/{skill-compose-gmail → skill-gmail}/package.json +0 -0
  386. /package/skills/{skill-compose-gmail → skill-gmail}/src/index.ts +0 -0
  387. /package/skills/{skill-architecture-docs → skill-gmail}/tsconfig.json +0 -0
@@ -1,167 +0,0 @@
1
- /**
2
- * Local storage for configuration and downloads
3
- */
4
-
5
- import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, statSync } from "fs";
6
- import { join } from "path";
7
- import { getDataDir, getConfigPath, getDownloadsDir } from "../utils/paths.js";
8
- import type { Config, DownloadResult } from "../types/index.js";
9
-
10
- const DEFAULT_CONFIG: Config = {
11
- outputDir: getDownloadsDir(),
12
- defaultFormat: "best",
13
- defaultQuality: "best",
14
- ytDlpPath: "yt-dlp",
15
- };
16
-
17
- /**
18
- * Ensure data directory exists
19
- */
20
- export function ensureDataDir(): void {
21
- const dir = getDataDir();
22
- if (!existsSync(dir)) {
23
- mkdirSync(dir, { recursive: true });
24
- }
25
- }
26
-
27
- /**
28
- * Load configuration
29
- */
30
- export function loadConfig(): Config {
31
- ensureDataDir();
32
- const configPath = getConfigPath();
33
-
34
- if (existsSync(configPath)) {
35
- try {
36
- const data = readFileSync(configPath, "utf-8");
37
- return { ...DEFAULT_CONFIG, ...JSON.parse(data) };
38
- } catch {
39
- return DEFAULT_CONFIG;
40
- }
41
- }
42
-
43
- return DEFAULT_CONFIG;
44
- }
45
-
46
- /**
47
- * Save configuration
48
- */
49
- export function saveConfig(config: Partial<Config>): void {
50
- ensureDataDir();
51
- const current = loadConfig();
52
- const merged = { ...current, ...config };
53
- writeFileSync(getConfigPath(), JSON.stringify(merged, null, 2));
54
- }
55
-
56
- /**
57
- * Get config path (re-export)
58
- */
59
- export { getConfigPath };
60
-
61
- /**
62
- * Ensure output directory exists
63
- */
64
- export function ensureOutputDir(subdir?: string): string {
65
- const config = loadConfig();
66
- const dir = subdir ? join(config.outputDir, subdir) : config.outputDir;
67
-
68
- if (!existsSync(dir)) {
69
- mkdirSync(dir, { recursive: true });
70
- }
71
-
72
- return dir;
73
- }
74
-
75
- /**
76
- * Save download history entry
77
- */
78
- export function saveDownloadHistory(result: DownloadResult): void {
79
- ensureDataDir();
80
- const historyPath = join(getDataDir(), "history.json");
81
-
82
- let history: DownloadResult[] = [];
83
- if (existsSync(historyPath)) {
84
- try {
85
- history = JSON.parse(readFileSync(historyPath, "utf-8"));
86
- } catch {
87
- history = [];
88
- }
89
- }
90
-
91
- history.unshift({
92
- ...result,
93
- // Add timestamp
94
- ...({ downloadedAt: new Date().toISOString() } as any),
95
- });
96
-
97
- // Keep last 100 entries
98
- history = history.slice(0, 100);
99
-
100
- writeFileSync(historyPath, JSON.stringify(history, null, 2));
101
- }
102
-
103
- /**
104
- * Load download history
105
- */
106
- export function loadDownloadHistory(): DownloadResult[] {
107
- const historyPath = join(getDataDir(), "history.json");
108
-
109
- if (existsSync(historyPath)) {
110
- try {
111
- return JSON.parse(readFileSync(historyPath, "utf-8"));
112
- } catch {
113
- return [];
114
- }
115
- }
116
-
117
- return [];
118
- }
119
-
120
- /**
121
- * List downloaded files
122
- */
123
- export function listDownloads(): { filename: string; size: number; modified: Date }[] {
124
- const config = loadConfig();
125
- const outputDir = config.outputDir;
126
-
127
- if (!existsSync(outputDir)) {
128
- return [];
129
- }
130
-
131
- const files: { filename: string; size: number; modified: Date }[] = [];
132
-
133
- function scanDir(dir: string, prefix = ""): void {
134
- const entries = readdirSync(dir, { withFileTypes: true });
135
-
136
- for (const entry of entries) {
137
- const fullPath = join(dir, entry.name);
138
- const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
139
-
140
- if (entry.isDirectory()) {
141
- scanDir(fullPath, relativePath);
142
- } else if (isVideoFile(entry.name)) {
143
- const stats = statSync(fullPath);
144
- files.push({
145
- filename: relativePath,
146
- size: stats.size,
147
- modified: stats.mtime,
148
- });
149
- }
150
- }
151
- }
152
-
153
- scanDir(outputDir);
154
-
155
- // Sort by modified date, newest first
156
- files.sort((a, b) => b.modified.getTime() - a.modified.getTime());
157
-
158
- return files;
159
- }
160
-
161
- /**
162
- * Check if file is a video
163
- */
164
- function isVideoFile(filename: string): boolean {
165
- const videoExtensions = [".mp4", ".mkv", ".webm", ".avi", ".mov", ".m4v", ".flv", ".wmv"];
166
- return videoExtensions.some((ext) => filename.toLowerCase().endsWith(ext));
167
- }
@@ -1,64 +0,0 @@
1
- /**
2
- * Types for video download service
3
- */
4
-
5
- export interface DownloadOptions {
6
- output: string;
7
- format: string;
8
- quality: string;
9
- audioOnly: boolean;
10
- subtitles: boolean;
11
- thumbnail: boolean;
12
- metadata: boolean;
13
- }
14
-
15
- export interface VideoInfo {
16
- id: string;
17
- url: string;
18
- title: string;
19
- description?: string;
20
- duration?: number;
21
- thumbnail?: string;
22
- formats: VideoFormat[];
23
- platform: string;
24
- uploader?: string;
25
- uploadDate?: string;
26
- viewCount?: number;
27
- }
28
-
29
- export interface VideoFormat {
30
- formatId: string;
31
- ext: string;
32
- quality: string;
33
- filesize?: number;
34
- vcodec?: string;
35
- acodec?: string;
36
- resolution?: string;
37
- fps?: number;
38
- }
39
-
40
- export interface DownloadResult {
41
- success: boolean;
42
- videoId: string;
43
- title: string;
44
- filepath?: string;
45
- format?: string;
46
- filesize?: number;
47
- duration?: number;
48
- error?: string;
49
- }
50
-
51
- export interface BulkDownloadResult {
52
- url: string;
53
- videosFound: number;
54
- videosDownloaded: number;
55
- results: DownloadResult[];
56
- errors: string[];
57
- }
58
-
59
- export interface Config {
60
- outputDir: string;
61
- defaultFormat: string;
62
- defaultQuality: string;
63
- ytDlpPath: string;
64
- }
@@ -1,49 +0,0 @@
1
- /**
2
- * Logger utility with colored output
3
- */
4
-
5
- import chalk from "chalk";
6
-
7
- export function info(message: string): void {
8
- console.log(chalk.blue("ℹ"), message);
9
- }
10
-
11
- export function success(message: string): void {
12
- console.log(chalk.green("✓"), message);
13
- }
14
-
15
- export function warn(message: string): void {
16
- console.log(chalk.yellow("⚠"), message);
17
- }
18
-
19
- export function error(message: string): void {
20
- console.log(chalk.red("✗"), message);
21
- }
22
-
23
- export function debug(message: string): void {
24
- if (process.env.DEBUG) {
25
- console.log(chalk.gray("⋯"), message);
26
- }
27
- }
28
-
29
- export function progress(current: number, total: number, message: string): void {
30
- const percent = Math.round((current / total) * 100);
31
- const bar = "█".repeat(Math.floor(percent / 5)) + "░".repeat(20 - Math.floor(percent / 5));
32
- process.stdout.write(`\r${chalk.cyan(bar)} ${percent}% ${message}`);
33
- if (current === total) {
34
- process.stdout.write("\n");
35
- }
36
- }
37
-
38
- export function heading(message: string): void {
39
- console.log();
40
- console.log(chalk.bold.underline(message));
41
- console.log();
42
- }
43
-
44
- export function table(rows: [string, string][]): void {
45
- const maxKeyLen = Math.max(...rows.map(([k]) => k.length));
46
- for (const [key, value] of rows) {
47
- console.log(` ${chalk.dim(key.padEnd(maxKeyLen))} ${value}`);
48
- }
49
- }
@@ -1,94 +0,0 @@
1
- /**
2
- * Path utilities
3
- */
4
-
5
- import { homedir } from "os";
6
- import { join } from "path";
7
-
8
- /**
9
- * Get the base data directory
10
- */
11
- export function getDataDir(): string {
12
- return process.env.DATA_DIR || join(homedir(), ".service", "service-videodownload");
13
- }
14
-
15
- /**
16
- * Get the downloads directory
17
- */
18
- export function getDownloadsDir(): string {
19
- return join(getDataDir(), "downloads");
20
- }
21
-
22
- /**
23
- * Get config file path
24
- */
25
- export function getConfigPath(): string {
26
- return join(getDataDir(), "config.json");
27
- }
28
-
29
- /**
30
- * Extract video ID from URL
31
- */
32
- export function extractVideoId(url: string): string | null {
33
- // YouTube
34
- const ytMatch = url.match(/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})/);
35
- if (ytMatch) return ytMatch[1];
36
-
37
- // Vimeo
38
- const vimeoMatch = url.match(/vimeo\.com\/(\d+)/);
39
- if (vimeoMatch) return vimeoMatch[1];
40
-
41
- // TikTok
42
- const tiktokMatch = url.match(/tiktok\.com\/@[^/]+\/video\/(\d+)/);
43
- if (tiktokMatch) return tiktokMatch[1];
44
-
45
- return null;
46
- }
47
-
48
- /**
49
- * Detect platform from URL
50
- */
51
- export function detectPlatform(url: string): string {
52
- if (url.includes("youtube.com") || url.includes("youtu.be")) return "youtube";
53
- if (url.includes("vimeo.com")) return "vimeo";
54
- if (url.includes("tiktok.com")) return "tiktok";
55
- if (url.includes("twitter.com") || url.includes("x.com")) return "twitter";
56
- if (url.includes("facebook.com") || url.includes("fb.watch")) return "facebook";
57
- if (url.includes("instagram.com")) return "instagram";
58
- if (url.includes("twitch.tv")) return "twitch";
59
- return "generic";
60
- }
61
-
62
- /**
63
- * Sanitize filename
64
- */
65
- export function sanitizeFilename(name: string): string {
66
- return name
67
- .replace(/[<>:"/\\|?*]/g, "_")
68
- .replace(/\s+/g, "_")
69
- .substring(0, 200);
70
- }
71
-
72
- /**
73
- * Format duration in seconds to HH:MM:SS
74
- */
75
- export function formatDuration(seconds: number): string {
76
- const h = Math.floor(seconds / 3600);
77
- const m = Math.floor((seconds % 3600) / 60);
78
- const s = Math.floor(seconds % 60);
79
-
80
- if (h > 0) {
81
- return `${h}:${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`;
82
- }
83
- return `${m}:${s.toString().padStart(2, "0")}`;
84
- }
85
-
86
- /**
87
- * Format file size
88
- */
89
- export function formatSize(bytes: number): string {
90
- if (bytes < 1024) return `${bytes} B`;
91
- if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
92
- if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
93
- return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
94
- }
@@ -1,17 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "bundler",
6
- "esModuleInterop": true,
7
- "strict": true,
8
- "skipLibCheck": true,
9
- "outDir": "dist",
10
- "rootDir": ".",
11
- "types": ["bun-types"],
12
- "lib": ["ES2022"],
13
- "resolveJsonModule": true
14
- },
15
- "include": ["src/**/*", "bin/**/*"],
16
- "exclude": ["node_modules", "dist", "legacy"]
17
- }
@@ -1,5 +0,0 @@
1
- # OpenAI API key
2
- OPENAI_API_KEY=sk-your-api-key-here
3
-
4
- # ElevenLabs API key
5
- ELEVENLABS_API_KEY=your-elevenlabs-api-key-here
@@ -1,40 +0,0 @@
1
- # service-voiceovergenerate
2
-
3
- Generate voiceovers using ElevenLabs and OpenAI TTS.
4
-
5
- ## Tech Stack
6
-
7
- - Runtime: Bun
8
- - Language: TypeScript
9
- - CLI: Commander.js
10
- - AI: OpenAI TTS, ElevenLabs API
11
-
12
- ## Project Structure
13
-
14
- ```
15
- ├── bin/cli.ts
16
- ├── src/
17
- │ ├── commands/
18
- │ │ ├── generate.ts
19
- │ │ ├── voices.ts
20
- │ │ └── config.ts
21
- │ ├── lib/
22
- │ │ ├── generator.ts
23
- │ │ └── storage.ts
24
- │ ├── types/index.ts
25
- │ └── utils/
26
- ├── legacy/
27
- └── package.json
28
- ```
29
-
30
- ## CLI
31
-
32
- ```bash
33
- service-voiceovergenerate generate "Hello" -p openai -v alloy
34
- service-voiceovergenerate voices elevenlabs
35
- ```
36
-
37
- ## Environment
38
-
39
- - `OPENAI_API_KEY` - For OpenAI TTS
40
- - `ELEVENLABS_API_KEY` - For ElevenLabs
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Hasna
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.
@@ -1,64 +0,0 @@
1
- # service-voiceovergenerate
2
-
3
- Generate voiceovers using ElevenLabs and OpenAI TTS.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- bun install -g @hasnaxyz/service-voiceovergenerate
9
- ```
10
-
11
- ## Quick Start
12
-
13
- ```bash
14
- # Using OpenAI
15
- export OPENAI_API_KEY=sk-...
16
- service-voiceovergenerate generate "Hello world" -v alloy
17
-
18
- # Using ElevenLabs
19
- export ELEVENLABS_API_KEY=...
20
- service-voiceovergenerate generate "Hello world" -p elevenlabs -v 21m00Tcm4TlvDq8ikWAM
21
-
22
- # List voices
23
- service-voiceovergenerate voices openai
24
- service-voiceovergenerate voices elevenlabs
25
- ```
26
-
27
- ## CLI Commands
28
-
29
- ### generate
30
-
31
- ```bash
32
- service-voiceovergenerate generate <text> [options]
33
-
34
- Options:
35
- -p, --provider <provider> openai or elevenlabs (default: openai)
36
- -v, --voice <voice> Voice ID (default: alloy)
37
- -s, --speed <speed> Speed 0.25-4.0 (OpenAI only)
38
- --stability <value> Stability 0-1 (ElevenLabs)
39
- --similarity <value> Similarity 0-1 (ElevenLabs)
40
- ```
41
-
42
- ### voices
43
-
44
- ```bash
45
- service-voiceovergenerate voices [provider]
46
- ```
47
-
48
- ### config
49
-
50
- ```bash
51
- service-voiceovergenerate config view
52
- service-voiceovergenerate config set defaultProvider elevenlabs
53
- ```
54
-
55
- ## Environment Variables
56
-
57
- ```bash
58
- OPENAI_API_KEY=sk-... # For OpenAI TTS
59
- ELEVENLABS_API_KEY=... # For ElevenLabs
60
- ```
61
-
62
- ## License
63
-
64
- MIT
@@ -1,43 +0,0 @@
1
- {
2
- "name": "@hasnaxyz/skill-voiceovergenerate",
3
- "version": "0.1.0",
4
- "description": "Generate voiceovers using ElevenLabs and OpenAI TTS",
5
- "type": "module",
6
- "bin": {
7
- "skill-voiceovergenerate": "./bin/cli.ts",
8
- "voiceover": "./bin/cli.ts"
9
- },
10
- "scripts": {
11
- "dev": "bun run bin/cli.ts",
12
- "build": "bun build bin/cli.ts --outdir dist --target node",
13
- "typecheck": "tsc --noEmit"
14
- },
15
- "repository": {
16
- "type": "git",
17
- "url": "https://github.com/hasnaxyz/skill-voiceovergenerate.git"
18
- },
19
- "author": "Hasna",
20
- "license": "MIT",
21
- "keywords": [
22
- "voiceover",
23
- "tts",
24
- "text-to-speech",
25
- "elevenlabs",
26
- "openai",
27
- "audio"
28
- ],
29
- "files": ["bin", "src", "tsconfig.json"],
30
- "dependencies": {
31
- "chalk": "^5.4.1",
32
- "commander": "^13.0.0",
33
- "openai": "^4.77.0"
34
- },
35
- "devDependencies": {
36
- "@types/bun": "^1.1.0",
37
- "typescript": "^5.7.0"
38
- },
39
- "publishConfig": {
40
- "access": "restricted",
41
- "registry": "https://registry.npmjs.org/"
42
- }
43
- }
@@ -1,38 +0,0 @@
1
- import type { Command } from "commander";
2
- import chalk from "chalk";
3
- import { loadConfig, saveConfig, getConfigPath } from "../lib/storage.js";
4
- import * as logger from "../utils/logger.js";
5
-
6
- export function registerConfigCommand(program: Command): void {
7
- const configCmd = program.command("config").description("View and edit configuration");
8
-
9
- configCmd
10
- .command("view")
11
- .option("--json", "Output as JSON")
12
- .action((options) => {
13
- const config = loadConfig();
14
- const hasOpenAI = !!process.env.OPENAI_API_KEY;
15
- const hasElevenLabs = !!(config.elevenLabsApiKey || process.env.ELEVENLABS_API_KEY);
16
-
17
- if (options.json) {
18
- console.log(JSON.stringify({ ...config, hasOpenAI, hasElevenLabs }, null, 2));
19
- return;
20
- }
21
-
22
- logger.heading("Configuration");
23
- logger.table([
24
- ["Output directory", config.outputDir],
25
- ["Default provider", config.defaultProvider],
26
- ["Default voice", config.defaultVoice],
27
- ["OpenAI API key", hasOpenAI ? chalk.green("configured") : chalk.red("not set")],
28
- ["ElevenLabs API key", hasElevenLabs ? chalk.green("configured") : chalk.red("not set")],
29
- ]);
30
- });
31
-
32
- configCmd
33
- .command("set <key> <value>")
34
- .action((key: string, value: string) => {
35
- saveConfig({ [key]: value });
36
- logger.success(`Set ${key} = ${key.includes("Key") ? "***" : value}`);
37
- });
38
- }
@@ -1,37 +0,0 @@
1
- import type { Command } from "commander";
2
- import { generateVoiceover } from "../lib/generator.js";
3
- import * as logger from "../utils/logger.js";
4
-
5
- export function registerGenerateCommand(program: Command): void {
6
- program
7
- .command("generate <text>")
8
- .alias("g")
9
- .description("Generate voiceover from text")
10
- .option("-p, --provider <provider>", "Provider: openai, elevenlabs", "openai")
11
- .option("-v, --voice <voice>", "Voice ID or name", "alloy")
12
- .option("-s, --speed <speed>", "Speed (OpenAI only, 0.25-4.0)", "1.0")
13
- .option("--stability <value>", "Stability (ElevenLabs, 0-1)", "0.5")
14
- .option("--similarity <value>", "Similarity boost (ElevenLabs, 0-1)", "0.75")
15
- .action(async (text: string, options) => {
16
- try {
17
- const result = await generateVoiceover(text, {
18
- provider: options.provider,
19
- voice: options.voice,
20
- speed: parseFloat(options.speed),
21
- stability: parseFloat(options.stability),
22
- similarityBoost: parseFloat(options.similarity),
23
- });
24
-
25
- logger.heading("Voiceover Generated");
26
- logger.table([
27
- ["File", result.filepath],
28
- ["Provider", result.provider],
29
- ["Voice", result.voice],
30
- ["Format", result.format],
31
- ]);
32
- } catch (err) {
33
- logger.error(`Generation failed: ${err}`);
34
- process.exit(1);
35
- }
36
- });
37
- }
@@ -1,33 +0,0 @@
1
- import type { Command } from "commander";
2
- import chalk from "chalk";
3
- import { listVoices } from "../lib/generator.js";
4
- import * as logger from "../utils/logger.js";
5
-
6
- export function registerVoicesCommand(program: Command): void {
7
- program
8
- .command("voices [provider]")
9
- .description("List available voices")
10
- .option("--json", "Output as JSON")
11
- .action(async (provider: string = "openai", options) => {
12
- try {
13
- const voices = await listVoices(provider as any);
14
-
15
- if (options.json) {
16
- console.log(JSON.stringify(voices, null, 2));
17
- return;
18
- }
19
-
20
- logger.heading(`${provider} Voices`);
21
-
22
- for (const voice of voices) {
23
- console.log(` ${chalk.cyan(voice.id.padEnd(30))} ${voice.name}`);
24
- }
25
-
26
- console.log();
27
- logger.info(`${voices.length} voice(s) available`);
28
- } catch (err) {
29
- logger.error(`Failed to list voices: ${err}`);
30
- process.exit(1);
31
- }
32
- });
33
- }