@hasna/skills 0.1.27 → 0.1.30

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 (671) 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 +11 -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/skill-academic-journal-matcher/bin/cli.ts +34 -0
  343. package/skills/skill-action-item-router/bin/cli.ts +34 -0
  344. package/skills/skill-ad-creative-generator/bin/cli.ts +34 -0
  345. package/skills/skill-advanced-math/bin/cli.ts +34 -0
  346. package/skills/skill-analyze-data/bin/cli.ts +19 -0
  347. package/skills/skill-anomaly-investigator/bin/cli.ts +34 -0
  348. package/skills/skill-api-test-suite/bin/cli.ts +34 -0
  349. package/skills/skill-apidocs/bin/cli.ts +87 -0
  350. package/skills/skill-audio-cleanup-lab/bin/cli.ts +6 -0
  351. package/skills/skill-audiobook-chapter-proofer/bin/cli.ts +34 -0
  352. package/skills/skill-banner-ad-suite/bin/cli.ts +34 -0
  353. package/skills/skill-benchmark-finder/bin/cli.ts +34 -0
  354. package/skills/skill-bio-sequence-tool/bin/cli.ts +34 -0
  355. package/skills/skill-blog-topic-cluster/bin/cli.ts +34 -0
  356. package/skills/skill-brand-style-guide/bin/cli.ts +19 -0
  357. package/skills/skill-brand-voice-audit/bin/cli.ts +34 -0
  358. package/skills/skill-budget-variance-analyzer/bin/cli.ts +6 -0
  359. package/skills/skill-businessactivity/bin/cli.ts +28 -0
  360. package/skills/skill-calendar-events/bin/cli.ts +34 -0
  361. package/skills/skill-campaign-metric-brief/bin/cli.ts +34 -0
  362. package/skills/skill-campaign-moodboard/bin/cli.ts +34 -0
  363. package/skills/skill-caption-style-stylist/bin/cli.ts +34 -0
  364. package/skills/skill-chemistry-calculator/bin/cli.ts +34 -0
  365. package/skills/skill-churn-risk-notifier/bin/cli.ts +34 -0
  366. package/skills/skill-citation-formatter/bin/cli.ts +34 -0
  367. package/skills/skill-classroom-newsletter-kit/bin/cli.ts +34 -0
  368. package/skills/skill-color-palette-harmonizer/bin/cli.ts +34 -0
  369. package/skills/skill-competitor-ad-analyzer/bin/cli.ts +34 -0
  370. package/skills/skill-compliance-copy-check/bin/cli.ts +34 -0
  371. package/skills/skill-compliance-report-pack/bin/cli.ts +34 -0
  372. package/skills/skill-compress-video/bin/cli.ts +19 -0
  373. package/skills/skill-consolelog/bin/cli.ts +884 -0
  374. package/skills/skill-contract-plainlanguage/bin/cli.ts +34 -0
  375. package/skills/skill-copytone-translator/bin/cli.ts +34 -0
  376. package/skills/skill-create-blog-article/bin/cli.ts +34 -0
  377. package/skills/skill-create-ebook/bin/cli.ts +34 -0
  378. package/skills/skill-crm-note-enhancer/bin/cli.ts +34 -0
  379. package/skills/skill-customer-journey-mapper/bin/cli.ts +34 -0
  380. package/skills/skill-dashboard-builder/bin/cli.ts +34 -0
  381. package/skills/skill-dashboard-narrator/bin/cli.ts +34 -0
  382. package/skills/skill-data-anonymizer/bin/cli.ts +34 -0
  383. package/skills/skill-database-explorer/bin/cli.ts +34 -0
  384. package/skills/skill-dataset-health-check/bin/cli.ts +34 -0
  385. package/skills/skill-decision-journal/bin/cli.ts +34 -0
  386. package/skills/skill-delegation-brief-writer/bin/cli.ts +34 -0
  387. package/skills/skill-destination-briefing/bin/cli.ts +34 -0
  388. package/skills/skill-diff-viewer/bin/cli.ts +34 -0
  389. package/skills/skill-domainpurchase/bin/cli.ts +683 -0
  390. package/skills/skill-domainsearch/bin/cli.ts +410 -0
  391. package/skills/skill-educational-resource-finder/bin/cli.ts +34 -0
  392. package/skills/skill-email-campaign/bin/cli.ts +34 -0
  393. package/skills/skill-exam-readiness-check/bin/cli.ts +34 -0
  394. package/skills/skill-experiment-power-calculator/bin/cli.ts +34 -0
  395. package/skills/skill-extract-audio/bin/cli.ts +19 -0
  396. package/skills/skill-extract-frames/bin/cli.ts +34 -0
  397. package/skills/skill-extract-invoice/bin/cli.ts +34 -0
  398. package/skills/skill-family-activity-curator/bin/cli.ts +34 -0
  399. package/skills/skill-faq-packager/bin/cli.ts +34 -0
  400. package/skills/skill-feedback-survey-designer/bin/cli.ts +34 -0
  401. package/skills/skill-field-trip-planner/bin/cli.ts +34 -0
  402. package/skills/skill-file-organizer/bin/cli.ts +34 -0
  403. package/skills/skill-folder-tree/bin/cli.ts +34 -0
  404. package/skills/skill-forecast-scenario-lab/bin/cli.ts +34 -0
  405. package/skills/skill-form-filler/bin/cli.ts +34 -0
  406. package/skills/skill-generate-api-client/bin/cli.ts +34 -0
  407. package/skills/skill-generate-book-cover/bin/cli.ts +34 -0
  408. package/skills/skill-generate-chart/bin/cli.ts +34 -0
  409. package/skills/skill-generate-diagram/bin/cli.ts +34 -0
  410. package/skills/skill-generate-dockerfile/bin/cli.ts +34 -0
  411. package/skills/skill-generate-documentation/bin/cli.ts +34 -0
  412. package/skills/skill-generate-docx/bin/cli.ts +6 -0
  413. package/skills/skill-generate-env/bin/cli.ts +34 -0
  414. package/skills/skill-generate-excel/bin/cli.ts +34 -0
  415. package/skills/skill-generate-favicon/bin/cli.ts +34 -0
  416. package/skills/skill-generate-mock-data/bin/cli.ts +34 -0
  417. package/skills/skill-generate-pdf/bin/cli.ts +6 -0
  418. package/skills/skill-generate-pr-description/bin/cli.ts +34 -0
  419. package/skills/skill-generate-presentation/bin/cli.ts +34 -0
  420. package/skills/skill-generate-qrcode/bin/cli.ts +34 -0
  421. package/skills/skill-generate-regex/bin/cli.ts +34 -0
  422. package/skills/skill-generate-resume/bin/cli.ts +34 -0
  423. package/skills/skill-generate-sitemap/bin/cli.ts +34 -0
  424. package/skills/skill-generate-social-posts/bin/cli.ts +34 -0
  425. package/skills/skill-generate-sql/bin/cli.ts +34 -0
  426. package/skills/skill-gif-maker/bin/cli.ts +34 -0
  427. package/skills/skill-github-manager/bin/cli.ts +34 -0
  428. package/skills/skill-gmail/bin/cli.ts +34 -0
  429. package/skills/skill-goal-quarterly-roadmap/bin/cli.ts +34 -0
  430. package/skills/skill-grant-application-drafter/bin/cli.ts +34 -0
  431. package/skills/skill-grocery-basket-optimizer/bin/cli.ts +34 -0
  432. package/skills/skill-guest-communication-suite/bin/cli.ts +34 -0
  433. package/skills/skill-habit-reflection-digest/bin/cli.ts +34 -0
  434. package/skills/skill-highlight-reel-generator/bin/cli.ts +34 -0
  435. package/skills/skill-homework-feedback-coach/bin/cli.ts +34 -0
  436. package/skills/skill-household-maintenance-mgr/bin/cli.ts +34 -0
  437. package/skills/skill-http-server/bin/cli.ts +34 -0
  438. package/skills/skill-implementation-agent/bin/cli.ts +34 -0
  439. package/skills/skill-implementation-plan/bin/cli.ts +34 -0
  440. package/skills/skill-implementation-todo/bin/cli.ts +34 -0
  441. package/skills/skill-inbox-priority-planner/bin/cli.ts +34 -0
  442. package/skills/skill-invoice/bin/cli.ts +20 -0
  443. package/skills/skill-invoice-dispute-helper/bin/cli.ts +34 -0
  444. package/skills/skill-itinerary-architect/bin/cli.ts +34 -0
  445. package/skills/skill-jingle-composer/bin/cli.ts +34 -0
  446. package/skills/skill-kpi-digest-generator/bin/cli.ts +34 -0
  447. package/skills/skill-lab-notebook-formatter/bin/cli.ts +34 -0
  448. package/skills/skill-landing-page-copy/bin/cli.ts +34 -0
  449. package/skills/skill-latex-table-generator/bin/cli.ts +34 -0
  450. package/skills/skill-learning-style-profiler/bin/cli.ts +34 -0
  451. package/skills/skill-lesson-plan-customizer/bin/cli.ts +34 -0
  452. package/skills/skill-livestream-runofshow/bin/cli.ts +34 -0
  453. package/skills/skill-longform-structurer/bin/cli.ts +34 -0
  454. package/skills/skill-lorem-generator/bin/cli.ts +34 -0
  455. package/skills/skill-managehook/bin/cli.ts +241 -0
  456. package/skills/skill-managemcp/bin/cli.ts +241 -0
  457. package/skills/skill-manageskill/bin/cli.ts +241 -0
  458. package/skills/skill-markdown-validator/bin/cli.ts +34 -0
  459. package/skills/skill-mcp-builder/bin/cli.ts +34 -0
  460. package/skills/skill-meal-plan-designer/bin/cli.ts +34 -0
  461. package/skills/skill-meeting-insight-summarizer/bin/cli.ts +34 -0
  462. package/skills/skill-merge-pdfs/bin/cli.ts +34 -0
  463. package/skills/skill-microcopy-generator/bin/cli.ts +34 -0
  464. package/skills/skill-mindfulness-prompt-cache/bin/cli.ts +34 -0
  465. package/skills/skill-notion-manager/bin/cli.ts +34 -0
  466. package/skills/skill-onboarding-sequence-builder/bin/cli.ts +34 -0
  467. package/skills/skill-onsite-ops-checklist/bin/cli.ts +34 -0
  468. package/skills/skill-outreach-cadence-designer/bin/cli.ts +34 -0
  469. package/skills/skill-packaging-concept-studio/bin/cli.ts +34 -0
  470. package/skills/skill-packing-plan-pro/bin/cli.ts +34 -0
  471. package/skills/skill-parent-teacher-brief/bin/cli.ts +34 -0
  472. package/skills/skill-partner-kit-assembler/bin/cli.ts +34 -0
  473. package/skills/skill-payroll-change-prepper/bin/cli.ts +34 -0
  474. package/skills/skill-persona-based-adwriter/bin/cli.ts +34 -0
  475. package/skills/skill-persona-generator/bin/cli.ts +34 -0
  476. package/skills/skill-personal-daily-ops/bin/cli.ts +34 -0
  477. package/skills/skill-pet-care-scheduler/bin/cli.ts +34 -0
  478. package/skills/skill-podcast-show-notes/bin/cli.ts +34 -0
  479. package/skills/skill-presentation-theme-maker/bin/cli.ts +34 -0
  480. package/skills/skill-press-release-drafter/bin/cli.ts +34 -0
  481. package/skills/skill-print-collateral-designer/bin/cli.ts +34 -0
  482. package/skills/skill-procurement-scorecard/bin/cli.ts +34 -0
  483. package/skills/skill-product-demo-script/bin/cli.ts +34 -0
  484. package/skills/skill-product-mockup/bin/cli.ts +34 -0
  485. package/skills/skill-project-retro-companion/bin/cli.ts +34 -0
  486. package/skills/skill-proposal-redline-advisor/bin/cli.ts +34 -0
  487. package/skills/skill-regex-tester/bin/cli.ts +34 -0
  488. package/skills/skill-remove-background/bin/cli.ts +34 -0
  489. package/skills/skill-risk-disclosure-kit/bin/cli.ts +34 -0
  490. package/skills/skill-roi-comparison-tool/bin/cli.ts +34 -0
  491. package/skills/skill-sales-call-recapper/bin/cli.ts +34 -0
  492. package/skills/skill-salescopy/bin/cli.ts +20 -0
  493. package/skills/skill-scaffold-project/bin/cli.ts +34 -0
  494. package/skills/skill-scholarship-tracker/bin/cli.ts +34 -0
  495. package/skills/skill-scientific-figure-check/bin/cli.ts +34 -0
  496. package/skills/skill-seating-chart-maker/bin/cli.ts +34 -0
  497. package/skills/skill-security-audit/bin/cli.ts +34 -0
  498. package/skills/skill-seo-brief-builder/bin/cli.ts +34 -0
  499. package/skills/skill-slack-assistant/bin/cli.ts +34 -0
  500. package/skills/skill-sleep-routine-analyzer/bin/cli.ts +34 -0
  501. package/skills/skill-social-media-kit/bin/cli.ts +34 -0
  502. package/skills/skill-split-pdf/bin/cli.ts +34 -0
  503. package/skills/skill-sponsorship-proposal-lab/bin/cli.ts +34 -0
  504. package/skills/skill-spreadsheet-cleanroom/bin/cli.ts +34 -0
  505. package/skills/skill-statistical-test-selector/bin/cli.ts +34 -0
  506. package/skills/skill-stress-relief-playbook/bin/cli.ts +34 -0
  507. package/skills/skill-study-guide-builder/bin/cli.ts +34 -0
  508. package/skills/skill-subscription-spend-watcher/bin/cli.ts +34 -0
  509. package/skills/skill-subtitle/bin/cli.ts +20 -0
  510. package/skills/skill-survey-insight-extractor/bin/cli.ts +34 -0
  511. package/skills/skill-terraform-generator/bin/cli.ts +34 -0
  512. package/skills/skill-testimonial-graphics/bin/cli.ts +34 -0
  513. package/skills/skill-timesheet/bin/cli.ts +47 -0
  514. package/skills/skill-travel-budget-balancer/bin/cli.ts +34 -0
  515. package/skills/skill-validate-config/bin/cli.ts +34 -0
  516. package/skills/skill-video-cut-suggester/bin/cli.ts +34 -0
  517. package/skills/skill-video-downloader/bin/cli.ts +34 -0
  518. package/skills/skill-video-thumbnail/bin/cli.ts +34 -0
  519. package/skills/skill-voiceover-casting-assistant/bin/cli.ts +34 -0
  520. package/skills/skill-watermark/bin/cli.ts +34 -0
  521. package/skills/skill-webcrawling/bin/cli.ts +21 -0
  522. package/skills/skill-webinar-script-coach/bin/cli.ts +34 -0
  523. package/skills/skill-wellness-progress-reporter/bin/cli.ts +34 -0
  524. package/skills/skill-workout-cycle-planner/bin/cli.ts +34 -0
  525. package/skills/slack-assistant/package.json +3 -1
  526. package/skills/slide-deck-generator/SKILL.md +44 -0
  527. package/skills/slide-deck-generator/package.json +10 -0
  528. package/skills/sms/package.json +1 -1
  529. package/skills/sms/src/index.ts +15 -0
  530. package/skills/social-content-calendar/SKILL.md +45 -0
  531. package/skills/social-content-calendar/package.json +14 -0
  532. package/skills/split-pdf/package.json +4 -1
  533. package/skills/subtitle/package.json +2 -1
  534. package/skills/subtitle/src/index.ts +3 -0
  535. package/skills/terraform-generator/package.json +3 -1
  536. package/skills/test-suite-generator/SKILL.md +41 -0
  537. package/skills/test-suite-generator/package.json +10 -0
  538. package/skills/timesheet/package.json +1 -1
  539. package/skills/timesheet/src/index.ts +3 -0
  540. package/skills/transcript/SKILL.md +1 -8
  541. package/skills/validate-config/package.json +3 -1
  542. package/skills/video/package.json +6 -4
  543. package/skills/video-downloader/package.json +3 -1
  544. package/skills/video-highlight-pack/SKILL.md +44 -0
  545. package/skills/video-highlight-pack/package.json +10 -0
  546. package/skills/voiceover-jingle-pack/SKILL.md +28 -0
  547. package/skills/voiceover-jingle-pack/package.json +10 -0
  548. package/skills/watermark/package.json +6 -1
  549. package/skills/webcrawling/package.json +2 -1
  550. package/skills/write/SKILL.md +6 -6
  551. package/dist/server/serve.d.ts +0 -11
  552. package/skills/apidocs/.claude/settings.json +0 -5
  553. package/skills/audio/.env.example +0 -14
  554. package/skills/audio/QUICKSTART.md +0 -158
  555. package/skills/audio/README.md +0 -256
  556. package/skills/audio/src/index-local.ts +0 -206
  557. package/skills/audio/src/index.ts +0 -95
  558. package/skills/audio/src/providers/elevenlabs.ts +0 -115
  559. package/skills/audio/src/providers/google.ts +0 -116
  560. package/skills/audio/src/providers/minimax.ts +0 -83
  561. package/skills/audio/src/providers/openai.ts +0 -115
  562. package/skills/audio/src/types.ts +0 -79
  563. package/skills/audiobook-chapter-proofer/CLAUDE.md +0 -19
  564. package/skills/audiobook-chapter-proofer/package.json +0 -27
  565. package/skills/audiobook-chapter-proofer/src/index.ts +0 -285
  566. package/skills/browse/src/client.ts +0 -373
  567. package/skills/browse/src/index-local.ts +0 -430
  568. package/skills/browse/src/index.ts +0 -110
  569. package/skills/browse/src/sse-server.ts +0 -919
  570. package/skills/browse/src/types.ts +0 -104
  571. package/skills/consolelog/src/server/index.ts +0 -508
  572. package/skills/create-blog-article/CLAUDE.md +0 -19
  573. package/skills/create-blog-article/src/index.ts +0 -745
  574. package/skills/create-blog-article/tsconfig.json +0 -10
  575. package/skills/deepresearch/src/agents/query-generator.ts +0 -91
  576. package/skills/deepresearch/src/agents/synthesizer.ts +0 -111
  577. package/skills/deepresearch/src/index.ts +0 -224
  578. package/skills/deepresearch/src/research.ts +0 -166
  579. package/skills/deepresearch/src/services/anthropic.ts +0 -69
  580. package/skills/deepresearch/src/services/exa.ts +0 -108
  581. package/skills/deepresearch/src/services/firecrawl.ts +0 -88
  582. package/skills/deepresearch/src/services/openai.ts +0 -81
  583. package/skills/deepresearch/src/types.ts +0 -76
  584. package/skills/deepresearch/src/utils/file.ts +0 -111
  585. package/skills/deepresearch/src/utils/logger.ts +0 -84
  586. package/skills/domainpurchase/src/server/index.ts +0 -332
  587. package/skills/domainsearch/src/server/index.ts +0 -229
  588. package/skills/e2bswarm/README.md +0 -135
  589. package/skills/e2bswarm/SKILL.md +0 -118
  590. package/skills/e2bswarm/examples/tasks-example.json +0 -38
  591. package/skills/e2bswarm/package.json +0 -59
  592. package/skills/e2bswarm/src/commands/collect.ts +0 -135
  593. package/skills/e2bswarm/src/commands/install.ts +0 -164
  594. package/skills/e2bswarm/src/commands/kill.ts +0 -62
  595. package/skills/e2bswarm/src/commands/spawn.ts +0 -134
  596. package/skills/e2bswarm/src/commands/status.ts +0 -90
  597. package/skills/e2bswarm/src/commands/sync.ts +0 -208
  598. package/skills/e2bswarm/src/index.ts +0 -121
  599. package/skills/e2bswarm/src/lib/config.ts +0 -75
  600. package/skills/e2bswarm/src/lib/e2b.ts +0 -490
  601. package/skills/e2bswarm/src/lib/github.ts +0 -253
  602. package/skills/e2bswarm/src/lib/logger.ts +0 -41
  603. package/skills/e2bswarm/src/lib/paths.ts +0 -75
  604. package/skills/e2bswarm/src/lib/tasks.ts +0 -320
  605. package/skills/e2bswarm/src/types/index.ts +0 -107
  606. package/skills/e2bswarm/templates/codebox/e2b.Dockerfile +0 -38
  607. package/skills/e2bswarm/templates/codebox/e2b.toml +0 -3
  608. package/skills/e2bswarm/templates/setup.sh +0 -21
  609. package/skills/e2bswarm/tsconfig.json +0 -19
  610. package/skills/generate-book-cover/src/index.ts +0 -694
  611. package/skills/image/src/index-local.ts +0 -206
  612. package/skills/image/src/index.ts +0 -96
  613. package/skills/image/src/providers/google.ts +0 -79
  614. package/skills/image/src/providers/minimax.ts +0 -94
  615. package/skills/image/src/providers/openai.ts +0 -80
  616. package/skills/image/src/providers/xai.ts +0 -73
  617. package/skills/image/src/types.ts +0 -37
  618. package/skills/logo-design/CLAUDE.md +0 -30
  619. package/skills/logo-design/src/index.ts +0 -322
  620. package/skills/managehook/src/server/index.ts +0 -108
  621. package/skills/managemcp/src/server/index.ts +0 -108
  622. package/skills/manageskill/src/server/index.ts +0 -108
  623. package/skills/music/CLAUDE.md +0 -9
  624. package/skills/music/src/index.ts +0 -94
  625. package/skills/music/tsconfig.json +0 -10
  626. package/skills/pdf-read/src/index.ts +0 -320
  627. package/skills/product-mockup/CLAUDE.md +0 -19
  628. package/skills/product-mockup/src/index.ts +0 -290
  629. package/skills/read-pdf/src/index.ts +0 -388
  630. package/skills/remove-background/src/index.ts +0 -405
  631. package/skills/sound-effects/SKILL.md +0 -34
  632. package/skills/sound-effects/package.json +0 -21
  633. package/skills/sound-effects/src/index.ts +0 -172
  634. package/skills/sound-effects/tsconfig.json +0 -8
  635. package/skills/transcript/src/chunker.ts +0 -215
  636. package/skills/transcript/src/formatter.ts +0 -134
  637. package/skills/transcript/src/index-local.ts +0 -226
  638. package/skills/transcript/src/index.ts +0 -110
  639. package/skills/transcript/src/providers/elevenlabs.ts +0 -133
  640. package/skills/transcript/src/providers/gemini.ts +0 -192
  641. package/skills/transcript/src/providers/index.ts +0 -54
  642. package/skills/transcript/src/providers/openai.ts +0 -203
  643. package/skills/transcript/src/types.ts +0 -106
  644. package/skills/video/.env.example +0 -14
  645. package/skills/video/EXAMPLES.md +0 -266
  646. package/skills/video/LICENSE +0 -192
  647. package/skills/video/README.md +0 -174
  648. package/skills/video/src/cli.ts +0 -155
  649. package/skills/video/src/index-local.ts +0 -148
  650. package/skills/video/src/index.ts +0 -96
  651. package/skills/video/src/providers/google-veo.ts +0 -126
  652. package/skills/video/src/providers/index.ts +0 -22
  653. package/skills/video/src/providers/minimax.ts +0 -100
  654. package/skills/video/src/providers/openai-sora.ts +0 -164
  655. package/skills/video/src/providers/runway.ts +0 -159
  656. package/skills/video/src/types.ts +0 -35
  657. package/skills/video/tsconfig.json +0 -22
  658. package/skills/voiceover-casting-assistant/CLAUDE.md +0 -19
  659. package/skills/voiceover-casting-assistant/package.json +0 -27
  660. package/skills/voiceover-casting-assistant/src/index.ts +0 -255
  661. package/skills/voiceover-casting-assistant/tsconfig.json +0 -10
  662. package/skills/webcrawling/src/commands/config.ts +0 -34
  663. package/skills/webcrawling/src/commands/crawl.ts +0 -33
  664. package/skills/webcrawling/src/commands/scrape.ts +0 -32
  665. package/skills/webcrawling/src/commands/sessions.ts +0 -42
  666. package/skills/webcrawling/src/lib/crawler.ts +0 -174
  667. package/skills/webcrawling/src/lib/storage.ts +0 -130
  668. package/skills/webcrawling/src/types/index.ts +0 -45
  669. package/skills/webcrawling/src/utils/logger.ts +0 -30
  670. package/skills/webcrawling/src/utils/paths.ts +0 -28
  671. /package/skills/{audiobook-chapter-proofer → blog-article}/tsconfig.json +0 -0
@@ -1,133 +0,0 @@
1
- /**
2
- * ElevenLabs Scribe Provider
3
- * High-accuracy speech-to-text with speaker diarization
4
- */
5
-
6
- import type {
7
- TranscriptionProvider,
8
- TranscriptionOptions,
9
- TranscriptionResult,
10
- TranscriptionSegment,
11
- ElevenLabsResponse
12
- } from '../types';
13
-
14
- // ElevenLabs supports up to 3GB files
15
- const MAX_FILE_SIZE = 3 * 1024 * 1024 * 1024; // 3GB
16
-
17
- export class ElevenLabsProvider implements TranscriptionProvider {
18
- name = 'ElevenLabs Scribe';
19
- maxFileSize = MAX_FILE_SIZE;
20
- supportedFormats = ['mp3', 'mp4', 'wav', 'webm', 'm4a', 'ogg', 'flac'];
21
-
22
- private apiKey: string;
23
- private baseUrl = 'https://api.elevenlabs.io/v1';
24
-
25
- constructor() {
26
- const apiKey = process.env.ELEVENLABS_API_KEY;
27
- if (!apiKey) {
28
- throw new Error('ELEVENLABS_API_KEY environment variable is required');
29
- }
30
- this.apiKey = apiKey;
31
- }
32
-
33
- async transcribe(options: TranscriptionOptions): Promise<TranscriptionResult> {
34
- const {
35
- input,
36
- language,
37
- model = 'scribe_v1',
38
- diarize = true,
39
- timestamps = true
40
- } = options;
41
-
42
- console.log(`[ElevenLabs] Transcribing: ${input}`);
43
- console.log(`[ElevenLabs] Model: ${model}`);
44
- console.log(`[ElevenLabs] Diarization: ${diarize}`);
45
-
46
- // Read the file
47
- const file = Bun.file(input);
48
- const fileBuffer = await file.arrayBuffer();
49
-
50
- // Create form data
51
- const formData = new FormData();
52
- formData.append('audio', new Blob([fileBuffer]), input.split('/').pop());
53
- formData.append('model_id', model);
54
-
55
- if (language) {
56
- formData.append('language_code', language);
57
- }
58
-
59
- if (diarize) {
60
- formData.append('diarize', 'true');
61
- formData.append('num_speakers', '32'); // Max supported speakers
62
- }
63
-
64
- if (timestamps) {
65
- formData.append('timestamps_granularity', 'word');
66
- }
67
-
68
- const response = await fetch(`${this.baseUrl}/speech-to-text`, {
69
- method: 'POST',
70
- headers: {
71
- 'xi-api-key': this.apiKey
72
- },
73
- body: formData
74
- });
75
-
76
- if (!response.ok) {
77
- const error = await response.text();
78
- throw new Error(`ElevenLabs transcription failed: ${error}`);
79
- }
80
-
81
- const data = await response.json() as ElevenLabsResponse;
82
- console.log(`[ElevenLabs] Transcription complete`);
83
-
84
- return this.formatResult(data, model);
85
- }
86
-
87
- private formatResult(data: ElevenLabsResponse, model: string): TranscriptionResult {
88
- const segments: TranscriptionSegment[] = [];
89
-
90
- if (data.words) {
91
- let currentSegment: TranscriptionSegment | null = null;
92
- let segmentId = 0;
93
-
94
- for (const word of data.words) {
95
- if (!currentSegment || word.speaker !== currentSegment.speaker) {
96
- if (currentSegment) {
97
- segments.push(currentSegment);
98
- }
99
- currentSegment = {
100
- id: segmentId++,
101
- start: word.start,
102
- end: word.end,
103
- text: word.word,
104
- speaker: word.speaker
105
- };
106
- } else {
107
- currentSegment.end = word.end;
108
- currentSegment.text += ' ' + word.word;
109
- }
110
- }
111
-
112
- if (currentSegment) {
113
- segments.push(currentSegment);
114
- }
115
- }
116
-
117
- const speakers = data.speakers?.map(s => ({
118
- id: s.speaker_id,
119
- name: s.name,
120
- segments: segments
121
- .filter(seg => seg.speaker === s.speaker_id)
122
- .map(seg => seg.id)
123
- }));
124
-
125
- return {
126
- text: data.text,
127
- segments: segments.length > 0 ? segments : undefined,
128
- speakers,
129
- model,
130
- provider: 'elevenlabs'
131
- };
132
- }
133
- }
@@ -1,192 +0,0 @@
1
- /**
2
- * Google Gemini Provider
3
- * Multimodal transcription with analysis capabilities
4
- */
5
-
6
- import { readFile } from 'fs/promises';
7
- import type {
8
- TranscriptionProvider,
9
- TranscriptionOptions,
10
- TranscriptionResult,
11
- GeminiResponse
12
- } from '../types';
13
- import { getFileSize, needsChunking, splitAudioFile, mergeTranscriptions, cleanupChunks } from '../chunker';
14
- import { dirname, join } from 'path';
15
-
16
- // Gemini supports up to 2GB files
17
- const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024; // 2GB
18
-
19
- const MIME_TYPES: Record<string, string> = {
20
- 'mp3': 'audio/mpeg',
21
- 'wav': 'audio/wav',
22
- 'ogg': 'audio/ogg',
23
- 'flac': 'audio/flac',
24
- 'm4a': 'audio/mp4',
25
- 'aac': 'audio/aac',
26
- 'mp4': 'video/mp4',
27
- 'webm': 'video/webm'
28
- };
29
-
30
- export class GeminiProvider implements TranscriptionProvider {
31
- name = 'Google Gemini';
32
- maxFileSize = MAX_FILE_SIZE;
33
- supportedFormats = ['mp3', 'wav', 'ogg', 'flac', 'm4a', 'aac', 'mp4', 'webm'];
34
-
35
- private apiKey: string;
36
- private baseUrl = 'https://generativelanguage.googleapis.com/v1beta';
37
-
38
- constructor() {
39
- const apiKey = process.env.GOOGLE_API_KEY;
40
- if (!apiKey) {
41
- throw new Error('GOOGLE_API_KEY environment variable is required');
42
- }
43
- this.apiKey = apiKey;
44
- }
45
-
46
- async transcribe(options: TranscriptionOptions): Promise<TranscriptionResult> {
47
- const {
48
- input,
49
- language,
50
- model = 'gemini-2.0-flash',
51
- diarize = false,
52
- timestamps = false
53
- } = options;
54
-
55
- console.log(`[Gemini] Transcribing: ${input}`);
56
- console.log(`[Gemini] Model: ${model}`);
57
-
58
- // Check file size
59
- const fileSize = await getFileSize(input);
60
- console.log(`[Gemini] File size: ${(fileSize / 1024 / 1024).toFixed(2)}MB`);
61
-
62
- // For very large files, use chunking
63
- if (fileSize > 100 * 1024 * 1024) { // > 100MB use chunking for efficiency
64
- console.log(`[Gemini] Large file detected, using chunking for efficiency`);
65
- return this.transcribeWithChunking(options);
66
- }
67
-
68
- return this.transcribeSingle(options);
69
- }
70
-
71
- private async transcribeSingle(options: TranscriptionOptions): Promise<TranscriptionResult> {
72
- const {
73
- input,
74
- language,
75
- model = 'gemini-2.0-flash',
76
- diarize = false,
77
- timestamps = false
78
- } = options;
79
-
80
- // Read and encode file
81
- const fileBuffer = await readFile(input);
82
- const base64Audio = fileBuffer.toString('base64');
83
-
84
- // Determine MIME type
85
- const ext = input.split('.').pop()?.toLowerCase() || 'mp3';
86
- const mimeType = MIME_TYPES[ext] || 'audio/mpeg';
87
-
88
- // Build prompt based on options
89
- let prompt = 'Transcribe this audio accurately. ';
90
-
91
- if (language) {
92
- prompt += `The audio is in ${language}. `;
93
- }
94
-
95
- if (diarize) {
96
- prompt += 'Identify and label different speakers (Speaker A, Speaker B, etc.). ';
97
- }
98
-
99
- if (timestamps) {
100
- prompt += 'Include timestamps for each segment in [HH:MM:SS] format. ';
101
- }
102
-
103
- prompt += 'Provide only the transcription without any additional commentary.';
104
-
105
- const response = await fetch(
106
- `${this.baseUrl}/models/${model}:generateContent?key=${this.apiKey}`,
107
- {
108
- method: 'POST',
109
- headers: {
110
- 'Content-Type': 'application/json'
111
- },
112
- body: JSON.stringify({
113
- contents: [
114
- {
115
- parts: [
116
- {
117
- inline_data: {
118
- mime_type: mimeType,
119
- data: base64Audio
120
- }
121
- },
122
- {
123
- text: prompt
124
- }
125
- ]
126
- }
127
- ],
128
- generationConfig: {
129
- temperature: 0,
130
- maxOutputTokens: 8192
131
- }
132
- })
133
- }
134
- );
135
-
136
- if (!response.ok) {
137
- const error = await response.text();
138
- throw new Error(`Gemini transcription failed: ${error}`);
139
- }
140
-
141
- const data = await response.json() as GeminiResponse;
142
- const text = data.candidates?.[0]?.content?.parts?.[0]?.text || '';
143
-
144
- console.log(`[Gemini] Transcription complete`);
145
-
146
- return {
147
- text: text.trim(),
148
- model,
149
- provider: 'gemini'
150
- };
151
- }
152
-
153
- private async transcribeWithChunking(options: TranscriptionOptions): Promise<TranscriptionResult> {
154
- const { input, model = 'gemini-2.0-flash' } = options;
155
- const outputDir = dirname(input);
156
-
157
- // Split into chunks
158
- const chunks = await splitAudioFile(input, outputDir);
159
- const transcriptions: string[] = [];
160
-
161
- try {
162
- // Process chunks in parallel (Gemini can handle concurrent requests)
163
- const promises = chunks.map(async (chunk) => {
164
- console.log(`[Gemini] Processing chunk ${chunk.index + 1}/${chunks.length}`);
165
- const result = await this.transcribeSingle({
166
- ...options,
167
- input: chunk.path
168
- });
169
- return { index: chunk.index, text: result.text };
170
- });
171
-
172
- const results = await Promise.all(promises);
173
-
174
- // Sort by index and extract texts
175
- results.sort((a, b) => a.index - b.index);
176
- transcriptions.push(...results.map(r => r.text));
177
-
178
- // Merge transcriptions
179
- const mergedText = mergeTranscriptions(transcriptions);
180
-
181
- return {
182
- text: mergedText,
183
- model,
184
- provider: 'gemini'
185
- };
186
- } finally {
187
- // Cleanup chunks
188
- const chunkDir = join(outputDir, '.chunks');
189
- await cleanupChunks(chunkDir);
190
- }
191
- }
192
- }
@@ -1,54 +0,0 @@
1
- /**
2
- * Provider Factory
3
- * Returns the appropriate transcription provider
4
- */
5
-
6
- import { ElevenLabsProvider } from './elevenlabs';
7
- import { OpenAIProvider } from './openai';
8
- import { GeminiProvider } from './gemini';
9
- import type { TranscriptionProvider, Provider } from '../types';
10
-
11
- export function getProvider(providerName: Provider): TranscriptionProvider {
12
- switch (providerName) {
13
- case 'elevenlabs':
14
- return new ElevenLabsProvider();
15
- case 'openai':
16
- return new OpenAIProvider();
17
- case 'gemini':
18
- return new GeminiProvider();
19
- default:
20
- throw new Error(
21
- `Unknown provider: ${providerName}. Available: elevenlabs, openai, gemini`
22
- );
23
- }
24
- }
25
-
26
- export function getProviderInfo(): void {
27
- console.log(`
28
- Available Transcription Providers:
29
-
30
- ELEVENLABS (Scribe)
31
- - Accuracy: 96.7% for English
32
- - Max file size: 3GB / 10 hours
33
- - Features: Speaker diarization (up to 32 speakers), word timestamps
34
- - Cost: $0.40/hour
35
- - Best for: Multi-speaker recordings, highest accuracy needs
36
-
37
- OPENAI (Whisper)
38
- - Accuracy: Excellent
39
- - Max file size: 25MB (auto-chunking for larger files)
40
- - Features: Segment timestamps, language detection
41
- - Cost: $0.006/min (GPT-4o Mini: $0.003/min)
42
- - Best for: Standard transcription, good balance of cost/quality
43
-
44
- GEMINI (Flash)
45
- - Accuracy: Very good
46
- - Max file size: 2GB
47
- - Features: Multimodal analysis, summarization
48
- - Cost: ~$0.09-0.23/hour (generous free tier)
49
- - Best for: Cost-sensitive, multimodal needs, free tier usage
50
-
51
- USAGE:
52
- transcript transcribe --provider <name> --input <file> [options]
53
- `);
54
- }
@@ -1,203 +0,0 @@
1
- /**
2
- * OpenAI Whisper Provider
3
- * Industry-standard speech-to-text with automatic chunking for large files
4
- */
5
-
6
- import type {
7
- TranscriptionProvider,
8
- TranscriptionOptions,
9
- TranscriptionResult,
10
- TranscriptionSegment,
11
- OpenAITranscriptionResponse
12
- } from '../types';
13
- import {
14
- needsChunking,
15
- splitAudioFile,
16
- mergeTranscriptions,
17
- cleanupChunks,
18
- compressAudio,
19
- getFileSize
20
- } from '../chunker';
21
- import { dirname, join, basename, extname } from 'path';
22
-
23
- // OpenAI Whisper has a 25MB limit
24
- const MAX_FILE_SIZE = 25 * 1024 * 1024; // 25MB
25
-
26
- export class OpenAIProvider implements TranscriptionProvider {
27
- name = 'OpenAI Whisper';
28
- maxFileSize = MAX_FILE_SIZE;
29
- supportedFormats = ['mp3', 'mp4', 'mpeg', 'mpga', 'm4a', 'wav', 'webm'];
30
-
31
- private apiKey: string;
32
- private baseUrl = 'https://api.openai.com/v1';
33
-
34
- constructor() {
35
- const apiKey = process.env.OPENAI_API_KEY;
36
- if (!apiKey) {
37
- throw new Error('OPENAI_API_KEY environment variable is required');
38
- }
39
- this.apiKey = apiKey;
40
- }
41
-
42
- async transcribe(options: TranscriptionOptions): Promise<TranscriptionResult> {
43
- const {
44
- input,
45
- language,
46
- model = 'whisper-1',
47
- timestamps = true
48
- } = options;
49
-
50
- console.log(`[OpenAI] Transcribing: ${input}`);
51
- console.log(`[OpenAI] Model: ${model}`);
52
-
53
- // Check if file needs chunking
54
- const fileSize = await getFileSize(input);
55
- console.log(`[OpenAI] File size: ${(fileSize / 1024 / 1024).toFixed(2)}MB`);
56
-
57
- if (fileSize > this.maxFileSize) {
58
- console.log(`[OpenAI] File exceeds 25MB limit, chunking required`);
59
- return this.transcribeWithChunking(options);
60
- }
61
-
62
- return this.transcribeSingle(options);
63
- }
64
-
65
- private async transcribeSingle(options: TranscriptionOptions): Promise<TranscriptionResult> {
66
- const {
67
- input,
68
- language,
69
- model = 'whisper-1',
70
- timestamps = true
71
- } = options;
72
-
73
- // Read the file
74
- const file = Bun.file(input);
75
- const fileBuffer = await file.arrayBuffer();
76
-
77
- // Create form data
78
- const formData = new FormData();
79
- formData.append('file', new Blob([fileBuffer]), input.split('/').pop());
80
- formData.append('model', model);
81
- formData.append('response_format', timestamps ? 'verbose_json' : 'json');
82
-
83
- if (language) {
84
- formData.append('language', language);
85
- }
86
-
87
- if (timestamps) {
88
- formData.append('timestamp_granularities[]', 'segment');
89
- formData.append('timestamp_granularities[]', 'word');
90
- }
91
-
92
- const response = await fetch(`${this.baseUrl}/audio/transcriptions`, {
93
- method: 'POST',
94
- headers: {
95
- 'Authorization': `Bearer ${this.apiKey}`
96
- },
97
- body: formData
98
- });
99
-
100
- if (!response.ok) {
101
- const error = await response.text();
102
- throw new Error(`OpenAI transcription failed: ${error}`);
103
- }
104
-
105
- const data = await response.json() as OpenAITranscriptionResponse;
106
- console.log(`[OpenAI] Transcription complete`);
107
-
108
- return this.formatResult(data, model);
109
- }
110
-
111
- private async transcribeWithChunking(options: TranscriptionOptions): Promise<TranscriptionResult> {
112
- const { input, model = 'whisper-1' } = options;
113
- const outputDir = dirname(input);
114
-
115
- // First try compression
116
- const compressedPath = join(outputDir, `.compressed_${basename(input, extname(input))}.ogg`);
117
-
118
- try {
119
- console.log('[OpenAI] Attempting compression first...');
120
- await compressAudio(input, compressedPath, '32k');
121
- const compressedSize = await getFileSize(compressedPath);
122
-
123
- if (compressedSize <= this.maxFileSize) {
124
- console.log('[OpenAI] Compressed file is under 25MB, transcribing directly');
125
- const result = await this.transcribeSingle({
126
- ...options,
127
- input: compressedPath
128
- });
129
-
130
- // Cleanup compressed file
131
- await Bun.write(compressedPath, '').catch(() => {});
132
-
133
- return result;
134
- }
135
- } catch {
136
- console.log('[OpenAI] Compression failed or still too large, falling back to chunking');
137
- }
138
-
139
- // Split into chunks
140
- const chunks = await splitAudioFile(input, outputDir);
141
- const transcriptions: string[] = [];
142
- const allSegments: TranscriptionSegment[] = [];
143
-
144
- try {
145
- // Process chunks sequentially to maintain order
146
- for (const chunk of chunks) {
147
- console.log(`[OpenAI] Processing chunk ${chunk.index + 1}/${chunks.length}`);
148
-
149
- const result = await this.transcribeSingle({
150
- ...options,
151
- input: chunk.path
152
- });
153
-
154
- transcriptions.push(result.text);
155
-
156
- // Adjust segment timestamps based on chunk start time
157
- if (result.segments) {
158
- for (const segment of result.segments) {
159
- allSegments.push({
160
- ...segment,
161
- id: allSegments.length,
162
- start: segment.start + chunk.startTime,
163
- end: segment.end + chunk.startTime
164
- });
165
- }
166
- }
167
- }
168
-
169
- // Merge transcriptions
170
- const mergedText = mergeTranscriptions(transcriptions);
171
-
172
- return {
173
- text: mergedText,
174
- segments: allSegments.length > 0 ? allSegments : undefined,
175
- model,
176
- provider: 'openai'
177
- };
178
- } finally {
179
- // Cleanup chunks
180
- const chunkDir = join(outputDir, '.chunks');
181
- await cleanupChunks(chunkDir);
182
- }
183
- }
184
-
185
- private formatResult(data: OpenAITranscriptionResponse, model: string): TranscriptionResult {
186
- const segments: TranscriptionSegment[] = data.segments?.map((seg, i) => ({
187
- id: i,
188
- start: seg.start,
189
- end: seg.end,
190
- text: seg.text.trim(),
191
- confidence: 1 - seg.no_speech_prob
192
- })) || [];
193
-
194
- return {
195
- text: data.text,
196
- segments: segments.length > 0 ? segments : undefined,
197
- duration: data.duration,
198
- language: data.language,
199
- model,
200
- provider: 'openai'
201
- };
202
- }
203
- }
@@ -1,106 +0,0 @@
1
- /**
2
- * Types for transcript
3
- * Audio/video transcription with automatic chunking
4
- */
5
-
6
- export type Provider = 'elevenlabs' | 'openai' | 'gemini';
7
-
8
- export interface TranscriptionOptions {
9
- input: string;
10
- output?: string;
11
- provider: Provider;
12
- language?: string;
13
- model?: string;
14
- diarize?: boolean; // Speaker diarization
15
- timestamps?: boolean;
16
- format?: 'text' | 'srt' | 'vtt' | 'json';
17
- }
18
-
19
- export interface TranscriptionResult {
20
- text: string;
21
- segments?: TranscriptionSegment[];
22
- speakers?: Speaker[];
23
- duration?: number;
24
- language?: string;
25
- model?: string;
26
- provider: Provider;
27
- }
28
-
29
- export interface TranscriptionSegment {
30
- id: number;
31
- start: number;
32
- end: number;
33
- text: string;
34
- speaker?: string;
35
- confidence?: number;
36
- }
37
-
38
- export interface Speaker {
39
- id: string;
40
- name?: string;
41
- segments: number[];
42
- }
43
-
44
- export interface ChunkInfo {
45
- index: number;
46
- startTime: number;
47
- endTime: number;
48
- path: string;
49
- size: number;
50
- }
51
-
52
- export interface TranscriptionProvider {
53
- name: string;
54
- maxFileSize: number; // in bytes
55
- supportedFormats: string[];
56
- transcribe(options: TranscriptionOptions): Promise<TranscriptionResult>;
57
- }
58
-
59
- // Provider-specific response types
60
- export interface ElevenLabsResponse {
61
- text: string;
62
- words?: Array<{
63
- word: string;
64
- start: number;
65
- end: number;
66
- speaker?: string;
67
- }>;
68
- speakers?: Array<{
69
- speaker_id: string;
70
- name?: string;
71
- }>;
72
- }
73
-
74
- export interface OpenAITranscriptionResponse {
75
- text: string;
76
- task?: string;
77
- language?: string;
78
- duration?: number;
79
- segments?: Array<{
80
- id: number;
81
- seek: number;
82
- start: number;
83
- end: number;
84
- text: string;
85
- tokens: number[];
86
- temperature: number;
87
- avg_logprob: number;
88
- compression_ratio: number;
89
- no_speech_prob: number;
90
- }>;
91
- words?: Array<{
92
- word: string;
93
- start: number;
94
- end: number;
95
- }>;
96
- }
97
-
98
- export interface GeminiResponse {
99
- candidates: Array<{
100
- content: {
101
- parts: Array<{
102
- text: string;
103
- }>;
104
- };
105
- }>;
106
- }
@@ -1,14 +0,0 @@
1
- # Google Veo 2 (Vertex AI)
2
- # Option 1: Use API key
3
- GOOGLE_API_KEY=your_google_api_key_here
4
-
5
- # Option 2: Use service account
6
- GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
7
- GOOGLE_CLOUD_PROJECT=your-project-id
8
- GOOGLE_CLOUD_LOCATION=us-central1
9
-
10
- # OpenAI Sora
11
- OPENAI_API_KEY=your_openai_api_key_here
12
-
13
- # Runway
14
- RUNWAY_API_KEY=your_runway_api_key_here