@hasna/skills 0.1.27 → 0.1.29

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 (488) hide show
  1. package/LICENSE +1 -10
  2. package/README.md +141 -39
  3. package/bin/index.js +30121 -27576
  4. package/bin/mcp.js +22073 -18556
  5. package/dist/cli/cli.test-utils.d.ts +15 -0
  6. package/dist/cli/commands/auth.d.ts +2 -0
  7. package/dist/cli/commands/install.d.ts +1 -1
  8. package/dist/cli/commands/runtime-mcp.d.ts +4 -0
  9. package/dist/index.d.ts +9 -4
  10. package/dist/index.js +11606 -598
  11. package/dist/lib/auth-store.d.ts +13 -0
  12. package/dist/lib/installer.d.ts +58 -55
  13. package/dist/lib/mcp-contracts.d.ts +86 -0
  14. package/dist/lib/project-state.d.ts +43 -0
  15. package/dist/lib/registry-data/business-marketing.d.ts +2 -0
  16. package/dist/lib/registry-data/communication.d.ts +2 -0
  17. package/dist/lib/registry-data/content-generation.d.ts +2 -0
  18. package/dist/lib/registry-data/data-analysis.d.ts +2 -0
  19. package/dist/lib/registry-data/design-branding.d.ts +2 -0
  20. package/dist/lib/registry-data/development-tools.d.ts +2 -0
  21. package/dist/lib/registry-data/education-learning.d.ts +2 -0
  22. package/dist/lib/registry-data/event-management.d.ts +2 -0
  23. package/dist/lib/registry-data/finance-compliance.d.ts +2 -0
  24. package/dist/lib/registry-data/health-wellness.d.ts +2 -0
  25. package/dist/lib/registry-data/index.d.ts +2 -0
  26. package/dist/lib/registry-data/media-processing.d.ts +2 -0
  27. package/dist/lib/registry-data/productivity-organization.d.ts +2 -0
  28. package/dist/lib/registry-data/project-management.d.ts +2 -0
  29. package/dist/lib/registry-data/research-writing.d.ts +2 -0
  30. package/dist/lib/registry-data/science-academic.d.ts +2 -0
  31. package/dist/lib/registry-data/travel-lifestyle.d.ts +2 -0
  32. package/dist/lib/registry-data/web-browser.d.ts +2 -0
  33. package/dist/lib/registry-types.d.ts +27 -0
  34. package/dist/lib/registry.d.ts +6 -18
  35. package/dist/lib/remote-registry.d.ts +3 -0
  36. package/dist/lib/run-state.d.ts +60 -0
  37. package/dist/lib/skill-aliases.d.ts +17 -0
  38. package/dist/lib/skillinfo.d.ts +5 -1
  39. package/dist/mcp/discovery-tools.d.ts +2 -0
  40. package/dist/mcp/helpers.d.ts +26 -0
  41. package/dist/mcp/http.d.ts +10 -0
  42. package/dist/mcp/index.d.ts +3 -2
  43. package/dist/mcp/operation-tools.d.ts +2 -0
  44. package/dist/mcp/resource-meta-tools.d.ts +2 -0
  45. package/dist/mcp/schedule-tools.d.ts +2 -0
  46. package/dist/mcp/server.d.ts +4 -0
  47. package/dist/types/api.d.ts +7 -4
  48. package/package.json +22 -11
  49. package/skills/_common/http-client.ts +1 -1
  50. package/skills/_common/index.ts +2 -3
  51. package/skills/_common/install.sh +5 -110
  52. package/skills/_common/installer.ts +31 -282
  53. package/skills/_common/skill-install.ts +14 -181
  54. package/skills/ad-creative-pack/SKILL.md +45 -0
  55. package/skills/ad-creative-pack/package.json +14 -0
  56. package/skills/advanced-math/package.json +3 -1
  57. package/skills/advanced-math/src/calculators.ts +118 -0
  58. package/skills/advanced-math/src/cli.ts +130 -0
  59. package/skills/advanced-math/src/conversion.ts +90 -0
  60. package/skills/advanced-math/src/finance.ts +75 -0
  61. package/skills/advanced-math/src/formatting.ts +95 -0
  62. package/skills/advanced-math/src/index.ts +24 -702
  63. package/skills/advanced-math/src/runtime.ts +49 -0
  64. package/skills/advanced-math/src/symbolic.ts +110 -0
  65. package/skills/advanced-math/src/types.ts +36 -0
  66. package/skills/analyze-data/SKILL.md +2 -2
  67. package/skills/analyze-data/src/analysis.ts +401 -0
  68. package/skills/analyze-data/src/cli.ts +66 -0
  69. package/skills/analyze-data/src/formatters.ts +235 -0
  70. package/skills/analyze-data/src/index.ts +6 -1027
  71. package/skills/analyze-data/src/logger.ts +36 -0
  72. package/skills/analyze-data/src/parsers.ts +57 -0
  73. package/skills/analyze-data/src/stats.ts +151 -0
  74. package/skills/analyze-data/src/types.ts +85 -0
  75. package/skills/api-docs-portal/SKILL.md +46 -0
  76. package/skills/api-docs-portal/package.json +9 -0
  77. package/skills/api-test-suite/src/index.ts +13 -0
  78. package/skills/apidocs/package.json +1 -1
  79. package/skills/apidocs/src/index.ts +3 -0
  80. package/skills/audio/package.json +2 -3
  81. package/skills/audio-cleanup-lab/SKILL.md +2 -2
  82. package/skills/audio-extract/CLAUDE.md +1 -1
  83. package/skills/audio-transcript-pack/SKILL.md +43 -0
  84. package/skills/audio-transcript-pack/package.json +10 -0
  85. package/skills/blog-article/CLAUDE.md +12 -0
  86. package/skills/blog-article/SKILL.md +45 -0
  87. package/skills/{create-blog-article → blog-article}/package.json +3 -3
  88. package/skills/brand-kit/SKILL.md +45 -0
  89. package/skills/brand-kit/package.json +14 -0
  90. package/skills/brand-photo-shoot/SKILL.md +28 -0
  91. package/skills/brand-photo-shoot/package.json +10 -0
  92. package/skills/brand-style-guide/SKILL.md +2 -2
  93. package/skills/brand-style-guide/src/index.ts +0 -0
  94. package/skills/budget-variance-analyzer/SKILL.md +2 -2
  95. package/skills/businessactivity/package.json +1 -1
  96. package/skills/businessactivity/src/index.ts +3 -0
  97. package/skills/calendar-events/src/ai-parser.ts +103 -0
  98. package/skills/calendar-events/src/api.ts +157 -0
  99. package/skills/calendar-events/src/auth.ts +22 -0
  100. package/skills/calendar-events/src/config.ts +6 -0
  101. package/skills/calendar-events/src/format.ts +96 -0
  102. package/skills/calendar-events/src/help.ts +54 -0
  103. package/skills/calendar-events/src/index.ts +21 -524
  104. package/skills/calendar-events/src/logger.ts +34 -0
  105. package/skills/calendar-events/src/types.ts +67 -0
  106. package/skills/compress-video/SKILL.md +2 -2
  107. package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +16 -0
  108. package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.json +227 -0
  109. package/skills/consolelog/package.json +1 -1
  110. package/skills/consolelog/src/index.ts +3 -0
  111. package/skills/contract-review-report/SKILL.md +43 -0
  112. package/skills/contract-review-report/package.json +10 -0
  113. package/skills/convert/SKILL.md +2 -3
  114. package/skills/customer-feedback-report/SKILL.md +44 -0
  115. package/skills/customer-feedback-report/package.json +10 -0
  116. package/skills/dashboard-builder/package.json +3 -1
  117. package/skills/database-explorer/package.json +3 -1
  118. package/skills/deepresearch/README.md +4 -13
  119. package/skills/deploy/src/http-client.ts +1 -1
  120. package/skills/diff-viewer/package.json +4 -1
  121. package/skills/doc-generate/package.json +0 -1
  122. package/skills/doc-generate/src/ai.ts +50 -0
  123. package/skills/doc-generate/src/cli.ts +203 -0
  124. package/skills/doc-generate/src/dependencies.ts +44 -0
  125. package/skills/doc-generate/src/document-builder.ts +299 -0
  126. package/skills/doc-generate/src/index.ts +40 -764
  127. package/skills/doc-generate/src/markdown-parser.ts +125 -0
  128. package/skills/doc-generate/src/types.ts +68 -0
  129. package/skills/domainpurchase/SKILL.md +1 -1
  130. package/skills/domainpurchase/package.json +1 -1
  131. package/skills/domainpurchase/src/index.ts +3 -0
  132. package/skills/domainsearch/SKILL.md +1 -1
  133. package/skills/domainsearch/package.json +1 -1
  134. package/skills/domainsearch/src/index.ts +3 -0
  135. package/skills/email-sequence/SKILL.md +44 -0
  136. package/skills/email-sequence/package.json +14 -0
  137. package/skills/excel/CLAUDE.md +2 -2
  138. package/skills/experiment-power-calculator/package.json +3 -1
  139. package/skills/extract-invoice/src/cli.ts +97 -0
  140. package/skills/extract-invoice/src/extractor.ts +170 -0
  141. package/skills/extract-invoice/src/file-utils.ts +46 -0
  142. package/skills/extract-invoice/src/formatters.ts +144 -0
  143. package/skills/extract-invoice/src/index.ts +44 -629
  144. package/skills/extract-invoice/src/runtime.ts +46 -0
  145. package/skills/extract-invoice/src/types.ts +88 -0
  146. package/skills/folder-tree/package.json +3 -1
  147. package/skills/form-filler/package.json +3 -1
  148. package/skills/generate-api-client/package.json +3 -1
  149. package/skills/generate-api-client/src/generator.ts +47 -0
  150. package/skills/generate-api-client/src/index.ts +3 -777
  151. package/skills/generate-api-client/src/logger.ts +34 -0
  152. package/skills/generate-api-client/src/python-generator.ts +245 -0
  153. package/skills/generate-api-client/src/spec-loader.ts +48 -0
  154. package/skills/generate-api-client/src/type-mappers.ts +79 -0
  155. package/skills/generate-api-client/src/types.ts +76 -0
  156. package/skills/generate-api-client/src/typescript-generator.ts +247 -0
  157. package/skills/generate-book-cover/package.json +3 -1
  158. package/skills/generate-dockerfile/src/cli.ts +78 -0
  159. package/skills/generate-dockerfile/src/dockerfile-templates.ts +392 -0
  160. package/skills/generate-dockerfile/src/index.ts +12 -790
  161. package/skills/generate-dockerfile/src/logger.ts +30 -0
  162. package/skills/generate-dockerfile/src/project-detection.ts +68 -0
  163. package/skills/generate-dockerfile/src/support-files.ts +171 -0
  164. package/skills/generate-dockerfile/src/types.ts +29 -0
  165. package/skills/generate-documentation/src/ai.ts +131 -0
  166. package/skills/generate-documentation/src/cli.ts +71 -0
  167. package/skills/generate-documentation/src/code-parser.ts +300 -0
  168. package/skills/generate-documentation/src/file-processing.ts +182 -0
  169. package/skills/generate-documentation/src/index.ts +13 -753
  170. package/skills/generate-documentation/src/runtime.ts +35 -0
  171. package/skills/generate-documentation/src/types.ts +30 -0
  172. package/skills/generate-env/package.json +3 -1
  173. package/skills/generate-env/src/cli.ts +85 -0
  174. package/skills/generate-env/src/detection.ts +161 -0
  175. package/skills/generate-env/src/env-data.ts +66 -0
  176. package/skills/generate-env/src/generators.ts +240 -0
  177. package/skills/generate-env/src/index.ts +76 -676
  178. package/skills/generate-env/src/runtime.ts +30 -0
  179. package/skills/generate-env/src/types.ts +32 -0
  180. package/skills/generate-favicon/package.json +3 -1
  181. package/skills/generate-mock-data/package.json +3 -1
  182. package/skills/generate-mock-data/src/ai.ts +102 -0
  183. package/skills/generate-mock-data/src/formatters.ts +84 -0
  184. package/skills/generate-mock-data/src/generator.ts +377 -0
  185. package/skills/generate-mock-data/src/index.ts +15 -716
  186. package/skills/generate-mock-data/src/logger.ts +37 -0
  187. package/skills/generate-mock-data/src/presets.ts +110 -0
  188. package/skills/generate-mock-data/src/types.ts +21 -0
  189. package/skills/generate-pr-description/src/ai.ts +144 -0
  190. package/skills/generate-pr-description/src/cli.ts +80 -0
  191. package/skills/generate-pr-description/src/clipboard.ts +30 -0
  192. package/skills/generate-pr-description/src/formatters.ts +231 -0
  193. package/skills/generate-pr-description/src/git.ts +153 -0
  194. package/skills/generate-pr-description/src/index.ts +21 -714
  195. package/skills/generate-pr-description/src/types.ts +49 -0
  196. package/skills/generate-presentation/src/ai-clients.ts +61 -0
  197. package/skills/generate-presentation/src/cli.ts +126 -0
  198. package/skills/generate-presentation/src/index.ts +3 -751
  199. package/skills/generate-presentation/src/logger.ts +67 -0
  200. package/skills/generate-presentation/src/presentation-generator.ts +425 -0
  201. package/skills/generate-presentation/src/runtime.ts +6 -0
  202. package/skills/generate-presentation/src/security.ts +12 -0
  203. package/skills/generate-presentation/src/types.ts +28 -0
  204. package/skills/generate-qrcode/package.json +4 -1
  205. package/skills/generate-regex/package.json +3 -1
  206. package/skills/generate-resume/src/cli.ts +157 -0
  207. package/skills/generate-resume/src/index.ts +13 -917
  208. package/skills/generate-resume/src/parsers.ts +95 -0
  209. package/skills/generate-resume/src/renderers.ts +538 -0
  210. package/skills/generate-resume/src/security.ts +39 -0
  211. package/skills/generate-resume/src/types.ts +86 -0
  212. package/skills/generate-social-posts/src/ai.ts +88 -0
  213. package/skills/generate-social-posts/src/cli.ts +118 -0
  214. package/skills/generate-social-posts/src/exporters.ts +126 -0
  215. package/skills/generate-social-posts/src/generator.ts +130 -0
  216. package/skills/generate-social-posts/src/index.ts +19 -709
  217. package/skills/generate-social-posts/src/platforms.ts +39 -0
  218. package/skills/generate-social-posts/src/runtime.ts +34 -0
  219. package/skills/generate-social-posts/src/source.ts +116 -0
  220. package/skills/generate-social-posts/src/types.ts +58 -0
  221. package/skills/gif-maker/package.json +4 -1
  222. package/skills/github-manager/package.json +3 -1
  223. package/skills/gmail/CLAUDE.md +1 -1
  224. package/skills/highlight-reel-generator/src/index.ts +19 -0
  225. package/skills/hook/src/commands/create.ts +20 -845
  226. package/skills/hook/src/templates/root.ts +196 -0
  227. package/skills/hook/src/templates/source.ts +647 -0
  228. package/skills/http-server/package.json +3 -1
  229. package/skills/icon-pack/README.md +28 -0
  230. package/skills/icon-pack/SKILL.md +23 -0
  231. package/skills/icon-pack/package.json +29 -0
  232. package/skills/{audio → icon-pack}/tsconfig.json +10 -12
  233. package/skills/image/package.json +1 -2
  234. package/skills/implementation-agent/package.json +3 -1
  235. package/skills/implementation-agent/src/ai-generation.ts +225 -0
  236. package/skills/implementation-agent/src/index.ts +3 -960
  237. package/skills/implementation-agent/src/minimist.d.ts +15 -0
  238. package/skills/implementation-agent/src/templates.ts +686 -0
  239. package/skills/implementation-agent/src/types.ts +53 -0
  240. package/skills/implementation-plan/package.json +3 -1
  241. package/skills/implementation-todo/package.json +3 -1
  242. package/skills/invoice/package.json +1 -1
  243. package/skills/invoice/src/index.ts +3 -0
  244. package/skills/invoice-reconciliation/SKILL.md +42 -0
  245. package/skills/invoice-reconciliation/package.json +10 -0
  246. package/skills/landing-page-pack/SKILL.md +47 -0
  247. package/skills/landing-page-pack/package.json +14 -0
  248. package/skills/latex-table-generator/package.json +3 -1
  249. package/skills/logo-design/SKILL.md +25 -44
  250. package/skills/logo-design/package.json +3 -15
  251. package/skills/lorem-generator/package.json +3 -1
  252. package/skills/lorem-generator/src/index.ts +13 -0
  253. package/skills/managehook/package.json +1 -1
  254. package/skills/managehook/src/index.ts +3 -0
  255. package/skills/managemcp/package.json +1 -1
  256. package/skills/managemcp/src/index.ts +3 -0
  257. package/skills/manageskill/package.json +1 -1
  258. package/skills/manageskill/src/index.ts +3 -0
  259. package/skills/markdown-validator/package.json +3 -1
  260. package/skills/markdown-validator/src/index.ts +1 -4
  261. package/skills/market-research-report/SKILL.md +41 -0
  262. package/skills/market-research-report/package.json +10 -0
  263. package/skills/mcp-builder/package.json +4 -1
  264. package/skills/mcp-builder/src/ai-descriptions.ts +37 -0
  265. package/skills/mcp-builder/src/generators.ts +513 -0
  266. package/skills/mcp-builder/src/index.ts +7 -908
  267. package/skills/mcp-builder/src/minimist.d.ts +15 -0
  268. package/skills/mcp-builder/src/naming.ts +12 -0
  269. package/skills/mcp-builder/src/options.ts +170 -0
  270. package/skills/mcp-builder/src/templates.ts +149 -0
  271. package/skills/mcp-builder/src/types.ts +42 -0
  272. package/skills/meeting-pack/SKILL.md +43 -0
  273. package/skills/meeting-pack/package.json +10 -0
  274. package/skills/merge-pdfs/package.json +5 -1
  275. package/skills/migration-plan-pack/SKILL.md +45 -0
  276. package/skills/migration-plan-pack/package.json +10 -0
  277. package/skills/music/package.json +2 -3
  278. package/skills/music-album/SKILL.md +37 -0
  279. package/skills/music-album/package.json +10 -0
  280. package/skills/notion-manager/package.json +3 -1
  281. package/skills/npmpublish/CLAUDE.md +5 -8
  282. package/skills/npmpublish/README.md +5 -26
  283. package/skills/npmpublish/src/index.ts +9 -147
  284. package/skills/one-page-website/SKILL.md +46 -0
  285. package/skills/one-page-website/package.json +10 -0
  286. package/skills/one-page-website/tsconfig.json +8 -0
  287. package/skills/pdf-generate/src/cli.ts +162 -0
  288. package/skills/pdf-generate/src/html.ts +84 -0
  289. package/skills/pdf-generate/src/index.ts +11 -800
  290. package/skills/pdf-generate/src/markdown.ts +27 -0
  291. package/skills/pdf-generate/src/pdf-writer.ts +78 -0
  292. package/skills/pdf-generate/src/runtime.ts +34 -0
  293. package/skills/pdf-generate/src/security.ts +37 -0
  294. package/skills/pdf-generate/src/templates.ts +311 -0
  295. package/skills/pdf-generate/src/types.ts +28 -0
  296. package/skills/pdf-read/SKILL.md +10 -10
  297. package/skills/pdf-to-dataset/SKILL.md +45 -0
  298. package/skills/pdf-to-dataset/package.json +10 -0
  299. package/skills/pdf-to-markdown/SKILL.md +49 -0
  300. package/skills/pdf-to-markdown/package.json +10 -0
  301. package/skills/pdf-to-markdown/tsconfig.json +10 -0
  302. package/skills/performance-audit-report/SKILL.md +42 -0
  303. package/skills/performance-audit-report/package.json +10 -0
  304. package/skills/persona-based-adwriter/src/index.ts +19 -0
  305. package/skills/photo-album/SKILL.md +29 -0
  306. package/skills/photo-album/package.json +9 -0
  307. package/skills/photo-album/tsconfig.json +4 -0
  308. package/skills/pitch-deck/SKILL.md +43 -0
  309. package/skills/pitch-deck/package.json +9 -0
  310. package/skills/playlist-maker/SKILL.md +33 -0
  311. package/skills/playlist-maker/package.json +9 -0
  312. package/skills/playlist-maker/tsconfig.json +4 -0
  313. package/skills/product-mockup/SKILL.md +45 -0
  314. package/skills/product-mockup/package.json +3 -20
  315. package/skills/product-mockup/tsconfig.json +3 -5
  316. package/skills/project-retro-companion/src/index.ts +19 -0
  317. package/skills/proposal-pack/SKILL.md +45 -0
  318. package/skills/proposal-pack/package.json +10 -0
  319. package/skills/read-pdf/SKILL.md +5 -4
  320. package/skills/repo-onboarding-report/SKILL.md +42 -0
  321. package/skills/repo-onboarding-report/package.json +10 -0
  322. package/skills/sales-call-recapper/src/index.ts +20 -0
  323. package/skills/salescopy/package.json +1 -1
  324. package/skills/salescopy/src/index.ts +3 -0
  325. package/skills/scaffold-project/src/ai-detect.ts +136 -0
  326. package/skills/scaffold-project/src/file-generators.ts +292 -0
  327. package/skills/scaffold-project/src/index.ts +8 -991
  328. package/skills/scaffold-project/src/project-config.ts +338 -0
  329. package/skills/scaffold-project/src/templates.ts +173 -0
  330. package/skills/scaffold-project/src/types.ts +58 -0
  331. package/skills/scientific-figure-check/package.json +3 -1
  332. package/skills/sdk-generator/SKILL.md +45 -0
  333. package/skills/sdk-generator/package.json +10 -0
  334. package/skills/sdk-generator/tsconfig.json +8 -0
  335. package/skills/security-audit/src/index.ts +25 -6
  336. package/skills/security-audit-report/SKILL.md +40 -0
  337. package/skills/security-audit-report/package.json +10 -0
  338. package/skills/seo-content-pack/SKILL.md +44 -0
  339. package/skills/seo-content-pack/package.json +9 -0
  340. package/skills/short-video-pack/SKILL.md +30 -0
  341. package/skills/short-video-pack/package.json +10 -0
  342. package/skills/slack-assistant/package.json +3 -1
  343. package/skills/slide-deck-generator/SKILL.md +44 -0
  344. package/skills/slide-deck-generator/package.json +10 -0
  345. package/skills/sms/package.json +1 -1
  346. package/skills/sms/src/index.ts +15 -0
  347. package/skills/social-content-calendar/SKILL.md +45 -0
  348. package/skills/social-content-calendar/package.json +14 -0
  349. package/skills/split-pdf/package.json +4 -1
  350. package/skills/subtitle/package.json +2 -1
  351. package/skills/subtitle/src/index.ts +3 -0
  352. package/skills/terraform-generator/package.json +3 -1
  353. package/skills/test-suite-generator/SKILL.md +41 -0
  354. package/skills/test-suite-generator/package.json +10 -0
  355. package/skills/timesheet/package.json +1 -1
  356. package/skills/timesheet/src/index.ts +3 -0
  357. package/skills/transcript/SKILL.md +1 -8
  358. package/skills/validate-config/package.json +3 -1
  359. package/skills/video/package.json +6 -4
  360. package/skills/video-downloader/package.json +3 -1
  361. package/skills/video-highlight-pack/SKILL.md +44 -0
  362. package/skills/video-highlight-pack/package.json +10 -0
  363. package/skills/voiceover-jingle-pack/SKILL.md +28 -0
  364. package/skills/voiceover-jingle-pack/package.json +10 -0
  365. package/skills/watermark/package.json +6 -1
  366. package/skills/webcrawling/package.json +2 -1
  367. package/skills/write/SKILL.md +6 -6
  368. package/dist/server/serve.d.ts +0 -11
  369. package/skills/apidocs/.claude/settings.json +0 -5
  370. package/skills/audio/.env.example +0 -14
  371. package/skills/audio/QUICKSTART.md +0 -158
  372. package/skills/audio/README.md +0 -256
  373. package/skills/audio/src/index-local.ts +0 -206
  374. package/skills/audio/src/index.ts +0 -95
  375. package/skills/audio/src/providers/elevenlabs.ts +0 -115
  376. package/skills/audio/src/providers/google.ts +0 -116
  377. package/skills/audio/src/providers/minimax.ts +0 -83
  378. package/skills/audio/src/providers/openai.ts +0 -115
  379. package/skills/audio/src/types.ts +0 -79
  380. package/skills/audiobook-chapter-proofer/CLAUDE.md +0 -19
  381. package/skills/audiobook-chapter-proofer/package.json +0 -27
  382. package/skills/audiobook-chapter-proofer/src/index.ts +0 -285
  383. package/skills/browse/src/client.ts +0 -373
  384. package/skills/browse/src/index-local.ts +0 -430
  385. package/skills/browse/src/index.ts +0 -110
  386. package/skills/browse/src/sse-server.ts +0 -919
  387. package/skills/browse/src/types.ts +0 -104
  388. package/skills/consolelog/src/server/index.ts +0 -508
  389. package/skills/create-blog-article/CLAUDE.md +0 -19
  390. package/skills/create-blog-article/src/index.ts +0 -745
  391. package/skills/create-blog-article/tsconfig.json +0 -10
  392. package/skills/deepresearch/src/agents/query-generator.ts +0 -91
  393. package/skills/deepresearch/src/agents/synthesizer.ts +0 -111
  394. package/skills/deepresearch/src/index.ts +0 -224
  395. package/skills/deepresearch/src/research.ts +0 -166
  396. package/skills/deepresearch/src/services/anthropic.ts +0 -69
  397. package/skills/deepresearch/src/services/exa.ts +0 -108
  398. package/skills/deepresearch/src/services/firecrawl.ts +0 -88
  399. package/skills/deepresearch/src/services/openai.ts +0 -81
  400. package/skills/deepresearch/src/types.ts +0 -76
  401. package/skills/deepresearch/src/utils/file.ts +0 -111
  402. package/skills/deepresearch/src/utils/logger.ts +0 -84
  403. package/skills/domainpurchase/src/server/index.ts +0 -332
  404. package/skills/domainsearch/src/server/index.ts +0 -229
  405. package/skills/e2bswarm/README.md +0 -135
  406. package/skills/e2bswarm/SKILL.md +0 -118
  407. package/skills/e2bswarm/examples/tasks-example.json +0 -38
  408. package/skills/e2bswarm/package.json +0 -59
  409. package/skills/e2bswarm/src/commands/collect.ts +0 -135
  410. package/skills/e2bswarm/src/commands/install.ts +0 -164
  411. package/skills/e2bswarm/src/commands/kill.ts +0 -62
  412. package/skills/e2bswarm/src/commands/spawn.ts +0 -134
  413. package/skills/e2bswarm/src/commands/status.ts +0 -90
  414. package/skills/e2bswarm/src/commands/sync.ts +0 -208
  415. package/skills/e2bswarm/src/index.ts +0 -121
  416. package/skills/e2bswarm/src/lib/config.ts +0 -75
  417. package/skills/e2bswarm/src/lib/e2b.ts +0 -490
  418. package/skills/e2bswarm/src/lib/github.ts +0 -253
  419. package/skills/e2bswarm/src/lib/logger.ts +0 -41
  420. package/skills/e2bswarm/src/lib/paths.ts +0 -75
  421. package/skills/e2bswarm/src/lib/tasks.ts +0 -320
  422. package/skills/e2bswarm/src/types/index.ts +0 -107
  423. package/skills/e2bswarm/templates/codebox/e2b.Dockerfile +0 -38
  424. package/skills/e2bswarm/templates/codebox/e2b.toml +0 -3
  425. package/skills/e2bswarm/templates/setup.sh +0 -21
  426. package/skills/e2bswarm/tsconfig.json +0 -19
  427. package/skills/generate-book-cover/src/index.ts +0 -694
  428. package/skills/image/src/index-local.ts +0 -206
  429. package/skills/image/src/index.ts +0 -96
  430. package/skills/image/src/providers/google.ts +0 -79
  431. package/skills/image/src/providers/minimax.ts +0 -94
  432. package/skills/image/src/providers/openai.ts +0 -80
  433. package/skills/image/src/providers/xai.ts +0 -73
  434. package/skills/image/src/types.ts +0 -37
  435. package/skills/logo-design/CLAUDE.md +0 -30
  436. package/skills/logo-design/src/index.ts +0 -322
  437. package/skills/managehook/src/server/index.ts +0 -108
  438. package/skills/managemcp/src/server/index.ts +0 -108
  439. package/skills/manageskill/src/server/index.ts +0 -108
  440. package/skills/music/CLAUDE.md +0 -9
  441. package/skills/music/src/index.ts +0 -94
  442. package/skills/music/tsconfig.json +0 -10
  443. package/skills/pdf-read/src/index.ts +0 -320
  444. package/skills/product-mockup/CLAUDE.md +0 -19
  445. package/skills/product-mockup/src/index.ts +0 -290
  446. package/skills/read-pdf/src/index.ts +0 -388
  447. package/skills/remove-background/src/index.ts +0 -405
  448. package/skills/sound-effects/SKILL.md +0 -34
  449. package/skills/sound-effects/package.json +0 -21
  450. package/skills/sound-effects/src/index.ts +0 -172
  451. package/skills/sound-effects/tsconfig.json +0 -8
  452. package/skills/transcript/src/chunker.ts +0 -215
  453. package/skills/transcript/src/formatter.ts +0 -134
  454. package/skills/transcript/src/index-local.ts +0 -226
  455. package/skills/transcript/src/index.ts +0 -110
  456. package/skills/transcript/src/providers/elevenlabs.ts +0 -133
  457. package/skills/transcript/src/providers/gemini.ts +0 -192
  458. package/skills/transcript/src/providers/index.ts +0 -54
  459. package/skills/transcript/src/providers/openai.ts +0 -203
  460. package/skills/transcript/src/types.ts +0 -106
  461. package/skills/video/.env.example +0 -14
  462. package/skills/video/EXAMPLES.md +0 -266
  463. package/skills/video/LICENSE +0 -192
  464. package/skills/video/README.md +0 -174
  465. package/skills/video/src/cli.ts +0 -155
  466. package/skills/video/src/index-local.ts +0 -148
  467. package/skills/video/src/index.ts +0 -96
  468. package/skills/video/src/providers/google-veo.ts +0 -126
  469. package/skills/video/src/providers/index.ts +0 -22
  470. package/skills/video/src/providers/minimax.ts +0 -100
  471. package/skills/video/src/providers/openai-sora.ts +0 -164
  472. package/skills/video/src/providers/runway.ts +0 -159
  473. package/skills/video/src/types.ts +0 -35
  474. package/skills/video/tsconfig.json +0 -22
  475. package/skills/voiceover-casting-assistant/CLAUDE.md +0 -19
  476. package/skills/voiceover-casting-assistant/package.json +0 -27
  477. package/skills/voiceover-casting-assistant/src/index.ts +0 -255
  478. package/skills/voiceover-casting-assistant/tsconfig.json +0 -10
  479. package/skills/webcrawling/src/commands/config.ts +0 -34
  480. package/skills/webcrawling/src/commands/crawl.ts +0 -33
  481. package/skills/webcrawling/src/commands/scrape.ts +0 -32
  482. package/skills/webcrawling/src/commands/sessions.ts +0 -42
  483. package/skills/webcrawling/src/lib/crawler.ts +0 -174
  484. package/skills/webcrawling/src/lib/storage.ts +0 -130
  485. package/skills/webcrawling/src/types/index.ts +0 -45
  486. package/skills/webcrawling/src/utils/logger.ts +0 -30
  487. package/skills/webcrawling/src/utils/paths.ts +0 -28
  488. /package/skills/{audiobook-chapter-proofer → blog-article}/tsconfig.json +0 -0
@@ -1,405 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- /**
4
- * Remove Background Skill
5
- *
6
- * Removes backgrounds from images using local AI processing
7
- * Supports batch processing, custom backgrounds, and multiple output formats
8
- * No API key required - runs entirely locally
9
- */
10
-
11
- import { parseArgs } from "node:util";
12
- import { mkdir, writeFile, readFile, stat } from "node:fs/promises";
13
- import { join, basename, extname } from "node:path";
14
- import { existsSync } from "node:fs";
15
-
16
- // Types
17
- interface ProcessedImage {
18
- input: string;
19
- output: string;
20
- size: string;
21
- error?: string;
22
- }
23
-
24
- interface Metadata {
25
- timestamp: string;
26
- totalImages: number;
27
- successful: number;
28
- failed: number;
29
- settings: {
30
- bgColor: string;
31
- format: string;
32
- };
33
- images: ProcessedImage[];
34
- }
35
-
36
- // Configuration
37
- const OUTPUT_BASE = process.env.SKILLS_OUTPUT_DIR || process.env.SKILLS_EXPORTS_DIR || ".skills";
38
- const PROJECT_ROOT = process.env.SKILLS_PROJECT_ROOT || process.cwd();
39
-
40
- // Supported formats
41
- const SUPPORTED_FORMATS = [".png", ".jpg", ".jpeg", ".webp"];
42
-
43
- /**
44
- * Parse command line arguments
45
- */
46
- function parseArguments() {
47
- const { values, positionals } = parseArgs({
48
- args: Bun.argv.slice(2),
49
- options: {
50
- "bg-color": { type: "string", default: "transparent" },
51
- output: { type: "string", short: "o" },
52
- format: { type: "string", default: "png" },
53
- help: { type: "boolean", short: "h", default: false },
54
- },
55
- allowPositionals: true,
56
- });
57
-
58
- if (values.help) {
59
- printHelp();
60
- process.exit(0);
61
- }
62
-
63
- // Validate inputs
64
- if (positionals.length === 0) {
65
- console.error("Error: No image files specified");
66
- console.error("Usage: skills run remove-background -- image.jpg [image2.png ...]");
67
- console.error("Run with --help for more information");
68
- process.exit(1);
69
- }
70
-
71
- // Validate format
72
- if (!["png", "jpg", "webp"].includes(values.format as string)) {
73
- console.error(`Error: Invalid format "${values.format}". Use: png, jpg, or webp`);
74
- process.exit(1);
75
- }
76
-
77
- // Validate color format (if not transparent)
78
- const bgColor = values["bg-color"] as string;
79
- if (bgColor !== "transparent" && !/^#[0-9A-Fa-f]{6}$/.test(bgColor)) {
80
- console.error(`Error: Invalid color format "${bgColor}". Use hex format like #FF5733 or "transparent"`);
81
- process.exit(1);
82
- }
83
-
84
- return {
85
- images: positionals,
86
- bgColor,
87
- outputDir: values.output as string | undefined,
88
- format: values.format as string,
89
- };
90
- }
91
-
92
- /**
93
- * Print help message
94
- */
95
- function printHelp() {
96
- console.log(`
97
- Remove Background - AI-powered background removal (runs locally)
98
-
99
- USAGE:
100
- skills run remove-background -- <images...> [options]
101
-
102
- OPTIONS:
103
- --bg-color <color> Background color (hex like #FF5733 or "transparent")
104
- --output, -o <dir> Custom output directory
105
- --format <format> Output format: png, jpg, webp (default: png)
106
- -h, --help Show this help message
107
-
108
- EXAMPLES:
109
- # Basic usage
110
- skills run remove-background -- photo.jpg
111
-
112
- # White background
113
- skills run remove-background -- product.jpg --bg-color "#FFFFFF"
114
-
115
- # Batch process
116
- skills run remove-background -- image1.jpg image2.png image3.webp
117
-
118
- # Custom output directory
119
- skills run remove-background -- image.jpg --output ./processed
120
-
121
- NOTE:
122
- This skill runs locally using AI - no API key required.
123
- First run may download the model (~30MB).
124
- `);
125
- }
126
-
127
- /**
128
- * Validate image file
129
- */
130
- async function validateImage(imagePath: string): Promise<boolean> {
131
- try {
132
- if (!existsSync(imagePath)) {
133
- console.error(`File not found: ${imagePath}`);
134
- return false;
135
- }
136
-
137
- const ext = extname(imagePath).toLowerCase();
138
- if (!SUPPORTED_FORMATS.includes(ext)) {
139
- console.error(`Unsupported format: ${imagePath} (use PNG, JPG, JPEG, or WebP)`);
140
- return false;
141
- }
142
-
143
- const stats = await stat(imagePath);
144
- const maxSize = 20 * 1024 * 1024; // 20 MB
145
- if (stats.size > maxSize) {
146
- console.error(`File too large: ${imagePath} (max 20 MB)`);
147
- return false;
148
- }
149
-
150
- return true;
151
- } catch (error) {
152
- console.error(`Error validating ${imagePath}:`, error);
153
- return false;
154
- }
155
- }
156
-
157
- /**
158
- * Get mime type from file extension
159
- */
160
- function getMimeType(filePath: string): string {
161
- const ext = extname(filePath).toLowerCase();
162
- const mimeTypes: Record<string, string> = {
163
- ".png": "image/png",
164
- ".jpg": "image/jpeg",
165
- ".jpeg": "image/jpeg",
166
- ".webp": "image/webp",
167
- };
168
- return mimeTypes[ext] || "image/png";
169
- }
170
-
171
- /**
172
- * Remove background from image using local AI model
173
- */
174
- async function removeBackground(imagePath: string): Promise<Blob> {
175
- // Dynamic import to avoid loading until needed
176
- const { removeBackground: removeBg } = await import("@imgly/background-removal-node");
177
-
178
- console.log(" Running local AI background removal...");
179
-
180
- // Read image as blob with proper mime type
181
- const imageBuffer = await readFile(imagePath);
182
- const mimeType = getMimeType(imagePath);
183
- const blob = new Blob([imageBuffer], { type: mimeType });
184
-
185
- // Process with local AI model
186
- const result = await removeBg(blob, {
187
- progress: (key, current, total) => {
188
- if (key === "compute:inference") {
189
- const pct = Math.round((current / total) * 100);
190
- process.stdout.write(`\r Processing: ${pct}%`);
191
- }
192
- },
193
- });
194
-
195
- console.log("\r Processing: 100%");
196
- return result;
197
- }
198
-
199
- /**
200
- * Apply background color to transparent image
201
- */
202
- async function applyBackgroundColor(
203
- imageBuffer: Buffer,
204
- bgColor: string
205
- ): Promise<Buffer> {
206
- // If transparent, return as-is
207
- if (bgColor === "transparent") {
208
- return imageBuffer;
209
- }
210
-
211
- // Use sharp to composite with background color
212
- const sharp = (await import("sharp")).default;
213
-
214
- // Parse hex color
215
- const r = parseInt(bgColor.slice(1, 3), 16);
216
- const g = parseInt(bgColor.slice(3, 5), 16);
217
- const b = parseInt(bgColor.slice(5, 7), 16);
218
-
219
- // Get image dimensions
220
- const metadata = await sharp(imageBuffer).metadata();
221
- const width = metadata.width || 1;
222
- const height = metadata.height || 1;
223
-
224
- // Create solid color background
225
- const background = await sharp({
226
- create: {
227
- width,
228
- height,
229
- channels: 4,
230
- background: { r, g, b, alpha: 1 },
231
- },
232
- })
233
- .png()
234
- .toBuffer();
235
-
236
- // Composite foreground over background
237
- const result = await sharp(background)
238
- .composite([{ input: imageBuffer, blend: "over" }])
239
- .png()
240
- .toBuffer();
241
-
242
- return result;
243
- }
244
-
245
- /**
246
- * Format file size
247
- */
248
- function formatSize(bytes: number): string {
249
- if (bytes < 1024) return `${bytes} B`;
250
- if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
251
- return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
252
- }
253
-
254
- /**
255
- * Process single image
256
- */
257
- async function processImage(
258
- imagePath: string,
259
- outputDir: string,
260
- options: {
261
- bgColor: string;
262
- format: string;
263
- }
264
- ): Promise<ProcessedImage> {
265
- try {
266
- console.log(`\nProcessing: ${basename(imagePath)}`);
267
-
268
- const isValid = await validateImage(imagePath);
269
- if (!isValid) {
270
- return {
271
- input: imagePath,
272
- output: "",
273
- size: "0",
274
- error: "Validation failed",
275
- };
276
- }
277
-
278
- // Remove background
279
- const resultBlob = await removeBackground(imagePath);
280
- let resultBuffer = Buffer.from(await resultBlob.arrayBuffer());
281
-
282
- // Apply background color if specified
283
- if (options.bgColor !== "transparent") {
284
- console.log(` Applying background color: ${options.bgColor}`);
285
- resultBuffer = await applyBackgroundColor(resultBuffer, options.bgColor);
286
- }
287
-
288
- // Convert to desired format
289
- const sharp = (await import("sharp")).default;
290
- if (options.format === "jpg") {
291
- resultBuffer = await sharp(resultBuffer).jpeg({ quality: 95 }).toBuffer();
292
- } else if (options.format === "webp") {
293
- resultBuffer = await sharp(resultBuffer).webp({ quality: 95 }).toBuffer();
294
- }
295
-
296
- // Generate output filename
297
- const ext = extname(imagePath);
298
- const name = basename(imagePath, ext);
299
- const outputExt = options.format === "jpg" ? ".jpg" : `.${options.format}`;
300
- const outputPath = join(outputDir, `${name}-nobg${outputExt}`);
301
-
302
- // Save processed image
303
- await writeFile(outputPath, resultBuffer);
304
-
305
- const stats = await stat(outputPath);
306
-
307
- console.log(` Saved: ${basename(outputPath)}`);
308
- console.log(` Size: ${formatSize(stats.size)}`);
309
-
310
- return {
311
- input: imagePath,
312
- output: outputPath,
313
- size: formatSize(stats.size),
314
- };
315
- } catch (error) {
316
- console.error(` Failed: ${error instanceof Error ? error.message : String(error)}`);
317
- return {
318
- input: imagePath,
319
- output: "",
320
- size: "0",
321
- error: error instanceof Error ? error.message : String(error),
322
- };
323
- }
324
- }
325
-
326
- /**
327
- * Main function
328
- */
329
- async function main() {
330
- console.log("Remove Background Skill v2.1.0\n");
331
- console.log(" Powered by local AI (no API key needed)\n");
332
-
333
- // Parse arguments
334
- const args = parseArguments();
335
-
336
- // Setup output directory
337
- const timestamp = new Date().toISOString().replace(/[:.]/g, "-").split("T")[0] + "_" +
338
- new Date().toTimeString().split(" ")[0].replace(/:/g, "");
339
-
340
- const outputDir = args.outputDir
341
- ? join(PROJECT_ROOT, args.outputDir)
342
- : join(OUTPUT_BASE, "remove-background", timestamp);
343
-
344
- await mkdir(outputDir, { recursive: true });
345
-
346
- console.log(`Output directory: ${outputDir}`);
347
- console.log(`Background: ${args.bgColor}`);
348
- console.log(`Format: ${args.format}`);
349
- console.log(`Processing ${args.images.length} image(s)...`);
350
-
351
- // Process all images
352
- const results: ProcessedImage[] = [];
353
- for (const imagePath of args.images) {
354
- // Handle both absolute and relative paths
355
- const absolutePath = imagePath.startsWith("/") ? imagePath : join(PROJECT_ROOT, imagePath);
356
- const result = await processImage(absolutePath, outputDir, {
357
- bgColor: args.bgColor,
358
- format: args.format,
359
- });
360
- results.push(result);
361
- }
362
-
363
- // Calculate statistics
364
- const successful = results.filter((r) => !r.error).length;
365
- const failed = results.filter((r) => r.error).length;
366
-
367
- // Create metadata
368
- const metadata: Metadata = {
369
- timestamp: new Date().toISOString(),
370
- totalImages: results.length,
371
- successful,
372
- failed,
373
- settings: {
374
- bgColor: args.bgColor,
375
- format: args.format,
376
- },
377
- images: results,
378
- };
379
-
380
- // Save metadata
381
- const metadataPath = join(outputDir, "metadata.json");
382
- await writeFile(metadataPath, JSON.stringify(metadata, null, 2));
383
-
384
- // Print summary
385
- console.log("\n" + "=".repeat(50));
386
- console.log("Summary");
387
- console.log("=".repeat(50));
388
- console.log(`Successful: ${successful}`);
389
- console.log(`Failed: ${failed}`);
390
- console.log(`Output: ${outputDir}`);
391
- console.log("=".repeat(50));
392
-
393
- if (failed > 0) {
394
- console.error("\nSome images failed to process. Check errors above.");
395
- process.exit(1);
396
- }
397
-
398
- console.log("\nAll images processed successfully!");
399
- }
400
-
401
- // Run main function
402
- main().catch((error) => {
403
- console.error("\nFatal error:", error);
404
- process.exit(1);
405
- });
@@ -1,34 +0,0 @@
1
- ---
2
- name: sound-effects
3
- version: 0.1.0
4
- description: Generate sound effects using AI models (Minimax)
5
- category: Media Processing
6
- tags:
7
- - audio
8
- - sound-effects
9
- - sfx
10
- - ai
11
- - generation
12
- ---
13
-
14
- # Sound Effects
15
-
16
- Generate realistic sound effects from text descriptions using AI. Describe any sound — thunder, footsteps, explosions, ambient noise — and get a high-quality audio file.
17
-
18
- ## Features
19
-
20
- - **Text-to-SFX**: Describe any sound and get an audio file
21
- - **Duration Control**: Set the desired length of the sound effect
22
- - **Multiple Formats**: Output to MP3, WAV, or other audio formats
23
-
24
- ## Usage
25
-
26
- ```bash
27
- sound-effects generate --prompt "thunder rolling in the distance" --output ./thunder.mp3
28
- sound-effects generate --prompt "footsteps on gravel" --duration 5 --output ./steps.mp3
29
- sound-effects generate --prompt "spaceship engine humming" --output ./engine.mp3
30
- ```
31
-
32
- ## Environment Variables
33
-
34
- - `MINIMAX_API_KEY` — API key for Minimax (required)
@@ -1,21 +0,0 @@
1
- {
2
- "name": "sound-effects",
3
- "version": "1.0.0",
4
- "description": "Generate sound effects using AI backends",
5
- "type": "module",
6
- "bin": {
7
- "sound-effects": "src/index.ts"
8
- },
9
- "scripts": {
10
- "start": "bun run src/index.ts",
11
- "generate": "bun run src/index.ts generate"
12
- },
13
- "dependencies": {},
14
- "devDependencies": {
15
- "@types/bun": "latest",
16
- "typescript": "^5.0.0"
17
- },
18
- "peerDependencies": {
19
- "typescript": "^5.0.0"
20
- }
21
- }
@@ -1,172 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- import { writeFile, mkdir } from 'fs/promises';
4
- import { resolve, dirname } from 'path';
5
- import { handleInstallCommand } from '../../_common';
6
-
7
- const SKILL_META = {
8
- name: 'sound-effects',
9
- description: 'Generate sound effects using AI (Minimax)',
10
- version: '1.0.0',
11
- commands: `Use: sound-effects --help`,
12
- requiredEnvVars: ['MINIMAX_API_KEY'],
13
- };
14
-
15
- if (await handleInstallCommand(SKILL_META, process.argv.slice(2))) {
16
- process.exit(0);
17
- }
18
-
19
- type Provider = 'minimax';
20
-
21
- interface GenerateOptions {
22
- provider: Provider;
23
- prompt: string;
24
- output: string;
25
- duration?: number;
26
- }
27
-
28
- function parseArgs(): GenerateOptions | null {
29
- const args = process.argv.slice(2);
30
-
31
- if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
32
- printHelp();
33
- return null;
34
- }
35
-
36
- if (args[0] !== 'generate') {
37
- console.error(`Unknown command: ${args[0]}`);
38
- process.exit(1);
39
- }
40
-
41
- const options: Partial<GenerateOptions> = { provider: 'minimax' };
42
-
43
- for (let i = 1; i < args.length; i++) {
44
- switch (args[i]) {
45
- case '--provider': case '-p': options.provider = args[++i] as Provider; break;
46
- case '--prompt': options.prompt = args[++i]; break;
47
- case '--output': case '-o': options.output = args[++i]; break;
48
- case '--duration': options.duration = parseInt(args[++i]); break;
49
- default: console.error(`Unknown option: ${args[i]}`); process.exit(1);
50
- }
51
- }
52
-
53
- if (!options.prompt) { console.error('Error: --prompt is required'); process.exit(1); }
54
- if (!options.output) { console.error('Error: --output is required'); process.exit(1); }
55
-
56
- return options as GenerateOptions;
57
- }
58
-
59
- function printHelp() {
60
- console.log(`
61
- Sound Effects Generation Skill
62
-
63
- Generate sound effects using AI models (Minimax)
64
-
65
- USAGE:
66
- sound-effects generate [OPTIONS]
67
-
68
- OPTIONS:
69
- --provider, -p <provider> Provider (minimax) [default: minimax]
70
- --prompt <text> Description of the sound effect [required]
71
- --output, -o <path> Output file path [required]
72
- --duration <seconds> Duration in seconds
73
-
74
- EXAMPLES:
75
- sound-effects generate --prompt "thunder rolling" --output ./thunder.mp3
76
- sound-effects generate --prompt "footsteps on gravel" --duration 5 --output ./steps.mp3
77
- sound-effects generate --prompt "rain on a tin roof" --output ./rain.mp3
78
-
79
- ENVIRONMENT VARIABLES:
80
- MINIMAX_API_KEY API key for Minimax
81
- `);
82
- }
83
-
84
- async function generateMinimax(options: GenerateOptions): Promise<Buffer> {
85
- const apiKey = process.env.MINIMAX_API_KEY;
86
- if (!apiKey) throw new Error('MINIMAX_API_KEY environment variable is required');
87
-
88
- const baseUrl = 'https://api.minimax.chat/v1';
89
-
90
- console.log(`Generating sound effect with Minimax...`);
91
- console.log(`Prompt: ${options.prompt}`);
92
-
93
- const body: Record<string, unknown> = {
94
- model: 'sound-effects-01',
95
- prompt: options.prompt,
96
- };
97
- if (options.duration) body.duration = options.duration;
98
-
99
- const headers: Record<string, string> = {
100
- 'Content-Type': 'application/json',
101
- 'Authorization': `Bearer ${apiKey}`,
102
- };
103
-
104
- const response = await fetch(`${baseUrl}/sound_generation`, {
105
- method: 'POST',
106
- headers,
107
- body: JSON.stringify(body),
108
- });
109
-
110
- if (!response.ok) {
111
- const err = await response.text();
112
- throw new Error(`Minimax API error: ${response.status} - ${err}`);
113
- }
114
-
115
- const data = await response.json() as { task_id: string };
116
- console.log(`Task started: ${data.task_id}`);
117
- console.log('Polling for completion...');
118
-
119
- for (let i = 0; i < 60; i++) {
120
- await new Promise(r => setTimeout(r, 3000));
121
-
122
- const statusRes = await fetch(`${baseUrl}/query/sound_generation?task_id=${data.task_id}`, {
123
- headers: { 'Authorization': `Bearer ${apiKey}` },
124
- });
125
- const status = await statusRes.json() as {
126
- status: string;
127
- extra_info?: { audio_url?: string };
128
- audio_file?: string;
129
- base_resp?: { status_msg: string };
130
- };
131
-
132
- if (status.status === 'Success') {
133
- const audioUrl = status.extra_info?.audio_url || status.audio_file;
134
- if (!audioUrl) throw new Error('No audio URL in response');
135
-
136
- console.log('Sound effect generated. Downloading...');
137
- const audioRes = await fetch(audioUrl);
138
- if (!audioRes.ok) throw new Error(`Download failed: ${audioRes.status}`);
139
- return Buffer.from(await audioRes.arrayBuffer());
140
- }
141
-
142
- if (status.status === 'Fail') {
143
- throw new Error(`Sound effect generation failed: ${status.base_resp?.status_msg || 'Unknown error'}`);
144
- }
145
- }
146
-
147
- throw new Error('Sound effect generation timed out');
148
- }
149
-
150
- async function main() {
151
- const options = parseArgs();
152
- if (!options) return;
153
-
154
- try {
155
- console.log('\n=== Sound Effect Generation ===\n');
156
-
157
- const buffer = await generateMinimax(options);
158
-
159
- const outputPath = resolve(options.output);
160
- await mkdir(dirname(outputPath), { recursive: true });
161
- await writeFile(outputPath, buffer);
162
-
163
- console.log(`\nSound effect saved to: ${outputPath}`);
164
- console.log(`Size: ${(buffer.length / 1024).toFixed(1)} KB`);
165
- console.log('\nDone!\n');
166
- } catch (error) {
167
- console.error('\nError:', error instanceof Error ? error.message : error);
168
- process.exit(1);
169
- }
170
- }
171
-
172
- main();
@@ -1,8 +0,0 @@
1
- {
2
- "extends": "../tsconfig.base.json",
3
- "compilerOptions": {
4
- "outDir": "dist",
5
- "rootDir": "src"
6
- },
7
- "include": ["src"]
8
- }