@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,490 +0,0 @@
1
- import { Sandbox } from 'e2b';
2
- import { mkdir, readdir, stat } from 'node:fs/promises';
3
- import { join, relative } from 'node:path';
4
- import type { SwarmInstance, SwarmConfig, Task } from '../types';
5
- import { logger } from './logger';
6
- import { paths } from './paths';
7
-
8
- // Default patterns to exclude when uploading local files
9
- const DEFAULT_EXCLUDE = [
10
- 'node_modules',
11
- '.git',
12
- '.next',
13
- '.turbo',
14
- 'dist',
15
- 'build',
16
- '.cache',
17
- '*.log',
18
- '.DS_Store',
19
- '.env',
20
- '.env.local',
21
- '.env*.local',
22
- ];
23
-
24
- export class E2BSwarm {
25
- private config: SwarmConfig;
26
-
27
- constructor(config: SwarmConfig) {
28
- this.config = config;
29
- }
30
-
31
- /**
32
- * Spawn a new E2B sandbox instance
33
- */
34
- async spawn(options: {
35
- source: string;
36
- sourceType: 'repo' | 'local';
37
- tasks: Task[];
38
- prompt: string;
39
- branch?: string;
40
- newBranch?: string;
41
- include?: string[];
42
- exclude?: string[];
43
- // GitHub options
44
- autoCommit?: boolean;
45
- autoPush?: boolean;
46
- createPr?: boolean;
47
- prTitle?: string;
48
- prBase?: string;
49
- }): Promise<SwarmInstance> {
50
- const instanceId = crypto.randomUUID();
51
- const shortId = instanceId.slice(0, 8);
52
-
53
- // Create instance-specific directories
54
- const instancePaths = paths.getInstance(shortId);
55
- await mkdir(instancePaths.exports, { recursive: true });
56
- await mkdir(instancePaths.logs, { recursive: true });
57
-
58
- const instance: SwarmInstance = {
59
- id: instanceId,
60
- sandboxId: '',
61
- template: this.config.template,
62
- status: 'starting',
63
- source: options.source,
64
- sourceType: options.sourceType,
65
- branch: options.branch,
66
- newBranch: options.newBranch,
67
- tasks: options.tasks,
68
- prompt: options.prompt,
69
- startedAt: new Date().toISOString(),
70
- exportDir: instancePaths.exports,
71
- logFile: `${instancePaths.logs}/execution.log`,
72
- // GitHub integration options
73
- autoCommit: options.autoCommit,
74
- autoPush: options.autoPush,
75
- createPr: options.createPr,
76
- prTitle: options.prTitle,
77
- prBase: options.prBase,
78
- };
79
-
80
- try {
81
- logger.instance(instanceId, 'starting', `Using template: ${this.config.template}`);
82
-
83
- // Create the sandbox with specified template
84
- const sandbox = await Sandbox.create(this.config.template, {
85
- apiKey: this.config.apiKey,
86
- timeoutMs: this.config.timeout,
87
- });
88
-
89
- instance.sandboxId = sandbox.sandboxId;
90
- logger.instance(instanceId, 'starting', `Sandbox ID: ${sandbox.sandboxId}`);
91
-
92
- // Setup the instance based on source type
93
- if (options.sourceType === 'local') {
94
- await this.setupInstanceFromLocal(sandbox, instance, options.include, options.exclude);
95
- } else {
96
- await this.setupInstanceFromRepo(sandbox, instance);
97
- }
98
-
99
- return instance;
100
- } catch (error) {
101
- instance.status = 'failed';
102
- instance.error = error instanceof Error ? error.message : String(error);
103
- logger.instance(instanceId, 'failed', instance.error);
104
-
105
- // Log error to file
106
- await this.appendLog(instance, `ERROR: ${instance.error}`);
107
-
108
- return instance;
109
- }
110
- }
111
-
112
- /**
113
- * Load Anthropic API key from ~/.secrets
114
- */
115
- private async loadAnthropicKey(): Promise<string | undefined> {
116
- try {
117
- const secrets = await Bun.file(`${process.env.HOME}/.secrets`).text();
118
- const match = secrets.match(/ANTHROPIC_API_KEY=["']?([^"'\n]+)["']?/);
119
- return match?.[1];
120
- } catch {
121
- return undefined;
122
- }
123
- }
124
-
125
- /**
126
- * Append to instance log file
127
- */
128
- private async appendLog(instance: SwarmInstance, message: string): Promise<void> {
129
- if (!instance.logFile) return;
130
- const timestamp = new Date().toISOString();
131
- const logLine = `[${timestamp}] ${message}\n`;
132
- try {
133
- const existing = await Bun.file(instance.logFile).text().catch(() => '');
134
- await Bun.write(instance.logFile, existing + logLine);
135
- } catch {
136
- // Ignore log write errors
137
- }
138
- }
139
-
140
- /**
141
- * Setup instance by uploading local files
142
- */
143
- private async setupInstanceFromLocal(
144
- sandbox: Sandbox,
145
- instance: SwarmInstance,
146
- include?: string[],
147
- exclude?: string[]
148
- ): Promise<void> {
149
- const localPath = instance.source;
150
- const excludePatterns = [...DEFAULT_EXCLUDE, ...(exclude || [])];
151
-
152
- instance.status = 'uploading';
153
- logger.instance(instance.id, 'uploading', localPath);
154
- await this.appendLog(instance, `Uploading local files from: ${localPath}`);
155
-
156
- // Create workspace directory
157
- await sandbox.commands.run('mkdir -p /home/user/workspace');
158
-
159
- // Get all files to upload
160
- const files = await this.getFilesToUpload(localPath, excludePatterns, include);
161
- await this.appendLog(instance, `Found ${files.length} files to upload`);
162
-
163
- // Upload files in batches
164
- let uploaded = 0;
165
- for (const file of files) {
166
- const relativePath = relative(localPath, file);
167
- const remotePath = `/home/user/workspace/${relativePath}`;
168
-
169
- try {
170
- const content = await Bun.file(file).text();
171
- await sandbox.files.write(remotePath, content);
172
- uploaded++;
173
-
174
- if (uploaded % 50 === 0) {
175
- logger.instance(instance.id, 'uploading', `${uploaded}/${files.length} files`);
176
- }
177
- } catch (error) {
178
- // Skip binary files or files that fail to read
179
- await this.appendLog(instance, `Skipped: ${relativePath} (${error})`);
180
- }
181
- }
182
-
183
- await this.appendLog(instance, `Uploaded ${uploaded} files`);
184
- logger.instance(instance.id, 'uploading', `${uploaded} files uploaded`);
185
-
186
- // Continue with common setup
187
- await this.finishSetup(sandbox, instance);
188
- }
189
-
190
- /**
191
- * Setup instance by cloning from git repo
192
- */
193
- private async setupInstanceFromRepo(sandbox: Sandbox, instance: SwarmInstance): Promise<void> {
194
- const { source: repo, branch } = instance;
195
-
196
- await this.appendLog(instance, `Starting setup for repo: ${repo}`);
197
-
198
- // Clone the repository
199
- instance.status = 'cloning';
200
- logger.instance(instance.id, 'cloning', repo);
201
- await this.appendLog(instance, `Cloning repository...`);
202
-
203
- const cloneCmd = branch
204
- ? `git clone --branch ${branch} --depth 1 ${repo} /home/user/workspace`
205
- : `git clone --depth 1 ${repo} /home/user/workspace`;
206
-
207
- const cloneResult = await sandbox.commands.run(cloneCmd, { timeoutMs: 120000 });
208
- if (cloneResult.exitCode !== 0) {
209
- throw new Error(`Failed to clone repo: ${cloneResult.stderr}`);
210
- }
211
- await this.appendLog(instance, `Clone successful`);
212
-
213
- // Continue with common setup
214
- await this.finishSetup(sandbox, instance);
215
- }
216
-
217
- /**
218
- * Common setup after files are in place
219
- */
220
- private async finishSetup(sandbox: Sandbox, instance: SwarmInstance): Promise<void> {
221
- const { tasks, prompt } = instance;
222
-
223
- // Setup directories
224
- instance.status = 'setting-up';
225
- logger.instance(instance.id, 'setting-up', 'Creating task files...');
226
- await this.appendLog(instance, `Setting up task files...`);
227
-
228
- await sandbox.commands.run('mkdir -p /home/user/workspace/.claude/tasks/swarm');
229
-
230
- // Write individual task files (matching Claude Code format)
231
- for (const task of tasks) {
232
- const taskJson = JSON.stringify(task, null, 2);
233
- await sandbox.files.write(
234
- `/home/user/workspace/.claude/tasks/swarm/${task.id}.json`,
235
- taskJson
236
- );
237
- }
238
- await this.appendLog(instance, `Created ${tasks.length} task files`);
239
-
240
- // Write the prompt file
241
- const promptContent = `# Swarm Task Execution
242
-
243
- ${prompt}
244
-
245
- ## Assigned Tasks
246
-
247
- ${tasks.map(t => `- [${t.id}] ${t.subject}`).join('\n')}
248
-
249
- ## Instructions
250
-
251
- 1. Read each task using TaskGet
252
- 2. Set task status to in_progress when starting
253
- 3. Complete the task following its description
254
- 4. Set task status to completed when done
255
- 5. Move to the next task
256
-
257
- Work through all assigned tasks systematically.
258
- `;
259
-
260
- await sandbox.files.write('/home/user/workspace/.claude/swarm-prompt.md', promptContent);
261
-
262
- // Install dependencies
263
- logger.instance(instance.id, 'setting-up', 'Installing dependencies...');
264
- await this.appendLog(instance, `Installing dependencies...`);
265
- await sandbox.commands.run('cd /home/user/workspace && bun install 2>/dev/null || npm install 2>/dev/null || true', {
266
- timeoutMs: 180000,
267
- });
268
-
269
- // Start Claude Code (non-blocking, runs in background)
270
- instance.status = 'running';
271
- logger.instance(instance.id, 'running', 'Starting Claude Code...');
272
- await this.appendLog(instance, `Starting Claude Code...`);
273
-
274
- // Get Anthropic API key for Claude Code
275
- const anthropicKey = process.env.ANTHROPIC_API_KEY || await this.loadAnthropicKey();
276
- if (!anthropicKey) {
277
- throw new Error(
278
- 'ANTHROPIC_API_KEY not found. Add it to ~/.secrets:\n' +
279
- ' export ANTHROPIC_API_KEY="your-api-key"\n\n' +
280
- 'Get your API key at: https://console.anthropic.com'
281
- );
282
- }
283
-
284
- // Run Claude Code with the task list
285
- const claudeCmd = `
286
- cd /home/user/workspace && \
287
- export ANTHROPIC_API_KEY="${anthropicKey}" && \
288
- export CLAUDE_CODE_TASK_LIST_ID=swarm && \
289
- claude --print "$(cat .claude/swarm-prompt.md)" \
290
- --dangerously-skip-permissions \
291
- --output-format json \
292
- > /home/user/workspace/.claude/swarm-output.json 2>&1 &
293
- echo $! > /home/user/workspace/.claude/swarm-pid
294
- `;
295
-
296
- await sandbox.commands.run(claudeCmd);
297
- logger.instance(instance.id, 'running', 'Claude Code started');
298
- await this.appendLog(instance, `Claude Code process started`);
299
- }
300
-
301
- /**
302
- * Get list of files to upload, respecting exclude patterns
303
- */
304
- private async getFilesToUpload(
305
- dir: string,
306
- exclude: string[],
307
- include?: string[]
308
- ): Promise<string[]> {
309
- const files: string[] = [];
310
-
311
- const walk = async (currentDir: string) => {
312
- const entries = await readdir(currentDir, { withFileTypes: true });
313
-
314
- for (const entry of entries) {
315
- const fullPath = join(currentDir, entry.name);
316
- const relativePath = relative(dir, fullPath);
317
-
318
- // Check if excluded
319
- if (this.shouldExclude(relativePath, entry.name, exclude)) {
320
- continue;
321
- }
322
-
323
- // Check if included (if include patterns specified)
324
- if (include && include.length > 0 && !this.matchesAny(relativePath, include)) {
325
- if (!entry.isDirectory()) continue;
326
- }
327
-
328
- if (entry.isDirectory()) {
329
- await walk(fullPath);
330
- } else if (entry.isFile()) {
331
- // Skip large files (> 1MB)
332
- const stats = await stat(fullPath);
333
- if (stats.size < 1024 * 1024) {
334
- files.push(fullPath);
335
- }
336
- }
337
- }
338
- };
339
-
340
- await walk(dir);
341
- return files;
342
- }
343
-
344
- /**
345
- * Check if path should be excluded
346
- */
347
- private shouldExclude(relativePath: string, name: string, patterns: string[]): boolean {
348
- for (const pattern of patterns) {
349
- // Exact match
350
- if (name === pattern || relativePath === pattern) return true;
351
-
352
- // Glob pattern (simple)
353
- if (pattern.includes('*')) {
354
- const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
355
- if (regex.test(name) || regex.test(relativePath)) return true;
356
- }
357
-
358
- // Directory match
359
- if (relativePath.startsWith(pattern + '/')) return true;
360
- }
361
- return false;
362
- }
363
-
364
- /**
365
- * Check if path matches any pattern
366
- */
367
- private matchesAny(path: string, patterns: string[]): boolean {
368
- for (const pattern of patterns) {
369
- if (pattern.includes('*')) {
370
- const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
371
- if (regex.test(path)) return true;
372
- } else if (path.startsWith(pattern)) {
373
- return true;
374
- }
375
- }
376
- return false;
377
- }
378
-
379
- /**
380
- * Check the status of a running instance
381
- */
382
- async checkInstance(instance: SwarmInstance): Promise<SwarmInstance> {
383
- if (!instance.sandboxId || instance.status === 'failed') {
384
- return instance;
385
- }
386
-
387
- try {
388
- const sandbox = await Sandbox.connect(instance.sandboxId, {
389
- apiKey: this.config.apiKey,
390
- });
391
-
392
- // Check if Claude Code is still running
393
- const pidResult = await sandbox.commands.run('cat /home/user/workspace/.claude/swarm-pid 2>/dev/null || echo ""');
394
- const pid = pidResult.stdout.trim();
395
-
396
- if (pid) {
397
- const psResult = await sandbox.commands.run(`ps -p ${pid} -o pid= 2>/dev/null || echo ""`);
398
- if (!psResult.stdout.trim()) {
399
- // Process completed
400
- instance.status = 'completed';
401
- instance.completedAt = new Date().toISOString();
402
-
403
- // Read output
404
- const outputResult = await sandbox.commands.run('cat /home/user/workspace/.claude/swarm-output.json 2>/dev/null || echo "{}"');
405
- instance.output = outputResult.stdout;
406
-
407
- await this.appendLog(instance, `Execution completed`);
408
- }
409
- }
410
-
411
- return instance;
412
- } catch (error) {
413
- // Sandbox might have been closed
414
- if (instance.status === 'running') {
415
- instance.status = 'failed';
416
- instance.error = error instanceof Error ? error.message : 'Sandbox connection lost';
417
- await this.appendLog(instance, `ERROR: ${instance.error}`);
418
- }
419
- return instance;
420
- }
421
- }
422
-
423
- /**
424
- * Collect results from a completed instance
425
- */
426
- async collectResults(instance: SwarmInstance): Promise<{
427
- output: string;
428
- tasks: Task[];
429
- logs: string;
430
- }> {
431
- if (!instance.sandboxId) {
432
- throw new Error('Instance has no sandbox ID');
433
- }
434
-
435
- const sandbox = await Sandbox.connect(instance.sandboxId, {
436
- apiKey: this.config.apiKey,
437
- });
438
-
439
- // Read output
440
- const outputResult = await sandbox.commands.run('cat /home/user/workspace/.claude/swarm-output.json 2>/dev/null || echo "{}"');
441
-
442
- // Read updated task files
443
- const tasksResult = await sandbox.commands.run('cat /home/user/workspace/.claude/tasks/swarm/*.json 2>/dev/null');
444
- const taskLines = tasksResult.stdout.split('\n').filter(Boolean);
445
- const tasks: Task[] = [];
446
-
447
- for (const line of taskLines) {
448
- try {
449
- tasks.push(JSON.parse(line));
450
- } catch {
451
- // Skip invalid JSON
452
- }
453
- }
454
-
455
- // Read any logs
456
- const logsResult = await sandbox.commands.run('cat /home/user/workspace/.claude/swarm-output.json 2>/dev/null || echo ""');
457
-
458
- await this.appendLog(instance, `Results collected: ${tasks.length} tasks`);
459
-
460
- return {
461
- output: outputResult.stdout,
462
- tasks,
463
- logs: logsResult.stdout,
464
- };
465
- }
466
-
467
- /**
468
- * Kill a sandbox instance
469
- */
470
- async kill(instance: SwarmInstance): Promise<void> {
471
- if (!instance.sandboxId) {
472
- return;
473
- }
474
-
475
- try {
476
- const sandbox = await Sandbox.connect(instance.sandboxId, {
477
- apiKey: this.config.apiKey,
478
- });
479
- await sandbox.kill();
480
- instance.status = 'failed';
481
- instance.error = 'Killed by user';
482
- instance.completedAt = new Date().toISOString();
483
- logger.instance(instance.id, 'failed', 'Killed');
484
- await this.appendLog(instance, `Instance killed by user`);
485
- } catch (error) {
486
- // Sandbox might already be dead
487
- logger.debug(`Failed to kill sandbox ${instance.sandboxId}: ${error}`);
488
- }
489
- }
490
- }