@hasna/skills 0.0.2

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 (1571) hide show
  1. package/.env.example +18 -0
  2. package/.npmrc.example +1 -0
  3. package/CONTRIBUTING.md +32 -0
  4. package/README.md +475 -0
  5. package/bin/index.js +36671 -0
  6. package/bin/mcp.js +30917 -0
  7. package/bunfig.toml +2 -0
  8. package/package.json +64 -0
  9. package/skills/skill-academic-journal-matcher/CLAUDE.md +19 -0
  10. package/skills/skill-academic-journal-matcher/package.json +32 -0
  11. package/skills/skill-academic-journal-matcher/src/index.ts +86 -0
  12. package/skills/skill-academic-journal-matcher/tsconfig.json +14 -0
  13. package/skills/skill-action-item-router/CLAUDE.md +19 -0
  14. package/skills/skill-action-item-router/package.json +32 -0
  15. package/skills/skill-action-item-router/src/index.ts +304 -0
  16. package/skills/skill-action-item-router/tsconfig.json +14 -0
  17. package/skills/skill-ad-creative-generator/CLAUDE.md +19 -0
  18. package/skills/skill-ad-creative-generator/package.json +32 -0
  19. package/skills/skill-ad-creative-generator/src/index.ts +419 -0
  20. package/skills/skill-ad-creative-generator/tsconfig.json +14 -0
  21. package/skills/skill-advanced-math/CLAUDE.md +19 -0
  22. package/skills/skill-advanced-math/package.json +32 -0
  23. package/skills/skill-advanced-math/src/index.ts +811 -0
  24. package/skills/skill-advanced-math/tsconfig.json +14 -0
  25. package/skills/skill-analyze-data/CLAUDE.md +16 -0
  26. package/skills/skill-analyze-data/SKILL.md +112 -0
  27. package/skills/skill-analyze-data/package.json +25 -0
  28. package/skills/skill-analyze-data/src/index.ts +1095 -0
  29. package/skills/skill-analyze-data/tsconfig.json +16 -0
  30. package/skills/skill-anomaly-investigator/CLAUDE.md +19 -0
  31. package/skills/skill-anomaly-investigator/package.json +32 -0
  32. package/skills/skill-anomaly-investigator/src/index.ts +311 -0
  33. package/skills/skill-anomaly-investigator/tsconfig.json +14 -0
  34. package/skills/skill-api-test-suite/CLAUDE.md +19 -0
  35. package/skills/skill-api-test-suite/package.json +32 -0
  36. package/skills/skill-api-test-suite/src/index.ts +368 -0
  37. package/skills/skill-api-test-suite/tsconfig.json +14 -0
  38. package/skills/skill-apidocs/.claude/settings.json +5 -0
  39. package/skills/skill-apidocs/.env.example +8 -0
  40. package/skills/skill-apidocs/CLAUDE.md +278 -0
  41. package/skills/skill-apidocs/LICENSE +21 -0
  42. package/skills/skill-apidocs/README.md +196 -0
  43. package/skills/skill-apidocs/api-docs-list.json +186 -0
  44. package/skills/skill-apidocs/package.json +60 -0
  45. package/skills/skill-apidocs/scripts/crawl-all.ts +157 -0
  46. package/skills/skill-apidocs/scripts/publish.ts +210 -0
  47. package/skills/skill-apidocs/src/commands/add.ts +279 -0
  48. package/skills/skill-apidocs/src/commands/endpoints.ts +157 -0
  49. package/skills/skill-apidocs/src/commands/list.ts +51 -0
  50. package/skills/skill-apidocs/src/commands/query.ts +63 -0
  51. package/skills/skill-apidocs/src/commands/remove.ts +39 -0
  52. package/skills/skill-apidocs/src/commands/sync.ts +227 -0
  53. package/skills/skill-apidocs/src/lib/crawler.ts +427 -0
  54. package/skills/skill-apidocs/src/lib/discovery.ts +244 -0
  55. package/skills/skill-apidocs/src/lib/embeddings.ts +136 -0
  56. package/skills/skill-apidocs/src/lib/endpoint-extractor.ts +359 -0
  57. package/skills/skill-apidocs/src/lib/html-to-md.ts +163 -0
  58. package/skills/skill-apidocs/src/lib/parser.ts +288 -0
  59. package/skills/skill-apidocs/src/lib/search.ts +189 -0
  60. package/skills/skill-apidocs/src/lib/storage.ts +242 -0
  61. package/skills/skill-apidocs/src/lib/vectors-local.ts +220 -0
  62. package/skills/skill-apidocs/src/lib/vectors-s3.ts +255 -0
  63. package/skills/skill-apidocs/src/lib/vectors.ts +97 -0
  64. package/skills/skill-apidocs/src/types/index.ts +297 -0
  65. package/skills/skill-apidocs/src/utils/output.ts +132 -0
  66. package/skills/skill-apidocs/src/utils/paths.ts +126 -0
  67. package/skills/skill-apidocs/tsconfig.json +21 -0
  68. package/skills/skill-architecture-docs/CLAUDE.md +19 -0
  69. package/skills/skill-architecture-docs/package.json +32 -0
  70. package/skills/skill-architecture-docs/src/index.ts +543 -0
  71. package/skills/skill-architecture-docs/tsconfig.json +14 -0
  72. package/skills/skill-audio/.env.example +14 -0
  73. package/skills/skill-audio/QUICKSTART.md +158 -0
  74. package/skills/skill-audio/README.md +256 -0
  75. package/skills/skill-audio/SKILL.md +60 -0
  76. package/skills/skill-audio/install.sh +112 -0
  77. package/skills/skill-audio/package.json +35 -0
  78. package/skills/skill-audio/src/auth.ts +49 -0
  79. package/skills/skill-audio/src/http-client.ts +128 -0
  80. package/skills/skill-audio/src/index-http.ts +111 -0
  81. package/skills/skill-audio/src/index-local.ts +203 -0
  82. package/skills/skill-audio/src/index.ts +111 -0
  83. package/skills/skill-audio/src/installer.ts +324 -0
  84. package/skills/skill-audio/src/providers/elevenlabs.ts +115 -0
  85. package/skills/skill-audio/src/providers/google.ts +116 -0
  86. package/skills/skill-audio/src/providers/openai.ts +115 -0
  87. package/skills/skill-audio/src/skill-install.ts +205 -0
  88. package/skills/skill-audio/src/types.ts +79 -0
  89. package/skills/skill-audio/tsconfig.json +19 -0
  90. package/skills/skill-audio-cleanup-lab/CLAUDE.md +3 -0
  91. package/skills/skill-audio-cleanup-lab/SKILL.md +81 -0
  92. package/skills/skill-audio-cleanup-lab/package.json +30 -0
  93. package/skills/skill-audio-cleanup-lab/src/index.ts +274 -0
  94. package/skills/skill-audio-cleanup-lab/tsconfig.json +18 -0
  95. package/skills/skill-audiobook-chapter-proofer/CLAUDE.md +19 -0
  96. package/skills/skill-audiobook-chapter-proofer/package.json +32 -0
  97. package/skills/skill-audiobook-chapter-proofer/src/index.ts +285 -0
  98. package/skills/skill-audiobook-chapter-proofer/tsconfig.json +14 -0
  99. package/skills/skill-auto-format/CLAUDE.md +19 -0
  100. package/skills/skill-auto-format/package.json +32 -0
  101. package/skills/skill-auto-format/src/index.ts +103 -0
  102. package/skills/skill-auto-format/tsconfig.json +14 -0
  103. package/skills/skill-banner-ad-suite/CLAUDE.md +19 -0
  104. package/skills/skill-banner-ad-suite/package.json +32 -0
  105. package/skills/skill-banner-ad-suite/src/index.ts +331 -0
  106. package/skills/skill-banner-ad-suite/tsconfig.json +14 -0
  107. package/skills/skill-benchmark-finder/CLAUDE.md +19 -0
  108. package/skills/skill-benchmark-finder/package.json +32 -0
  109. package/skills/skill-benchmark-finder/src/index.ts +294 -0
  110. package/skills/skill-benchmark-finder/tsconfig.json +14 -0
  111. package/skills/skill-bio-sequence-tool/CLAUDE.md +19 -0
  112. package/skills/skill-bio-sequence-tool/package.json +32 -0
  113. package/skills/skill-bio-sequence-tool/src/index.ts +85 -0
  114. package/skills/skill-bio-sequence-tool/tsconfig.json +14 -0
  115. package/skills/skill-blog-topic-cluster/CLAUDE.md +19 -0
  116. package/skills/skill-blog-topic-cluster/package.json +32 -0
  117. package/skills/skill-blog-topic-cluster/src/index.ts +274 -0
  118. package/skills/skill-blog-topic-cluster/tsconfig.json +14 -0
  119. package/skills/skill-brainstorm/README.md +17 -0
  120. package/skills/skill-brainstorm/install.sh +112 -0
  121. package/skills/skill-brainstorm/src/auth.ts +49 -0
  122. package/skills/skill-brainstorm/src/installer.ts +324 -0
  123. package/skills/skill-brainstorm/src/skill-install.ts +205 -0
  124. package/skills/skill-brand-style-guide/CLAUDE.md +20 -0
  125. package/skills/skill-brand-style-guide/SKILL.md +13 -0
  126. package/skills/skill-brand-style-guide/package.json +27 -0
  127. package/skills/skill-brand-style-guide/src/index.ts +288 -0
  128. package/skills/skill-brand-style-guide/tsconfig.json +19 -0
  129. package/skills/skill-brand-voice-audit/CLAUDE.md +19 -0
  130. package/skills/skill-brand-voice-audit/package.json +32 -0
  131. package/skills/skill-brand-voice-audit/src/index.ts +302 -0
  132. package/skills/skill-brand-voice-audit/tsconfig.json +14 -0
  133. package/skills/skill-browse/.env.example +14 -0
  134. package/skills/skill-browse/LICENSE +21 -0
  135. package/skills/skill-browse/README.md +268 -0
  136. package/skills/skill-browse/SKILL.md +56 -0
  137. package/skills/skill-browse/install.sh +112 -0
  138. package/skills/skill-browse/package.json +45 -0
  139. package/skills/skill-browse/src/auth.ts +49 -0
  140. package/skills/skill-browse/src/client.ts +373 -0
  141. package/skills/skill-browse/src/http-client.ts +128 -0
  142. package/skills/skill-browse/src/index-http.ts +111 -0
  143. package/skills/skill-browse/src/index-local.ts +430 -0
  144. package/skills/skill-browse/src/index.ts +111 -0
  145. package/skills/skill-browse/src/installer.ts +324 -0
  146. package/skills/skill-browse/src/skill-install.ts +205 -0
  147. package/skills/skill-browse/src/sse-server.ts +919 -0
  148. package/skills/skill-browse/src/types.ts +104 -0
  149. package/skills/skill-browse/tsconfig.json +19 -0
  150. package/skills/skill-browser-agent/CLAUDE.md +19 -0
  151. package/skills/skill-browser-agent/package.json +32 -0
  152. package/skills/skill-browser-agent/src/index.ts +626 -0
  153. package/skills/skill-browser-agent/tsconfig.json +14 -0
  154. package/skills/skill-browseruse/LICENSE +21 -0
  155. package/skills/skill-browseruse/README.md +27 -0
  156. package/skills/skill-browseruse/SKILL.md +113 -0
  157. package/skills/skill-browseruse/install.sh +112 -0
  158. package/skills/skill-browseruse/package.json +31 -0
  159. package/skills/skill-browseruse/src/auth.ts +49 -0
  160. package/skills/skill-browseruse/src/installer.ts +324 -0
  161. package/skills/skill-browseruse/src/skill-install.ts +174 -0
  162. package/skills/skill-budget-variance-analyzer/CLAUDE.md +16 -0
  163. package/skills/skill-budget-variance-analyzer/SKILL.md +83 -0
  164. package/skills/skill-budget-variance-analyzer/package.json +26 -0
  165. package/skills/skill-budget-variance-analyzer/src/index.ts +298 -0
  166. package/skills/skill-budget-variance-analyzer/tsconfig.json +16 -0
  167. package/skills/skill-businessactivity/CLAUDE.md +176 -0
  168. package/skills/skill-businessactivity/LICENSE +21 -0
  169. package/skills/skill-businessactivity/README.md +287 -0
  170. package/skills/skill-businessactivity/package.json +27 -0
  171. package/skills/skill-businessactivity/scripts/publish.ts +210 -0
  172. package/skills/skill-businessactivity/src/commands/activity.ts +211 -0
  173. package/skills/skill-businessactivity/src/commands/function.ts +227 -0
  174. package/skills/skill-businessactivity/src/commands/owner.ts +193 -0
  175. package/skills/skill-businessactivity/src/commands/profile.ts +121 -0
  176. package/skills/skill-businessactivity/src/commands/responsibility.ts +264 -0
  177. package/skills/skill-businessactivity/src/commands/team.ts +244 -0
  178. package/skills/skill-businessactivity/src/commands/workflow.ts +359 -0
  179. package/skills/skill-businessactivity/src/lib/config.ts +167 -0
  180. package/skills/skill-businessactivity/src/lib/output.ts +76 -0
  181. package/skills/skill-businessactivity/src/lib/paths.ts +79 -0
  182. package/skills/skill-businessactivity/src/lib/storage.ts +95 -0
  183. package/skills/skill-businessactivity/src/types/index.ts +86 -0
  184. package/skills/skill-businessactivity/tsconfig.json +21 -0
  185. package/skills/skill-calculate/LICENSE +21 -0
  186. package/skills/skill-calculate/README.md +17 -0
  187. package/skills/skill-calculate/install.sh +112 -0
  188. package/skills/skill-calculate/package.json +31 -0
  189. package/skills/skill-calculate/src/auth.ts +49 -0
  190. package/skills/skill-calculate/src/installer.ts +324 -0
  191. package/skills/skill-calculate/src/skill-install.ts +205 -0
  192. package/skills/skill-calendar-events/CLAUDE.md +19 -0
  193. package/skills/skill-calendar-events/package.json +32 -0
  194. package/skills/skill-calendar-events/src/index.ts +918 -0
  195. package/skills/skill-calendar-events/tsconfig.json +14 -0
  196. package/skills/skill-campaign-metric-brief/CLAUDE.md +19 -0
  197. package/skills/skill-campaign-metric-brief/package.json +32 -0
  198. package/skills/skill-campaign-metric-brief/src/index.ts +307 -0
  199. package/skills/skill-campaign-metric-brief/tsconfig.json +14 -0
  200. package/skills/skill-campaign-moodboard/CLAUDE.md +19 -0
  201. package/skills/skill-campaign-moodboard/package.json +32 -0
  202. package/skills/skill-campaign-moodboard/src/index.ts +288 -0
  203. package/skills/skill-campaign-moodboard/tsconfig.json +14 -0
  204. package/skills/skill-caption-style-stylist/CLAUDE.md +19 -0
  205. package/skills/skill-caption-style-stylist/package.json +32 -0
  206. package/skills/skill-caption-style-stylist/src/index.ts +275 -0
  207. package/skills/skill-caption-style-stylist/tsconfig.json +14 -0
  208. package/skills/skill-chemistry-calculator/CLAUDE.md +19 -0
  209. package/skills/skill-chemistry-calculator/package.json +32 -0
  210. package/skills/skill-chemistry-calculator/src/index.ts +110 -0
  211. package/skills/skill-chemistry-calculator/tsconfig.json +14 -0
  212. package/skills/skill-chromedevtools/LICENSE +21 -0
  213. package/skills/skill-chromedevtools/README.md +27 -0
  214. package/skills/skill-chromedevtools/SKILL.md +110 -0
  215. package/skills/skill-chromedevtools/install.sh +112 -0
  216. package/skills/skill-chromedevtools/package.json +31 -0
  217. package/skills/skill-chromedevtools/src/auth.ts +49 -0
  218. package/skills/skill-chromedevtools/src/installer.ts +324 -0
  219. package/skills/skill-chromedevtools/src/skill-install.ts +174 -0
  220. package/skills/skill-churn-risk-notifier/CLAUDE.md +19 -0
  221. package/skills/skill-churn-risk-notifier/package.json +32 -0
  222. package/skills/skill-churn-risk-notifier/src/index.ts +308 -0
  223. package/skills/skill-churn-risk-notifier/tsconfig.json +14 -0
  224. package/skills/skill-citation-formatter/CLAUDE.md +19 -0
  225. package/skills/skill-citation-formatter/package.json +32 -0
  226. package/skills/skill-citation-formatter/src/index.ts +83 -0
  227. package/skills/skill-citation-formatter/tsconfig.json +14 -0
  228. package/skills/skill-classroom-newsletter-kit/CLAUDE.md +19 -0
  229. package/skills/skill-classroom-newsletter-kit/package.json +32 -0
  230. package/skills/skill-classroom-newsletter-kit/src/index.ts +293 -0
  231. package/skills/skill-classroom-newsletter-kit/tsconfig.json +14 -0
  232. package/skills/skill-codefix/LICENSE +21 -0
  233. package/skills/skill-codefix/README.md +232 -0
  234. package/skills/skill-codefix/SKILL.md +94 -0
  235. package/skills/skill-codefix/install.sh +112 -0
  236. package/skills/skill-codefix/package.json +25 -0
  237. package/skills/skill-codefix/src/auth.ts +49 -0
  238. package/skills/skill-codefix/src/fixers/batch.ts +213 -0
  239. package/skills/skill-codefix/src/fixers/detector.ts +160 -0
  240. package/skills/skill-codefix/src/fixers/index.ts +7 -0
  241. package/skills/skill-codefix/src/fixers/runner.ts +522 -0
  242. package/skills/skill-codefix/src/http-client.ts +128 -0
  243. package/skills/skill-codefix/src/index-http.ts +111 -0
  244. package/skills/skill-codefix/src/index-local.ts +430 -0
  245. package/skills/skill-codefix/src/index.ts +111 -0
  246. package/skills/skill-codefix/src/installer.ts +324 -0
  247. package/skills/skill-codefix/src/skill-install.ts +205 -0
  248. package/skills/skill-codefix/src/types.ts +211 -0
  249. package/skills/skill-codefix/tsconfig.json +16 -0
  250. package/skills/skill-color-palette-harmonizer/CLAUDE.md +19 -0
  251. package/skills/skill-color-palette-harmonizer/package.json +32 -0
  252. package/skills/skill-color-palette-harmonizer/src/index.ts +278 -0
  253. package/skills/skill-color-palette-harmonizer/tsconfig.json +14 -0
  254. package/skills/skill-companyguide/LICENSE +21 -0
  255. package/skills/skill-companyguide/README.md +17 -0
  256. package/skills/skill-companyguide/install.sh +112 -0
  257. package/skills/skill-companyguide/package.json +31 -0
  258. package/skills/skill-companyguide/src/auth.ts +49 -0
  259. package/skills/skill-companyguide/src/installer.ts +324 -0
  260. package/skills/skill-companyguide/src/skill-install.ts +205 -0
  261. package/skills/skill-competitor-ad-analyzer/CLAUDE.md +19 -0
  262. package/skills/skill-competitor-ad-analyzer/package.json +32 -0
  263. package/skills/skill-competitor-ad-analyzer/src/index.ts +350 -0
  264. package/skills/skill-competitor-ad-analyzer/tsconfig.json +14 -0
  265. package/skills/skill-compliance-copy-check/CLAUDE.md +19 -0
  266. package/skills/skill-compliance-copy-check/package.json +32 -0
  267. package/skills/skill-compliance-copy-check/src/index.ts +289 -0
  268. package/skills/skill-compliance-copy-check/tsconfig.json +14 -0
  269. package/skills/skill-compliance-report-pack/CLAUDE.md +19 -0
  270. package/skills/skill-compliance-report-pack/package.json +32 -0
  271. package/skills/skill-compliance-report-pack/src/index.ts +301 -0
  272. package/skills/skill-compliance-report-pack/tsconfig.json +14 -0
  273. package/skills/skill-compose-gmail/CLAUDE.md +19 -0
  274. package/skills/skill-compose-gmail/package.json +32 -0
  275. package/skills/skill-compose-gmail/src/index.ts +410 -0
  276. package/skills/skill-compose-gmail/tsconfig.json +14 -0
  277. package/skills/skill-compress-video/CLAUDE.md +9 -0
  278. package/skills/skill-compress-video/SKILL.md +79 -0
  279. package/skills/skill-compress-video/package.json +30 -0
  280. package/skills/skill-compress-video/src/index.ts +473 -0
  281. package/skills/skill-compress-video/tsconfig.json +15 -0
  282. package/skills/skill-consolelog/.env.example +19 -0
  283. package/skills/skill-consolelog/CLAUDE.md +157 -0
  284. package/skills/skill-consolelog/LICENSE +21 -0
  285. package/skills/skill-consolelog/README.md +239 -0
  286. package/skills/skill-consolelog/data/.gitkeep +0 -0
  287. package/skills/skill-consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +16 -0
  288. package/skills/skill-consolelog/exports/products-2025-12-14T13-50-53-041Z.json +227 -0
  289. package/skills/skill-consolelog/package.json +47 -0
  290. package/skills/skill-consolelog/scripts/migrate.ts +26 -0
  291. package/skills/skill-consolelog/scripts/seed.ts +48 -0
  292. package/skills/skill-consolelog/src/db/index.ts +44 -0
  293. package/skills/skill-consolelog/src/db/queries.ts +348 -0
  294. package/skills/skill-consolelog/src/db/schema.ts +93 -0
  295. package/skills/skill-consolelog/src/lib/config.ts +110 -0
  296. package/skills/skill-consolelog/src/lib/installer.ts +294 -0
  297. package/skills/skill-consolelog/src/lib/monitor.ts +194 -0
  298. package/skills/skill-consolelog/src/lib/types.ts +189 -0
  299. package/skills/skill-consolelog/src/lib/watcher.ts +207 -0
  300. package/skills/skill-consolelog/src/server/index.ts +508 -0
  301. package/skills/skill-consolelog/storage/login-error.png +0 -0
  302. package/skills/skill-consolelog/storage/products-page.png +0 -0
  303. package/skills/skill-consolelog/tests/api.test.ts +154 -0
  304. package/skills/skill-consolelog/tests/config.test.ts +192 -0
  305. package/skills/skill-consolelog/tests/db.test.ts +447 -0
  306. package/skills/skill-consolelog/tests/installer.test.ts +155 -0
  307. package/skills/skill-consolelog/tsconfig.json +20 -0
  308. package/skills/skill-context7/LICENSE +21 -0
  309. package/skills/skill-context7/README.md +27 -0
  310. package/skills/skill-context7/SKILL.md +103 -0
  311. package/skills/skill-context7/install.sh +112 -0
  312. package/skills/skill-context7/package.json +31 -0
  313. package/skills/skill-context7/src/auth.ts +49 -0
  314. package/skills/skill-context7/src/installer.ts +324 -0
  315. package/skills/skill-context7/src/skill-install.ts +174 -0
  316. package/skills/skill-contract-plainlanguage/CLAUDE.md +19 -0
  317. package/skills/skill-contract-plainlanguage/package.json +32 -0
  318. package/skills/skill-contract-plainlanguage/src/index.ts +294 -0
  319. package/skills/skill-contract-plainlanguage/tsconfig.json +14 -0
  320. package/skills/skill-convert/.env.example +7 -0
  321. package/skills/skill-convert/LICENSE +21 -0
  322. package/skills/skill-convert/README.md +250 -0
  323. package/skills/skill-convert/SKILL.md +100 -0
  324. package/skills/skill-convert/install.sh +112 -0
  325. package/skills/skill-convert/package.json +41 -0
  326. package/skills/skill-convert/src/auth.ts +49 -0
  327. package/skills/skill-convert/src/converters/ai.ts +375 -0
  328. package/skills/skill-convert/src/converters/data.ts +339 -0
  329. package/skills/skill-convert/src/converters/document.ts +189 -0
  330. package/skills/skill-convert/src/converters/image.ts +227 -0
  331. package/skills/skill-convert/src/converters/index.ts +9 -0
  332. package/skills/skill-convert/src/converters/pdf.ts +255 -0
  333. package/skills/skill-convert/src/http-client.ts +128 -0
  334. package/skills/skill-convert/src/index-http.ts +111 -0
  335. package/skills/skill-convert/src/index-local.ts +569 -0
  336. package/skills/skill-convert/src/index.ts +111 -0
  337. package/skills/skill-convert/src/installer.ts +324 -0
  338. package/skills/skill-convert/src/skill-install.ts +205 -0
  339. package/skills/skill-convert/src/types.ts +192 -0
  340. package/skills/skill-convert/tsconfig.json +16 -0
  341. package/skills/skill-copytone-translator/CLAUDE.md +19 -0
  342. package/skills/skill-copytone-translator/package.json +32 -0
  343. package/skills/skill-copytone-translator/src/index.ts +295 -0
  344. package/skills/skill-copytone-translator/tsconfig.json +14 -0
  345. package/skills/skill-crawl/LICENSE +21 -0
  346. package/skills/skill-crawl/README.md +17 -0
  347. package/skills/skill-crawl/install.sh +112 -0
  348. package/skills/skill-crawl/package.json +31 -0
  349. package/skills/skill-crawl/src/auth.ts +49 -0
  350. package/skills/skill-crawl/src/installer.ts +324 -0
  351. package/skills/skill-crawl/src/skill-install.ts +205 -0
  352. package/skills/skill-create-blog-article/CLAUDE.md +19 -0
  353. package/skills/skill-create-blog-article/package.json +32 -0
  354. package/skills/skill-create-blog-article/src/index.ts +745 -0
  355. package/skills/skill-create-blog-article/tsconfig.json +14 -0
  356. package/skills/skill-create-ebook/CLAUDE.md +19 -0
  357. package/skills/skill-create-ebook/package.json +32 -0
  358. package/skills/skill-create-ebook/src/index.ts +637 -0
  359. package/skills/skill-create-ebook/tsconfig.json +14 -0
  360. package/skills/skill-crm-note-enhancer/CLAUDE.md +19 -0
  361. package/skills/skill-crm-note-enhancer/package.json +32 -0
  362. package/skills/skill-crm-note-enhancer/src/index.ts +317 -0
  363. package/skills/skill-crm-note-enhancer/tsconfig.json +14 -0
  364. package/skills/skill-csv-transformer/CLAUDE.md +19 -0
  365. package/skills/skill-csv-transformer/package.json +32 -0
  366. package/skills/skill-csv-transformer/src/index.ts +81 -0
  367. package/skills/skill-csv-transformer/tsconfig.json +14 -0
  368. package/skills/skill-customer-journey-mapper/CLAUDE.md +19 -0
  369. package/skills/skill-customer-journey-mapper/package.json +32 -0
  370. package/skills/skill-customer-journey-mapper/src/index.ts +312 -0
  371. package/skills/skill-customer-journey-mapper/tsconfig.json +14 -0
  372. package/skills/skill-dashboard-builder/CLAUDE.md +19 -0
  373. package/skills/skill-dashboard-builder/package.json +32 -0
  374. package/skills/skill-dashboard-builder/src/index.ts +150 -0
  375. package/skills/skill-dashboard-builder/tsconfig.json +14 -0
  376. package/skills/skill-dashboard-narrator/CLAUDE.md +19 -0
  377. package/skills/skill-dashboard-narrator/package.json +32 -0
  378. package/skills/skill-dashboard-narrator/src/index.ts +307 -0
  379. package/skills/skill-dashboard-narrator/tsconfig.json +14 -0
  380. package/skills/skill-data-anonymizer/CLAUDE.md +19 -0
  381. package/skills/skill-data-anonymizer/package.json +32 -0
  382. package/skills/skill-data-anonymizer/src/index.ts +183 -0
  383. package/skills/skill-data-anonymizer/tsconfig.json +14 -0
  384. package/skills/skill-database-explorer/CLAUDE.md +19 -0
  385. package/skills/skill-database-explorer/package.json +32 -0
  386. package/skills/skill-database-explorer/src/index.ts +95 -0
  387. package/skills/skill-database-explorer/tsconfig.json +14 -0
  388. package/skills/skill-dataset-health-check/CLAUDE.md +19 -0
  389. package/skills/skill-dataset-health-check/package.json +32 -0
  390. package/skills/skill-dataset-health-check/src/index.ts +323 -0
  391. package/skills/skill-dataset-health-check/tsconfig.json +14 -0
  392. package/skills/skill-debug/LICENSE +21 -0
  393. package/skills/skill-debug/README.md +17 -0
  394. package/skills/skill-debug/install.sh +112 -0
  395. package/skills/skill-debug/package.json +31 -0
  396. package/skills/skill-debug/src/auth.ts +49 -0
  397. package/skills/skill-debug/src/installer.ts +324 -0
  398. package/skills/skill-debug/src/skill-install.ts +205 -0
  399. package/skills/skill-decision-journal/CLAUDE.md +19 -0
  400. package/skills/skill-decision-journal/package.json +32 -0
  401. package/skills/skill-decision-journal/src/index.ts +313 -0
  402. package/skills/skill-decision-journal/tsconfig.json +14 -0
  403. package/skills/skill-deep-research/CLAUDE.md +19 -0
  404. package/skills/skill-deep-research/package.json +32 -0
  405. package/skills/skill-deep-research/src/index.ts +1149 -0
  406. package/skills/skill-deep-research/tsconfig.json +14 -0
  407. package/skills/skill-deepresearch/.env.example +9 -0
  408. package/skills/skill-deepresearch/CLAUDE.md +44 -0
  409. package/skills/skill-deepresearch/README.md +170 -0
  410. package/skills/skill-deepresearch/SKILL.md +50 -0
  411. package/skills/skill-deepresearch/package.json +49 -0
  412. package/skills/skill-deepresearch/src/agents/query-generator.ts +91 -0
  413. package/skills/skill-deepresearch/src/agents/synthesizer.ts +111 -0
  414. package/skills/skill-deepresearch/src/index.ts +224 -0
  415. package/skills/skill-deepresearch/src/research.ts +166 -0
  416. package/skills/skill-deepresearch/src/services/anthropic.ts +69 -0
  417. package/skills/skill-deepresearch/src/services/exa.ts +108 -0
  418. package/skills/skill-deepresearch/src/services/firecrawl.ts +88 -0
  419. package/skills/skill-deepresearch/src/services/openai.ts +81 -0
  420. package/skills/skill-deepresearch/src/types.ts +76 -0
  421. package/skills/skill-deepresearch/src/utils/file.ts +111 -0
  422. package/skills/skill-deepresearch/src/utils/logger.ts +84 -0
  423. package/skills/skill-deepresearch/tsconfig.json +27 -0
  424. package/skills/skill-delegation-brief-writer/CLAUDE.md +19 -0
  425. package/skills/skill-delegation-brief-writer/package.json +32 -0
  426. package/skills/skill-delegation-brief-writer/src/index.ts +314 -0
  427. package/skills/skill-delegation-brief-writer/tsconfig.json +14 -0
  428. package/skills/skill-deploy/LICENSE +21 -0
  429. package/skills/skill-deploy/README.md +382 -0
  430. package/skills/skill-deploy/SKILL.md +138 -0
  431. package/skills/skill-deploy/install.sh +112 -0
  432. package/skills/skill-deploy/package.json +22 -0
  433. package/skills/skill-deploy/src/auth.ts +49 -0
  434. package/skills/skill-deploy/src/deployer.ts +256 -0
  435. package/skills/skill-deploy/src/health.ts +103 -0
  436. package/skills/skill-deploy/src/hosts.ts +62 -0
  437. package/skills/skill-deploy/src/http-client.ts +128 -0
  438. package/skills/skill-deploy/src/index-http.ts +111 -0
  439. package/skills/skill-deploy/src/index-local.ts +365 -0
  440. package/skills/skill-deploy/src/index.ts +111 -0
  441. package/skills/skill-deploy/src/installer.ts +324 -0
  442. package/skills/skill-deploy/src/skill-install.ts +205 -0
  443. package/skills/skill-deploy/src/types.ts +56 -0
  444. package/skills/skill-deploy/tsconfig.json +17 -0
  445. package/skills/skill-destination-briefing/CLAUDE.md +19 -0
  446. package/skills/skill-destination-briefing/package.json +32 -0
  447. package/skills/skill-destination-briefing/src/index.ts +291 -0
  448. package/skills/skill-destination-briefing/tsconfig.json +14 -0
  449. package/skills/skill-diff-viewer/CLAUDE.md +19 -0
  450. package/skills/skill-diff-viewer/package.json +32 -0
  451. package/skills/skill-diff-viewer/src/index.ts +164 -0
  452. package/skills/skill-diff-viewer/tsconfig.json +14 -0
  453. package/skills/skill-dns-manager/CLAUDE.md +19 -0
  454. package/skills/skill-dns-manager/package.json +32 -0
  455. package/skills/skill-dns-manager/src/index.ts +92 -0
  456. package/skills/skill-dns-manager/tsconfig.json +14 -0
  457. package/skills/skill-domainpurchase/.env.example +7 -0
  458. package/skills/skill-domainpurchase/LICENSE +21 -0
  459. package/skills/skill-domainpurchase/package.json +42 -0
  460. package/skills/skill-domainpurchase/src/lib/api-client.ts +571 -0
  461. package/skills/skill-domainpurchase/src/lib/config.ts +209 -0
  462. package/skills/skill-domainpurchase/src/lib/installer.ts +165 -0
  463. package/skills/skill-domainpurchase/src/server/index.ts +332 -0
  464. package/skills/skill-domainpurchase/tsconfig.json +22 -0
  465. package/skills/skill-domainsearch/.env.example +7 -0
  466. package/skills/skill-domainsearch/LICENSE +21 -0
  467. package/skills/skill-domainsearch/package.json +41 -0
  468. package/skills/skill-domainsearch/src/lib/api-client.ts +181 -0
  469. package/skills/skill-domainsearch/src/lib/config.ts +72 -0
  470. package/skills/skill-domainsearch/src/lib/installer.ts +164 -0
  471. package/skills/skill-domainsearch/src/server/index.ts +229 -0
  472. package/skills/skill-domainsearch/tsconfig.json +22 -0
  473. package/skills/skill-download/LICENSE +21 -0
  474. package/skills/skill-download/README.md +17 -0
  475. package/skills/skill-download/install.sh +112 -0
  476. package/skills/skill-download/package.json +31 -0
  477. package/skills/skill-download/src/auth.ts +49 -0
  478. package/skills/skill-download/src/installer.ts +324 -0
  479. package/skills/skill-download/src/skill-install.ts +205 -0
  480. package/skills/skill-e2bswarm/README.md +135 -0
  481. package/skills/skill-e2bswarm/SKILL.md +118 -0
  482. package/skills/skill-e2bswarm/examples/tasks-example.json +38 -0
  483. package/skills/skill-e2bswarm/package.json +65 -0
  484. package/skills/skill-e2bswarm/src/commands/collect.ts +135 -0
  485. package/skills/skill-e2bswarm/src/commands/install.ts +164 -0
  486. package/skills/skill-e2bswarm/src/commands/kill.ts +62 -0
  487. package/skills/skill-e2bswarm/src/commands/spawn.ts +134 -0
  488. package/skills/skill-e2bswarm/src/commands/status.ts +90 -0
  489. package/skills/skill-e2bswarm/src/commands/sync.ts +208 -0
  490. package/skills/skill-e2bswarm/src/index.ts +121 -0
  491. package/skills/skill-e2bswarm/src/lib/config.ts +78 -0
  492. package/skills/skill-e2bswarm/src/lib/e2b.ts +490 -0
  493. package/skills/skill-e2bswarm/src/lib/github.ts +253 -0
  494. package/skills/skill-e2bswarm/src/lib/logger.ts +41 -0
  495. package/skills/skill-e2bswarm/src/lib/paths.ts +75 -0
  496. package/skills/skill-e2bswarm/src/lib/tasks.ts +320 -0
  497. package/skills/skill-e2bswarm/src/types/index.ts +107 -0
  498. package/skills/skill-e2bswarm/templates/codebox/e2b.Dockerfile +38 -0
  499. package/skills/skill-e2bswarm/templates/codebox/e2b.toml +3 -0
  500. package/skills/skill-e2bswarm/templates/setup.sh +21 -0
  501. package/skills/skill-e2bswarm/tsconfig.json +20 -0
  502. package/skills/skill-educational-resource-finder/CLAUDE.md +19 -0
  503. package/skills/skill-educational-resource-finder/package.json +32 -0
  504. package/skills/skill-educational-resource-finder/src/index.ts +289 -0
  505. package/skills/skill-educational-resource-finder/tsconfig.json +14 -0
  506. package/skills/skill-email-campaign/CLAUDE.md +19 -0
  507. package/skills/skill-email-campaign/package.json +32 -0
  508. package/skills/skill-email-campaign/src/index.ts +339 -0
  509. package/skills/skill-email-campaign/tsconfig.json +14 -0
  510. package/skills/skill-emoji/.env.example +7 -0
  511. package/skills/skill-emoji/QUICKSTART.md +52 -0
  512. package/skills/skill-emoji/README.md +175 -0
  513. package/skills/skill-emoji/SKILL.md +63 -0
  514. package/skills/skill-emoji/package.json +32 -0
  515. package/skills/skill-emoji/src/image-processor.ts +143 -0
  516. package/skills/skill-emoji/src/index.ts +282 -0
  517. package/skills/skill-emoji/src/prompt-generator.ts +181 -0
  518. package/skills/skill-emoji/src/providers/gemini.ts +58 -0
  519. package/skills/skill-emoji/src/providers/openai.ts +55 -0
  520. package/skills/skill-emoji/src/types.ts +72 -0
  521. package/skills/skill-emoji/tsconfig.json +18 -0
  522. package/skills/skill-exa/LICENSE +21 -0
  523. package/skills/skill-exa/README.md +26 -0
  524. package/skills/skill-exa/SKILL.md +92 -0
  525. package/skills/skill-exa/install.sh +112 -0
  526. package/skills/skill-exa/package.json +31 -0
  527. package/skills/skill-exa/src/auth.ts +49 -0
  528. package/skills/skill-exa/src/installer.ts +324 -0
  529. package/skills/skill-exa/src/skill-install.ts +174 -0
  530. package/skills/skill-exam-readiness-check/CLAUDE.md +19 -0
  531. package/skills/skill-exam-readiness-check/package.json +32 -0
  532. package/skills/skill-exam-readiness-check/src/index.ts +289 -0
  533. package/skills/skill-exam-readiness-check/tsconfig.json +14 -0
  534. package/skills/skill-experiment-power-calculator/CLAUDE.md +19 -0
  535. package/skills/skill-experiment-power-calculator/package.json +32 -0
  536. package/skills/skill-experiment-power-calculator/src/index.ts +86 -0
  537. package/skills/skill-experiment-power-calculator/tsconfig.json +14 -0
  538. package/skills/skill-extract/.env.example +3 -0
  539. package/skills/skill-extract/LICENSE +21 -0
  540. package/skills/skill-extract/README.md +61 -0
  541. package/skills/skill-extract/SKILL.md +91 -0
  542. package/skills/skill-extract/install.sh +112 -0
  543. package/skills/skill-extract/package.json +40 -0
  544. package/skills/skill-extract/src/auth.ts +49 -0
  545. package/skills/skill-extract/src/extractors/image.ts +42 -0
  546. package/skills/skill-extract/src/extractors/pdf.ts +96 -0
  547. package/skills/skill-extract/src/http-client.ts +128 -0
  548. package/skills/skill-extract/src/index-http.ts +111 -0
  549. package/skills/skill-extract/src/index-local.ts +257 -0
  550. package/skills/skill-extract/src/index.ts +111 -0
  551. package/skills/skill-extract/src/installer.ts +324 -0
  552. package/skills/skill-extract/src/providers/openai.ts +222 -0
  553. package/skills/skill-extract/src/skill-install.ts +205 -0
  554. package/skills/skill-extract/src/types.ts +61 -0
  555. package/skills/skill-extract/tsconfig.json +17 -0
  556. package/skills/skill-extract-audio/CLAUDE.md +9 -0
  557. package/skills/skill-extract-audio/SKILL.md +73 -0
  558. package/skills/skill-extract-audio/package.json +30 -0
  559. package/skills/skill-extract-audio/src/index.ts +323 -0
  560. package/skills/skill-extract-audio/tsconfig.json +15 -0
  561. package/skills/skill-extract-frames/CLAUDE.md +19 -0
  562. package/skills/skill-extract-frames/package.json +32 -0
  563. package/skills/skill-extract-frames/src/index.ts +616 -0
  564. package/skills/skill-extract-frames/tsconfig.json +14 -0
  565. package/skills/skill-extract-invoice/CLAUDE.md +19 -0
  566. package/skills/skill-extract-invoice/package.json +32 -0
  567. package/skills/skill-extract-invoice/src/index.ts +714 -0
  568. package/skills/skill-extract-invoice/tsconfig.json +14 -0
  569. package/skills/skill-family-activity-curator/CLAUDE.md +19 -0
  570. package/skills/skill-family-activity-curator/package.json +32 -0
  571. package/skills/skill-family-activity-curator/src/index.ts +293 -0
  572. package/skills/skill-family-activity-curator/tsconfig.json +14 -0
  573. package/skills/skill-faq-packager/CLAUDE.md +19 -0
  574. package/skills/skill-faq-packager/package.json +32 -0
  575. package/skills/skill-faq-packager/src/index.ts +292 -0
  576. package/skills/skill-faq-packager/tsconfig.json +14 -0
  577. package/skills/skill-feedback-survey-designer/CLAUDE.md +19 -0
  578. package/skills/skill-feedback-survey-designer/package.json +32 -0
  579. package/skills/skill-feedback-survey-designer/src/index.ts +299 -0
  580. package/skills/skill-feedback-survey-designer/tsconfig.json +14 -0
  581. package/skills/skill-field-trip-planner/CLAUDE.md +19 -0
  582. package/skills/skill-field-trip-planner/package.json +32 -0
  583. package/skills/skill-field-trip-planner/src/index.ts +289 -0
  584. package/skills/skill-field-trip-planner/tsconfig.json +14 -0
  585. package/skills/skill-file-organizer/CLAUDE.md +19 -0
  586. package/skills/skill-file-organizer/package.json +32 -0
  587. package/skills/skill-file-organizer/src/index.ts +91 -0
  588. package/skills/skill-file-organizer/tsconfig.json +14 -0
  589. package/skills/skill-filesearch/LICENSE +21 -0
  590. package/skills/skill-filesearch/README.md +17 -0
  591. package/skills/skill-filesearch/install.sh +112 -0
  592. package/skills/skill-filesearch/package.json +31 -0
  593. package/skills/skill-filesearch/src/auth.ts +49 -0
  594. package/skills/skill-filesearch/src/installer.ts +324 -0
  595. package/skills/skill-filesearch/src/skill-install.ts +205 -0
  596. package/skills/skill-fill/LICENSE +21 -0
  597. package/skills/skill-fill/README.md +17 -0
  598. package/skills/skill-fill/install.sh +112 -0
  599. package/skills/skill-fill/package.json +31 -0
  600. package/skills/skill-fill/src/auth.ts +49 -0
  601. package/skills/skill-fill/src/installer.ts +324 -0
  602. package/skills/skill-fill/src/skill-install.ts +205 -0
  603. package/skills/skill-folder-tree/CLAUDE.md +19 -0
  604. package/skills/skill-folder-tree/package.json +32 -0
  605. package/skills/skill-folder-tree/src/index.ts +568 -0
  606. package/skills/skill-folder-tree/tsconfig.json +14 -0
  607. package/skills/skill-forecast-scenario-lab/CLAUDE.md +19 -0
  608. package/skills/skill-forecast-scenario-lab/package.json +32 -0
  609. package/skills/skill-forecast-scenario-lab/src/index.ts +314 -0
  610. package/skills/skill-forecast-scenario-lab/tsconfig.json +14 -0
  611. package/skills/skill-form-filler/CLAUDE.md +19 -0
  612. package/skills/skill-form-filler/package.json +32 -0
  613. package/skills/skill-form-filler/src/index.ts +81 -0
  614. package/skills/skill-form-filler/tsconfig.json +14 -0
  615. package/skills/skill-generate-api-client/CLAUDE.md +19 -0
  616. package/skills/skill-generate-api-client/package.json +32 -0
  617. package/skills/skill-generate-api-client/src/index.ts +866 -0
  618. package/skills/skill-generate-api-client/tsconfig.json +14 -0
  619. package/skills/skill-generate-audio/CLAUDE.md +3 -0
  620. package/skills/skill-generate-audio/SKILL.md +53 -0
  621. package/skills/skill-generate-audio/package.json +30 -0
  622. package/skills/skill-generate-audio/src/index.ts +656 -0
  623. package/skills/skill-generate-audio/tsconfig.json +18 -0
  624. package/skills/skill-generate-book-cover/CLAUDE.md +19 -0
  625. package/skills/skill-generate-book-cover/package.json +32 -0
  626. package/skills/skill-generate-book-cover/src/index.ts +694 -0
  627. package/skills/skill-generate-book-cover/tsconfig.json +14 -0
  628. package/skills/skill-generate-chart/CLAUDE.md +19 -0
  629. package/skills/skill-generate-chart/package.json +32 -0
  630. package/skills/skill-generate-chart/src/index.ts +510 -0
  631. package/skills/skill-generate-chart/tsconfig.json +14 -0
  632. package/skills/skill-generate-diagram/CLAUDE.md +19 -0
  633. package/skills/skill-generate-diagram/package.json +32 -0
  634. package/skills/skill-generate-diagram/src/index.ts +514 -0
  635. package/skills/skill-generate-diagram/tsconfig.json +14 -0
  636. package/skills/skill-generate-dockerfile/CLAUDE.md +19 -0
  637. package/skills/skill-generate-dockerfile/package.json +32 -0
  638. package/skills/skill-generate-dockerfile/src/index.ts +859 -0
  639. package/skills/skill-generate-dockerfile/tsconfig.json +14 -0
  640. package/skills/skill-generate-documentation/CLAUDE.md +19 -0
  641. package/skills/skill-generate-documentation/package.json +32 -0
  642. package/skills/skill-generate-documentation/src/index.ts +805 -0
  643. package/skills/skill-generate-documentation/tsconfig.json +14 -0
  644. package/skills/skill-generate-docx/CLAUDE.md +19 -0
  645. package/skills/skill-generate-docx/SKILL.md +295 -0
  646. package/skills/skill-generate-docx/package.json +21 -0
  647. package/skills/skill-generate-docx/src/index.ts +751 -0
  648. package/skills/skill-generate-docx/tsconfig.json +16 -0
  649. package/skills/skill-generate-env/CLAUDE.md +19 -0
  650. package/skills/skill-generate-env/package.json +32 -0
  651. package/skills/skill-generate-env/src/index.ts +720 -0
  652. package/skills/skill-generate-env/tsconfig.json +14 -0
  653. package/skills/skill-generate-excel/CLAUDE.md +19 -0
  654. package/skills/skill-generate-excel/package.json +32 -0
  655. package/skills/skill-generate-excel/src/index.ts +617 -0
  656. package/skills/skill-generate-excel/tsconfig.json +14 -0
  657. package/skills/skill-generate-favicon/CLAUDE.md +19 -0
  658. package/skills/skill-generate-favicon/package.json +32 -0
  659. package/skills/skill-generate-favicon/src/index.ts +421 -0
  660. package/skills/skill-generate-favicon/tsconfig.json +14 -0
  661. package/skills/skill-generate-mock-data/CLAUDE.md +19 -0
  662. package/skills/skill-generate-mock-data/package.json +32 -0
  663. package/skills/skill-generate-mock-data/src/index.ts +902 -0
  664. package/skills/skill-generate-mock-data/tsconfig.json +14 -0
  665. package/skills/skill-generate-pdf/CLAUDE.md +19 -0
  666. package/skills/skill-generate-pdf/SKILL.md +86 -0
  667. package/skills/skill-generate-pdf/package.json +21 -0
  668. package/skills/skill-generate-pdf/src/index.ts +750 -0
  669. package/skills/skill-generate-pdf/tsconfig.json +16 -0
  670. package/skills/skill-generate-pr-description/CLAUDE.md +19 -0
  671. package/skills/skill-generate-pr-description/package.json +32 -0
  672. package/skills/skill-generate-pr-description/src/index.ts +807 -0
  673. package/skills/skill-generate-pr-description/tsconfig.json +14 -0
  674. package/skills/skill-generate-presentation/CLAUDE.md +19 -0
  675. package/skills/skill-generate-presentation/package.json +32 -0
  676. package/skills/skill-generate-presentation/src/index.ts +792 -0
  677. package/skills/skill-generate-presentation/tsconfig.json +14 -0
  678. package/skills/skill-generate-qrcode/CLAUDE.md +19 -0
  679. package/skills/skill-generate-qrcode/package.json +32 -0
  680. package/skills/skill-generate-qrcode/src/index.ts +584 -0
  681. package/skills/skill-generate-qrcode/tsconfig.json +14 -0
  682. package/skills/skill-generate-readme/CLAUDE.md +19 -0
  683. package/skills/skill-generate-readme/package.json +32 -0
  684. package/skills/skill-generate-readme/src/index.ts +867 -0
  685. package/skills/skill-generate-readme/tsconfig.json +14 -0
  686. package/skills/skill-generate-regex/CLAUDE.md +19 -0
  687. package/skills/skill-generate-regex/package.json +32 -0
  688. package/skills/skill-generate-regex/src/index.ts +669 -0
  689. package/skills/skill-generate-regex/tsconfig.json +14 -0
  690. package/skills/skill-generate-resume/CLAUDE.md +19 -0
  691. package/skills/skill-generate-resume/package.json +32 -0
  692. package/skills/skill-generate-resume/src/index.ts +1082 -0
  693. package/skills/skill-generate-resume/tsconfig.json +14 -0
  694. package/skills/skill-generate-sitemap/CLAUDE.md +19 -0
  695. package/skills/skill-generate-sitemap/package.json +32 -0
  696. package/skills/skill-generate-sitemap/src/index.ts +626 -0
  697. package/skills/skill-generate-sitemap/tsconfig.json +14 -0
  698. package/skills/skill-generate-slides/CLAUDE.md +19 -0
  699. package/skills/skill-generate-slides/package.json +32 -0
  700. package/skills/skill-generate-slides/src/ai.ts +140 -0
  701. package/skills/skill-generate-slides/src/cli.ts +161 -0
  702. package/skills/skill-generate-slides/src/export.ts +65 -0
  703. package/skills/skill-generate-slides/src/index.ts +1417 -0
  704. package/skills/skill-generate-slides/src/layout.ts +31 -0
  705. package/skills/skill-generate-slides/src/parse.ts +282 -0
  706. package/skills/skill-generate-slides/src/render.ts +711 -0
  707. package/skills/skill-generate-slides/tsconfig.json +14 -0
  708. package/skills/skill-generate-social-posts/CLAUDE.md +19 -0
  709. package/skills/skill-generate-social-posts/package.json +32 -0
  710. package/skills/skill-generate-social-posts/src/index.ts +768 -0
  711. package/skills/skill-generate-social-posts/tsconfig.json +14 -0
  712. package/skills/skill-generate-sql/CLAUDE.md +19 -0
  713. package/skills/skill-generate-sql/package.json +32 -0
  714. package/skills/skill-generate-sql/src/index.ts +636 -0
  715. package/skills/skill-generate-sql/tsconfig.json +14 -0
  716. package/skills/skill-get-api-docs/CLAUDE.md +19 -0
  717. package/skills/skill-get-api-docs/package.json +32 -0
  718. package/skills/skill-get-api-docs/src/index.ts +1176 -0
  719. package/skills/skill-get-api-docs/tsconfig.json +14 -0
  720. package/skills/skill-gif-maker/CLAUDE.md +19 -0
  721. package/skills/skill-gif-maker/package.json +32 -0
  722. package/skills/skill-gif-maker/src/index.ts +600 -0
  723. package/skills/skill-gif-maker/tsconfig.json +14 -0
  724. package/skills/skill-github-manager/CLAUDE.md +19 -0
  725. package/skills/skill-github-manager/package.json +32 -0
  726. package/skills/skill-github-manager/src/index.ts +101 -0
  727. package/skills/skill-github-manager/tsconfig.json +14 -0
  728. package/skills/skill-goal-quarterly-roadmap/CLAUDE.md +19 -0
  729. package/skills/skill-goal-quarterly-roadmap/package.json +32 -0
  730. package/skills/skill-goal-quarterly-roadmap/src/index.ts +305 -0
  731. package/skills/skill-goal-quarterly-roadmap/tsconfig.json +14 -0
  732. package/skills/skill-googledrive/LICENSE +21 -0
  733. package/skills/skill-googledrive/README.md +27 -0
  734. package/skills/skill-googledrive/SKILL.md +140 -0
  735. package/skills/skill-googledrive/install.sh +112 -0
  736. package/skills/skill-googledrive/package.json +31 -0
  737. package/skills/skill-googledrive/src/auth.ts +49 -0
  738. package/skills/skill-googledrive/src/installer.ts +324 -0
  739. package/skills/skill-googledrive/src/skill-install.ts +174 -0
  740. package/skills/skill-grant-application-drafter/CLAUDE.md +19 -0
  741. package/skills/skill-grant-application-drafter/package.json +32 -0
  742. package/skills/skill-grant-application-drafter/src/index.ts +309 -0
  743. package/skills/skill-grant-application-drafter/tsconfig.json +14 -0
  744. package/skills/skill-grant-compliance-scanner/CLAUDE.md +19 -0
  745. package/skills/skill-grant-compliance-scanner/package.json +32 -0
  746. package/skills/skill-grant-compliance-scanner/src/index.ts +94 -0
  747. package/skills/skill-grant-compliance-scanner/tsconfig.json +14 -0
  748. package/skills/skill-grocery-basket-optimizer/CLAUDE.md +19 -0
  749. package/skills/skill-grocery-basket-optimizer/package.json +32 -0
  750. package/skills/skill-grocery-basket-optimizer/src/index.ts +304 -0
  751. package/skills/skill-grocery-basket-optimizer/tsconfig.json +14 -0
  752. package/skills/skill-guest-communication-suite/CLAUDE.md +19 -0
  753. package/skills/skill-guest-communication-suite/package.json +32 -0
  754. package/skills/skill-guest-communication-suite/src/index.ts +312 -0
  755. package/skills/skill-guest-communication-suite/tsconfig.json +14 -0
  756. package/skills/skill-habit-reflection-digest/CLAUDE.md +19 -0
  757. package/skills/skill-habit-reflection-digest/package.json +32 -0
  758. package/skills/skill-habit-reflection-digest/src/index.ts +308 -0
  759. package/skills/skill-habit-reflection-digest/tsconfig.json +14 -0
  760. package/skills/skill-highlight-reel-generator/CLAUDE.md +19 -0
  761. package/skills/skill-highlight-reel-generator/package.json +32 -0
  762. package/skills/skill-highlight-reel-generator/src/index.ts +267 -0
  763. package/skills/skill-highlight-reel-generator/tsconfig.json +14 -0
  764. package/skills/skill-homework-feedback-coach/CLAUDE.md +19 -0
  765. package/skills/skill-homework-feedback-coach/package.json +32 -0
  766. package/skills/skill-homework-feedback-coach/src/index.ts +316 -0
  767. package/skills/skill-homework-feedback-coach/tsconfig.json +14 -0
  768. package/skills/skill-hook/LICENSE +21 -0
  769. package/skills/skill-hook/README.md +74 -0
  770. package/skills/skill-hook/SKILL.md +85 -0
  771. package/skills/skill-hook/bunfig.toml +5 -0
  772. package/skills/skill-hook/package.json +34 -0
  773. package/skills/skill-hook/src/commands/create.ts +937 -0
  774. package/skills/skill-hook/src/commands/events.ts +37 -0
  775. package/skills/skill-hook/src/commands/validate.ts +117 -0
  776. package/skills/skill-hook/src/index.ts +118 -0
  777. package/skills/skill-hook/tsconfig.json +18 -0
  778. package/skills/skill-household-maintenance-mgr/CLAUDE.md +19 -0
  779. package/skills/skill-household-maintenance-mgr/package.json +32 -0
  780. package/skills/skill-household-maintenance-mgr/src/index.ts +293 -0
  781. package/skills/skill-household-maintenance-mgr/tsconfig.json +14 -0
  782. package/skills/skill-http-server/CLAUDE.md +19 -0
  783. package/skills/skill-http-server/package.json +32 -0
  784. package/skills/skill-http-server/src/index.ts +51 -0
  785. package/skills/skill-http-server/tsconfig.json +14 -0
  786. package/skills/skill-hubsearch/LICENSE +21 -0
  787. package/skills/skill-hubsearch/README.md +17 -0
  788. package/skills/skill-hubsearch/install.sh +112 -0
  789. package/skills/skill-hubsearch/package.json +31 -0
  790. package/skills/skill-hubsearch/src/auth.ts +49 -0
  791. package/skills/skill-hubsearch/src/installer.ts +324 -0
  792. package/skills/skill-hubsearch/src/skill-install.ts +205 -0
  793. package/skills/skill-image/.env.example +12 -0
  794. package/skills/skill-image/LICENSE +21 -0
  795. package/skills/skill-image/PROJECT_OVERVIEW.md +216 -0
  796. package/skills/skill-image/QUICKSTART.md +111 -0
  797. package/skills/skill-image/README.md +195 -0
  798. package/skills/skill-image/SKILL.md +56 -0
  799. package/skills/skill-image/examples/google-examples.sh +37 -0
  800. package/skills/skill-image/examples/openai-examples.sh +35 -0
  801. package/skills/skill-image/examples/xai-examples.sh +33 -0
  802. package/skills/skill-image/install.sh +112 -0
  803. package/skills/skill-image/package.json +36 -0
  804. package/skills/skill-image/src/auth.ts +49 -0
  805. package/skills/skill-image/src/http-client.ts +128 -0
  806. package/skills/skill-image/src/index-http.ts +111 -0
  807. package/skills/skill-image/src/index-local.ts +204 -0
  808. package/skills/skill-image/src/index.ts +111 -0
  809. package/skills/skill-image/src/installer.ts +324 -0
  810. package/skills/skill-image/src/providers/google.ts +79 -0
  811. package/skills/skill-image/src/providers/openai.ts +80 -0
  812. package/skills/skill-image/src/providers/xai.ts +73 -0
  813. package/skills/skill-image/src/skill-install.ts +205 -0
  814. package/skills/skill-image/src/types.ts +37 -0
  815. package/skills/skill-image/tsconfig.json +17 -0
  816. package/skills/skill-implementation/LICENSE +21 -0
  817. package/skills/skill-implementation/README.md +53 -0
  818. package/skills/skill-implementation/SKILL.md +57 -0
  819. package/skills/skill-implementation/bunfig.toml +5 -0
  820. package/skills/skill-implementation/package.json +34 -0
  821. package/skills/skill-implementation/src/commands/create.ts +187 -0
  822. package/skills/skill-implementation/src/index.ts +62 -0
  823. package/skills/skill-implementation/tsconfig.json +18 -0
  824. package/skills/skill-implementation-agent/CLAUDE.md +19 -0
  825. package/skills/skill-implementation-agent/package.json +32 -0
  826. package/skills/skill-implementation-agent/src/index.ts +1565 -0
  827. package/skills/skill-implementation-agent/tsconfig.json +14 -0
  828. package/skills/skill-implementation-architecture/CLAUDE.md +19 -0
  829. package/skills/skill-implementation-architecture/package.json +32 -0
  830. package/skills/skill-implementation-architecture/src/index.ts +460 -0
  831. package/skills/skill-implementation-architecture/tsconfig.json +14 -0
  832. package/skills/skill-implementation-audit/CLAUDE.md +19 -0
  833. package/skills/skill-implementation-audit/package.json +32 -0
  834. package/skills/skill-implementation-audit/src/index.ts +502 -0
  835. package/skills/skill-implementation-audit/tsconfig.json +14 -0
  836. package/skills/skill-implementation-cost/CLAUDE.md +19 -0
  837. package/skills/skill-implementation-cost/package.json +32 -0
  838. package/skills/skill-implementation-cost/src/index.ts +873 -0
  839. package/skills/skill-implementation-cost/tsconfig.json +14 -0
  840. package/skills/skill-implementation-dispatch/CLAUDE.md +19 -0
  841. package/skills/skill-implementation-dispatch/package.json +32 -0
  842. package/skills/skill-implementation-dispatch/src/index.ts +390 -0
  843. package/skills/skill-implementation-dispatch/tsconfig.json +14 -0
  844. package/skills/skill-implementation-hook/CLAUDE.md +19 -0
  845. package/skills/skill-implementation-hook/package.json +32 -0
  846. package/skills/skill-implementation-hook/src/index.ts +787 -0
  847. package/skills/skill-implementation-hook/tsconfig.json +14 -0
  848. package/skills/skill-implementation-index/CLAUDE.md +19 -0
  849. package/skills/skill-implementation-index/package.json +32 -0
  850. package/skills/skill-implementation-index/src/index.ts +767 -0
  851. package/skills/skill-implementation-index/tsconfig.json +14 -0
  852. package/skills/skill-implementation-init/CLAUDE.md +19 -0
  853. package/skills/skill-implementation-init/package.json +32 -0
  854. package/skills/skill-implementation-init/src/index.ts +378 -0
  855. package/skills/skill-implementation-init/tsconfig.json +14 -0
  856. package/skills/skill-implementation-memento/CLAUDE.md +19 -0
  857. package/skills/skill-implementation-memento/package.json +32 -0
  858. package/skills/skill-implementation-memento/src/index.ts +442 -0
  859. package/skills/skill-implementation-memento/tsconfig.json +14 -0
  860. package/skills/skill-implementation-plan/CLAUDE.md +19 -0
  861. package/skills/skill-implementation-plan/package.json +32 -0
  862. package/skills/skill-implementation-plan/src/index.ts +520 -0
  863. package/skills/skill-implementation-plan/tsconfig.json +14 -0
  864. package/skills/skill-implementation-todo/CLAUDE.md +19 -0
  865. package/skills/skill-implementation-todo/package.json +32 -0
  866. package/skills/skill-implementation-todo/src/index.ts +429 -0
  867. package/skills/skill-implementation-todo/tsconfig.json +14 -0
  868. package/skills/skill-inbox-priority-planner/CLAUDE.md +19 -0
  869. package/skills/skill-inbox-priority-planner/package.json +32 -0
  870. package/skills/skill-inbox-priority-planner/src/index.ts +309 -0
  871. package/skills/skill-inbox-priority-planner/tsconfig.json +14 -0
  872. package/skills/skill-invoice/.env.example +3 -0
  873. package/skills/skill-invoice/CLAUDE.md +31 -0
  874. package/skills/skill-invoice/LICENSE +21 -0
  875. package/skills/skill-invoice/README.md +70 -0
  876. package/skills/skill-invoice/package.json +26 -0
  877. package/skills/skill-invoice/src/commands/companies.ts +202 -0
  878. package/skills/skill-invoice/src/commands/config.ts +132 -0
  879. package/skills/skill-invoice/src/commands/generate.ts +177 -0
  880. package/skills/skill-invoice/src/commands/invoices.ts +218 -0
  881. package/skills/skill-invoice/src/lib/api.ts +124 -0
  882. package/skills/skill-invoice/src/lib/storage.ts +171 -0
  883. package/skills/skill-invoice/src/types/index.ts +86 -0
  884. package/skills/skill-invoice/src/utils/logger.ts +33 -0
  885. package/skills/skill-invoice/src/utils/paths.ts +25 -0
  886. package/skills/skill-invoice/tsconfig.json +19 -0
  887. package/skills/skill-invoice-dispute-helper/CLAUDE.md +19 -0
  888. package/skills/skill-invoice-dispute-helper/package.json +32 -0
  889. package/skills/skill-invoice-dispute-helper/src/index.ts +304 -0
  890. package/skills/skill-invoice-dispute-helper/tsconfig.json +14 -0
  891. package/skills/skill-itinerary-architect/CLAUDE.md +19 -0
  892. package/skills/skill-itinerary-architect/package.json +32 -0
  893. package/skills/skill-itinerary-architect/src/index.ts +313 -0
  894. package/skills/skill-itinerary-architect/tsconfig.json +14 -0
  895. package/skills/skill-jingle-composer/CLAUDE.md +19 -0
  896. package/skills/skill-jingle-composer/package.json +32 -0
  897. package/skills/skill-jingle-composer/src/index.ts +250 -0
  898. package/skills/skill-jingle-composer/tsconfig.json +14 -0
  899. package/skills/skill-kpi-digest-generator/CLAUDE.md +19 -0
  900. package/skills/skill-kpi-digest-generator/package.json +32 -0
  901. package/skills/skill-kpi-digest-generator/src/index.ts +318 -0
  902. package/skills/skill-kpi-digest-generator/tsconfig.json +14 -0
  903. package/skills/skill-lab-notebook-formatter/CLAUDE.md +19 -0
  904. package/skills/skill-lab-notebook-formatter/package.json +32 -0
  905. package/skills/skill-lab-notebook-formatter/src/index.ts +88 -0
  906. package/skills/skill-lab-notebook-formatter/tsconfig.json +14 -0
  907. package/skills/skill-landing-page-copy/CLAUDE.md +19 -0
  908. package/skills/skill-landing-page-copy/package.json +32 -0
  909. package/skills/skill-landing-page-copy/src/index.ts +400 -0
  910. package/skills/skill-landing-page-copy/tsconfig.json +14 -0
  911. package/skills/skill-latex-table-generator/CLAUDE.md +19 -0
  912. package/skills/skill-latex-table-generator/package.json +32 -0
  913. package/skills/skill-latex-table-generator/src/index.ts +113 -0
  914. package/skills/skill-latex-table-generator/tsconfig.json +14 -0
  915. package/skills/skill-learning-style-profiler/CLAUDE.md +19 -0
  916. package/skills/skill-learning-style-profiler/package.json +32 -0
  917. package/skills/skill-learning-style-profiler/src/index.ts +291 -0
  918. package/skills/skill-learning-style-profiler/tsconfig.json +14 -0
  919. package/skills/skill-lesson-plan-customizer/CLAUDE.md +19 -0
  920. package/skills/skill-lesson-plan-customizer/package.json +32 -0
  921. package/skills/skill-lesson-plan-customizer/src/index.ts +303 -0
  922. package/skills/skill-lesson-plan-customizer/tsconfig.json +14 -0
  923. package/skills/skill-linear/LICENSE +21 -0
  924. package/skills/skill-linear/README.md +28 -0
  925. package/skills/skill-linear/SKILL.md +94 -0
  926. package/skills/skill-linear/install.sh +112 -0
  927. package/skills/skill-linear/package.json +31 -0
  928. package/skills/skill-linear/src/auth.ts +49 -0
  929. package/skills/skill-linear/src/installer.ts +324 -0
  930. package/skills/skill-linear/src/skill-install.ts +174 -0
  931. package/skills/skill-livestream-runofshow/CLAUDE.md +19 -0
  932. package/skills/skill-livestream-runofshow/package.json +32 -0
  933. package/skills/skill-livestream-runofshow/src/index.ts +299 -0
  934. package/skills/skill-livestream-runofshow/tsconfig.json +14 -0
  935. package/skills/skill-longform-structurer/CLAUDE.md +19 -0
  936. package/skills/skill-longform-structurer/package.json +32 -0
  937. package/skills/skill-longform-structurer/src/index.ts +293 -0
  938. package/skills/skill-longform-structurer/tsconfig.json +14 -0
  939. package/skills/skill-lorem-generator/CLAUDE.md +19 -0
  940. package/skills/skill-lorem-generator/package.json +32 -0
  941. package/skills/skill-lorem-generator/src/index.ts +46 -0
  942. package/skills/skill-lorem-generator/tsconfig.json +14 -0
  943. package/skills/skill-mail/LICENSE +21 -0
  944. package/skills/skill-mail/README.md +17 -0
  945. package/skills/skill-mail/install.sh +112 -0
  946. package/skills/skill-mail/package.json +31 -0
  947. package/skills/skill-mail/src/auth.ts +49 -0
  948. package/skills/skill-mail/src/installer.ts +324 -0
  949. package/skills/skill-mail/src/skill-install.ts +205 -0
  950. package/skills/skill-manage-gmail/CLAUDE.md +19 -0
  951. package/skills/skill-manage-gmail/package.json +32 -0
  952. package/skills/skill-manage-gmail/src/index.ts +504 -0
  953. package/skills/skill-manage-gmail/tsconfig.json +14 -0
  954. package/skills/skill-managehook/.env.example +16 -0
  955. package/skills/skill-managehook/CLAUDE.md +159 -0
  956. package/skills/skill-managehook/README.md +209 -0
  957. package/skills/skill-managehook/package.json +27 -0
  958. package/skills/skill-managehook/scripts/migrate.ts +57 -0
  959. package/skills/skill-managehook/scripts/seed.ts +58 -0
  960. package/skills/skill-managehook/src/db/index.ts +37 -0
  961. package/skills/skill-managehook/src/lib/api-client.ts +108 -0
  962. package/skills/skill-managehook/src/lib/config.ts +34 -0
  963. package/skills/skill-managehook/src/lib/installer.ts +140 -0
  964. package/skills/skill-managehook/src/lib/service-dir.ts +119 -0
  965. package/skills/skill-managehook/src/server/index.ts +108 -0
  966. package/skills/skill-managehook/tsconfig.json +21 -0
  967. package/skills/skill-managemcp/.env.example +16 -0
  968. package/skills/skill-managemcp/CLAUDE.md +159 -0
  969. package/skills/skill-managemcp/README.md +209 -0
  970. package/skills/skill-managemcp/package.json +27 -0
  971. package/skills/skill-managemcp/scripts/migrate.ts +57 -0
  972. package/skills/skill-managemcp/scripts/seed.ts +58 -0
  973. package/skills/skill-managemcp/src/db/index.ts +37 -0
  974. package/skills/skill-managemcp/src/lib/api-client.ts +108 -0
  975. package/skills/skill-managemcp/src/lib/config.ts +34 -0
  976. package/skills/skill-managemcp/src/lib/installer.ts +140 -0
  977. package/skills/skill-managemcp/src/lib/service-dir.ts +119 -0
  978. package/skills/skill-managemcp/src/server/index.ts +108 -0
  979. package/skills/skill-managemcp/tsconfig.json +21 -0
  980. package/skills/skill-manageskill/.env.example +16 -0
  981. package/skills/skill-manageskill/CLAUDE.md +159 -0
  982. package/skills/skill-manageskill/README.md +209 -0
  983. package/skills/skill-manageskill/package.json +27 -0
  984. package/skills/skill-manageskill/scripts/migrate.ts +57 -0
  985. package/skills/skill-manageskill/scripts/seed.ts +58 -0
  986. package/skills/skill-manageskill/src/db/index.ts +37 -0
  987. package/skills/skill-manageskill/src/lib/api-client.ts +108 -0
  988. package/skills/skill-manageskill/src/lib/config.ts +34 -0
  989. package/skills/skill-manageskill/src/lib/installer.ts +140 -0
  990. package/skills/skill-manageskill/src/lib/service-dir.ts +119 -0
  991. package/skills/skill-manageskill/src/server/index.ts +108 -0
  992. package/skills/skill-manageskill/tsconfig.json +21 -0
  993. package/skills/skill-markdown-validator/CLAUDE.md +19 -0
  994. package/skills/skill-markdown-validator/package.json +32 -0
  995. package/skills/skill-markdown-validator/src/index.ts +95 -0
  996. package/skills/skill-markdown-validator/tsconfig.json +14 -0
  997. package/skills/skill-mcp-builder/CLAUDE.md +19 -0
  998. package/skills/skill-mcp-builder/package.json +32 -0
  999. package/skills/skill-mcp-builder/src/index.ts +963 -0
  1000. package/skills/skill-mcp-builder/tsconfig.json +14 -0
  1001. package/skills/skill-meal-plan-designer/CLAUDE.md +19 -0
  1002. package/skills/skill-meal-plan-designer/package.json +32 -0
  1003. package/skills/skill-meal-plan-designer/src/index.ts +301 -0
  1004. package/skills/skill-meal-plan-designer/tsconfig.json +14 -0
  1005. package/skills/skill-meeting-insight-summarizer/CLAUDE.md +19 -0
  1006. package/skills/skill-meeting-insight-summarizer/package.json +32 -0
  1007. package/skills/skill-meeting-insight-summarizer/src/index.ts +316 -0
  1008. package/skills/skill-meeting-insight-summarizer/tsconfig.json +14 -0
  1009. package/skills/skill-merch-mockup-factory/CLAUDE.md +19 -0
  1010. package/skills/skill-merch-mockup-factory/package.json +32 -0
  1011. package/skills/skill-merch-mockup-factory/src/index.ts +296 -0
  1012. package/skills/skill-merch-mockup-factory/tsconfig.json +14 -0
  1013. package/skills/skill-merge-pdfs/CLAUDE.md +19 -0
  1014. package/skills/skill-merge-pdfs/package.json +32 -0
  1015. package/skills/skill-merge-pdfs/src/index.ts +427 -0
  1016. package/skills/skill-merge-pdfs/tsconfig.json +14 -0
  1017. package/skills/skill-message/LICENSE +21 -0
  1018. package/skills/skill-message/README.md +17 -0
  1019. package/skills/skill-message/install.sh +112 -0
  1020. package/skills/skill-message/package.json +31 -0
  1021. package/skills/skill-message/src/auth.ts +49 -0
  1022. package/skills/skill-message/src/installer.ts +324 -0
  1023. package/skills/skill-message/src/skill-install.ts +205 -0
  1024. package/skills/skill-microcopy-generator/CLAUDE.md +19 -0
  1025. package/skills/skill-microcopy-generator/package.json +32 -0
  1026. package/skills/skill-microcopy-generator/src/index.ts +303 -0
  1027. package/skills/skill-microcopy-generator/tsconfig.json +14 -0
  1028. package/skills/skill-mindfulness-prompt-cache/CLAUDE.md +19 -0
  1029. package/skills/skill-mindfulness-prompt-cache/package.json +32 -0
  1030. package/skills/skill-mindfulness-prompt-cache/src/index.ts +290 -0
  1031. package/skills/skill-mindfulness-prompt-cache/tsconfig.json +14 -0
  1032. package/skills/skill-newsletter-campaign-planner/CLAUDE.md +19 -0
  1033. package/skills/skill-newsletter-campaign-planner/package.json +32 -0
  1034. package/skills/skill-newsletter-campaign-planner/src/index.ts +252 -0
  1035. package/skills/skill-newsletter-campaign-planner/tsconfig.json +14 -0
  1036. package/skills/skill-notify/LICENSE +21 -0
  1037. package/skills/skill-notify/README.md +17 -0
  1038. package/skills/skill-notify/install.sh +112 -0
  1039. package/skills/skill-notify/package.json +31 -0
  1040. package/skills/skill-notify/src/auth.ts +49 -0
  1041. package/skills/skill-notify/src/installer.ts +324 -0
  1042. package/skills/skill-notify/src/skill-install.ts +205 -0
  1043. package/skills/skill-notion/LICENSE +21 -0
  1044. package/skills/skill-notion/README.md +27 -0
  1045. package/skills/skill-notion/SKILL.md +115 -0
  1046. package/skills/skill-notion/install.sh +112 -0
  1047. package/skills/skill-notion/package.json +31 -0
  1048. package/skills/skill-notion/src/auth.ts +49 -0
  1049. package/skills/skill-notion/src/installer.ts +324 -0
  1050. package/skills/skill-notion/src/skill-install.ts +174 -0
  1051. package/skills/skill-notion-manager/CLAUDE.md +19 -0
  1052. package/skills/skill-notion-manager/package.json +32 -0
  1053. package/skills/skill-notion-manager/src/index.ts +105 -0
  1054. package/skills/skill-notion-manager/tsconfig.json +14 -0
  1055. package/skills/skill-npmpublish/CLAUDE.md +33 -0
  1056. package/skills/skill-npmpublish/README.md +104 -0
  1057. package/skills/skill-npmpublish/SKILL.md +70 -0
  1058. package/skills/skill-npmpublish/package.json +46 -0
  1059. package/skills/skill-npmpublish/src/index.ts +330 -0
  1060. package/skills/skill-npmpublish/tsconfig.json +18 -0
  1061. package/skills/skill-onboarding-sequence-builder/CLAUDE.md +19 -0
  1062. package/skills/skill-onboarding-sequence-builder/package.json +32 -0
  1063. package/skills/skill-onboarding-sequence-builder/src/index.ts +321 -0
  1064. package/skills/skill-onboarding-sequence-builder/tsconfig.json +14 -0
  1065. package/skills/skill-onsite-ops-checklist/CLAUDE.md +19 -0
  1066. package/skills/skill-onsite-ops-checklist/package.json +32 -0
  1067. package/skills/skill-onsite-ops-checklist/src/index.ts +307 -0
  1068. package/skills/skill-onsite-ops-checklist/tsconfig.json +14 -0
  1069. package/skills/skill-outreach-cadence-designer/CLAUDE.md +19 -0
  1070. package/skills/skill-outreach-cadence-designer/package.json +32 -0
  1071. package/skills/skill-outreach-cadence-designer/src/index.ts +330 -0
  1072. package/skills/skill-outreach-cadence-designer/tsconfig.json +14 -0
  1073. package/skills/skill-packaging-concept-studio/CLAUDE.md +19 -0
  1074. package/skills/skill-packaging-concept-studio/package.json +32 -0
  1075. package/skills/skill-packaging-concept-studio/src/index.ts +296 -0
  1076. package/skills/skill-packaging-concept-studio/tsconfig.json +14 -0
  1077. package/skills/skill-packing-plan-pro/CLAUDE.md +19 -0
  1078. package/skills/skill-packing-plan-pro/package.json +32 -0
  1079. package/skills/skill-packing-plan-pro/src/index.ts +306 -0
  1080. package/skills/skill-packing-plan-pro/tsconfig.json +14 -0
  1081. package/skills/skill-parent-teacher-brief/CLAUDE.md +19 -0
  1082. package/skills/skill-parent-teacher-brief/package.json +32 -0
  1083. package/skills/skill-parent-teacher-brief/src/index.ts +290 -0
  1084. package/skills/skill-parent-teacher-brief/tsconfig.json +14 -0
  1085. package/skills/skill-parse-pdf/CLAUDE.md +19 -0
  1086. package/skills/skill-parse-pdf/package.json +32 -0
  1087. package/skills/skill-parse-pdf/src/index.ts +581 -0
  1088. package/skills/skill-parse-pdf/tsconfig.json +14 -0
  1089. package/skills/skill-partner-kit-assembler/CLAUDE.md +19 -0
  1090. package/skills/skill-partner-kit-assembler/package.json +32 -0
  1091. package/skills/skill-partner-kit-assembler/src/index.ts +313 -0
  1092. package/skills/skill-partner-kit-assembler/tsconfig.json +14 -0
  1093. package/skills/skill-payroll-change-prepper/CLAUDE.md +19 -0
  1094. package/skills/skill-payroll-change-prepper/package.json +32 -0
  1095. package/skills/skill-payroll-change-prepper/src/index.ts +304 -0
  1096. package/skills/skill-payroll-change-prepper/tsconfig.json +14 -0
  1097. package/skills/skill-persona-based-adwriter/CLAUDE.md +19 -0
  1098. package/skills/skill-persona-based-adwriter/package.json +32 -0
  1099. package/skills/skill-persona-based-adwriter/src/index.ts +266 -0
  1100. package/skills/skill-persona-based-adwriter/tsconfig.json +14 -0
  1101. package/skills/skill-persona-generator/CLAUDE.md +19 -0
  1102. package/skills/skill-persona-generator/package.json +32 -0
  1103. package/skills/skill-persona-generator/src/index.ts +443 -0
  1104. package/skills/skill-persona-generator/tsconfig.json +14 -0
  1105. package/skills/skill-personal-daily-ops/CLAUDE.md +19 -0
  1106. package/skills/skill-personal-daily-ops/package.json +32 -0
  1107. package/skills/skill-personal-daily-ops/src/index.ts +324 -0
  1108. package/skills/skill-personal-daily-ops/tsconfig.json +14 -0
  1109. package/skills/skill-pet-care-scheduler/CLAUDE.md +19 -0
  1110. package/skills/skill-pet-care-scheduler/package.json +32 -0
  1111. package/skills/skill-pet-care-scheduler/src/index.ts +298 -0
  1112. package/skills/skill-pet-care-scheduler/tsconfig.json +14 -0
  1113. package/skills/skill-playwright/LICENSE +21 -0
  1114. package/skills/skill-playwright/README.md +27 -0
  1115. package/skills/skill-playwright/SKILL.md +116 -0
  1116. package/skills/skill-playwright/install.sh +112 -0
  1117. package/skills/skill-playwright/package.json +31 -0
  1118. package/skills/skill-playwright/src/auth.ts +49 -0
  1119. package/skills/skill-playwright/src/installer.ts +324 -0
  1120. package/skills/skill-playwright/src/skill-install.ts +174 -0
  1121. package/skills/skill-podcast-show-notes/CLAUDE.md +19 -0
  1122. package/skills/skill-podcast-show-notes/package.json +32 -0
  1123. package/skills/skill-podcast-show-notes/src/index.ts +302 -0
  1124. package/skills/skill-podcast-show-notes/tsconfig.json +14 -0
  1125. package/skills/skill-presentation-theme-maker/CLAUDE.md +19 -0
  1126. package/skills/skill-presentation-theme-maker/package.json +32 -0
  1127. package/skills/skill-presentation-theme-maker/src/index.ts +292 -0
  1128. package/skills/skill-presentation-theme-maker/tsconfig.json +14 -0
  1129. package/skills/skill-press-release-drafter/CLAUDE.md +19 -0
  1130. package/skills/skill-press-release-drafter/package.json +32 -0
  1131. package/skills/skill-press-release-drafter/src/index.ts +291 -0
  1132. package/skills/skill-press-release-drafter/tsconfig.json +14 -0
  1133. package/skills/skill-print-collateral-designer/CLAUDE.md +19 -0
  1134. package/skills/skill-print-collateral-designer/package.json +32 -0
  1135. package/skills/skill-print-collateral-designer/src/index.ts +298 -0
  1136. package/skills/skill-print-collateral-designer/tsconfig.json +14 -0
  1137. package/skills/skill-procurement-scorecard/CLAUDE.md +19 -0
  1138. package/skills/skill-procurement-scorecard/package.json +32 -0
  1139. package/skills/skill-procurement-scorecard/src/index.ts +338 -0
  1140. package/skills/skill-procurement-scorecard/tsconfig.json +14 -0
  1141. package/skills/skill-product-demo-script/CLAUDE.md +19 -0
  1142. package/skills/skill-product-demo-script/package.json +32 -0
  1143. package/skills/skill-product-demo-script/src/index.ts +326 -0
  1144. package/skills/skill-product-demo-script/tsconfig.json +14 -0
  1145. package/skills/skill-product-mockup/CLAUDE.md +19 -0
  1146. package/skills/skill-product-mockup/package.json +32 -0
  1147. package/skills/skill-product-mockup/src/index.ts +290 -0
  1148. package/skills/skill-product-mockup/tsconfig.json +14 -0
  1149. package/skills/skill-project-retro-companion/CLAUDE.md +19 -0
  1150. package/skills/skill-project-retro-companion/package.json +32 -0
  1151. package/skills/skill-project-retro-companion/src/index.ts +279 -0
  1152. package/skills/skill-project-retro-companion/tsconfig.json +14 -0
  1153. package/skills/skill-projectbuild/LICENSE +21 -0
  1154. package/skills/skill-projectbuild/README.md +17 -0
  1155. package/skills/skill-projectbuild/install.sh +112 -0
  1156. package/skills/skill-projectbuild/package.json +31 -0
  1157. package/skills/skill-projectbuild/src/auth.ts +49 -0
  1158. package/skills/skill-projectbuild/src/installer.ts +324 -0
  1159. package/skills/skill-projectbuild/src/skill-install.ts +205 -0
  1160. package/skills/skill-proposal-redline-advisor/CLAUDE.md +19 -0
  1161. package/skills/skill-proposal-redline-advisor/package.json +32 -0
  1162. package/skills/skill-proposal-redline-advisor/src/index.ts +320 -0
  1163. package/skills/skill-proposal-redline-advisor/tsconfig.json +14 -0
  1164. package/skills/skill-read-gmail/CLAUDE.md +19 -0
  1165. package/skills/skill-read-gmail/package.json +32 -0
  1166. package/skills/skill-read-gmail/src/index.ts +343 -0
  1167. package/skills/skill-read-gmail/tsconfig.json +14 -0
  1168. package/skills/skill-regex-tester/CLAUDE.md +19 -0
  1169. package/skills/skill-regex-tester/package.json +32 -0
  1170. package/skills/skill-regex-tester/src/index.ts +183 -0
  1171. package/skills/skill-regex-tester/tsconfig.json +14 -0
  1172. package/skills/skill-remember/LICENSE +21 -0
  1173. package/skills/skill-remember/README.md +17 -0
  1174. package/skills/skill-remember/install.sh +112 -0
  1175. package/skills/skill-remember/package.json +31 -0
  1176. package/skills/skill-remember/src/auth.ts +49 -0
  1177. package/skills/skill-remember/src/installer.ts +324 -0
  1178. package/skills/skill-remember/src/skill-install.ts +205 -0
  1179. package/skills/skill-remove-background/CLAUDE.md +19 -0
  1180. package/skills/skill-remove-background/package.json +32 -0
  1181. package/skills/skill-remove-background/src/index.ts +405 -0
  1182. package/skills/skill-remove-background/tsconfig.json +14 -0
  1183. package/skills/skill-risk-disclosure-kit/CLAUDE.md +19 -0
  1184. package/skills/skill-risk-disclosure-kit/package.json +32 -0
  1185. package/skills/skill-risk-disclosure-kit/src/index.ts +307 -0
  1186. package/skills/skill-risk-disclosure-kit/tsconfig.json +14 -0
  1187. package/skills/skill-roi-comparison-tool/CLAUDE.md +19 -0
  1188. package/skills/skill-roi-comparison-tool/package.json +32 -0
  1189. package/skills/skill-roi-comparison-tool/src/index.ts +322 -0
  1190. package/skills/skill-roi-comparison-tool/tsconfig.json +14 -0
  1191. package/skills/skill-sales-call-recapper/CLAUDE.md +19 -0
  1192. package/skills/skill-sales-call-recapper/package.json +32 -0
  1193. package/skills/skill-sales-call-recapper/src/index.ts +280 -0
  1194. package/skills/skill-sales-call-recapper/tsconfig.json +14 -0
  1195. package/skills/skill-salescopy/.env.example +2 -0
  1196. package/skills/skill-salescopy/CLAUDE.md +23 -0
  1197. package/skills/skill-salescopy/LICENSE +21 -0
  1198. package/skills/skill-salescopy/README.md +72 -0
  1199. package/skills/skill-salescopy/package.json +27 -0
  1200. package/skills/skill-salescopy/src/commands/config.ts +115 -0
  1201. package/skills/skill-salescopy/src/commands/generate.ts +179 -0
  1202. package/skills/skill-salescopy/src/commands/sessions.ts +169 -0
  1203. package/skills/skill-salescopy/src/commands/templates.ts +99 -0
  1204. package/skills/skill-salescopy/src/lib/generator.ts +197 -0
  1205. package/skills/skill-salescopy/src/lib/storage.ts +191 -0
  1206. package/skills/skill-salescopy/src/types/index.ts +74 -0
  1207. package/skills/skill-salescopy/src/utils/logger.ts +33 -0
  1208. package/skills/skill-salescopy/src/utils/paths.ts +25 -0
  1209. package/skills/skill-salescopy/tsconfig.json +19 -0
  1210. package/skills/skill-scaffold-project/CLAUDE.md +19 -0
  1211. package/skills/skill-scaffold-project/package.json +32 -0
  1212. package/skills/skill-scaffold-project/src/index.ts +1223 -0
  1213. package/skills/skill-scaffold-project/tsconfig.json +14 -0
  1214. package/skills/skill-schedule/README.md +17 -0
  1215. package/skills/skill-schedule/install.sh +112 -0
  1216. package/skills/skill-schedule/src/auth.ts +49 -0
  1217. package/skills/skill-schedule/src/installer.ts +324 -0
  1218. package/skills/skill-schedule/src/skill-install.ts +205 -0
  1219. package/skills/skill-scholarship-tracker/CLAUDE.md +19 -0
  1220. package/skills/skill-scholarship-tracker/package.json +32 -0
  1221. package/skills/skill-scholarship-tracker/src/index.ts +298 -0
  1222. package/skills/skill-scholarship-tracker/tsconfig.json +14 -0
  1223. package/skills/skill-scientific-figure-check/CLAUDE.md +19 -0
  1224. package/skills/skill-scientific-figure-check/package.json +32 -0
  1225. package/skills/skill-scientific-figure-check/src/index.ts +83 -0
  1226. package/skills/skill-scientific-figure-check/tsconfig.json +14 -0
  1227. package/skills/skill-search/LICENSE +21 -0
  1228. package/skills/skill-search/README.md +17 -0
  1229. package/skills/skill-search/install.sh +112 -0
  1230. package/skills/skill-search/package.json +31 -0
  1231. package/skills/skill-search/src/auth.ts +49 -0
  1232. package/skills/skill-search/src/installer.ts +324 -0
  1233. package/skills/skill-search/src/skill-install.ts +205 -0
  1234. package/skills/skill-seating-chart-maker/CLAUDE.md +19 -0
  1235. package/skills/skill-seating-chart-maker/package.json +32 -0
  1236. package/skills/skill-seating-chart-maker/src/index.ts +312 -0
  1237. package/skills/skill-seating-chart-maker/tsconfig.json +14 -0
  1238. package/skills/skill-security-audit/CLAUDE.md +19 -0
  1239. package/skills/skill-security-audit/package.json +32 -0
  1240. package/skills/skill-security-audit/src/index.ts +126 -0
  1241. package/skills/skill-security-audit/tsconfig.json +14 -0
  1242. package/skills/skill-seo-brief-builder/CLAUDE.md +19 -0
  1243. package/skills/skill-seo-brief-builder/package.json +32 -0
  1244. package/skills/skill-seo-brief-builder/src/index.ts +288 -0
  1245. package/skills/skill-seo-brief-builder/tsconfig.json +14 -0
  1246. package/skills/skill-shadcn/LICENSE +21 -0
  1247. package/skills/skill-shadcn/README.md +27 -0
  1248. package/skills/skill-shadcn/SKILL.md +113 -0
  1249. package/skills/skill-shadcn/install.sh +112 -0
  1250. package/skills/skill-shadcn/package.json +31 -0
  1251. package/skills/skill-shadcn/src/auth.ts +49 -0
  1252. package/skills/skill-shadcn/src/installer.ts +324 -0
  1253. package/skills/skill-shadcn/src/skill-install.ts +174 -0
  1254. package/skills/skill-shadcn-theme/CLAUDE.md +19 -0
  1255. package/skills/skill-shadcn-theme/package.json +32 -0
  1256. package/skills/skill-shadcn-theme/src/index.ts +16 -0
  1257. package/skills/skill-shadcn-theme/tsconfig.json +14 -0
  1258. package/skills/skill-slack-assistant/CLAUDE.md +19 -0
  1259. package/skills/skill-slack-assistant/package.json +32 -0
  1260. package/skills/skill-slack-assistant/src/index.ts +79 -0
  1261. package/skills/skill-slack-assistant/tsconfig.json +14 -0
  1262. package/skills/skill-sleep-routine-analyzer/CLAUDE.md +19 -0
  1263. package/skills/skill-sleep-routine-analyzer/package.json +32 -0
  1264. package/skills/skill-sleep-routine-analyzer/src/index.ts +293 -0
  1265. package/skills/skill-sleep-routine-analyzer/tsconfig.json +14 -0
  1266. package/skills/skill-sms/README.md +71 -0
  1267. package/skills/skill-sms/package.json +38 -0
  1268. package/skills/skill-sms/scripts/buy-number.ts +63 -0
  1269. package/skills/skill-sms/scripts/test-send.ts +67 -0
  1270. package/skills/skill-sms/src/index.ts +320 -0
  1271. package/skills/skill-sms/src/server.ts +351 -0
  1272. package/skills/skill-sms/src/sse-server.ts +279 -0
  1273. package/skills/skill-sms/tsconfig.json +21 -0
  1274. package/skills/skill-social-media-kit/CLAUDE.md +19 -0
  1275. package/skills/skill-social-media-kit/package.json +32 -0
  1276. package/skills/skill-social-media-kit/src/index.ts +281 -0
  1277. package/skills/skill-social-media-kit/tsconfig.json +14 -0
  1278. package/skills/skill-social-template-kit/CLAUDE.md +19 -0
  1279. package/skills/skill-social-template-kit/package.json +32 -0
  1280. package/skills/skill-social-template-kit/src/index.ts +303 -0
  1281. package/skills/skill-social-template-kit/tsconfig.json +14 -0
  1282. package/skills/skill-split-pdf/CLAUDE.md +19 -0
  1283. package/skills/skill-split-pdf/package.json +32 -0
  1284. package/skills/skill-split-pdf/src/index.ts +301 -0
  1285. package/skills/skill-split-pdf/tsconfig.json +14 -0
  1286. package/skills/skill-sponsorship-proposal-lab/CLAUDE.md +19 -0
  1287. package/skills/skill-sponsorship-proposal-lab/package.json +32 -0
  1288. package/skills/skill-sponsorship-proposal-lab/src/index.ts +300 -0
  1289. package/skills/skill-sponsorship-proposal-lab/tsconfig.json +14 -0
  1290. package/skills/skill-spreadsheet-cleanroom/CLAUDE.md +19 -0
  1291. package/skills/skill-spreadsheet-cleanroom/package.json +32 -0
  1292. package/skills/skill-spreadsheet-cleanroom/src/index.ts +331 -0
  1293. package/skills/skill-spreadsheet-cleanroom/tsconfig.json +14 -0
  1294. package/skills/skill-statistical-test-selector/CLAUDE.md +19 -0
  1295. package/skills/skill-statistical-test-selector/package.json +32 -0
  1296. package/skills/skill-statistical-test-selector/src/index.ts +75 -0
  1297. package/skills/skill-statistical-test-selector/tsconfig.json +14 -0
  1298. package/skills/skill-stress-relief-playbook/CLAUDE.md +19 -0
  1299. package/skills/skill-stress-relief-playbook/package.json +32 -0
  1300. package/skills/skill-stress-relief-playbook/src/index.ts +298 -0
  1301. package/skills/skill-stress-relief-playbook/tsconfig.json +14 -0
  1302. package/skills/skill-study-guide-builder/CLAUDE.md +19 -0
  1303. package/skills/skill-study-guide-builder/package.json +32 -0
  1304. package/skills/skill-study-guide-builder/src/index.ts +298 -0
  1305. package/skills/skill-study-guide-builder/tsconfig.json +14 -0
  1306. package/skills/skill-subscription-spend-watcher/CLAUDE.md +19 -0
  1307. package/skills/skill-subscription-spend-watcher/package.json +32 -0
  1308. package/skills/skill-subscription-spend-watcher/src/index.ts +312 -0
  1309. package/skills/skill-subscription-spend-watcher/tsconfig.json +14 -0
  1310. package/skills/skill-subtitle/.env.example +2 -0
  1311. package/skills/skill-subtitle/CLAUDE.md +37 -0
  1312. package/skills/skill-subtitle/LICENSE +21 -0
  1313. package/skills/skill-subtitle/README.md +63 -0
  1314. package/skills/skill-subtitle/package.json +49 -0
  1315. package/skills/skill-subtitle/src/commands/config.ts +53 -0
  1316. package/skills/skill-subtitle/src/commands/generate.ts +61 -0
  1317. package/skills/skill-subtitle/src/lib/generator.ts +216 -0
  1318. package/skills/skill-subtitle/src/lib/storage.ts +62 -0
  1319. package/skills/skill-subtitle/src/types/index.ts +68 -0
  1320. package/skills/skill-subtitle/src/utils/logger.ts +34 -0
  1321. package/skills/skill-subtitle/src/utils/paths.ts +51 -0
  1322. package/skills/skill-subtitle/tsconfig.json +17 -0
  1323. package/skills/skill-summarize/LICENSE +21 -0
  1324. package/skills/skill-summarize/README.md +17 -0
  1325. package/skills/skill-summarize/install.sh +112 -0
  1326. package/skills/skill-summarize/package.json +31 -0
  1327. package/skills/skill-summarize/src/auth.ts +49 -0
  1328. package/skills/skill-summarize/src/installer.ts +324 -0
  1329. package/skills/skill-summarize/src/skill-install.ts +205 -0
  1330. package/skills/skill-survey-insight-extractor/CLAUDE.md +19 -0
  1331. package/skills/skill-survey-insight-extractor/package.json +32 -0
  1332. package/skills/skill-survey-insight-extractor/src/index.ts +317 -0
  1333. package/skills/skill-survey-insight-extractor/tsconfig.json +14 -0
  1334. package/skills/skill-sync/LICENSE +21 -0
  1335. package/skills/skill-sync/README.md +17 -0
  1336. package/skills/skill-sync/install.sh +112 -0
  1337. package/skills/skill-sync/package.json +31 -0
  1338. package/skills/skill-sync/src/auth.ts +49 -0
  1339. package/skills/skill-sync/src/installer.ts +324 -0
  1340. package/skills/skill-sync/src/skill-install.ts +205 -0
  1341. package/skills/skill-terraform-generator/CLAUDE.md +19 -0
  1342. package/skills/skill-terraform-generator/package.json +32 -0
  1343. package/skills/skill-terraform-generator/src/index.ts +99 -0
  1344. package/skills/skill-terraform-generator/tsconfig.json +14 -0
  1345. package/skills/skill-testimonial-graphics/CLAUDE.md +19 -0
  1346. package/skills/skill-testimonial-graphics/package.json +32 -0
  1347. package/skills/skill-testimonial-graphics/src/index.ts +303 -0
  1348. package/skills/skill-testimonial-graphics/tsconfig.json +14 -0
  1349. package/skills/skill-time-blocking-orchestrator/CLAUDE.md +19 -0
  1350. package/skills/skill-time-blocking-orchestrator/package.json +32 -0
  1351. package/skills/skill-time-blocking-orchestrator/src/index.ts +328 -0
  1352. package/skills/skill-time-blocking-orchestrator/tsconfig.json +14 -0
  1353. package/skills/skill-timesheet/.env.example +25 -0
  1354. package/skills/skill-timesheet/README.md +235 -0
  1355. package/skills/skill-timesheet/package.json +53 -0
  1356. package/skills/skill-timesheet/scripts/publish.ts +210 -0
  1357. package/skills/skill-timesheet/src/commands/employee.ts +96 -0
  1358. package/skills/skill-timesheet/src/commands/export.ts +29 -0
  1359. package/skills/skill-timesheet/src/commands/generate.ts +102 -0
  1360. package/skills/skill-timesheet/src/commands/holiday.ts +74 -0
  1361. package/skills/skill-timesheet/src/commands/profile.ts +133 -0
  1362. package/skills/skill-timesheet/src/commands/setup.ts +21 -0
  1363. package/skills/skill-timesheet/src/commands/vacation.ts +93 -0
  1364. package/skills/skill-timesheet/src/lib/employees.ts +56 -0
  1365. package/skills/skill-timesheet/src/lib/export.ts +123 -0
  1366. package/skills/skill-timesheet/src/lib/holidays.ts +79 -0
  1367. package/skills/skill-timesheet/src/lib/paths.ts +59 -0
  1368. package/skills/skill-timesheet/src/lib/profiles.ts +168 -0
  1369. package/skills/skill-timesheet/src/lib/storage.ts +83 -0
  1370. package/skills/skill-timesheet/src/lib/timesheet.ts +130 -0
  1371. package/skills/skill-timesheet/src/lib/vacations.ts +70 -0
  1372. package/skills/skill-timesheet/src/types/index.ts +96 -0
  1373. package/skills/skill-timesheet/tsconfig.json +21 -0
  1374. package/skills/skill-transcript/.env.example +10 -0
  1375. package/skills/skill-transcript/LICENSE +21 -0
  1376. package/skills/skill-transcript/README.md +17 -0
  1377. package/skills/skill-transcript/SKILL.md +105 -0
  1378. package/skills/skill-transcript/install.sh +112 -0
  1379. package/skills/skill-transcript/package.json +35 -0
  1380. package/skills/skill-transcript/src/auth.ts +49 -0
  1381. package/skills/skill-transcript/src/chunker.ts +215 -0
  1382. package/skills/skill-transcript/src/formatter.ts +134 -0
  1383. package/skills/skill-transcript/src/http-client.ts +128 -0
  1384. package/skills/skill-transcript/src/index-http.ts +111 -0
  1385. package/skills/skill-transcript/src/index-local.ts +226 -0
  1386. package/skills/skill-transcript/src/index.ts +111 -0
  1387. package/skills/skill-transcript/src/installer.ts +324 -0
  1388. package/skills/skill-transcript/src/providers/elevenlabs.ts +133 -0
  1389. package/skills/skill-transcript/src/providers/gemini.ts +192 -0
  1390. package/skills/skill-transcript/src/providers/index.ts +54 -0
  1391. package/skills/skill-transcript/src/providers/openai.ts +203 -0
  1392. package/skills/skill-transcript/src/skill-install.ts +205 -0
  1393. package/skills/skill-transcript/src/types.ts +106 -0
  1394. package/skills/skill-transcript/tsconfig.json +18 -0
  1395. package/skills/skill-transform/.env.example +2 -0
  1396. package/skills/skill-transform/LICENSE +21 -0
  1397. package/skills/skill-transform/README.md +17 -0
  1398. package/skills/skill-transform/SKILL.md +127 -0
  1399. package/skills/skill-transform/install.sh +112 -0
  1400. package/skills/skill-transform/package.json +37 -0
  1401. package/skills/skill-transform/src/auth.ts +49 -0
  1402. package/skills/skill-transform/src/http-client.ts +128 -0
  1403. package/skills/skill-transform/src/index-http.ts +111 -0
  1404. package/skills/skill-transform/src/index-local.ts +368 -0
  1405. package/skills/skill-transform/src/index.ts +111 -0
  1406. package/skills/skill-transform/src/installer.ts +324 -0
  1407. package/skills/skill-transform/src/skill-install.ts +205 -0
  1408. package/skills/skill-transform/src/transformers/ai-transformer.ts +202 -0
  1409. package/skills/skill-transform/src/transformers/format-detector.ts +147 -0
  1410. package/skills/skill-transform/src/types.ts +95 -0
  1411. package/skills/skill-transform/tsconfig.json +18 -0
  1412. package/skills/skill-translate/LICENSE +21 -0
  1413. package/skills/skill-translate/README.md +17 -0
  1414. package/skills/skill-translate/install.sh +112 -0
  1415. package/skills/skill-translate/package.json +31 -0
  1416. package/skills/skill-translate/src/auth.ts +49 -0
  1417. package/skills/skill-translate/src/installer.ts +324 -0
  1418. package/skills/skill-translate/src/skill-install.ts +205 -0
  1419. package/skills/skill-travel-budget-balancer/CLAUDE.md +19 -0
  1420. package/skills/skill-travel-budget-balancer/package.json +32 -0
  1421. package/skills/skill-travel-budget-balancer/src/index.ts +297 -0
  1422. package/skills/skill-travel-budget-balancer/tsconfig.json +14 -0
  1423. package/skills/skill-validate-config/CLAUDE.md +19 -0
  1424. package/skills/skill-validate-config/package.json +32 -0
  1425. package/skills/skill-validate-config/src/index.ts +56 -0
  1426. package/skills/skill-validate-config/tsconfig.json +14 -0
  1427. package/skills/skill-vendor-comparison-coach/CLAUDE.md +19 -0
  1428. package/skills/skill-vendor-comparison-coach/package.json +32 -0
  1429. package/skills/skill-vendor-comparison-coach/src/index.ts +337 -0
  1430. package/skills/skill-vendor-comparison-coach/tsconfig.json +14 -0
  1431. package/skills/skill-video/.env.example +14 -0
  1432. package/skills/skill-video/EXAMPLES.md +266 -0
  1433. package/skills/skill-video/LICENSE +21 -0
  1434. package/skills/skill-video/README.md +174 -0
  1435. package/skills/skill-video/SKILL.md +107 -0
  1436. package/skills/skill-video/install.sh +112 -0
  1437. package/skills/skill-video/package.json +36 -0
  1438. package/skills/skill-video/src/auth.ts +49 -0
  1439. package/skills/skill-video/src/cli.ts +155 -0
  1440. package/skills/skill-video/src/http-client.ts +128 -0
  1441. package/skills/skill-video/src/index-http.ts +111 -0
  1442. package/skills/skill-video/src/index-local.ts +148 -0
  1443. package/skills/skill-video/src/index.ts +111 -0
  1444. package/skills/skill-video/src/installer.ts +324 -0
  1445. package/skills/skill-video/src/providers/google-veo.ts +126 -0
  1446. package/skills/skill-video/src/providers/index.ts +19 -0
  1447. package/skills/skill-video/src/providers/openai-sora.ts +164 -0
  1448. package/skills/skill-video/src/providers/runway.ts +159 -0
  1449. package/skills/skill-video/src/skill-install.ts +205 -0
  1450. package/skills/skill-video/src/types.ts +35 -0
  1451. package/skills/skill-video/tsconfig.json +25 -0
  1452. package/skills/skill-video-cut-suggester/CLAUDE.md +19 -0
  1453. package/skills/skill-video-cut-suggester/package.json +32 -0
  1454. package/skills/skill-video-cut-suggester/src/index.ts +304 -0
  1455. package/skills/skill-video-cut-suggester/tsconfig.json +14 -0
  1456. package/skills/skill-video-downloader/CLAUDE.md +19 -0
  1457. package/skills/skill-video-downloader/package.json +32 -0
  1458. package/skills/skill-video-downloader/src/index.ts +561 -0
  1459. package/skills/skill-video-downloader/tsconfig.json +14 -0
  1460. package/skills/skill-video-thumbnail/CLAUDE.md +19 -0
  1461. package/skills/skill-video-thumbnail/package.json +32 -0
  1462. package/skills/skill-video-thumbnail/src/index.ts +356 -0
  1463. package/skills/skill-video-thumbnail/tsconfig.json +14 -0
  1464. package/skills/skill-videodownload/.env.example +5 -0
  1465. package/skills/skill-videodownload/CLAUDE.md +64 -0
  1466. package/skills/skill-videodownload/LICENSE +21 -0
  1467. package/skills/skill-videodownload/README.md +166 -0
  1468. package/skills/skill-videodownload/package.json +49 -0
  1469. package/skills/skill-videodownload/src/commands/config.ts +89 -0
  1470. package/skills/skill-videodownload/src/commands/download.ts +61 -0
  1471. package/skills/skill-videodownload/src/commands/info.ts +83 -0
  1472. package/skills/skill-videodownload/src/commands/list.ts +84 -0
  1473. package/skills/skill-videodownload/src/lib/downloader.ts +270 -0
  1474. package/skills/skill-videodownload/src/lib/storage.ts +167 -0
  1475. package/skills/skill-videodownload/src/types/index.ts +64 -0
  1476. package/skills/skill-videodownload/src/utils/logger.ts +49 -0
  1477. package/skills/skill-videodownload/src/utils/paths.ts +94 -0
  1478. package/skills/skill-videodownload/tsconfig.json +17 -0
  1479. package/skills/skill-voiceover/.env.example +5 -0
  1480. package/skills/skill-voiceover/CLAUDE.md +40 -0
  1481. package/skills/skill-voiceover/LICENSE +21 -0
  1482. package/skills/skill-voiceover/README.md +64 -0
  1483. package/skills/skill-voiceover/package.json +43 -0
  1484. package/skills/skill-voiceover/src/commands/config.ts +38 -0
  1485. package/skills/skill-voiceover/src/commands/generate.ts +37 -0
  1486. package/skills/skill-voiceover/src/commands/voices.ts +33 -0
  1487. package/skills/skill-voiceover/src/lib/generator.ts +159 -0
  1488. package/skills/skill-voiceover/src/lib/storage.ts +55 -0
  1489. package/skills/skill-voiceover/src/types/index.ts +55 -0
  1490. package/skills/skill-voiceover/src/utils/logger.ts +30 -0
  1491. package/skills/skill-voiceover/src/utils/paths.ts +22 -0
  1492. package/skills/skill-voiceover/tsconfig.json +17 -0
  1493. package/skills/skill-voiceover-casting-assistant/CLAUDE.md +19 -0
  1494. package/skills/skill-voiceover-casting-assistant/package.json +32 -0
  1495. package/skills/skill-voiceover-casting-assistant/src/index.ts +255 -0
  1496. package/skills/skill-voiceover-casting-assistant/tsconfig.json +14 -0
  1497. package/skills/skill-watermark/CLAUDE.md +19 -0
  1498. package/skills/skill-watermark/package.json +32 -0
  1499. package/skills/skill-watermark/src/index.ts +587 -0
  1500. package/skills/skill-watermark/tsconfig.json +14 -0
  1501. package/skills/skill-webcrawling/.env.example +2 -0
  1502. package/skills/skill-webcrawling/CLAUDE.md +22 -0
  1503. package/skills/skill-webcrawling/LICENSE +21 -0
  1504. package/skills/skill-webcrawling/README.md +77 -0
  1505. package/skills/skill-webcrawling/package.json +36 -0
  1506. package/skills/skill-webcrawling/src/commands/config.ts +34 -0
  1507. package/skills/skill-webcrawling/src/commands/crawl.ts +33 -0
  1508. package/skills/skill-webcrawling/src/commands/scrape.ts +32 -0
  1509. package/skills/skill-webcrawling/src/commands/sessions.ts +42 -0
  1510. package/skills/skill-webcrawling/src/lib/crawler.ts +174 -0
  1511. package/skills/skill-webcrawling/src/lib/storage.ts +130 -0
  1512. package/skills/skill-webcrawling/src/types/index.ts +45 -0
  1513. package/skills/skill-webcrawling/src/utils/logger.ts +30 -0
  1514. package/skills/skill-webcrawling/src/utils/paths.ts +28 -0
  1515. package/skills/skill-webcrawling/tsconfig.json +17 -0
  1516. package/skills/skill-webinar-script-coach/CLAUDE.md +19 -0
  1517. package/skills/skill-webinar-script-coach/package.json +32 -0
  1518. package/skills/skill-webinar-script-coach/src/index.ts +296 -0
  1519. package/skills/skill-webinar-script-coach/tsconfig.json +14 -0
  1520. package/skills/skill-websearch/LICENSE +21 -0
  1521. package/skills/skill-websearch/README.md +17 -0
  1522. package/skills/skill-websearch/install.sh +112 -0
  1523. package/skills/skill-websearch/package.json +31 -0
  1524. package/skills/skill-websearch/src/auth.ts +49 -0
  1525. package/skills/skill-websearch/src/installer.ts +324 -0
  1526. package/skills/skill-websearch/src/skill-install.ts +205 -0
  1527. package/skills/skill-wellness-progress-reporter/CLAUDE.md +19 -0
  1528. package/skills/skill-wellness-progress-reporter/package.json +32 -0
  1529. package/skills/skill-wellness-progress-reporter/src/index.ts +298 -0
  1530. package/skills/skill-wellness-progress-reporter/tsconfig.json +14 -0
  1531. package/skills/skill-workout-cycle-planner/CLAUDE.md +19 -0
  1532. package/skills/skill-workout-cycle-planner/package.json +32 -0
  1533. package/skills/skill-workout-cycle-planner/src/index.ts +299 -0
  1534. package/skills/skill-workout-cycle-planner/tsconfig.json +14 -0
  1535. package/skills/skill-write/.env.example +9 -0
  1536. package/skills/skill-write/LICENSE +21 -0
  1537. package/skills/skill-write/README.md +17 -0
  1538. package/skills/skill-write/SKILL.md +90 -0
  1539. package/skills/skill-write/install.sh +112 -0
  1540. package/skills/skill-write/package.json +37 -0
  1541. package/skills/skill-write/src/agents/image-generator.ts +186 -0
  1542. package/skills/skill-write/src/agents/researcher.ts +61 -0
  1543. package/skills/skill-write/src/agents/writer.ts +99 -0
  1544. package/skills/skill-write/src/auth.ts +49 -0
  1545. package/skills/skill-write/src/http-client.ts +128 -0
  1546. package/skills/skill-write/src/index-http.ts +111 -0
  1547. package/skills/skill-write/src/index-local.ts +247 -0
  1548. package/skills/skill-write/src/index.ts +111 -0
  1549. package/skills/skill-write/src/installer.ts +324 -0
  1550. package/skills/skill-write/src/orchestrator.ts +171 -0
  1551. package/skills/skill-write/src/skill-install.ts +205 -0
  1552. package/skills/skill-write/src/types.ts +65 -0
  1553. package/skills/skill-write/tsconfig.json +18 -0
  1554. package/src/cli/cli.test.ts +325 -0
  1555. package/src/cli/components/App.tsx +186 -0
  1556. package/src/cli/components/CategorySelect.tsx +38 -0
  1557. package/src/cli/components/Header.tsx +18 -0
  1558. package/src/cli/components/InstallProgress.tsx +97 -0
  1559. package/src/cli/components/SearchView.tsx +108 -0
  1560. package/src/cli/components/SkillSelect.tsx +92 -0
  1561. package/src/cli/index.tsx +559 -0
  1562. package/src/index.ts +49 -0
  1563. package/src/lib/installer.test.ts +328 -0
  1564. package/src/lib/installer.ts +297 -0
  1565. package/src/lib/registry.test.ts +147 -0
  1566. package/src/lib/registry.ts +1951 -0
  1567. package/src/lib/skillinfo.test.ts +195 -0
  1568. package/src/lib/skillinfo.ts +356 -0
  1569. package/src/mcp/index.ts +234 -0
  1570. package/src/mcp/mcp.test.ts +212 -0
  1571. package/tsconfig.json +17 -0
@@ -0,0 +1,1417 @@
1
+ #!/usr/bin/env bun
2
+
3
+ /**
4
+ * Generate Slides - Enhanced Presentation Generation Skill
5
+ *
6
+ * Features:
7
+ * - AI-powered slide generation from topics
8
+ * - PPTX export with pptxgenjs
9
+ * - PDF export with puppeteer
10
+ * - HTML/Reveal.js export
11
+ * - Multiple themes and branding options
12
+ */
13
+
14
+ import { parseArgs } from "node:util";
15
+ import { readFile, writeFile, mkdir, access, unlink } from "node:fs/promises";
16
+ import { join, dirname, basename, extname } from "node:path";
17
+ import { constants } from "node:fs";
18
+ import PptxGenJS from "pptxgenjs";
19
+ import OpenAI from "openai";
20
+
21
+ // Types
22
+ interface SlideOptions {
23
+ // Input
24
+ inputFile?: string;
25
+ text?: string;
26
+ topic?: string;
27
+ outline: boolean;
28
+
29
+ // AI Generation
30
+ aiGenerate: boolean;
31
+ slideCount: number;
32
+ audience: string;
33
+ style: string;
34
+ language: string;
35
+ includeImages: boolean;
36
+
37
+ // Output
38
+ format: "pptx" | "pdf" | "html" | "revealjs";
39
+ output?: string;
40
+ dir: string;
41
+
42
+ // Theme
43
+ theme: "corporate" | "creative" | "minimal" | "dark" | "light" | "tech";
44
+
45
+ // Content
46
+ title?: string;
47
+ author?: string;
48
+ date: string;
49
+ notes: boolean;
50
+ footer?: string;
51
+ slideNumbers: boolean;
52
+
53
+ // Layout
54
+ aspectRatio: "16:9" | "4:3" | "16:10";
55
+
56
+ // Branding
57
+ logo?: string;
58
+ logoPosition: "top-left" | "top-right" | "bottom-left" | "bottom-right";
59
+ primaryColor?: string;
60
+ secondaryColor?: string;
61
+ font?: string;
62
+
63
+ // Animation
64
+ transition: "none" | "fade" | "slide" | "convex" | "concave" | "zoom";
65
+ transitionSpeed: "slow" | "default" | "fast";
66
+
67
+ // Code
68
+ codeTheme: string;
69
+ lineNumbers: boolean;
70
+ }
71
+
72
+ interface Slide {
73
+ type: "title" | "content" | "two-column" | "image" | "code" | "quote" | "bullets";
74
+ title?: string;
75
+ subtitle?: string;
76
+ content: string[];
77
+ notes?: string;
78
+ backgroundImage?: string;
79
+ columns?: { left: string[]; right: string[] };
80
+ codeLanguage?: string;
81
+ imageUrl?: string;
82
+ imagePrompt?: string;
83
+ }
84
+
85
+ interface Presentation {
86
+ title: string;
87
+ subtitle?: string;
88
+ author?: string;
89
+ date: string;
90
+ slides: Slide[];
91
+ metadata: Record<string, any>;
92
+ }
93
+
94
+ // Theme colors
95
+ const THEME_COLORS: Record<string, { primary: string; secondary: string; background: string; text: string; accent: string }> = {
96
+ corporate: { primary: "003366", secondary: "0066CC", background: "FFFFFF", text: "333333", accent: "FF6B35" },
97
+ creative: { primary: "FF6B35", secondary: "004E89", background: "FFFFFF", text: "333333", accent: "7209B7" },
98
+ minimal: { primary: "2C3E50", secondary: "7F8C8D", background: "FFFFFF", text: "333333", accent: "3498DB" },
99
+ dark: { primary: "00AAFF", secondary: "FF5577", background: "1A1A2E", text: "EAEAEA", accent: "00FF88" },
100
+ light: { primary: "3498DB", secondary: "9B59B6", background: "F8F9FA", text: "2C3E50", accent: "E74C3C" },
101
+ tech: { primary: "00FF88", secondary: "FF00FF", background: "0A0E27", text: "EAEAEA", accent: "00AAFF" },
102
+ };
103
+
104
+ // Parse command line arguments
105
+ function parseArguments(): SlideOptions {
106
+ const { values, positionals } = parseArgs({
107
+ args: process.argv.slice(2),
108
+ options: {
109
+ // Input
110
+ text: { type: "string" },
111
+ topic: { type: "string" },
112
+ outline: { type: "boolean", default: false },
113
+
114
+ // AI Generation
115
+ "ai-generate": { type: "boolean", default: false },
116
+ "slide-count": { type: "string", default: "8" },
117
+ audience: { type: "string", default: "general" },
118
+ style: { type: "string", default: "professional" },
119
+ language: { type: "string", default: "en" },
120
+ "include-images": { type: "boolean", default: false },
121
+
122
+ // Output
123
+ format: { type: "string", default: "pptx" },
124
+ output: { type: "string" },
125
+ dir: { type: "string", default: "" },
126
+
127
+ // Theme
128
+ theme: { type: "string", default: "minimal" },
129
+
130
+ // Content
131
+ title: { type: "string" },
132
+ author: { type: "string" },
133
+ date: { type: "string", default: new Date().toISOString().split("T")[0] },
134
+ notes: { type: "boolean", default: true },
135
+ footer: { type: "string" },
136
+ "slide-numbers": { type: "boolean", default: true },
137
+
138
+ // Layout
139
+ "aspect-ratio": { type: "string", default: "16:9" },
140
+
141
+ // Branding
142
+ logo: { type: "string" },
143
+ "logo-position": { type: "string", default: "bottom-right" },
144
+ "primary-color": { type: "string" },
145
+ "secondary-color": { type: "string" },
146
+ font: { type: "string" },
147
+
148
+ // Animation
149
+ transition: { type: "string", default: "fade" },
150
+ "transition-speed": { type: "string", default: "default" },
151
+
152
+ // Code
153
+ "code-theme": { type: "string", default: "github" },
154
+ "line-numbers": { type: "boolean", default: false },
155
+
156
+ help: { type: "boolean", short: "h", default: false },
157
+ },
158
+ allowPositionals: true,
159
+ });
160
+
161
+ if (values.help) {
162
+ printHelp();
163
+ process.exit(0);
164
+ }
165
+
166
+ const outputDir =
167
+ values.dir ||
168
+ (process.env.SKILLS_OUTPUT_DIR
169
+ ? join(process.env.SKILLS_OUTPUT_DIR, "exports", "generate-slides")
170
+ : join(process.cwd(), ".skills", "exports", "generate-slides"));
171
+
172
+ return {
173
+ inputFile: positionals[0],
174
+ text: values.text as string | undefined,
175
+ topic: values.topic as string | undefined,
176
+ outline: values.outline as boolean,
177
+ aiGenerate: values["ai-generate"] as boolean,
178
+ slideCount: parseInt(values["slide-count"] as string) || 8,
179
+ audience: values.audience as string,
180
+ style: values.style as string,
181
+ language: values.language as string,
182
+ includeImages: values["include-images"] as boolean,
183
+ format: values.format as any,
184
+ output: values.output as string | undefined,
185
+ dir: outputDir,
186
+ theme: values.theme as any,
187
+ title: values.title as string | undefined,
188
+ author: values.author as string | undefined,
189
+ date: values.date as string,
190
+ notes: values.notes as boolean,
191
+ footer: values.footer as string | undefined,
192
+ slideNumbers: values["slide-numbers"] as boolean,
193
+ aspectRatio: values["aspect-ratio"] as any,
194
+ logo: values.logo as string | undefined,
195
+ logoPosition: values["logo-position"] as any,
196
+ primaryColor: values["primary-color"] as string | undefined,
197
+ secondaryColor: values["secondary-color"] as string | undefined,
198
+ font: values.font as string | undefined,
199
+ transition: values.transition as any,
200
+ transitionSpeed: values["transition-speed"] as any,
201
+ codeTheme: values["code-theme"] as string,
202
+ lineNumbers: values["line-numbers"] as boolean,
203
+ };
204
+ }
205
+
206
+ function printHelp(): void {
207
+ console.log(`
208
+ Generate Slides - Create presentations from markdown or AI
209
+
210
+ Usage:
211
+ skills run generate-slides -- [input.md] [options]
212
+ skills run generate-slides -- --topic "Your Topic" --ai-generate [options]
213
+
214
+ AI Generation:
215
+ --topic <text> Topic for AI to generate slides about
216
+ --ai-generate Enable AI slide generation
217
+ --slide-count <n> Number of slides to generate (default: 8)
218
+ --audience <type> Target audience: general, technical, executive, students
219
+ --style <type> Presentation style: professional, casual, academic, sales
220
+ --language <code> Language code: en, es, fr, de, etc.
221
+ --include-images Generate image suggestions for each slide
222
+
223
+ Input:
224
+ [file] Markdown file with slide content
225
+ --text <markdown> Direct markdown text input
226
+
227
+ Output:
228
+ --format <type> Output format: pptx, pdf, html, revealjs (default: pptx)
229
+ -o, --output <path> Output file path
230
+ --dir <path> Output directory
231
+
232
+ Theme & Branding:
233
+ --theme <name> Theme: corporate, creative, minimal, dark, light, tech
234
+ --primary-color <hex> Primary color (without #)
235
+ --secondary-color <hex> Secondary color
236
+ --font <name> Font family
237
+ --logo <path> Logo image file
238
+ --logo-position <pos> Logo position: top-left, top-right, bottom-left, bottom-right
239
+
240
+ Content:
241
+ --title <text> Presentation title
242
+ --author <text> Author name
243
+ --notes Include speaker notes (default: true)
244
+ --slide-numbers Show slide numbers (default: true)
245
+ --footer <text> Footer text
246
+
247
+ Examples:
248
+ # AI-generated presentation
249
+ skills run generate-slides -- --topic "Introduction to Machine Learning" --ai-generate --format pptx
250
+
251
+ # From markdown file
252
+ skills run generate-slides -- presentation.md --format pptx --theme corporate
253
+
254
+ # Quick HTML presentation
255
+ skills run generate-slides -- --topic "Q4 Results" --ai-generate --format html --theme dark
256
+ `);
257
+ }
258
+
259
+ // ============================================================================
260
+ // AI GENERATION
261
+ // ============================================================================
262
+
263
+ async function generateSlidesWithAI(options: SlideOptions): Promise<Presentation> {
264
+ const apiKey = process.env.OPENAI_API_KEY;
265
+ if (!apiKey) {
266
+ throw new Error("OPENAI_API_KEY environment variable is required for AI generation");
267
+ }
268
+
269
+ const openai = new OpenAI({ apiKey });
270
+
271
+ console.log("šŸ¤– Generating slides with AI...");
272
+ console.log(` Topic: ${options.topic}`);
273
+ console.log(` Slides: ${options.slideCount}`);
274
+ console.log(` Audience: ${options.audience}`);
275
+ console.log(` Style: ${options.style}`);
276
+
277
+ const systemPrompt = `You are an expert presentation designer. Create engaging, well-structured slide content.
278
+ Return ONLY valid JSON with no additional text or markdown formatting.`;
279
+
280
+ const userPrompt = `Create a ${options.slideCount}-slide presentation about: "${options.topic}"
281
+
282
+ Target audience: ${options.audience}
283
+ Style: ${options.style}
284
+ Language: ${options.language}
285
+ Include speaker notes: ${options.notes}
286
+
287
+ Return a JSON object with this exact structure:
288
+ {
289
+ "title": "Main presentation title",
290
+ "subtitle": "Optional subtitle",
291
+ "slides": [
292
+ {
293
+ "type": "title",
294
+ "title": "Slide title",
295
+ "subtitle": "Optional subtitle for title slide",
296
+ "content": [],
297
+ "notes": "Speaker notes for this slide"
298
+ },
299
+ {
300
+ "type": "bullets",
301
+ "title": "Slide Title",
302
+ "content": ["Bullet point 1", "Bullet point 2", "Bullet point 3"],
303
+ "notes": "Speaker notes"
304
+ },
305
+ {
306
+ "type": "two-column",
307
+ "title": "Comparison Title",
308
+ "columns": {
309
+ "left": ["Left point 1", "Left point 2"],
310
+ "right": ["Right point 1", "Right point 2"]
311
+ },
312
+ "notes": "Speaker notes"
313
+ },
314
+ {
315
+ "type": "quote",
316
+ "title": "Key Insight",
317
+ "content": ["The quote or key message here"],
318
+ "notes": "Speaker notes"
319
+ }
320
+ ]
321
+ }
322
+
323
+ Slide types available: title, bullets, content, two-column, quote, image
324
+ - First slide should be type "title"
325
+ - Last slide should be a conclusion/thank you
326
+ - Use variety of slide types
327
+ - Keep bullet points concise (5-8 words each)
328
+ - Include 3-5 bullet points per slide
329
+ - Make content engaging and valuable`;
330
+
331
+ try {
332
+ const response = await openai.chat.completions.create({
333
+ model: "gpt-4o",
334
+ messages: [
335
+ { role: "system", content: systemPrompt },
336
+ { role: "user", content: userPrompt },
337
+ ],
338
+ max_tokens: 4000,
339
+ temperature: 0.7,
340
+ });
341
+
342
+ const content = response.choices[0]?.message?.content || "";
343
+
344
+ // Extract JSON from response
345
+ let jsonStr = content;
346
+ const jsonMatch = content.match(/```(?:json)?\s*([\s\S]*?)```/);
347
+ if (jsonMatch) {
348
+ jsonStr = jsonMatch[1];
349
+ }
350
+
351
+ // Clean up common issues
352
+ jsonStr = jsonStr.trim();
353
+ if (!jsonStr.startsWith("{")) {
354
+ const startIdx = jsonStr.indexOf("{");
355
+ if (startIdx !== -1) {
356
+ jsonStr = jsonStr.substring(startIdx);
357
+ }
358
+ }
359
+
360
+ const data = JSON.parse(jsonStr);
361
+
362
+ console.log(` āœ“ Generated ${data.slides?.length || 0} slides`);
363
+
364
+ return {
365
+ title: data.title || options.topic || "Presentation",
366
+ subtitle: data.subtitle,
367
+ author: options.author,
368
+ date: options.date,
369
+ slides: data.slides || [],
370
+ metadata: { generatedBy: "AI", topic: options.topic },
371
+ };
372
+ } catch (error: any) {
373
+ console.error("AI generation error:", error.message);
374
+ throw new Error(`Failed to generate slides: ${error.message}`);
375
+ }
376
+ }
377
+
378
+ // ============================================================================
379
+ // MARKDOWN PARSING
380
+ // ============================================================================
381
+
382
+ function parseMarkdown(content: string, options: SlideOptions): Presentation {
383
+ const lines = content.split("\n");
384
+ const slides: Slide[] = [];
385
+ let currentSlide: Slide | null = null;
386
+ let inNotes = false;
387
+ let inColumns = false;
388
+ let currentColumn: "left" | "right" | null = null;
389
+ let inCodeBlock = false;
390
+ let metadata: Record<string, any> = {};
391
+
392
+ // Extract frontmatter
393
+ let inFrontmatter = false;
394
+ let frontmatterLines: string[] = [];
395
+
396
+ for (let i = 0; i < lines.length; i++) {
397
+ const line = lines[i];
398
+ const trimmed = line.trim();
399
+
400
+ // Frontmatter handling
401
+ if (trimmed === "---" && i === 0) {
402
+ inFrontmatter = true;
403
+ continue;
404
+ }
405
+ if (inFrontmatter && trimmed === "---") {
406
+ inFrontmatter = false;
407
+ metadata = parseFrontmatter(frontmatterLines.join("\n"));
408
+ continue;
409
+ }
410
+ if (inFrontmatter) {
411
+ frontmatterLines.push(line);
412
+ continue;
413
+ }
414
+
415
+ // Code block tracking
416
+ if (trimmed.startsWith("```")) {
417
+ inCodeBlock = !inCodeBlock;
418
+ if (!currentSlide) currentSlide = { type: "content", content: [] };
419
+ if (inCodeBlock) {
420
+ const lang = trimmed.substring(3).trim();
421
+ if (lang) currentSlide.codeLanguage = lang;
422
+ currentSlide.type = "code";
423
+ }
424
+ currentSlide.content.push(line);
425
+ continue;
426
+ }
427
+
428
+ if (inCodeBlock) {
429
+ if (currentSlide) currentSlide.content.push(line);
430
+ continue;
431
+ }
432
+
433
+ // Slide separator
434
+ if ((trimmed === "---" || trimmed === "===") && !inFrontmatter) {
435
+ if (currentSlide) slides.push(currentSlide);
436
+ currentSlide = { type: "bullets", content: [] };
437
+ inNotes = false;
438
+ inColumns = false;
439
+ currentColumn = null;
440
+ continue;
441
+ }
442
+
443
+ // Notes block
444
+ if (trimmed === "::: notes" || trimmed.startsWith("::: notes")) {
445
+ inNotes = true;
446
+ if (!currentSlide) currentSlide = { type: "bullets", content: [] };
447
+ currentSlide.notes = "";
448
+ continue;
449
+ }
450
+ if (inNotes && trimmed === ":::") {
451
+ inNotes = false;
452
+ continue;
453
+ }
454
+ if (inNotes) {
455
+ if (currentSlide) {
456
+ currentSlide.notes = (currentSlide.notes || "") + line + "\n";
457
+ }
458
+ continue;
459
+ }
460
+
461
+ // Columns block
462
+ if (trimmed === "::: columns") {
463
+ inColumns = true;
464
+ if (!currentSlide) currentSlide = { type: "two-column", content: [] };
465
+ currentSlide.type = "two-column";
466
+ currentSlide.columns = { left: [], right: [] };
467
+ continue;
468
+ }
469
+ if (trimmed === ":::: column") {
470
+ currentColumn = currentColumn ? "right" : "left";
471
+ continue;
472
+ }
473
+ if (trimmed === "::::" && currentColumn) {
474
+ currentColumn = null;
475
+ continue;
476
+ }
477
+ if (trimmed === ":::" && inColumns) {
478
+ inColumns = false;
479
+ continue;
480
+ }
481
+ if (inColumns && currentColumn && currentSlide?.columns) {
482
+ currentSlide.columns[currentColumn].push(trimmed);
483
+ continue;
484
+ }
485
+
486
+ // Title slide (# heading)
487
+ if (trimmed.startsWith("# ") && !trimmed.startsWith("## ")) {
488
+ if (currentSlide) slides.push(currentSlide);
489
+ currentSlide = {
490
+ type: "title",
491
+ title: trimmed.substring(2),
492
+ content: [],
493
+ };
494
+ continue;
495
+ }
496
+
497
+ // Content slide (## heading)
498
+ if (trimmed.startsWith("## ")) {
499
+ if (currentSlide) slides.push(currentSlide);
500
+ currentSlide = {
501
+ type: "bullets",
502
+ title: trimmed.substring(3),
503
+ content: [],
504
+ };
505
+ continue;
506
+ }
507
+
508
+ // Subheading (### heading)
509
+ if (trimmed.startsWith("### ")) {
510
+ if (!currentSlide) currentSlide = { type: "bullets", content: [] };
511
+ currentSlide.subtitle = trimmed.substring(4);
512
+ continue;
513
+ }
514
+
515
+ // Quote block
516
+ if (trimmed.startsWith("> ")) {
517
+ if (!currentSlide) currentSlide = { type: "quote", content: [] };
518
+ currentSlide.type = "quote";
519
+ currentSlide.content.push(trimmed.substring(2));
520
+ continue;
521
+ }
522
+
523
+ // Bullet points
524
+ if (trimmed.startsWith("- ") || trimmed.startsWith("* ") || trimmed.match(/^\d+\. /)) {
525
+ if (!currentSlide) currentSlide = { type: "bullets", content: [] };
526
+ const bulletContent = trimmed.replace(/^[-*]\s+/, "").replace(/^\d+\.\s+/, "");
527
+ currentSlide.content.push(bulletContent);
528
+ continue;
529
+ }
530
+
531
+ // Image
532
+ if (trimmed.match(/^!\[.*?\]\(.*?\)$/)) {
533
+ if (!currentSlide) currentSlide = { type: "image", content: [] };
534
+ const match = trimmed.match(/^!\[.*?\]\((.*?)\)$/);
535
+ if (match) {
536
+ currentSlide.type = "image";
537
+ currentSlide.imageUrl = match[1];
538
+ }
539
+ continue;
540
+ }
541
+
542
+ // Regular content
543
+ if (trimmed && !currentSlide) {
544
+ currentSlide = { type: "content", content: [] };
545
+ }
546
+ if (currentSlide && trimmed) {
547
+ currentSlide.content.push(trimmed);
548
+ }
549
+ }
550
+
551
+ // Add last slide
552
+ if (currentSlide) slides.push(currentSlide);
553
+
554
+ const title = options.title || metadata.title || (slides[0]?.type === "title" ? slides[0].title : "Presentation");
555
+
556
+ return {
557
+ title,
558
+ subtitle: metadata.subtitle,
559
+ author: options.author || metadata.author,
560
+ date: options.date,
561
+ slides,
562
+ metadata,
563
+ };
564
+ }
565
+
566
+ function parseFrontmatter(content: string): Record<string, any> {
567
+ const result: Record<string, any> = {};
568
+ const lines = content.split("\n");
569
+
570
+ for (const line of lines) {
571
+ const match = line.match(/^(\w+):\s*(.+)$/);
572
+ if (match) {
573
+ result[match[1]] = match[2].trim();
574
+ }
575
+ }
576
+
577
+ return result;
578
+ }
579
+
580
+ // ============================================================================
581
+ // PPTX GENERATION
582
+ // ============================================================================
583
+
584
+ async function generatePPTX(presentation: Presentation, options: SlideOptions): Promise<Buffer> {
585
+ console.log("šŸ“Š Generating PPTX...");
586
+
587
+ const pptx = new PptxGenJS();
588
+ const theme = THEME_COLORS[options.theme] || THEME_COLORS.minimal;
589
+ const primaryColor = options.primaryColor || theme.primary;
590
+ const secondaryColor = options.secondaryColor || theme.secondary;
591
+
592
+ // Set presentation properties
593
+ pptx.title = presentation.title;
594
+ pptx.author = presentation.author || "skills.md";
595
+ pptx.subject = presentation.title;
596
+ pptx.company = "Generated by skills.md";
597
+
598
+ // Set layout
599
+ if (options.aspectRatio === "16:9") {
600
+ pptx.layout = "LAYOUT_WIDE";
601
+ } else if (options.aspectRatio === "4:3") {
602
+ pptx.layout = "LAYOUT_4x3";
603
+ }
604
+
605
+ // Define master slide
606
+ pptx.defineSlideMaster({
607
+ title: "MASTER_SLIDE",
608
+ background: { color: theme.background },
609
+ objects: [
610
+ // Footer
611
+ ...(options.footer
612
+ ? [
613
+ {
614
+ text: {
615
+ text: options.footer,
616
+ options: {
617
+ x: 0.5,
618
+ y: "92%",
619
+ w: "40%",
620
+ h: 0.3,
621
+ fontSize: 10,
622
+ color: theme.text,
623
+ align: "left" as const,
624
+ },
625
+ },
626
+ },
627
+ ]
628
+ : []),
629
+ // Slide number placeholder
630
+ ...(options.slideNumbers
631
+ ? [
632
+ {
633
+ text: {
634
+ text: "SLIDE_NUMBER",
635
+ options: {
636
+ x: "90%",
637
+ y: "92%",
638
+ w: 0.5,
639
+ h: 0.3,
640
+ fontSize: 10,
641
+ color: theme.text,
642
+ align: "right" as const,
643
+ },
644
+ },
645
+ },
646
+ ]
647
+ : []),
648
+ ],
649
+ });
650
+
651
+ // Process each slide
652
+ for (let i = 0; i < presentation.slides.length; i++) {
653
+ const slideData = presentation.slides[i];
654
+ const slide = pptx.addSlide({ masterName: "MASTER_SLIDE" });
655
+
656
+ // Add slide number
657
+ if (options.slideNumbers && i > 0) {
658
+ slide.addText(`${i + 1}`, {
659
+ x: "92%",
660
+ y: "92%",
661
+ w: 0.5,
662
+ h: 0.3,
663
+ fontSize: 10,
664
+ color: theme.text,
665
+ align: "right",
666
+ });
667
+ }
668
+
669
+ switch (slideData.type) {
670
+ case "title":
671
+ // Title slide
672
+ slide.addText(slideData.title || presentation.title, {
673
+ x: 0.5,
674
+ y: "35%",
675
+ w: "90%",
676
+ h: 1.5,
677
+ fontSize: 44,
678
+ bold: true,
679
+ color: primaryColor,
680
+ align: "center",
681
+ });
682
+
683
+ if (slideData.subtitle || presentation.subtitle) {
684
+ slide.addText(slideData.subtitle || presentation.subtitle || "", {
685
+ x: 0.5,
686
+ y: "55%",
687
+ w: "90%",
688
+ h: 0.8,
689
+ fontSize: 24,
690
+ color: secondaryColor,
691
+ align: "center",
692
+ });
693
+ }
694
+
695
+ if (presentation.author) {
696
+ slide.addText(presentation.author, {
697
+ x: 0.5,
698
+ y: "70%",
699
+ w: "90%",
700
+ h: 0.5,
701
+ fontSize: 18,
702
+ color: theme.text,
703
+ align: "center",
704
+ });
705
+ }
706
+
707
+ slide.addText(presentation.date, {
708
+ x: 0.5,
709
+ y: "78%",
710
+ w: "90%",
711
+ h: 0.4,
712
+ fontSize: 14,
713
+ color: theme.text,
714
+ align: "center",
715
+ });
716
+ break;
717
+
718
+ case "bullets":
719
+ case "content":
720
+ // Content slide with bullets
721
+ if (slideData.title) {
722
+ slide.addText(slideData.title, {
723
+ x: 0.5,
724
+ y: 0.5,
725
+ w: "90%",
726
+ h: 0.8,
727
+ fontSize: 32,
728
+ bold: true,
729
+ color: primaryColor,
730
+ });
731
+ }
732
+
733
+ if (slideData.content.length > 0) {
734
+ const bullets = slideData.content.map((text) => ({
735
+ text,
736
+ options: { bullet: { type: "bullet" as const }, indentLevel: 0 },
737
+ }));
738
+
739
+ slide.addText(bullets, {
740
+ x: 0.5,
741
+ y: slideData.title ? 1.5 : 0.5,
742
+ w: "90%",
743
+ h: 4,
744
+ fontSize: 20,
745
+ color: theme.text,
746
+ valign: "top",
747
+ paraSpaceAfter: 12,
748
+ });
749
+ }
750
+ break;
751
+
752
+ case "two-column":
753
+ // Two-column layout
754
+ if (slideData.title) {
755
+ slide.addText(slideData.title, {
756
+ x: 0.5,
757
+ y: 0.5,
758
+ w: "90%",
759
+ h: 0.8,
760
+ fontSize: 32,
761
+ bold: true,
762
+ color: primaryColor,
763
+ });
764
+ }
765
+
766
+ if (slideData.columns) {
767
+ // Left column
768
+ const leftBullets = slideData.columns.left.map((text) => ({
769
+ text,
770
+ options: { bullet: { type: "bullet" as const }, indentLevel: 0 },
771
+ }));
772
+ slide.addText(leftBullets, {
773
+ x: 0.5,
774
+ y: 1.5,
775
+ w: "44%",
776
+ h: 3.5,
777
+ fontSize: 18,
778
+ color: theme.text,
779
+ valign: "top",
780
+ paraSpaceAfter: 10,
781
+ });
782
+
783
+ // Right column
784
+ const rightBullets = slideData.columns.right.map((text) => ({
785
+ text,
786
+ options: { bullet: { type: "bullet" as const }, indentLevel: 0 },
787
+ }));
788
+ slide.addText(rightBullets, {
789
+ x: "52%",
790
+ y: 1.5,
791
+ w: "44%",
792
+ h: 3.5,
793
+ fontSize: 18,
794
+ color: theme.text,
795
+ valign: "top",
796
+ paraSpaceAfter: 10,
797
+ });
798
+ }
799
+ break;
800
+
801
+ case "quote":
802
+ // Quote slide
803
+ if (slideData.title) {
804
+ slide.addText(slideData.title, {
805
+ x: 0.5,
806
+ y: 0.5,
807
+ w: "90%",
808
+ h: 0.8,
809
+ fontSize: 28,
810
+ bold: true,
811
+ color: primaryColor,
812
+ });
813
+ }
814
+
815
+ const quoteText = slideData.content.join(" ");
816
+ slide.addText(`"${quoteText}"`, {
817
+ x: 1,
818
+ y: "35%",
819
+ w: "80%",
820
+ h: 2,
821
+ fontSize: 28,
822
+ italic: true,
823
+ color: secondaryColor,
824
+ align: "center",
825
+ valign: "middle",
826
+ });
827
+ break;
828
+
829
+ case "code":
830
+ // Code slide
831
+ if (slideData.title) {
832
+ slide.addText(slideData.title, {
833
+ x: 0.5,
834
+ y: 0.5,
835
+ w: "90%",
836
+ h: 0.8,
837
+ fontSize: 32,
838
+ bold: true,
839
+ color: primaryColor,
840
+ });
841
+ }
842
+
843
+ const codeContent = slideData.content.join("\n");
844
+ slide.addText(codeContent, {
845
+ x: 0.5,
846
+ y: 1.5,
847
+ w: "90%",
848
+ h: 4,
849
+ fontSize: 12,
850
+ fontFace: "Courier New",
851
+ color: options.theme === "dark" ? "EAEAEA" : "333333",
852
+ fill: { color: options.theme === "dark" ? "2D2D2D" : "F5F5F5" },
853
+ valign: "top",
854
+ });
855
+ break;
856
+
857
+ case "image":
858
+ // Image slide
859
+ if (slideData.title) {
860
+ slide.addText(slideData.title, {
861
+ x: 0.5,
862
+ y: 0.5,
863
+ w: "90%",
864
+ h: 0.8,
865
+ fontSize: 32,
866
+ bold: true,
867
+ color: primaryColor,
868
+ });
869
+ }
870
+
871
+ // Placeholder for image
872
+ slide.addText("[Image: " + (slideData.imageUrl || slideData.imagePrompt || "Insert image here") + "]", {
873
+ x: 1,
874
+ y: 1.5,
875
+ w: "80%",
876
+ h: 3.5,
877
+ fontSize: 16,
878
+ color: theme.text,
879
+ align: "center",
880
+ valign: "middle",
881
+ fill: { color: "EEEEEE" },
882
+ });
883
+ break;
884
+ }
885
+
886
+ // Add speaker notes
887
+ if (slideData.notes && options.notes) {
888
+ slide.addNotes(slideData.notes);
889
+ }
890
+ }
891
+
892
+ // Add logo if specified
893
+ if (options.logo) {
894
+ try {
895
+ const logoData = await readFile(options.logo);
896
+ const logoBase64 = logoData.toString("base64");
897
+ const ext = extname(options.logo).toLowerCase().replace(".", "");
898
+
899
+ for (let i = 0; i < pptx.slides.length; i++) {
900
+ const logoPos = {
901
+ "top-left": { x: 0.3, y: 0.2 },
902
+ "top-right": { x: 8.5, y: 0.2 },
903
+ "bottom-left": { x: 0.3, y: 4.8 },
904
+ "bottom-right": { x: 8.5, y: 4.8 },
905
+ }[options.logoPosition];
906
+
907
+ pptx.slides[i].addImage({
908
+ data: `image/${ext};base64,${logoBase64}`,
909
+ x: logoPos.x,
910
+ y: logoPos.y,
911
+ w: 1,
912
+ h: 0.5,
913
+ });
914
+ }
915
+ } catch (error) {
916
+ console.warn(" āš ļø Could not add logo:", (error as Error).message);
917
+ }
918
+ }
919
+
920
+ // Generate buffer
921
+ const buffer = await pptx.write({ outputType: "nodebuffer" });
922
+ return buffer as Buffer;
923
+ }
924
+
925
+ // ============================================================================
926
+ // HTML GENERATION
927
+ // ============================================================================
928
+
929
+ function generateHTML(presentation: Presentation, options: SlideOptions): string {
930
+ const theme = THEME_COLORS[options.theme] || THEME_COLORS.minimal;
931
+ const primaryColor = options.primaryColor || theme.primary;
932
+ const secondaryColor = options.secondaryColor || theme.secondary;
933
+
934
+ const slidesHTML = presentation.slides
935
+ .map((slide, index) => {
936
+ let content = "";
937
+
938
+ switch (slide.type) {
939
+ case "title":
940
+ content = `
941
+ <div class="slide slide-title">
942
+ <h1>${slide.title || presentation.title}</h1>
943
+ ${slide.subtitle || presentation.subtitle ? `<h2>${slide.subtitle || presentation.subtitle}</h2>` : ""}
944
+ ${presentation.author ? `<p class="author">${presentation.author}</p>` : ""}
945
+ <p class="date">${presentation.date}</p>
946
+ </div>
947
+ `;
948
+ break;
949
+
950
+ case "two-column":
951
+ content = `
952
+ <div class="slide">
953
+ ${slide.title ? `<h2>${slide.title}</h2>` : ""}
954
+ <div class="two-column">
955
+ <div class="column">
956
+ <ul>${slide.columns?.left.map((item) => `<li>${item}</li>`).join("") || ""}</ul>
957
+ </div>
958
+ <div class="column">
959
+ <ul>${slide.columns?.right.map((item) => `<li>${item}</li>`).join("") || ""}</ul>
960
+ </div>
961
+ </div>
962
+ ${options.slideNumbers ? `<div class="slide-number">${index + 1}</div>` : ""}
963
+ </div>
964
+ `;
965
+ break;
966
+
967
+ case "quote":
968
+ content = `
969
+ <div class="slide slide-quote">
970
+ ${slide.title ? `<h2>${slide.title}</h2>` : ""}
971
+ <blockquote>"${slide.content.join(" ")}"</blockquote>
972
+ ${options.slideNumbers ? `<div class="slide-number">${index + 1}</div>` : ""}
973
+ </div>
974
+ `;
975
+ break;
976
+
977
+ case "code":
978
+ content = `
979
+ <div class="slide">
980
+ ${slide.title ? `<h2>${slide.title}</h2>` : ""}
981
+ <pre><code class="language-${slide.codeLanguage || "text"}">${escapeHTML(slide.content.join("\n"))}</code></pre>
982
+ ${options.slideNumbers ? `<div class="slide-number">${index + 1}</div>` : ""}
983
+ </div>
984
+ `;
985
+ break;
986
+
987
+ default:
988
+ content = `
989
+ <div class="slide">
990
+ ${slide.title ? `<h2>${slide.title}</h2>` : ""}
991
+ <ul>${slide.content.map((item) => `<li>${item}</li>`).join("")}</ul>
992
+ ${options.slideNumbers ? `<div class="slide-number">${index + 1}</div>` : ""}
993
+ </div>
994
+ `;
995
+ }
996
+
997
+ return content;
998
+ })
999
+ .join("\n");
1000
+
1001
+ const css = `
1002
+ * { margin: 0; padding: 0; box-sizing: border-box; }
1003
+
1004
+ body {
1005
+ font-family: ${options.font || "system-ui"}, -apple-system, sans-serif;
1006
+ background: #${theme.background};
1007
+ color: #${theme.text};
1008
+ line-height: 1.6;
1009
+ }
1010
+
1011
+ .slide {
1012
+ width: 100vw;
1013
+ height: 100vh;
1014
+ display: flex;
1015
+ flex-direction: column;
1016
+ justify-content: center;
1017
+ padding: 4rem 6rem;
1018
+ page-break-after: always;
1019
+ }
1020
+
1021
+ .slide-title {
1022
+ text-align: center;
1023
+ align-items: center;
1024
+ }
1025
+
1026
+ .slide-title h1 {
1027
+ font-size: 3.5rem;
1028
+ color: #${primaryColor};
1029
+ margin-bottom: 1rem;
1030
+ }
1031
+
1032
+ .slide-title h2 {
1033
+ font-size: 1.8rem;
1034
+ color: #${secondaryColor};
1035
+ font-weight: normal;
1036
+ margin-bottom: 2rem;
1037
+ }
1038
+
1039
+ .slide-title .author { font-size: 1.3rem; margin-bottom: 0.5rem; }
1040
+ .slide-title .date { font-size: 1rem; opacity: 0.7; }
1041
+
1042
+ .slide h2 {
1043
+ font-size: 2.5rem;
1044
+ color: #${primaryColor};
1045
+ margin-bottom: 2rem;
1046
+ }
1047
+
1048
+ .slide ul {
1049
+ font-size: 1.5rem;
1050
+ margin-left: 2rem;
1051
+ }
1052
+
1053
+ .slide li {
1054
+ margin-bottom: 1rem;
1055
+ line-height: 1.8;
1056
+ }
1057
+
1058
+ .two-column {
1059
+ display: grid;
1060
+ grid-template-columns: 1fr 1fr;
1061
+ gap: 3rem;
1062
+ flex: 1;
1063
+ }
1064
+
1065
+ .slide-quote blockquote {
1066
+ font-size: 2rem;
1067
+ font-style: italic;
1068
+ color: #${secondaryColor};
1069
+ text-align: center;
1070
+ max-width: 80%;
1071
+ margin: 0 auto;
1072
+ }
1073
+
1074
+ pre {
1075
+ background: ${options.theme === "dark" ? "#2d2d2d" : "#f5f5f5"};
1076
+ padding: 1.5rem;
1077
+ border-radius: 8px;
1078
+ overflow-x: auto;
1079
+ font-size: 1rem;
1080
+ }
1081
+
1082
+ code { font-family: 'Monaco', 'Courier New', monospace; }
1083
+
1084
+ .slide-number {
1085
+ position: absolute;
1086
+ bottom: 2rem;
1087
+ right: 2rem;
1088
+ font-size: 0.9rem;
1089
+ opacity: 0.6;
1090
+ }
1091
+
1092
+ @media print {
1093
+ .slide { page-break-after: always; }
1094
+ }
1095
+ `;
1096
+
1097
+ return `<!DOCTYPE html>
1098
+ <html lang="en">
1099
+ <head>
1100
+ <meta charset="UTF-8">
1101
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
1102
+ <title>${presentation.title}</title>
1103
+ <style>${css}</style>
1104
+ </head>
1105
+ <body>
1106
+ ${slidesHTML}
1107
+ </body>
1108
+ </html>`;
1109
+ }
1110
+
1111
+ // ============================================================================
1112
+ // REVEAL.JS GENERATION
1113
+ // ============================================================================
1114
+
1115
+ function generateRevealJS(presentation: Presentation, options: SlideOptions): string {
1116
+ const theme = THEME_COLORS[options.theme] || THEME_COLORS.minimal;
1117
+
1118
+ const slidesHTML = presentation.slides
1119
+ .map((slide) => {
1120
+ let content = "";
1121
+
1122
+ switch (slide.type) {
1123
+ case "title":
1124
+ content = `
1125
+ <section>
1126
+ <h1>${slide.title || presentation.title}</h1>
1127
+ ${slide.subtitle || presentation.subtitle ? `<h3>${slide.subtitle || presentation.subtitle}</h3>` : ""}
1128
+ ${presentation.author ? `<p>${presentation.author}</p>` : ""}
1129
+ <p><small>${presentation.date}</small></p>
1130
+ ${slide.notes && options.notes ? `<aside class="notes">${slide.notes}</aside>` : ""}
1131
+ </section>
1132
+ `;
1133
+ break;
1134
+
1135
+ case "two-column":
1136
+ content = `
1137
+ <section>
1138
+ ${slide.title ? `<h2>${slide.title}</h2>` : ""}
1139
+ <div style="display: flex; gap: 2rem;">
1140
+ <div style="flex: 1;"><ul>${slide.columns?.left.map((item) => `<li>${item}</li>`).join("") || ""}</ul></div>
1141
+ <div style="flex: 1;"><ul>${slide.columns?.right.map((item) => `<li>${item}</li>`).join("") || ""}</ul></div>
1142
+ </div>
1143
+ ${slide.notes && options.notes ? `<aside class="notes">${slide.notes}</aside>` : ""}
1144
+ </section>
1145
+ `;
1146
+ break;
1147
+
1148
+ case "quote":
1149
+ content = `
1150
+ <section>
1151
+ ${slide.title ? `<h2>${slide.title}</h2>` : ""}
1152
+ <blockquote>"${slide.content.join(" ")}"</blockquote>
1153
+ ${slide.notes && options.notes ? `<aside class="notes">${slide.notes}</aside>` : ""}
1154
+ </section>
1155
+ `;
1156
+ break;
1157
+
1158
+ case "code":
1159
+ content = `
1160
+ <section>
1161
+ ${slide.title ? `<h2>${slide.title}</h2>` : ""}
1162
+ <pre><code data-trim data-noescape class="language-${slide.codeLanguage || "text"}">${escapeHTML(slide.content.join("\n"))}</code></pre>
1163
+ ${slide.notes && options.notes ? `<aside class="notes">${slide.notes}</aside>` : ""}
1164
+ </section>
1165
+ `;
1166
+ break;
1167
+
1168
+ default:
1169
+ content = `
1170
+ <section>
1171
+ ${slide.title ? `<h2>${slide.title}</h2>` : ""}
1172
+ <ul>${slide.content.map((item) => `<li class="fragment">${item}</li>`).join("")}</ul>
1173
+ ${slide.notes && options.notes ? `<aside class="notes">${slide.notes}</aside>` : ""}
1174
+ </section>
1175
+ `;
1176
+ }
1177
+
1178
+ return content;
1179
+ })
1180
+ .join("\n");
1181
+
1182
+ const revealTheme = options.theme === "dark" || options.theme === "tech" ? "black" : "white";
1183
+
1184
+ return `<!DOCTYPE html>
1185
+ <html lang="en">
1186
+ <head>
1187
+ <meta charset="UTF-8">
1188
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
1189
+ <title>${presentation.title}</title>
1190
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reveal.css">
1191
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/theme/${revealTheme}.css">
1192
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/plugin/highlight/monokai.css">
1193
+ <style>
1194
+ .reveal h1, .reveal h2 { color: #${options.primaryColor || theme.primary}; }
1195
+ .reveal blockquote { font-style: italic; border-left: 4px solid #${options.secondaryColor || theme.secondary}; }
1196
+ </style>
1197
+ </head>
1198
+ <body>
1199
+ <div class="reveal">
1200
+ <div class="slides">
1201
+ ${slidesHTML}
1202
+ </div>
1203
+ </div>
1204
+ <script src="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reveal.js"></script>
1205
+ <script src="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/plugin/notes/notes.js"></script>
1206
+ <script src="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/plugin/highlight/highlight.js"></script>
1207
+ <script>
1208
+ Reveal.initialize({
1209
+ hash: true,
1210
+ transition: '${options.transition}',
1211
+ transitionSpeed: '${options.transitionSpeed}',
1212
+ slideNumber: ${options.slideNumbers},
1213
+ plugins: [RevealHighlight, RevealNotes]
1214
+ });
1215
+ </script>
1216
+ </body>
1217
+ </html>`;
1218
+ }
1219
+
1220
+ // ============================================================================
1221
+ // PDF GENERATION
1222
+ // ============================================================================
1223
+
1224
+ async function generatePDF(presentation: Presentation, options: SlideOptions): Promise<Buffer> {
1225
+ console.log("šŸ“„ Generating PDF...");
1226
+
1227
+ // Generate HTML first
1228
+ const html = generateHTML(presentation, options);
1229
+
1230
+ // Write temp HTML file
1231
+ const tempDir = options.dir;
1232
+ const tempHtml = join(tempDir, `temp-${Date.now()}.html`);
1233
+ await writeFile(tempHtml, html);
1234
+
1235
+ try {
1236
+ // Use puppeteer to convert to PDF
1237
+ const puppeteer = await import("puppeteer");
1238
+ const browser = await puppeteer.default.launch({
1239
+ headless: true,
1240
+ args: ["--no-sandbox", "--disable-setuid-sandbox"],
1241
+ });
1242
+
1243
+ const page = await browser.newPage();
1244
+ await page.goto(`file://${tempHtml}`, { waitUntil: "networkidle0" });
1245
+
1246
+ // Set viewport based on aspect ratio
1247
+ const viewport =
1248
+ options.aspectRatio === "16:9"
1249
+ ? { width: 1920, height: 1080 }
1250
+ : options.aspectRatio === "4:3"
1251
+ ? { width: 1024, height: 768 }
1252
+ : { width: 1920, height: 1200 };
1253
+
1254
+ await page.setViewport(viewport);
1255
+
1256
+ const pdfBuffer = await page.pdf({
1257
+ format: "A4",
1258
+ landscape: true,
1259
+ printBackground: true,
1260
+ margin: { top: 0, bottom: 0, left: 0, right: 0 },
1261
+ });
1262
+
1263
+ await browser.close();
1264
+
1265
+ // Clean up temp file
1266
+ await unlink(tempHtml);
1267
+
1268
+ return Buffer.from(pdfBuffer);
1269
+ } catch (error: any) {
1270
+ // Clean up temp file on error
1271
+ try {
1272
+ await unlink(tempHtml);
1273
+ } catch {}
1274
+
1275
+ console.warn(" āš ļø PDF generation failed, falling back to HTML");
1276
+ console.warn(` Error: ${error.message}`);
1277
+ throw error;
1278
+ }
1279
+ }
1280
+
1281
+ // ============================================================================
1282
+ // UTILITIES
1283
+ // ============================================================================
1284
+
1285
+ function escapeHTML(text: string): string {
1286
+ return text
1287
+ .replace(/&/g, "&amp;")
1288
+ .replace(/</g, "&lt;")
1289
+ .replace(/>/g, "&gt;")
1290
+ .replace(/"/g, "&quot;")
1291
+ .replace(/'/g, "&#039;");
1292
+ }
1293
+
1294
+ // ============================================================================
1295
+ // MAIN
1296
+ // ============================================================================
1297
+
1298
+ async function main() {
1299
+ try {
1300
+ console.log("\nšŸŽØ Generate Slides v2.0\n");
1301
+
1302
+ const options = parseArguments();
1303
+
1304
+ // Validate input
1305
+ if (!options.inputFile && !options.text && !options.topic) {
1306
+ console.error("āŒ Error: Provide a markdown file, --text, or --topic for AI generation");
1307
+ console.error(" Run with --help for usage information");
1308
+ process.exit(1);
1309
+ }
1310
+
1311
+ let presentation: Presentation;
1312
+
1313
+ // Generate or parse content
1314
+ if (options.topic && (options.aiGenerate || !options.inputFile)) {
1315
+ // AI Generation
1316
+ presentation = await generateSlidesWithAI(options);
1317
+ } else if (options.text) {
1318
+ // Direct text input
1319
+ console.log("šŸ“ Parsing text input...");
1320
+ presentation = parseMarkdown(options.text, options);
1321
+ } else if (options.inputFile) {
1322
+ // File input
1323
+ try {
1324
+ await access(options.inputFile, constants.R_OK);
1325
+ const content = await readFile(options.inputFile, "utf-8");
1326
+ console.log(`šŸ“„ Reading: ${options.inputFile}`);
1327
+ presentation = parseMarkdown(content, options);
1328
+ } catch (error) {
1329
+ console.error(`āŒ Cannot read file: ${options.inputFile}`);
1330
+ process.exit(1);
1331
+ }
1332
+ } else {
1333
+ console.error("āŒ No input provided");
1334
+ process.exit(1);
1335
+ }
1336
+
1337
+ console.log(` Title: ${presentation.title}`);
1338
+ console.log(` Slides: ${presentation.slides.length}`);
1339
+
1340
+ // Create output directory
1341
+ await mkdir(options.dir, { recursive: true });
1342
+
1343
+ // Generate output filename
1344
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-").substring(0, 19);
1345
+ const baseName = options.output ? basename(options.output, extname(options.output)) : `presentation-${timestamp}`;
1346
+
1347
+ let outputPath: string;
1348
+ let outputContent: Buffer | string;
1349
+
1350
+ // Generate based on format
1351
+ console.log(`\nšŸŽ¬ Format: ${options.format.toUpperCase()}`);
1352
+ console.log(` Theme: ${options.theme}`);
1353
+
1354
+ switch (options.format) {
1355
+ case "pptx":
1356
+ outputContent = await generatePPTX(presentation, options);
1357
+ outputPath = options.output || join(options.dir, `${baseName}.pptx`);
1358
+ await writeFile(outputPath, outputContent);
1359
+ break;
1360
+
1361
+ case "pdf":
1362
+ try {
1363
+ outputContent = await generatePDF(presentation, options);
1364
+ outputPath = options.output || join(options.dir, `${baseName}.pdf`);
1365
+ await writeFile(outputPath, outputContent);
1366
+ } catch {
1367
+ // Fallback to HTML
1368
+ outputContent = generateHTML(presentation, options);
1369
+ outputPath = options.output || join(options.dir, `${baseName}.html`);
1370
+ await writeFile(outputPath, outputContent);
1371
+ console.log(" (PDF generation requires puppeteer - saved as HTML)");
1372
+ }
1373
+ break;
1374
+
1375
+ case "revealjs":
1376
+ outputContent = generateRevealJS(presentation, options);
1377
+ outputPath = options.output || join(options.dir, `${baseName}.html`);
1378
+ await writeFile(outputPath, outputContent);
1379
+ break;
1380
+
1381
+ case "html":
1382
+ default:
1383
+ outputContent = generateHTML(presentation, options);
1384
+ outputPath = options.output || join(options.dir, `${baseName}.html`);
1385
+ await writeFile(outputPath, outputContent);
1386
+ break;
1387
+ }
1388
+
1389
+ // Success
1390
+ console.log(`\nāœ… Presentation generated!`);
1391
+ console.log(`\nšŸ“Š Summary:`);
1392
+ console.log(` Title: ${presentation.title}`);
1393
+ console.log(` Slides: ${presentation.slides.length}`);
1394
+ console.log(` Format: ${options.format.toUpperCase()}`);
1395
+ console.log(` Theme: ${options.theme}`);
1396
+ console.log(`\nšŸ’¾ Output: ${outputPath}`);
1397
+
1398
+ // Tips
1399
+ console.log(`\nšŸ’” Tips:`);
1400
+ if (options.format === "pptx") {
1401
+ console.log(" • Open in PowerPoint, Keynote, or Google Slides");
1402
+ console.log(" • Speaker notes are included in Notes view");
1403
+ } else if (options.format === "revealjs") {
1404
+ console.log(" • Press 'S' for speaker notes view");
1405
+ console.log(" • Press 'F' for fullscreen");
1406
+ console.log(" • Press 'O' for slide overview");
1407
+ } else {
1408
+ console.log(" • Open in browser to view");
1409
+ console.log(" • Use Ctrl/Cmd+P to print or save as PDF");
1410
+ }
1411
+ } catch (error) {
1412
+ console.error("āŒ Error:", (error as Error).message);
1413
+ process.exit(1);
1414
+ }
1415
+ }
1416
+
1417
+ main();