@hasna/skills 0.1.26 → 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 (491) hide show
  1. package/LICENSE +1 -10
  2. package/README.md +141 -39
  3. package/bin/index.js +30122 -27575
  4. package/bin/mcp.js +22112 -18593
  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 +11607 -597
  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 +23 -10
  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/package.json +1 -1
  108. package/skills/consolelog/src/index.ts +3 -0
  109. package/skills/contract-review-report/SKILL.md +43 -0
  110. package/skills/contract-review-report/package.json +10 -0
  111. package/skills/convert/SKILL.md +2 -3
  112. package/skills/customer-feedback-report/SKILL.md +44 -0
  113. package/skills/customer-feedback-report/package.json +10 -0
  114. package/skills/dashboard-builder/package.json +3 -1
  115. package/skills/database-explorer/package.json +3 -1
  116. package/skills/deepresearch/README.md +4 -13
  117. package/skills/deploy/src/http-client.ts +1 -1
  118. package/skills/diff-viewer/package.json +4 -1
  119. package/skills/doc-generate/package.json +0 -1
  120. package/skills/doc-generate/src/ai.ts +50 -0
  121. package/skills/doc-generate/src/cli.ts +203 -0
  122. package/skills/doc-generate/src/dependencies.ts +44 -0
  123. package/skills/doc-generate/src/document-builder.ts +299 -0
  124. package/skills/doc-generate/src/index.ts +40 -764
  125. package/skills/doc-generate/src/markdown-parser.ts +125 -0
  126. package/skills/doc-generate/src/types.ts +68 -0
  127. package/skills/domainpurchase/SKILL.md +1 -1
  128. package/skills/domainpurchase/package.json +1 -1
  129. package/skills/domainpurchase/src/index.ts +3 -0
  130. package/skills/domainsearch/SKILL.md +1 -1
  131. package/skills/domainsearch/package.json +1 -1
  132. package/skills/domainsearch/src/index.ts +3 -0
  133. package/skills/email-sequence/SKILL.md +44 -0
  134. package/skills/email-sequence/package.json +14 -0
  135. package/skills/excel/CLAUDE.md +2 -2
  136. package/skills/experiment-power-calculator/package.json +3 -1
  137. package/skills/extract-invoice/src/cli.ts +97 -0
  138. package/skills/extract-invoice/src/extractor.ts +170 -0
  139. package/skills/extract-invoice/src/file-utils.ts +46 -0
  140. package/skills/extract-invoice/src/formatters.ts +144 -0
  141. package/skills/extract-invoice/src/index.ts +44 -629
  142. package/skills/extract-invoice/src/runtime.ts +46 -0
  143. package/skills/extract-invoice/src/types.ts +88 -0
  144. package/skills/folder-tree/package.json +3 -1
  145. package/skills/form-filler/package.json +3 -1
  146. package/skills/generate-api-client/package.json +3 -1
  147. package/skills/generate-api-client/src/generator.ts +47 -0
  148. package/skills/generate-api-client/src/index.ts +3 -777
  149. package/skills/generate-api-client/src/logger.ts +34 -0
  150. package/skills/generate-api-client/src/python-generator.ts +245 -0
  151. package/skills/generate-api-client/src/spec-loader.ts +48 -0
  152. package/skills/generate-api-client/src/type-mappers.ts +79 -0
  153. package/skills/generate-api-client/src/types.ts +76 -0
  154. package/skills/generate-api-client/src/typescript-generator.ts +247 -0
  155. package/skills/generate-book-cover/package.json +3 -1
  156. package/skills/generate-dockerfile/src/cli.ts +78 -0
  157. package/skills/generate-dockerfile/src/dockerfile-templates.ts +392 -0
  158. package/skills/generate-dockerfile/src/index.ts +12 -790
  159. package/skills/generate-dockerfile/src/logger.ts +30 -0
  160. package/skills/generate-dockerfile/src/project-detection.ts +68 -0
  161. package/skills/generate-dockerfile/src/support-files.ts +171 -0
  162. package/skills/generate-dockerfile/src/types.ts +29 -0
  163. package/skills/generate-documentation/src/ai.ts +131 -0
  164. package/skills/generate-documentation/src/cli.ts +71 -0
  165. package/skills/generate-documentation/src/code-parser.ts +300 -0
  166. package/skills/generate-documentation/src/file-processing.ts +182 -0
  167. package/skills/generate-documentation/src/index.ts +13 -753
  168. package/skills/generate-documentation/src/runtime.ts +35 -0
  169. package/skills/generate-documentation/src/types.ts +30 -0
  170. package/skills/generate-env/package.json +3 -1
  171. package/skills/generate-env/src/cli.ts +85 -0
  172. package/skills/generate-env/src/detection.ts +161 -0
  173. package/skills/generate-env/src/env-data.ts +66 -0
  174. package/skills/generate-env/src/generators.ts +240 -0
  175. package/skills/generate-env/src/index.ts +76 -676
  176. package/skills/generate-env/src/runtime.ts +30 -0
  177. package/skills/generate-env/src/types.ts +32 -0
  178. package/skills/generate-favicon/package.json +3 -1
  179. package/skills/generate-mock-data/package.json +3 -1
  180. package/skills/generate-mock-data/src/ai.ts +102 -0
  181. package/skills/generate-mock-data/src/formatters.ts +84 -0
  182. package/skills/generate-mock-data/src/generator.ts +377 -0
  183. package/skills/generate-mock-data/src/index.ts +15 -716
  184. package/skills/generate-mock-data/src/logger.ts +37 -0
  185. package/skills/generate-mock-data/src/presets.ts +110 -0
  186. package/skills/generate-mock-data/src/types.ts +21 -0
  187. package/skills/generate-pr-description/src/ai.ts +144 -0
  188. package/skills/generate-pr-description/src/cli.ts +80 -0
  189. package/skills/generate-pr-description/src/clipboard.ts +30 -0
  190. package/skills/generate-pr-description/src/formatters.ts +231 -0
  191. package/skills/generate-pr-description/src/git.ts +153 -0
  192. package/skills/generate-pr-description/src/index.ts +21 -714
  193. package/skills/generate-pr-description/src/types.ts +49 -0
  194. package/skills/generate-presentation/src/ai-clients.ts +61 -0
  195. package/skills/generate-presentation/src/cli.ts +126 -0
  196. package/skills/generate-presentation/src/index.ts +3 -751
  197. package/skills/generate-presentation/src/logger.ts +67 -0
  198. package/skills/generate-presentation/src/presentation-generator.ts +425 -0
  199. package/skills/generate-presentation/src/runtime.ts +6 -0
  200. package/skills/generate-presentation/src/security.ts +12 -0
  201. package/skills/generate-presentation/src/types.ts +28 -0
  202. package/skills/generate-qrcode/package.json +4 -1
  203. package/skills/generate-regex/package.json +3 -1
  204. package/skills/generate-resume/src/cli.ts +157 -0
  205. package/skills/generate-resume/src/index.ts +13 -917
  206. package/skills/generate-resume/src/parsers.ts +95 -0
  207. package/skills/generate-resume/src/renderers.ts +538 -0
  208. package/skills/generate-resume/src/security.ts +39 -0
  209. package/skills/generate-resume/src/types.ts +86 -0
  210. package/skills/generate-social-posts/src/ai.ts +88 -0
  211. package/skills/generate-social-posts/src/cli.ts +118 -0
  212. package/skills/generate-social-posts/src/exporters.ts +126 -0
  213. package/skills/generate-social-posts/src/generator.ts +130 -0
  214. package/skills/generate-social-posts/src/index.ts +19 -709
  215. package/skills/generate-social-posts/src/platforms.ts +39 -0
  216. package/skills/generate-social-posts/src/runtime.ts +34 -0
  217. package/skills/generate-social-posts/src/source.ts +116 -0
  218. package/skills/generate-social-posts/src/types.ts +58 -0
  219. package/skills/gif-maker/package.json +4 -1
  220. package/skills/github-manager/package.json +3 -1
  221. package/skills/gmail/CLAUDE.md +1 -1
  222. package/skills/highlight-reel-generator/src/index.ts +19 -0
  223. package/skills/hook/src/commands/create.ts +20 -845
  224. package/skills/hook/src/templates/root.ts +196 -0
  225. package/skills/hook/src/templates/source.ts +647 -0
  226. package/skills/http-server/package.json +3 -1
  227. package/skills/icon-pack/README.md +28 -0
  228. package/skills/icon-pack/SKILL.md +23 -0
  229. package/skills/icon-pack/package.json +29 -0
  230. package/skills/{audio → icon-pack}/tsconfig.json +10 -12
  231. package/skills/image/package.json +1 -2
  232. package/skills/implementation-agent/package.json +3 -1
  233. package/skills/implementation-agent/src/ai-generation.ts +225 -0
  234. package/skills/implementation-agent/src/index.ts +3 -960
  235. package/skills/implementation-agent/src/minimist.d.ts +15 -0
  236. package/skills/implementation-agent/src/templates.ts +686 -0
  237. package/skills/implementation-agent/src/types.ts +53 -0
  238. package/skills/implementation-plan/package.json +3 -1
  239. package/skills/implementation-todo/package.json +3 -1
  240. package/skills/invoice/package.json +1 -1
  241. package/skills/invoice/src/index.ts +3 -0
  242. package/skills/invoice-reconciliation/SKILL.md +42 -0
  243. package/skills/invoice-reconciliation/package.json +10 -0
  244. package/skills/landing-page-pack/SKILL.md +47 -0
  245. package/skills/landing-page-pack/package.json +14 -0
  246. package/skills/latex-table-generator/package.json +3 -1
  247. package/skills/logo-design/SKILL.md +25 -44
  248. package/skills/logo-design/package.json +3 -15
  249. package/skills/lorem-generator/package.json +3 -1
  250. package/skills/lorem-generator/src/index.ts +13 -0
  251. package/skills/managehook/package.json +1 -1
  252. package/skills/managehook/src/index.ts +3 -0
  253. package/skills/managemcp/package.json +1 -1
  254. package/skills/managemcp/src/index.ts +3 -0
  255. package/skills/manageskill/package.json +1 -1
  256. package/skills/manageskill/src/index.ts +3 -0
  257. package/skills/markdown-validator/package.json +3 -1
  258. package/skills/markdown-validator/src/index.ts +1 -4
  259. package/skills/market-research-report/SKILL.md +41 -0
  260. package/skills/market-research-report/package.json +10 -0
  261. package/skills/mcp-builder/package.json +4 -1
  262. package/skills/mcp-builder/src/ai-descriptions.ts +37 -0
  263. package/skills/mcp-builder/src/generators.ts +513 -0
  264. package/skills/mcp-builder/src/index.ts +7 -908
  265. package/skills/mcp-builder/src/minimist.d.ts +15 -0
  266. package/skills/mcp-builder/src/naming.ts +12 -0
  267. package/skills/mcp-builder/src/options.ts +170 -0
  268. package/skills/mcp-builder/src/templates.ts +149 -0
  269. package/skills/mcp-builder/src/types.ts +42 -0
  270. package/skills/meeting-pack/SKILL.md +43 -0
  271. package/skills/meeting-pack/package.json +10 -0
  272. package/skills/merge-pdfs/package.json +5 -1
  273. package/skills/migration-plan-pack/SKILL.md +45 -0
  274. package/skills/migration-plan-pack/package.json +10 -0
  275. package/skills/music/package.json +2 -3
  276. package/skills/music-album/SKILL.md +37 -0
  277. package/skills/music-album/package.json +10 -0
  278. package/skills/notion-manager/package.json +3 -1
  279. package/skills/npmpublish/CLAUDE.md +5 -8
  280. package/skills/npmpublish/README.md +5 -26
  281. package/skills/npmpublish/src/index.ts +9 -147
  282. package/skills/one-page-website/SKILL.md +46 -0
  283. package/skills/one-page-website/package.json +10 -0
  284. package/skills/one-page-website/tsconfig.json +8 -0
  285. package/skills/pdf-generate/src/cli.ts +162 -0
  286. package/skills/pdf-generate/src/html.ts +84 -0
  287. package/skills/pdf-generate/src/index.ts +11 -800
  288. package/skills/pdf-generate/src/markdown.ts +27 -0
  289. package/skills/pdf-generate/src/pdf-writer.ts +78 -0
  290. package/skills/pdf-generate/src/runtime.ts +34 -0
  291. package/skills/pdf-generate/src/security.ts +37 -0
  292. package/skills/pdf-generate/src/templates.ts +311 -0
  293. package/skills/pdf-generate/src/types.ts +28 -0
  294. package/skills/pdf-read/SKILL.md +10 -10
  295. package/skills/pdf-to-dataset/SKILL.md +45 -0
  296. package/skills/pdf-to-dataset/package.json +10 -0
  297. package/skills/pdf-to-markdown/SKILL.md +49 -0
  298. package/skills/pdf-to-markdown/package.json +10 -0
  299. package/skills/pdf-to-markdown/tsconfig.json +10 -0
  300. package/skills/performance-audit-report/SKILL.md +42 -0
  301. package/skills/performance-audit-report/package.json +10 -0
  302. package/skills/persona-based-adwriter/src/index.ts +19 -0
  303. package/skills/photo-album/SKILL.md +29 -0
  304. package/skills/photo-album/package.json +9 -0
  305. package/skills/photo-album/tsconfig.json +4 -0
  306. package/skills/pitch-deck/SKILL.md +43 -0
  307. package/skills/pitch-deck/package.json +9 -0
  308. package/skills/playlist-maker/SKILL.md +33 -0
  309. package/skills/playlist-maker/package.json +9 -0
  310. package/skills/playlist-maker/tsconfig.json +4 -0
  311. package/skills/product-mockup/SKILL.md +45 -0
  312. package/skills/product-mockup/package.json +3 -20
  313. package/skills/product-mockup/tsconfig.json +3 -5
  314. package/skills/project-retro-companion/src/index.ts +19 -0
  315. package/skills/proposal-pack/SKILL.md +45 -0
  316. package/skills/proposal-pack/package.json +10 -0
  317. package/skills/read-pdf/SKILL.md +5 -4
  318. package/skills/repo-onboarding-report/SKILL.md +42 -0
  319. package/skills/repo-onboarding-report/package.json +10 -0
  320. package/skills/sales-call-recapper/src/index.ts +20 -0
  321. package/skills/salescopy/package.json +1 -1
  322. package/skills/salescopy/src/index.ts +3 -0
  323. package/skills/scaffold-project/src/ai-detect.ts +136 -0
  324. package/skills/scaffold-project/src/file-generators.ts +292 -0
  325. package/skills/scaffold-project/src/index.ts +8 -991
  326. package/skills/scaffold-project/src/project-config.ts +338 -0
  327. package/skills/scaffold-project/src/templates.ts +173 -0
  328. package/skills/scaffold-project/src/types.ts +58 -0
  329. package/skills/scientific-figure-check/package.json +3 -1
  330. package/skills/sdk-generator/SKILL.md +45 -0
  331. package/skills/sdk-generator/package.json +10 -0
  332. package/skills/sdk-generator/tsconfig.json +8 -0
  333. package/skills/security-audit/src/index.ts +25 -6
  334. package/skills/security-audit-report/SKILL.md +40 -0
  335. package/skills/security-audit-report/package.json +10 -0
  336. package/skills/seo-content-pack/SKILL.md +44 -0
  337. package/skills/seo-content-pack/package.json +9 -0
  338. package/skills/short-video-pack/SKILL.md +30 -0
  339. package/skills/short-video-pack/package.json +10 -0
  340. package/skills/slack-assistant/package.json +3 -1
  341. package/skills/slide-deck-generator/SKILL.md +44 -0
  342. package/skills/slide-deck-generator/package.json +10 -0
  343. package/skills/sms/package.json +1 -1
  344. package/skills/sms/src/index.ts +15 -0
  345. package/skills/social-content-calendar/SKILL.md +45 -0
  346. package/skills/social-content-calendar/package.json +14 -0
  347. package/skills/split-pdf/package.json +4 -1
  348. package/skills/subtitle/package.json +2 -1
  349. package/skills/subtitle/src/index.ts +3 -0
  350. package/skills/terraform-generator/package.json +3 -1
  351. package/skills/test-suite-generator/SKILL.md +41 -0
  352. package/skills/test-suite-generator/package.json +10 -0
  353. package/skills/timesheet/package.json +1 -1
  354. package/skills/timesheet/src/index.ts +3 -0
  355. package/skills/transcript/SKILL.md +1 -8
  356. package/skills/validate-config/package.json +3 -1
  357. package/skills/video/package.json +6 -4
  358. package/skills/video-downloader/package.json +3 -1
  359. package/skills/video-highlight-pack/SKILL.md +44 -0
  360. package/skills/video-highlight-pack/package.json +10 -0
  361. package/skills/voiceover-jingle-pack/SKILL.md +28 -0
  362. package/skills/voiceover-jingle-pack/package.json +10 -0
  363. package/skills/watermark/package.json +6 -1
  364. package/skills/webcrawling/package.json +2 -1
  365. package/skills/write/SKILL.md +6 -6
  366. package/dist/server/serve.d.ts +0 -11
  367. package/skills/apidocs/.claude/settings.json +0 -5
  368. package/skills/audio/.env.example +0 -14
  369. package/skills/audio/QUICKSTART.md +0 -158
  370. package/skills/audio/README.md +0 -256
  371. package/skills/audio/src/index-local.ts +0 -206
  372. package/skills/audio/src/index.ts +0 -95
  373. package/skills/audio/src/providers/elevenlabs.ts +0 -115
  374. package/skills/audio/src/providers/google.ts +0 -116
  375. package/skills/audio/src/providers/minimax.ts +0 -83
  376. package/skills/audio/src/providers/openai.ts +0 -115
  377. package/skills/audio/src/types.ts +0 -79
  378. package/skills/audiobook-chapter-proofer/CLAUDE.md +0 -19
  379. package/skills/audiobook-chapter-proofer/package.json +0 -27
  380. package/skills/audiobook-chapter-proofer/src/index.ts +0 -285
  381. package/skills/browse/src/client.ts +0 -373
  382. package/skills/browse/src/index-local.ts +0 -430
  383. package/skills/browse/src/index.ts +0 -110
  384. package/skills/browse/src/sse-server.ts +0 -919
  385. package/skills/browse/src/types.ts +0 -104
  386. package/skills/consolelog/src/server/index.ts +0 -508
  387. package/skills/create-blog-article/CLAUDE.md +0 -19
  388. package/skills/create-blog-article/src/index.ts +0 -745
  389. package/skills/create-blog-article/tsconfig.json +0 -10
  390. package/skills/deepresearch/src/agents/query-generator.ts +0 -91
  391. package/skills/deepresearch/src/agents/synthesizer.ts +0 -111
  392. package/skills/deepresearch/src/index.ts +0 -224
  393. package/skills/deepresearch/src/research.ts +0 -166
  394. package/skills/deepresearch/src/services/anthropic.ts +0 -69
  395. package/skills/deepresearch/src/services/exa.ts +0 -108
  396. package/skills/deepresearch/src/services/firecrawl.ts +0 -88
  397. package/skills/deepresearch/src/services/openai.ts +0 -81
  398. package/skills/deepresearch/src/types.ts +0 -76
  399. package/skills/deepresearch/src/utils/file.ts +0 -111
  400. package/skills/deepresearch/src/utils/logger.ts +0 -84
  401. package/skills/domainpurchase/src/server/index.ts +0 -332
  402. package/skills/domainsearch/src/server/index.ts +0 -229
  403. package/skills/e2bswarm/README.md +0 -135
  404. package/skills/e2bswarm/SKILL.md +0 -118
  405. package/skills/e2bswarm/examples/tasks-example.json +0 -38
  406. package/skills/e2bswarm/package.json +0 -59
  407. package/skills/e2bswarm/src/commands/collect.ts +0 -135
  408. package/skills/e2bswarm/src/commands/install.ts +0 -164
  409. package/skills/e2bswarm/src/commands/kill.ts +0 -62
  410. package/skills/e2bswarm/src/commands/spawn.ts +0 -134
  411. package/skills/e2bswarm/src/commands/status.ts +0 -90
  412. package/skills/e2bswarm/src/commands/sync.ts +0 -208
  413. package/skills/e2bswarm/src/index.ts +0 -121
  414. package/skills/e2bswarm/src/lib/config.ts +0 -75
  415. package/skills/e2bswarm/src/lib/e2b.ts +0 -490
  416. package/skills/e2bswarm/src/lib/github.ts +0 -253
  417. package/skills/e2bswarm/src/lib/logger.ts +0 -41
  418. package/skills/e2bswarm/src/lib/paths.ts +0 -75
  419. package/skills/e2bswarm/src/lib/tasks.ts +0 -320
  420. package/skills/e2bswarm/src/types/index.ts +0 -107
  421. package/skills/e2bswarm/templates/codebox/e2b.Dockerfile +0 -38
  422. package/skills/e2bswarm/templates/codebox/e2b.toml +0 -3
  423. package/skills/e2bswarm/templates/setup.sh +0 -21
  424. package/skills/e2bswarm/tsconfig.json +0 -19
  425. package/skills/generate-book-cover/src/index.ts +0 -694
  426. package/skills/image/src/index-local.ts +0 -206
  427. package/skills/image/src/index.ts +0 -96
  428. package/skills/image/src/providers/google.ts +0 -79
  429. package/skills/image/src/providers/minimax.ts +0 -94
  430. package/skills/image/src/providers/openai.ts +0 -80
  431. package/skills/image/src/providers/xai.ts +0 -73
  432. package/skills/image/src/types.ts +0 -37
  433. package/skills/logo-design/CLAUDE.md +0 -30
  434. package/skills/logo-design/src/index.ts +0 -322
  435. package/skills/managehook/src/server/index.ts +0 -108
  436. package/skills/managemcp/src/server/index.ts +0 -108
  437. package/skills/manageskill/src/server/index.ts +0 -108
  438. package/skills/music/CLAUDE.md +0 -9
  439. package/skills/music/src/index.ts +0 -94
  440. package/skills/music/tsconfig.json +0 -10
  441. package/skills/pdf-read/src/index.ts +0 -320
  442. package/skills/product-mockup/CLAUDE.md +0 -19
  443. package/skills/product-mockup/src/index.ts +0 -290
  444. package/skills/read-pdf/src/index.ts +0 -388
  445. package/skills/remove-background/src/index.ts +0 -405
  446. package/skills/scaffold-project/my-app/.env.example +0 -2
  447. package/skills/scaffold-project/my-app/README.md +0 -72
  448. package/skills/scaffold-project/my-app/package.json +0 -29
  449. package/skills/scaffold-project/my-app/src/index.ts +0 -23
  450. package/skills/scaffold-project/my-app/tsconfig.json +0 -33
  451. package/skills/sound-effects/SKILL.md +0 -34
  452. package/skills/sound-effects/package.json +0 -21
  453. package/skills/sound-effects/src/index.ts +0 -172
  454. package/skills/sound-effects/tsconfig.json +0 -8
  455. package/skills/transcript/src/chunker.ts +0 -215
  456. package/skills/transcript/src/formatter.ts +0 -134
  457. package/skills/transcript/src/index-local.ts +0 -226
  458. package/skills/transcript/src/index.ts +0 -110
  459. package/skills/transcript/src/providers/elevenlabs.ts +0 -133
  460. package/skills/transcript/src/providers/gemini.ts +0 -192
  461. package/skills/transcript/src/providers/index.ts +0 -54
  462. package/skills/transcript/src/providers/openai.ts +0 -203
  463. package/skills/transcript/src/types.ts +0 -106
  464. package/skills/video/.env.example +0 -14
  465. package/skills/video/EXAMPLES.md +0 -266
  466. package/skills/video/LICENSE +0 -192
  467. package/skills/video/README.md +0 -174
  468. package/skills/video/src/cli.ts +0 -155
  469. package/skills/video/src/index-local.ts +0 -148
  470. package/skills/video/src/index.ts +0 -96
  471. package/skills/video/src/providers/google-veo.ts +0 -126
  472. package/skills/video/src/providers/index.ts +0 -22
  473. package/skills/video/src/providers/minimax.ts +0 -100
  474. package/skills/video/src/providers/openai-sora.ts +0 -164
  475. package/skills/video/src/providers/runway.ts +0 -159
  476. package/skills/video/src/types.ts +0 -35
  477. package/skills/video/tsconfig.json +0 -22
  478. package/skills/voiceover-casting-assistant/CLAUDE.md +0 -19
  479. package/skills/voiceover-casting-assistant/package.json +0 -27
  480. package/skills/voiceover-casting-assistant/src/index.ts +0 -255
  481. package/skills/voiceover-casting-assistant/tsconfig.json +0 -10
  482. package/skills/webcrawling/src/commands/config.ts +0 -34
  483. package/skills/webcrawling/src/commands/crawl.ts +0 -33
  484. package/skills/webcrawling/src/commands/scrape.ts +0 -32
  485. package/skills/webcrawling/src/commands/sessions.ts +0 -42
  486. package/skills/webcrawling/src/lib/crawler.ts +0 -174
  487. package/skills/webcrawling/src/lib/storage.ts +0 -130
  488. package/skills/webcrawling/src/types/index.ts +0 -45
  489. package/skills/webcrawling/src/utils/logger.ts +0 -30
  490. package/skills/webcrawling/src/utils/paths.ts +0 -28
  491. /package/skills/{audiobook-chapter-proofer → blog-article}/tsconfig.json +0 -0
@@ -1,118 +0,0 @@
1
- ---
2
- name: e2bswarm
3
- description: Spawn and manage E2B sandbox instances for parallel Claude Code task execution. Use when you need to run multiple tasks in parallel across isolated environments, distribute work across sandboxes, or execute tasks in clean environments.
4
- disable-model-invocation: true
5
- allowed-tools: Bash(bun:*), Bash(e2b:*), Read, Write
6
- ---
7
-
8
- # E2B Swarm
9
-
10
- Spawn E2B sandbox instances in parallel to execute Claude Code tasks across isolated environments.
11
-
12
- ## Installation
13
-
14
- ```bash
15
- cd ~/.claude/skills/e2bswarm && bun install
16
- ```
17
-
18
- Or link from the repo:
19
- ```bash
20
- ln -s ~/Workspace/dev/hasnaxyz/skill/skilldev/e2bswarm ~/.claude/skills/e2bswarm
21
- ```
22
-
23
- ## Commands
24
-
25
- ### Spawn instances with tasks
26
-
27
- From a task list ID (loads from ~/.claude/tasks/<id>/):
28
- ```bash
29
- e2bswarm spawn \
30
- --repo <github-url> \
31
- --tasks <task-list-id> \
32
- --instances <count>
33
- ```
34
-
35
- From a local folder containing task JSON files:
36
- ```bash
37
- e2bswarm spawn \
38
- --repo <github-url> \
39
- --tasks-dir ./my-tasks/ \
40
- --instances <count>
41
- ```
42
-
43
- From inline JSON:
44
- ```bash
45
- e2bswarm spawn \
46
- --repo <github-url> \
47
- --tasks-json '[{"id":"1","subject":"Task 1","description":"Do something"}]' \
48
- --instances <count>
49
- ```
50
-
51
- From a JSON file:
52
- ```bash
53
- e2bswarm spawn \
54
- --repo <github-url> \
55
- --tasks-file ./tasks.json \
56
- --instances <count>
57
- ```
58
-
59
- ### Check status
60
- ```bash
61
- e2bswarm status
62
- e2bswarm status --instance <id>
63
- ```
64
-
65
- ### Collect results
66
- ```bash
67
- e2bswarm collect --output ./results
68
- ```
69
-
70
- ### Kill instances
71
- ```bash
72
- e2bswarm kill # Kill all
73
- e2bswarm kill --instance <id> # Kill specific
74
- ```
75
-
76
- ## Options
77
-
78
- | Option | Description |
79
- |--------|-------------|
80
- | `--repo, -r` | Git repository URL (required) |
81
- | `--tasks, -t` | Task list ID from ~/.claude/tasks/ |
82
- | `--tasks-dir` | Local folder containing task JSON files |
83
- | `--tasks-file` | Path to a JSON file with tasks array |
84
- | `--tasks-json` | Inline JSON array of tasks |
85
- | `--instances, -n` | Number of parallel instances (default: 1) |
86
- | `--prompt, -p` | Additional context/instructions for Claude |
87
- | `--branch, -b` | Git branch to clone |
88
- | `--distribute, -d` | Task distribution mode: all, round-robin, by-dependency |
89
-
90
- ## Task Distribution Modes
91
-
92
- - **all**: Each instance receives all tasks (default)
93
- - **round-robin**: Tasks distributed evenly across instances
94
- - **by-dependency**: Tasks grouped by dependency chains
95
-
96
- ## Environment Variables
97
-
98
- - `E2B_API_KEY`: Your E2B API key (required, add to ~/.secrets)
99
-
100
- ## Examples
101
-
102
- Spawn 4 instances to work on videoben tasks in parallel:
103
- ```bash
104
- e2bswarm spawn \
105
- --repo git@github.com:hasnastudio/iapp-videoben.git \
106
- --tasks iapp-videoben-dev \
107
- --instances 4 \
108
- --distribute round-robin \
109
- --prompt "Complete all assigned tasks, run tests before marking complete"
110
- ```
111
-
112
- Run tasks from a local JSON file:
113
- ```bash
114
- e2bswarm spawn \
115
- --repo git@github.com:org/repo.git \
116
- --tasks-file ./sprint-tasks.json \
117
- --instances 2
118
- ```
@@ -1,38 +0,0 @@
1
- [
2
- {
3
- "id": "1",
4
- "subject": "Setup project structure",
5
- "description": "Create the basic project structure with src/, tests/, and config files.\n\n**Files to create:**\n- src/index.ts\n- tests/index.test.ts\n- tsconfig.json\n\n**Acceptance criteria:**\n- All files exist\n- TypeScript compiles without errors",
6
- "activeForm": "Setting up project structure",
7
- "status": "pending",
8
- "blocks": ["2", "3"],
9
- "blockedBy": []
10
- },
11
- {
12
- "id": "2",
13
- "subject": "Implement core functionality",
14
- "description": "Implement the main feature in src/index.ts.\n\n**Requirements:**\n- Export a main function\n- Handle errors gracefully\n- Add logging\n\n**Acceptance criteria:**\n- Function works as expected\n- Errors are caught and logged",
15
- "activeForm": "Implementing core functionality",
16
- "status": "pending",
17
- "blocks": ["4"],
18
- "blockedBy": ["1"]
19
- },
20
- {
21
- "id": "3",
22
- "subject": "Write unit tests",
23
- "description": "Write comprehensive unit tests for the core functionality.\n\n**Test cases:**\n- Happy path\n- Error handling\n- Edge cases\n\n**Acceptance criteria:**\n- All tests pass\n- Coverage > 80%",
24
- "activeForm": "Writing unit tests",
25
- "status": "pending",
26
- "blocks": ["4"],
27
- "blockedBy": ["1"]
28
- },
29
- {
30
- "id": "4",
31
- "subject": "Add documentation",
32
- "description": "Add README and inline documentation.\n\n**Documentation:**\n- README.md with usage examples\n- JSDoc comments on exported functions\n\n**Acceptance criteria:**\n- README is clear and complete\n- All exports have documentation",
33
- "activeForm": "Adding documentation",
34
- "status": "pending",
35
- "blocks": [],
36
- "blockedBy": ["2", "3"]
37
- }
38
- ]
@@ -1,59 +0,0 @@
1
- {
2
- "name": "e2bswarm",
3
- "version": "0.4.1",
4
- "description": "Spawn E2B sandbox instances for parallel Claude Code task execution",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "module": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "bin": {
10
- "e2bswarm": "./dist/index.js"
11
- },
12
- "files": [
13
- "dist",
14
- "SKILL.md",
15
- "README.md",
16
- "templates",
17
- "examples"
18
- ],
19
- "scripts": {
20
- "start": "bun run src/index.ts",
21
- "dev": "bun --watch src/index.ts",
22
- "build": "bun build src/index.ts --outdir dist --target bun --minify && chmod +x dist/index.js",
23
- "typecheck": "tsc --noEmit",
24
- "prepublishOnly": "bun run build",
25
- "link": "ln -sf $(pwd) ~/.claude/skills/e2bswarm",
26
- "link:global": "bun link"
27
- },
28
- "dependencies": {
29
- "chalk": "^5.3.0",
30
- "commander": "^12.1.0",
31
- "e2b": "^1.0.5",
32
- "ora": "^8.0.1"
33
- },
34
- "devDependencies": {
35
- "@types/bun": "latest",
36
- "typescript": "^5.7.0"
37
- },
38
- "keywords": [
39
- "e2b",
40
- "claude-code",
41
- "claude",
42
- "sandbox",
43
- "parallel-execution",
44
- "task-runner",
45
- "ai-agent",
46
- "swarm"
47
- ],
48
- "homepage": "https://github.com/hasnaxyz/e2bswarm#readme",
49
- "bugs": {
50
- "url": "https://github.com/hasnaxyz/e2bswarm/issues"
51
- },
52
- "engines": {
53
- "node": ">=18.0.0"
54
- },
55
- "private": false,
56
- "publishConfig": {
57
- "access": "restricted"
58
- }
59
- }
@@ -1,135 +0,0 @@
1
- import { mkdir } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
- import ora from 'ora';
4
- import { E2BSwarm } from '../lib/e2b';
5
- import { loadConfig, loadState } from '../lib/config';
6
- import { logger } from '../lib/logger';
7
- import { paths } from '../lib/paths';
8
- import type { CollectOptions } from '../types';
9
-
10
- export async function collect(options: CollectOptions) {
11
- const spinner = ora('Loading state...').start();
12
-
13
- try {
14
- const config = await loadConfig();
15
- const state = await loadState();
16
-
17
- if (state.instances.length === 0) {
18
- spinner.fail('No instances found');
19
- return;
20
- }
21
-
22
- const swarm = new E2BSwarm(config);
23
-
24
- // Filter instances
25
- const instances = options.instance
26
- ? state.instances.filter(i => i.id.startsWith(options.instance!))
27
- : state.instances.filter(i => i.status === 'completed' || i.status === 'running');
28
-
29
- if (instances.length === 0) {
30
- spinner.fail('No completed instances to collect from');
31
- logger.info('Use `e2bswarm status` to check instance status');
32
- return;
33
- }
34
-
35
- spinner.text = `Found ${instances.length} instances to collect from`;
36
-
37
- // Use provided output dir or default to skill exports directory
38
- const outputDir = options.output || paths.getExportDir('collect');
39
- await mkdir(outputDir, { recursive: true });
40
- spinner.succeed(`Output directory: ${outputDir}`);
41
-
42
- logger.header('Collecting Results');
43
-
44
- const results: Array<{
45
- instanceId: string;
46
- status: string;
47
- tasks: number;
48
- completed: number;
49
- outputFile: string;
50
- }> = [];
51
-
52
- for (const instance of instances) {
53
- const shortId = instance.id.slice(0, 8);
54
- spinner.start(`[${shortId}] Collecting...`);
55
-
56
- try {
57
- if (instance.status === 'running') {
58
- // Update status first
59
- const updated = await swarm.checkInstance(instance);
60
- Object.assign(instance, updated);
61
- }
62
-
63
- if (instance.sandboxId) {
64
- const collected = await swarm.collectResults(instance);
65
-
66
- // Write results to file
67
- const outputFile = join(outputDir, `${shortId}-results.json`);
68
- const resultData = {
69
- instanceId: instance.id,
70
- sandboxId: instance.sandboxId,
71
- template: instance.template,
72
- source: instance.source,
73
- sourceType: instance.sourceType,
74
- status: instance.status,
75
- startedAt: instance.startedAt,
76
- completedAt: instance.completedAt,
77
- duration: instance.completedAt
78
- ? new Date(instance.completedAt).getTime() - new Date(instance.startedAt).getTime()
79
- : null,
80
- tasks: collected.tasks,
81
- output: collected.output,
82
- logs: collected.logs,
83
- };
84
-
85
- await Bun.write(outputFile, JSON.stringify(resultData, null, 2));
86
-
87
- // Also copy to instance export dir if it exists
88
- if (instance.exportDir) {
89
- await mkdir(instance.exportDir, { recursive: true });
90
- await Bun.write(join(instance.exportDir, 'results.json'), JSON.stringify(resultData, null, 2));
91
- }
92
-
93
- const completedTasks = collected.tasks.filter(t => t.status === 'completed').length;
94
- results.push({
95
- instanceId: shortId,
96
- status: instance.status,
97
- tasks: collected.tasks.length,
98
- completed: completedTasks,
99
- outputFile,
100
- });
101
-
102
- spinner.succeed(`[${shortId}] Collected ${completedTasks}/${collected.tasks.length} tasks`);
103
- } else {
104
- spinner.warn(`[${shortId}] No sandbox ID, skipping`);
105
- }
106
- } catch (error) {
107
- spinner.warn(`[${shortId}] Failed: ${error instanceof Error ? error.message : error}`);
108
- }
109
- }
110
-
111
- // Write summary
112
- const summaryFile = join(outputDir, 'summary.json');
113
- const summary = {
114
- collectedAt: new Date().toISOString(),
115
- outputDir,
116
- totalInstances: results.length,
117
- totalTasks: results.reduce((sum, r) => sum + r.tasks, 0),
118
- completedTasks: results.reduce((sum, r) => sum + r.completed, 0),
119
- instances: results,
120
- };
121
-
122
- await Bun.write(summaryFile, JSON.stringify(summary, null, 2));
123
-
124
- logger.header('Summary');
125
- logger.info(`Instances collected: ${results.length}`);
126
- logger.info(`Total tasks: ${summary.totalTasks}`);
127
- logger.info(`Completed tasks: ${summary.completedTasks}`);
128
- logger.info(`Results saved to: ${outputDir}`);
129
-
130
- } catch (error) {
131
- spinner.fail('Failed');
132
- logger.error(error instanceof Error ? error.message : String(error));
133
- process.exit(1);
134
- }
135
- }
@@ -1,164 +0,0 @@
1
- import { mkdir, writeFile, readFile } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
- import { homedir } from 'node:os';
4
- import { logger } from '../lib/logger';
5
-
6
- type Platform = 'claude' | 'codex';
7
-
8
- function getSkillsDir(platform: Platform, local: boolean): string {
9
- if (local) {
10
- return platform === 'claude' ? '.claude/skills' : '.codex/skills';
11
- }
12
- const home = homedir();
13
- return platform === 'claude'
14
- ? join(home, '.claude', 'skills')
15
- : join(home, '.codex', 'skills');
16
- }
17
-
18
- async function ensureDir(dir: string): Promise<void> {
19
- await mkdir(dir, { recursive: true });
20
- }
21
-
22
- async function getSkillMdContent(): Promise<string> {
23
- // Try to read from the package's SKILL.md first
24
- const possiblePaths = [
25
- join(__dirname, '..', '..', 'SKILL.md'),
26
- join(__dirname, '..', '..', '..', 'SKILL.md'),
27
- join(process.cwd(), 'SKILL.md'),
28
- ];
29
-
30
- for (const path of possiblePaths) {
31
- try {
32
- return await readFile(path, 'utf-8');
33
- } catch {
34
- // Try next path
35
- }
36
- }
37
-
38
- // Fallback to embedded content
39
- return `---
40
- name: e2bswarm
41
- description: Spawn and manage E2B sandbox instances for parallel Claude Code task execution. Use when you need to run multiple tasks in parallel across isolated environments, distribute work across sandboxes, or execute tasks in clean environments.
42
- disable-model-invocation: true
43
- allowed-tools: Bash(bun:*), Bash(e2b:*), Read, Write
44
- ---
45
-
46
- # E2B Swarm
47
-
48
- Spawn E2B sandbox instances in parallel to execute Claude Code tasks across isolated environments.
49
-
50
- ## CLI Usage
51
-
52
- \`\`\`bash
53
- # Spawn instances with tasks from a task list
54
- e2bswarm spawn --repo <github-url> --tasks <task-list-id> --instances <count>
55
-
56
- # Spawn from a local directory
57
- e2bswarm spawn --local ./my-project --tasks <task-list-id> --instances 3
58
-
59
- # Check status
60
- e2bswarm status
61
-
62
- # Collect results
63
- e2bswarm collect --output ./results
64
-
65
- # Kill instances
66
- e2bswarm kill
67
- \`\`\`
68
-
69
- ## Commands
70
-
71
- | Command | Description |
72
- |---------|-------------|
73
- | \`spawn\` | Spawn E2B instances with tasks |
74
- | \`status\` | Check instance status |
75
- | \`collect\` | Collect results from instances |
76
- | \`kill\` | Kill running instances |
77
- | \`sync\` | Sync changes back to GitHub |
78
- | \`clean\` | Clean up state file |
79
- | \`info\` | Show skill data directory paths |
80
-
81
- ## Options (spawn)
82
-
83
- | Option | Description |
84
- |--------|-------------|
85
- | \`-r, --repo <url>\` | Git repository URL to clone |
86
- | \`-l, --local <path>\` | Local directory to upload |
87
- | \`-t, --tasks <id>\` | Task list ID from ~/.claude/tasks/ |
88
- | \`-n, --instances <count>\` | Number of parallel instances |
89
- | \`-d, --distribute <mode>\` | Distribution: all, round-robin, by-dependency |
90
- | \`--auto-commit\` | Auto commit changes |
91
- | \`--auto-push\` | Auto push changes |
92
- | \`--create-pr\` | Create pull request |
93
-
94
- ## Data Directories
95
-
96
- - **exports/** - Collected results and artifacts
97
- - **logs/** - Execution logs
98
- - **cache/** - Temporary data
99
- - **config/** - Skill configuration
100
-
101
- ## Requirements
102
-
103
- - \`E2B_API_KEY\` in \`~/.secrets\` - Required for E2B sandboxes
104
- - Bun runtime with \`e2bswarm\` installed globally
105
-
106
- ## Install CLI
107
-
108
- \`\`\`bash
109
- bun add -g @hasnaxyz/e2bswarm
110
- \`\`\`
111
- `;
112
- }
113
-
114
- export async function install(options: {
115
- claude?: boolean;
116
- codex?: boolean;
117
- local?: boolean;
118
- }): Promise<void> {
119
- if (!options.claude && !options.codex) {
120
- logger.error('Please specify --claude or --codex');
121
- process.exit(1);
122
- }
123
-
124
- const skillName = 'e2bswarm';
125
- const platforms: Platform[] = [];
126
- if (options.claude) platforms.push('claude');
127
- if (options.codex) platforms.push('codex');
128
-
129
- const skillMdContent = await getSkillMdContent();
130
-
131
- for (const platform of platforms) {
132
- const baseDir = getSkillsDir(platform, options.local || false);
133
- const skillDir = join(baseDir, skillName);
134
-
135
- logger.info(`Installing skill to ${platform === 'claude' ? 'Claude Code' : 'Codex'}...`);
136
-
137
- try {
138
- // Create skill directory structure
139
- await ensureDir(skillDir);
140
- await ensureDir(join(skillDir, 'exports'));
141
- await ensureDir(join(skillDir, 'uploads'));
142
- await ensureDir(join(skillDir, 'logs'));
143
-
144
- // Write SKILL.md
145
- const skillMdPath = join(skillDir, 'SKILL.md');
146
- await writeFile(skillMdPath, skillMdContent, 'utf-8');
147
-
148
- logger.success(`Installed to ${skillDir}`);
149
-
150
- console.log();
151
- console.log('Created structure:');
152
- console.log(` ${skillDir}/`);
153
- console.log(' ├── SKILL.md');
154
- console.log(' ├── exports/');
155
- console.log(' ├── uploads/');
156
- console.log(' └── logs/');
157
- console.log();
158
- console.log(`Invoke with: /${skillName}`);
159
- } catch (error) {
160
- logger.error(`Install failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
161
- process.exit(1);
162
- }
163
- }
164
- }
@@ -1,62 +0,0 @@
1
- import ora from 'ora';
2
- import { E2BSwarm } from '../lib/e2b';
3
- import { loadConfig, loadState, saveState } from '../lib/config';
4
- import { logger } from '../lib/logger';
5
- import type { KillOptions } from '../types';
6
-
7
- export async function kill(options: KillOptions) {
8
- const spinner = ora('Loading state...').start();
9
-
10
- try {
11
- const config = await loadConfig();
12
- const state = await loadState();
13
-
14
- if (state.instances.length === 0) {
15
- spinner.info('No instances found');
16
- return;
17
- }
18
-
19
- const swarm = new E2BSwarm(config);
20
-
21
- // Filter instances to kill
22
- let instances = state.instances.filter(
23
- i => i.status === 'running' || i.status === 'starting' || i.status === 'setting-up' || i.status === 'cloning'
24
- );
25
-
26
- if (options.instance) {
27
- instances = instances.filter(i => i.id.startsWith(options.instance!));
28
- }
29
-
30
- if (instances.length === 0) {
31
- spinner.info('No running instances to kill');
32
- return;
33
- }
34
-
35
- spinner.succeed(`Found ${instances.length} instances to kill`);
36
-
37
- logger.header('Killing Instances');
38
-
39
- for (const instance of instances) {
40
- const shortId = instance.id.slice(0, 8);
41
- spinner.start(`[${shortId}] Killing...`);
42
-
43
- try {
44
- await swarm.kill(instance);
45
- spinner.succeed(`[${shortId}] Killed`);
46
- } catch (error) {
47
- spinner.warn(`[${shortId}] Failed: ${error instanceof Error ? error.message : error}`);
48
- }
49
- }
50
-
51
- // Update state
52
- await saveState(state);
53
-
54
- logger.header('Summary');
55
- logger.info(`Killed ${instances.length} instances`);
56
-
57
- } catch (error) {
58
- spinner.fail('Failed');
59
- logger.error(error instanceof Error ? error.message : String(error));
60
- process.exit(1);
61
- }
62
- }