@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,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
- }