@hasna/skills 0.1.27 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/LICENSE +1 -10
  2. package/README.md +141 -39
  3. package/bin/index.js +30121 -27576
  4. package/bin/mcp.js +22073 -18556
  5. package/dist/cli/cli.test-utils.d.ts +15 -0
  6. package/dist/cli/commands/auth.d.ts +2 -0
  7. package/dist/cli/commands/install.d.ts +1 -1
  8. package/dist/cli/commands/runtime-mcp.d.ts +4 -0
  9. package/dist/index.d.ts +9 -4
  10. package/dist/index.js +11606 -598
  11. package/dist/lib/auth-store.d.ts +13 -0
  12. package/dist/lib/installer.d.ts +58 -55
  13. package/dist/lib/mcp-contracts.d.ts +86 -0
  14. package/dist/lib/project-state.d.ts +43 -0
  15. package/dist/lib/registry-data/business-marketing.d.ts +2 -0
  16. package/dist/lib/registry-data/communication.d.ts +2 -0
  17. package/dist/lib/registry-data/content-generation.d.ts +2 -0
  18. package/dist/lib/registry-data/data-analysis.d.ts +2 -0
  19. package/dist/lib/registry-data/design-branding.d.ts +2 -0
  20. package/dist/lib/registry-data/development-tools.d.ts +2 -0
  21. package/dist/lib/registry-data/education-learning.d.ts +2 -0
  22. package/dist/lib/registry-data/event-management.d.ts +2 -0
  23. package/dist/lib/registry-data/finance-compliance.d.ts +2 -0
  24. package/dist/lib/registry-data/health-wellness.d.ts +2 -0
  25. package/dist/lib/registry-data/index.d.ts +2 -0
  26. package/dist/lib/registry-data/media-processing.d.ts +2 -0
  27. package/dist/lib/registry-data/productivity-organization.d.ts +2 -0
  28. package/dist/lib/registry-data/project-management.d.ts +2 -0
  29. package/dist/lib/registry-data/research-writing.d.ts +2 -0
  30. package/dist/lib/registry-data/science-academic.d.ts +2 -0
  31. package/dist/lib/registry-data/travel-lifestyle.d.ts +2 -0
  32. package/dist/lib/registry-data/web-browser.d.ts +2 -0
  33. package/dist/lib/registry-types.d.ts +27 -0
  34. package/dist/lib/registry.d.ts +6 -18
  35. package/dist/lib/remote-registry.d.ts +3 -0
  36. package/dist/lib/run-state.d.ts +60 -0
  37. package/dist/lib/skill-aliases.d.ts +17 -0
  38. package/dist/lib/skillinfo.d.ts +5 -1
  39. package/dist/mcp/discovery-tools.d.ts +2 -0
  40. package/dist/mcp/helpers.d.ts +26 -0
  41. package/dist/mcp/http.d.ts +10 -0
  42. package/dist/mcp/index.d.ts +3 -2
  43. package/dist/mcp/operation-tools.d.ts +2 -0
  44. package/dist/mcp/resource-meta-tools.d.ts +2 -0
  45. package/dist/mcp/schedule-tools.d.ts +2 -0
  46. package/dist/mcp/server.d.ts +4 -0
  47. package/dist/types/api.d.ts +7 -4
  48. package/package.json +22 -11
  49. package/skills/_common/http-client.ts +1 -1
  50. package/skills/_common/index.ts +2 -3
  51. package/skills/_common/install.sh +5 -110
  52. package/skills/_common/installer.ts +31 -282
  53. package/skills/_common/skill-install.ts +14 -181
  54. package/skills/ad-creative-pack/SKILL.md +45 -0
  55. package/skills/ad-creative-pack/package.json +14 -0
  56. package/skills/advanced-math/package.json +3 -1
  57. package/skills/advanced-math/src/calculators.ts +118 -0
  58. package/skills/advanced-math/src/cli.ts +130 -0
  59. package/skills/advanced-math/src/conversion.ts +90 -0
  60. package/skills/advanced-math/src/finance.ts +75 -0
  61. package/skills/advanced-math/src/formatting.ts +95 -0
  62. package/skills/advanced-math/src/index.ts +24 -702
  63. package/skills/advanced-math/src/runtime.ts +49 -0
  64. package/skills/advanced-math/src/symbolic.ts +110 -0
  65. package/skills/advanced-math/src/types.ts +36 -0
  66. package/skills/analyze-data/SKILL.md +2 -2
  67. package/skills/analyze-data/src/analysis.ts +401 -0
  68. package/skills/analyze-data/src/cli.ts +66 -0
  69. package/skills/analyze-data/src/formatters.ts +235 -0
  70. package/skills/analyze-data/src/index.ts +6 -1027
  71. package/skills/analyze-data/src/logger.ts +36 -0
  72. package/skills/analyze-data/src/parsers.ts +57 -0
  73. package/skills/analyze-data/src/stats.ts +151 -0
  74. package/skills/analyze-data/src/types.ts +85 -0
  75. package/skills/api-docs-portal/SKILL.md +46 -0
  76. package/skills/api-docs-portal/package.json +9 -0
  77. package/skills/api-test-suite/src/index.ts +13 -0
  78. package/skills/apidocs/package.json +1 -1
  79. package/skills/apidocs/src/index.ts +3 -0
  80. package/skills/audio/package.json +2 -3
  81. package/skills/audio-cleanup-lab/SKILL.md +2 -2
  82. package/skills/audio-extract/CLAUDE.md +1 -1
  83. package/skills/audio-transcript-pack/SKILL.md +43 -0
  84. package/skills/audio-transcript-pack/package.json +10 -0
  85. package/skills/blog-article/CLAUDE.md +12 -0
  86. package/skills/blog-article/SKILL.md +45 -0
  87. package/skills/{create-blog-article → blog-article}/package.json +3 -3
  88. package/skills/brand-kit/SKILL.md +45 -0
  89. package/skills/brand-kit/package.json +14 -0
  90. package/skills/brand-photo-shoot/SKILL.md +28 -0
  91. package/skills/brand-photo-shoot/package.json +10 -0
  92. package/skills/brand-style-guide/SKILL.md +2 -2
  93. package/skills/brand-style-guide/src/index.ts +0 -0
  94. package/skills/budget-variance-analyzer/SKILL.md +2 -2
  95. package/skills/businessactivity/package.json +1 -1
  96. package/skills/businessactivity/src/index.ts +3 -0
  97. package/skills/calendar-events/src/ai-parser.ts +103 -0
  98. package/skills/calendar-events/src/api.ts +157 -0
  99. package/skills/calendar-events/src/auth.ts +22 -0
  100. package/skills/calendar-events/src/config.ts +6 -0
  101. package/skills/calendar-events/src/format.ts +96 -0
  102. package/skills/calendar-events/src/help.ts +54 -0
  103. package/skills/calendar-events/src/index.ts +21 -524
  104. package/skills/calendar-events/src/logger.ts +34 -0
  105. package/skills/calendar-events/src/types.ts +67 -0
  106. package/skills/compress-video/SKILL.md +2 -2
  107. package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +16 -0
  108. package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.json +227 -0
  109. package/skills/consolelog/package.json +1 -1
  110. package/skills/consolelog/src/index.ts +3 -0
  111. package/skills/contract-review-report/SKILL.md +43 -0
  112. package/skills/contract-review-report/package.json +10 -0
  113. package/skills/convert/SKILL.md +2 -3
  114. package/skills/customer-feedback-report/SKILL.md +44 -0
  115. package/skills/customer-feedback-report/package.json +10 -0
  116. package/skills/dashboard-builder/package.json +3 -1
  117. package/skills/database-explorer/package.json +3 -1
  118. package/skills/deepresearch/README.md +4 -13
  119. package/skills/deploy/src/http-client.ts +1 -1
  120. package/skills/diff-viewer/package.json +4 -1
  121. package/skills/doc-generate/package.json +0 -1
  122. package/skills/doc-generate/src/ai.ts +50 -0
  123. package/skills/doc-generate/src/cli.ts +203 -0
  124. package/skills/doc-generate/src/dependencies.ts +44 -0
  125. package/skills/doc-generate/src/document-builder.ts +299 -0
  126. package/skills/doc-generate/src/index.ts +40 -764
  127. package/skills/doc-generate/src/markdown-parser.ts +125 -0
  128. package/skills/doc-generate/src/types.ts +68 -0
  129. package/skills/domainpurchase/SKILL.md +1 -1
  130. package/skills/domainpurchase/package.json +1 -1
  131. package/skills/domainpurchase/src/index.ts +3 -0
  132. package/skills/domainsearch/SKILL.md +1 -1
  133. package/skills/domainsearch/package.json +1 -1
  134. package/skills/domainsearch/src/index.ts +3 -0
  135. package/skills/email-sequence/SKILL.md +44 -0
  136. package/skills/email-sequence/package.json +14 -0
  137. package/skills/excel/CLAUDE.md +2 -2
  138. package/skills/experiment-power-calculator/package.json +3 -1
  139. package/skills/extract-invoice/src/cli.ts +97 -0
  140. package/skills/extract-invoice/src/extractor.ts +170 -0
  141. package/skills/extract-invoice/src/file-utils.ts +46 -0
  142. package/skills/extract-invoice/src/formatters.ts +144 -0
  143. package/skills/extract-invoice/src/index.ts +44 -629
  144. package/skills/extract-invoice/src/runtime.ts +46 -0
  145. package/skills/extract-invoice/src/types.ts +88 -0
  146. package/skills/folder-tree/package.json +3 -1
  147. package/skills/form-filler/package.json +3 -1
  148. package/skills/generate-api-client/package.json +3 -1
  149. package/skills/generate-api-client/src/generator.ts +47 -0
  150. package/skills/generate-api-client/src/index.ts +3 -777
  151. package/skills/generate-api-client/src/logger.ts +34 -0
  152. package/skills/generate-api-client/src/python-generator.ts +245 -0
  153. package/skills/generate-api-client/src/spec-loader.ts +48 -0
  154. package/skills/generate-api-client/src/type-mappers.ts +79 -0
  155. package/skills/generate-api-client/src/types.ts +76 -0
  156. package/skills/generate-api-client/src/typescript-generator.ts +247 -0
  157. package/skills/generate-book-cover/package.json +3 -1
  158. package/skills/generate-dockerfile/src/cli.ts +78 -0
  159. package/skills/generate-dockerfile/src/dockerfile-templates.ts +392 -0
  160. package/skills/generate-dockerfile/src/index.ts +12 -790
  161. package/skills/generate-dockerfile/src/logger.ts +30 -0
  162. package/skills/generate-dockerfile/src/project-detection.ts +68 -0
  163. package/skills/generate-dockerfile/src/support-files.ts +171 -0
  164. package/skills/generate-dockerfile/src/types.ts +29 -0
  165. package/skills/generate-documentation/src/ai.ts +131 -0
  166. package/skills/generate-documentation/src/cli.ts +71 -0
  167. package/skills/generate-documentation/src/code-parser.ts +300 -0
  168. package/skills/generate-documentation/src/file-processing.ts +182 -0
  169. package/skills/generate-documentation/src/index.ts +13 -753
  170. package/skills/generate-documentation/src/runtime.ts +35 -0
  171. package/skills/generate-documentation/src/types.ts +30 -0
  172. package/skills/generate-env/package.json +3 -1
  173. package/skills/generate-env/src/cli.ts +85 -0
  174. package/skills/generate-env/src/detection.ts +161 -0
  175. package/skills/generate-env/src/env-data.ts +66 -0
  176. package/skills/generate-env/src/generators.ts +240 -0
  177. package/skills/generate-env/src/index.ts +76 -676
  178. package/skills/generate-env/src/runtime.ts +30 -0
  179. package/skills/generate-env/src/types.ts +32 -0
  180. package/skills/generate-favicon/package.json +3 -1
  181. package/skills/generate-mock-data/package.json +3 -1
  182. package/skills/generate-mock-data/src/ai.ts +102 -0
  183. package/skills/generate-mock-data/src/formatters.ts +84 -0
  184. package/skills/generate-mock-data/src/generator.ts +377 -0
  185. package/skills/generate-mock-data/src/index.ts +15 -716
  186. package/skills/generate-mock-data/src/logger.ts +37 -0
  187. package/skills/generate-mock-data/src/presets.ts +110 -0
  188. package/skills/generate-mock-data/src/types.ts +21 -0
  189. package/skills/generate-pr-description/src/ai.ts +144 -0
  190. package/skills/generate-pr-description/src/cli.ts +80 -0
  191. package/skills/generate-pr-description/src/clipboard.ts +30 -0
  192. package/skills/generate-pr-description/src/formatters.ts +231 -0
  193. package/skills/generate-pr-description/src/git.ts +153 -0
  194. package/skills/generate-pr-description/src/index.ts +21 -714
  195. package/skills/generate-pr-description/src/types.ts +49 -0
  196. package/skills/generate-presentation/src/ai-clients.ts +61 -0
  197. package/skills/generate-presentation/src/cli.ts +126 -0
  198. package/skills/generate-presentation/src/index.ts +3 -751
  199. package/skills/generate-presentation/src/logger.ts +67 -0
  200. package/skills/generate-presentation/src/presentation-generator.ts +425 -0
  201. package/skills/generate-presentation/src/runtime.ts +6 -0
  202. package/skills/generate-presentation/src/security.ts +12 -0
  203. package/skills/generate-presentation/src/types.ts +28 -0
  204. package/skills/generate-qrcode/package.json +4 -1
  205. package/skills/generate-regex/package.json +3 -1
  206. package/skills/generate-resume/src/cli.ts +157 -0
  207. package/skills/generate-resume/src/index.ts +13 -917
  208. package/skills/generate-resume/src/parsers.ts +95 -0
  209. package/skills/generate-resume/src/renderers.ts +538 -0
  210. package/skills/generate-resume/src/security.ts +39 -0
  211. package/skills/generate-resume/src/types.ts +86 -0
  212. package/skills/generate-social-posts/src/ai.ts +88 -0
  213. package/skills/generate-social-posts/src/cli.ts +118 -0
  214. package/skills/generate-social-posts/src/exporters.ts +126 -0
  215. package/skills/generate-social-posts/src/generator.ts +130 -0
  216. package/skills/generate-social-posts/src/index.ts +19 -709
  217. package/skills/generate-social-posts/src/platforms.ts +39 -0
  218. package/skills/generate-social-posts/src/runtime.ts +34 -0
  219. package/skills/generate-social-posts/src/source.ts +116 -0
  220. package/skills/generate-social-posts/src/types.ts +58 -0
  221. package/skills/gif-maker/package.json +4 -1
  222. package/skills/github-manager/package.json +3 -1
  223. package/skills/gmail/CLAUDE.md +1 -1
  224. package/skills/highlight-reel-generator/src/index.ts +19 -0
  225. package/skills/hook/src/commands/create.ts +20 -845
  226. package/skills/hook/src/templates/root.ts +196 -0
  227. package/skills/hook/src/templates/source.ts +647 -0
  228. package/skills/http-server/package.json +3 -1
  229. package/skills/icon-pack/README.md +28 -0
  230. package/skills/icon-pack/SKILL.md +23 -0
  231. package/skills/icon-pack/package.json +29 -0
  232. package/skills/{audio → icon-pack}/tsconfig.json +10 -12
  233. package/skills/image/package.json +1 -2
  234. package/skills/implementation-agent/package.json +3 -1
  235. package/skills/implementation-agent/src/ai-generation.ts +225 -0
  236. package/skills/implementation-agent/src/index.ts +3 -960
  237. package/skills/implementation-agent/src/minimist.d.ts +15 -0
  238. package/skills/implementation-agent/src/templates.ts +686 -0
  239. package/skills/implementation-agent/src/types.ts +53 -0
  240. package/skills/implementation-plan/package.json +3 -1
  241. package/skills/implementation-todo/package.json +3 -1
  242. package/skills/invoice/package.json +1 -1
  243. package/skills/invoice/src/index.ts +3 -0
  244. package/skills/invoice-reconciliation/SKILL.md +42 -0
  245. package/skills/invoice-reconciliation/package.json +10 -0
  246. package/skills/landing-page-pack/SKILL.md +47 -0
  247. package/skills/landing-page-pack/package.json +14 -0
  248. package/skills/latex-table-generator/package.json +3 -1
  249. package/skills/logo-design/SKILL.md +25 -44
  250. package/skills/logo-design/package.json +3 -15
  251. package/skills/lorem-generator/package.json +3 -1
  252. package/skills/lorem-generator/src/index.ts +13 -0
  253. package/skills/managehook/package.json +1 -1
  254. package/skills/managehook/src/index.ts +3 -0
  255. package/skills/managemcp/package.json +1 -1
  256. package/skills/managemcp/src/index.ts +3 -0
  257. package/skills/manageskill/package.json +1 -1
  258. package/skills/manageskill/src/index.ts +3 -0
  259. package/skills/markdown-validator/package.json +3 -1
  260. package/skills/markdown-validator/src/index.ts +1 -4
  261. package/skills/market-research-report/SKILL.md +41 -0
  262. package/skills/market-research-report/package.json +10 -0
  263. package/skills/mcp-builder/package.json +4 -1
  264. package/skills/mcp-builder/src/ai-descriptions.ts +37 -0
  265. package/skills/mcp-builder/src/generators.ts +513 -0
  266. package/skills/mcp-builder/src/index.ts +7 -908
  267. package/skills/mcp-builder/src/minimist.d.ts +15 -0
  268. package/skills/mcp-builder/src/naming.ts +12 -0
  269. package/skills/mcp-builder/src/options.ts +170 -0
  270. package/skills/mcp-builder/src/templates.ts +149 -0
  271. package/skills/mcp-builder/src/types.ts +42 -0
  272. package/skills/meeting-pack/SKILL.md +43 -0
  273. package/skills/meeting-pack/package.json +10 -0
  274. package/skills/merge-pdfs/package.json +5 -1
  275. package/skills/migration-plan-pack/SKILL.md +45 -0
  276. package/skills/migration-plan-pack/package.json +10 -0
  277. package/skills/music/package.json +2 -3
  278. package/skills/music-album/SKILL.md +37 -0
  279. package/skills/music-album/package.json +10 -0
  280. package/skills/notion-manager/package.json +3 -1
  281. package/skills/npmpublish/CLAUDE.md +5 -8
  282. package/skills/npmpublish/README.md +5 -26
  283. package/skills/npmpublish/src/index.ts +9 -147
  284. package/skills/one-page-website/SKILL.md +46 -0
  285. package/skills/one-page-website/package.json +10 -0
  286. package/skills/one-page-website/tsconfig.json +8 -0
  287. package/skills/pdf-generate/src/cli.ts +162 -0
  288. package/skills/pdf-generate/src/html.ts +84 -0
  289. package/skills/pdf-generate/src/index.ts +11 -800
  290. package/skills/pdf-generate/src/markdown.ts +27 -0
  291. package/skills/pdf-generate/src/pdf-writer.ts +78 -0
  292. package/skills/pdf-generate/src/runtime.ts +34 -0
  293. package/skills/pdf-generate/src/security.ts +37 -0
  294. package/skills/pdf-generate/src/templates.ts +311 -0
  295. package/skills/pdf-generate/src/types.ts +28 -0
  296. package/skills/pdf-read/SKILL.md +10 -10
  297. package/skills/pdf-to-dataset/SKILL.md +45 -0
  298. package/skills/pdf-to-dataset/package.json +10 -0
  299. package/skills/pdf-to-markdown/SKILL.md +49 -0
  300. package/skills/pdf-to-markdown/package.json +10 -0
  301. package/skills/pdf-to-markdown/tsconfig.json +10 -0
  302. package/skills/performance-audit-report/SKILL.md +42 -0
  303. package/skills/performance-audit-report/package.json +10 -0
  304. package/skills/persona-based-adwriter/src/index.ts +19 -0
  305. package/skills/photo-album/SKILL.md +29 -0
  306. package/skills/photo-album/package.json +9 -0
  307. package/skills/photo-album/tsconfig.json +4 -0
  308. package/skills/pitch-deck/SKILL.md +43 -0
  309. package/skills/pitch-deck/package.json +9 -0
  310. package/skills/playlist-maker/SKILL.md +33 -0
  311. package/skills/playlist-maker/package.json +9 -0
  312. package/skills/playlist-maker/tsconfig.json +4 -0
  313. package/skills/product-mockup/SKILL.md +45 -0
  314. package/skills/product-mockup/package.json +3 -20
  315. package/skills/product-mockup/tsconfig.json +3 -5
  316. package/skills/project-retro-companion/src/index.ts +19 -0
  317. package/skills/proposal-pack/SKILL.md +45 -0
  318. package/skills/proposal-pack/package.json +10 -0
  319. package/skills/read-pdf/SKILL.md +5 -4
  320. package/skills/repo-onboarding-report/SKILL.md +42 -0
  321. package/skills/repo-onboarding-report/package.json +10 -0
  322. package/skills/sales-call-recapper/src/index.ts +20 -0
  323. package/skills/salescopy/package.json +1 -1
  324. package/skills/salescopy/src/index.ts +3 -0
  325. package/skills/scaffold-project/src/ai-detect.ts +136 -0
  326. package/skills/scaffold-project/src/file-generators.ts +292 -0
  327. package/skills/scaffold-project/src/index.ts +8 -991
  328. package/skills/scaffold-project/src/project-config.ts +338 -0
  329. package/skills/scaffold-project/src/templates.ts +173 -0
  330. package/skills/scaffold-project/src/types.ts +58 -0
  331. package/skills/scientific-figure-check/package.json +3 -1
  332. package/skills/sdk-generator/SKILL.md +45 -0
  333. package/skills/sdk-generator/package.json +10 -0
  334. package/skills/sdk-generator/tsconfig.json +8 -0
  335. package/skills/security-audit/src/index.ts +25 -6
  336. package/skills/security-audit-report/SKILL.md +40 -0
  337. package/skills/security-audit-report/package.json +10 -0
  338. package/skills/seo-content-pack/SKILL.md +44 -0
  339. package/skills/seo-content-pack/package.json +9 -0
  340. package/skills/short-video-pack/SKILL.md +30 -0
  341. package/skills/short-video-pack/package.json +10 -0
  342. package/skills/slack-assistant/package.json +3 -1
  343. package/skills/slide-deck-generator/SKILL.md +44 -0
  344. package/skills/slide-deck-generator/package.json +10 -0
  345. package/skills/sms/package.json +1 -1
  346. package/skills/sms/src/index.ts +15 -0
  347. package/skills/social-content-calendar/SKILL.md +45 -0
  348. package/skills/social-content-calendar/package.json +14 -0
  349. package/skills/split-pdf/package.json +4 -1
  350. package/skills/subtitle/package.json +2 -1
  351. package/skills/subtitle/src/index.ts +3 -0
  352. package/skills/terraform-generator/package.json +3 -1
  353. package/skills/test-suite-generator/SKILL.md +41 -0
  354. package/skills/test-suite-generator/package.json +10 -0
  355. package/skills/timesheet/package.json +1 -1
  356. package/skills/timesheet/src/index.ts +3 -0
  357. package/skills/transcript/SKILL.md +1 -8
  358. package/skills/validate-config/package.json +3 -1
  359. package/skills/video/package.json +6 -4
  360. package/skills/video-downloader/package.json +3 -1
  361. package/skills/video-highlight-pack/SKILL.md +44 -0
  362. package/skills/video-highlight-pack/package.json +10 -0
  363. package/skills/voiceover-jingle-pack/SKILL.md +28 -0
  364. package/skills/voiceover-jingle-pack/package.json +10 -0
  365. package/skills/watermark/package.json +6 -1
  366. package/skills/webcrawling/package.json +2 -1
  367. package/skills/write/SKILL.md +6 -6
  368. package/dist/server/serve.d.ts +0 -11
  369. package/skills/apidocs/.claude/settings.json +0 -5
  370. package/skills/audio/.env.example +0 -14
  371. package/skills/audio/QUICKSTART.md +0 -158
  372. package/skills/audio/README.md +0 -256
  373. package/skills/audio/src/index-local.ts +0 -206
  374. package/skills/audio/src/index.ts +0 -95
  375. package/skills/audio/src/providers/elevenlabs.ts +0 -115
  376. package/skills/audio/src/providers/google.ts +0 -116
  377. package/skills/audio/src/providers/minimax.ts +0 -83
  378. package/skills/audio/src/providers/openai.ts +0 -115
  379. package/skills/audio/src/types.ts +0 -79
  380. package/skills/audiobook-chapter-proofer/CLAUDE.md +0 -19
  381. package/skills/audiobook-chapter-proofer/package.json +0 -27
  382. package/skills/audiobook-chapter-proofer/src/index.ts +0 -285
  383. package/skills/browse/src/client.ts +0 -373
  384. package/skills/browse/src/index-local.ts +0 -430
  385. package/skills/browse/src/index.ts +0 -110
  386. package/skills/browse/src/sse-server.ts +0 -919
  387. package/skills/browse/src/types.ts +0 -104
  388. package/skills/consolelog/src/server/index.ts +0 -508
  389. package/skills/create-blog-article/CLAUDE.md +0 -19
  390. package/skills/create-blog-article/src/index.ts +0 -745
  391. package/skills/create-blog-article/tsconfig.json +0 -10
  392. package/skills/deepresearch/src/agents/query-generator.ts +0 -91
  393. package/skills/deepresearch/src/agents/synthesizer.ts +0 -111
  394. package/skills/deepresearch/src/index.ts +0 -224
  395. package/skills/deepresearch/src/research.ts +0 -166
  396. package/skills/deepresearch/src/services/anthropic.ts +0 -69
  397. package/skills/deepresearch/src/services/exa.ts +0 -108
  398. package/skills/deepresearch/src/services/firecrawl.ts +0 -88
  399. package/skills/deepresearch/src/services/openai.ts +0 -81
  400. package/skills/deepresearch/src/types.ts +0 -76
  401. package/skills/deepresearch/src/utils/file.ts +0 -111
  402. package/skills/deepresearch/src/utils/logger.ts +0 -84
  403. package/skills/domainpurchase/src/server/index.ts +0 -332
  404. package/skills/domainsearch/src/server/index.ts +0 -229
  405. package/skills/e2bswarm/README.md +0 -135
  406. package/skills/e2bswarm/SKILL.md +0 -118
  407. package/skills/e2bswarm/examples/tasks-example.json +0 -38
  408. package/skills/e2bswarm/package.json +0 -59
  409. package/skills/e2bswarm/src/commands/collect.ts +0 -135
  410. package/skills/e2bswarm/src/commands/install.ts +0 -164
  411. package/skills/e2bswarm/src/commands/kill.ts +0 -62
  412. package/skills/e2bswarm/src/commands/spawn.ts +0 -134
  413. package/skills/e2bswarm/src/commands/status.ts +0 -90
  414. package/skills/e2bswarm/src/commands/sync.ts +0 -208
  415. package/skills/e2bswarm/src/index.ts +0 -121
  416. package/skills/e2bswarm/src/lib/config.ts +0 -75
  417. package/skills/e2bswarm/src/lib/e2b.ts +0 -490
  418. package/skills/e2bswarm/src/lib/github.ts +0 -253
  419. package/skills/e2bswarm/src/lib/logger.ts +0 -41
  420. package/skills/e2bswarm/src/lib/paths.ts +0 -75
  421. package/skills/e2bswarm/src/lib/tasks.ts +0 -320
  422. package/skills/e2bswarm/src/types/index.ts +0 -107
  423. package/skills/e2bswarm/templates/codebox/e2b.Dockerfile +0 -38
  424. package/skills/e2bswarm/templates/codebox/e2b.toml +0 -3
  425. package/skills/e2bswarm/templates/setup.sh +0 -21
  426. package/skills/e2bswarm/tsconfig.json +0 -19
  427. package/skills/generate-book-cover/src/index.ts +0 -694
  428. package/skills/image/src/index-local.ts +0 -206
  429. package/skills/image/src/index.ts +0 -96
  430. package/skills/image/src/providers/google.ts +0 -79
  431. package/skills/image/src/providers/minimax.ts +0 -94
  432. package/skills/image/src/providers/openai.ts +0 -80
  433. package/skills/image/src/providers/xai.ts +0 -73
  434. package/skills/image/src/types.ts +0 -37
  435. package/skills/logo-design/CLAUDE.md +0 -30
  436. package/skills/logo-design/src/index.ts +0 -322
  437. package/skills/managehook/src/server/index.ts +0 -108
  438. package/skills/managemcp/src/server/index.ts +0 -108
  439. package/skills/manageskill/src/server/index.ts +0 -108
  440. package/skills/music/CLAUDE.md +0 -9
  441. package/skills/music/src/index.ts +0 -94
  442. package/skills/music/tsconfig.json +0 -10
  443. package/skills/pdf-read/src/index.ts +0 -320
  444. package/skills/product-mockup/CLAUDE.md +0 -19
  445. package/skills/product-mockup/src/index.ts +0 -290
  446. package/skills/read-pdf/src/index.ts +0 -388
  447. package/skills/remove-background/src/index.ts +0 -405
  448. package/skills/sound-effects/SKILL.md +0 -34
  449. package/skills/sound-effects/package.json +0 -21
  450. package/skills/sound-effects/src/index.ts +0 -172
  451. package/skills/sound-effects/tsconfig.json +0 -8
  452. package/skills/transcript/src/chunker.ts +0 -215
  453. package/skills/transcript/src/formatter.ts +0 -134
  454. package/skills/transcript/src/index-local.ts +0 -226
  455. package/skills/transcript/src/index.ts +0 -110
  456. package/skills/transcript/src/providers/elevenlabs.ts +0 -133
  457. package/skills/transcript/src/providers/gemini.ts +0 -192
  458. package/skills/transcript/src/providers/index.ts +0 -54
  459. package/skills/transcript/src/providers/openai.ts +0 -203
  460. package/skills/transcript/src/types.ts +0 -106
  461. package/skills/video/.env.example +0 -14
  462. package/skills/video/EXAMPLES.md +0 -266
  463. package/skills/video/LICENSE +0 -192
  464. package/skills/video/README.md +0 -174
  465. package/skills/video/src/cli.ts +0 -155
  466. package/skills/video/src/index-local.ts +0 -148
  467. package/skills/video/src/index.ts +0 -96
  468. package/skills/video/src/providers/google-veo.ts +0 -126
  469. package/skills/video/src/providers/index.ts +0 -22
  470. package/skills/video/src/providers/minimax.ts +0 -100
  471. package/skills/video/src/providers/openai-sora.ts +0 -164
  472. package/skills/video/src/providers/runway.ts +0 -159
  473. package/skills/video/src/types.ts +0 -35
  474. package/skills/video/tsconfig.json +0 -22
  475. package/skills/voiceover-casting-assistant/CLAUDE.md +0 -19
  476. package/skills/voiceover-casting-assistant/package.json +0 -27
  477. package/skills/voiceover-casting-assistant/src/index.ts +0 -255
  478. package/skills/voiceover-casting-assistant/tsconfig.json +0 -10
  479. package/skills/webcrawling/src/commands/config.ts +0 -34
  480. package/skills/webcrawling/src/commands/crawl.ts +0 -33
  481. package/skills/webcrawling/src/commands/scrape.ts +0 -32
  482. package/skills/webcrawling/src/commands/sessions.ts +0 -42
  483. package/skills/webcrawling/src/lib/crawler.ts +0 -174
  484. package/skills/webcrawling/src/lib/storage.ts +0 -130
  485. package/skills/webcrawling/src/types/index.ts +0 -45
  486. package/skills/webcrawling/src/utils/logger.ts +0 -30
  487. package/skills/webcrawling/src/utils/paths.ts +0 -28
  488. /package/skills/{audiobook-chapter-proofer → blog-article}/tsconfig.json +0 -0
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: brand-photo-shoot
3
+ description: Generate hosted brand or product photo shoot sets
4
+ ---
5
+
6
+ # Brand Photo Shoot
7
+
8
+ Create a hosted premium product or brand photo shoot set with prompt planning, multiple scenes, selectable aspect ratios, gallery exports, captions, manifests, and receipts.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ skills run brand-photo-shoot "premium coffee subscription campaign" --scenes 8 --aspect-ratios "1:1,4:5,16:9"
14
+ skills run brand-photo-shoot --brief ./brand.md --style "editorial daylight studio"
15
+ ```
16
+
17
+ ## Output
18
+
19
+ - `gallery/scene-*.png`
20
+ - `prompt-plan.md`
21
+ - `captions.csv`
22
+ - `manifest.json`
23
+ - `receipt.json`
24
+
25
+ ## Requirements
26
+
27
+ Hosted premium execution requires `SKILLS_API_KEY` or `skills auth login`.
28
+ Provider keys stay server-side.
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "brand-photo-shoot",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "description": "Hosted premium brand photo shoot package generator",
6
+ "type": "module",
7
+ "bin": {
8
+ "brand-photo-shoot": "./src/index.ts"
9
+ }
10
+ }
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: Brand Style Guide
2
+ name: brand-style-guide
3
3
  version: 1.0.0
4
4
  description: Perform brand style guide operations
5
5
  author: skills.md
@@ -10,4 +10,4 @@ tags:
10
10
  ---
11
11
  --brand "Brightwave"
12
12
  --voice "Optimistic, transparent, empowering"
13
- --audience "Gen Z investors"
13
+ --audience "Gen Z investors"
File without changes
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: Budget Variance Analyzer
2
+ name: budget-variance-analyzer
3
3
  version: 0.1.0
4
4
  description: Explain budget versus actual variances with performance insights, key drivers, and recommended actions
5
5
  author: skills.md
@@ -80,4 +80,4 @@ skills run budget-variance-analyzer -- --text "Engineering: Budget 500k, Actual
80
80
  ## Requirements
81
81
 
82
82
  - `OPENAI_API_KEY` environment variable.
83
- - Bun runtime.
83
+ - Bun runtime.
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "description": "Business activity, workflow, and ownership management service",
6
6
  "bin": {
7
- "businessactivity": "./bin/cli.ts"
7
+ "businessactivity": "src/index.ts"
8
8
  },
9
9
  "scripts": {
10
10
  "dev": "bun run bin/cli.ts",
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+
3
+ console.log("Usage: skills run businessactivity -- <command> [options]");
@@ -0,0 +1,103 @@
1
+ import { REQUEST_TIMEOUT_MS } from "./config";
2
+ import { getOpenAIKey } from "./auth";
3
+ import { log } from "./logger";
4
+ import type { ParsedEvent } from "./types";
5
+
6
+ export async function parseEventWithAI(
7
+ text: string,
8
+ timezone: string
9
+ ): Promise<ParsedEvent> {
10
+ const openaiKey = getOpenAIKey();
11
+ if (!openaiKey) {
12
+ throw new Error("OPENAI_API_KEY is required for natural language parsing. Use 'create' command with explicit options instead.");
13
+ }
14
+
15
+ const now = new Date();
16
+ const currentDate = now.toISOString().split("T")[0];
17
+ const currentTime = now.toTimeString().split(" ")[0];
18
+ const dayOfWeek = now.toLocaleDateString("en-US", { weekday: "long" });
19
+
20
+ const systemPrompt = `You are a calendar event parser. Extract event details from natural language and return a JSON object.
21
+
22
+ Current context:
23
+ - Today is ${dayOfWeek}, ${currentDate}
24
+ - Current time is ${currentTime}
25
+ - Timezone: ${timezone}
26
+
27
+ Rules:
28
+ 1. Parse the input and extract: title, start date/time, end date/time, location, description, attendees
29
+ 2. For relative dates like "tomorrow", "next week", "next Monday", calculate the actual date
30
+ 3. "Next week" means 7 days from today
31
+ 4. If only a time is given (e.g., "at 5am"), assume it's the next occurrence of that time
32
+ 5. If no duration is specified, default to 1 hour for meetings/events
33
+ 6. For all-day events (like "vacation on Dec 25"), set isAllDay to true
34
+ 7. Return dates in ISO 8601 format with timezone offset
35
+
36
+ Return ONLY a valid JSON object with this structure:
37
+ {
38
+ "title": "Event title",
39
+ "startDateTime": "2025-01-15T10:00:00-08:00",
40
+ "endDateTime": "2025-01-15T11:00:00-08:00",
41
+ "isAllDay": false,
42
+ "location": "optional location",
43
+ "description": "optional description",
44
+ "attendees": ["email@example.com"]
45
+ }
46
+
47
+ For all-day events, use date format without time:
48
+ {
49
+ "title": "Vacation",
50
+ "startDateTime": "2025-01-15",
51
+ "endDateTime": "2025-01-16",
52
+ "isAllDay": true
53
+ }`;
54
+
55
+ log(`OpenAI API request: Parsing event`, "debug");
56
+
57
+ const response = await fetch("https://api.openai.com/v1/chat/completions", {
58
+ method: "POST",
59
+ headers: {
60
+ Authorization: `Bearer ${openaiKey}`,
61
+ "Content-Type": "application/json",
62
+ },
63
+ body: JSON.stringify({
64
+ model: "gpt-4o-mini",
65
+ messages: [
66
+ { role: "system", content: systemPrompt },
67
+ { role: "user", content: text },
68
+ ],
69
+ temperature: 0,
70
+ response_format: { type: "json_object" },
71
+ }),
72
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
73
+ });
74
+
75
+ log(`OpenAI API response: ${response.status}`, "debug");
76
+
77
+ if (!response.ok) {
78
+ const error = await response.json().catch(() => ({}));
79
+ throw new Error(error.error?.message || `OpenAI API error: ${response.status}`);
80
+ }
81
+
82
+ const data = await response.json();
83
+ const content = data.choices?.[0]?.message?.content;
84
+
85
+ if (!content) {
86
+ throw new Error("Failed to parse event from AI response");
87
+ }
88
+
89
+ try {
90
+ const parsed = JSON.parse(content) as ParsedEvent;
91
+
92
+ // Validate required fields
93
+ if (!parsed.title || !parsed.startDateTime || !parsed.endDateTime) {
94
+ throw new Error("AI response missing required fields");
95
+ }
96
+
97
+ return parsed;
98
+ } catch (e) {
99
+ throw new Error(`Failed to parse AI response: ${e instanceof Error ? e.message : "Invalid JSON"}`);
100
+ }
101
+ }
102
+
103
+ // List calendars
@@ -0,0 +1,157 @@
1
+ import { CALENDAR_API_BASE, REQUEST_TIMEOUT_MS } from "./config";
2
+ import { log } from "./logger";
3
+ import type { Calendar, CalendarEvent, CalendarListResponse, EventsListResponse } from "./types";
4
+
5
+ export async function calendarRequest<T>(
6
+ endpoint: string,
7
+ accessToken: string,
8
+ options: RequestInit = {}
9
+ ): Promise<T> {
10
+ const url = `${CALENDAR_API_BASE}${endpoint}`;
11
+
12
+ log(`Calendar API request: ${options.method || "GET"} ${endpoint}`, "debug");
13
+
14
+ try {
15
+ const response = await fetch(url, {
16
+ ...options,
17
+ headers: {
18
+ Authorization: `Bearer ${accessToken}`,
19
+ Accept: "application/json",
20
+ "Content-Type": "application/json",
21
+ ...options.headers,
22
+ },
23
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
24
+ });
25
+
26
+ log(`Calendar API response: ${response.status}`, "debug");
27
+
28
+ if (!response.ok) {
29
+ const error = await response.json().catch(() => ({}));
30
+ if (response.status === 401) {
31
+ log("Error: Google Calendar access token expired or invalid.", "error");
32
+ console.error("Please reconnect your Google Calendar in the Connectors dashboard.");
33
+ process.exit(1);
34
+ }
35
+ throw new Error(error.error?.message || `Calendar API error: ${response.status}`);
36
+ }
37
+
38
+ // Handle empty responses
39
+ if (response.status === 204) {
40
+ return {} as T;
41
+ }
42
+
43
+ return response.json();
44
+ } catch (error) {
45
+ if (error instanceof Error && error.name === "TimeoutError") {
46
+ throw new Error(`Calendar API request timed out after ${REQUEST_TIMEOUT_MS / 1000}s`);
47
+ }
48
+ throw error;
49
+ }
50
+ }
51
+
52
+ // Parse natural language event using OpenAI
53
+
54
+ export async function listCalendars(accessToken: string): Promise<Calendar[]> {
55
+ const response = await calendarRequest<CalendarListResponse>(
56
+ "/users/me/calendarList",
57
+ accessToken
58
+ );
59
+ return response.items || [];
60
+ }
61
+
62
+ // List events
63
+ export async function listEvents(
64
+ accessToken: string,
65
+ options: {
66
+ calendarId: string;
67
+ timeMin?: string;
68
+ timeMax?: string;
69
+ maxResults?: number;
70
+ pageToken?: string;
71
+ }
72
+ ): Promise<EventsListResponse> {
73
+ const params = new URLSearchParams();
74
+
75
+ if (options.timeMin) {
76
+ params.set("timeMin", options.timeMin);
77
+ }
78
+ if (options.timeMax) {
79
+ params.set("timeMax", options.timeMax);
80
+ }
81
+ if (options.maxResults) {
82
+ params.set("maxResults", options.maxResults.toString());
83
+ }
84
+ if (options.pageToken) {
85
+ params.set("pageToken", options.pageToken);
86
+ }
87
+
88
+ params.set("singleEvents", "true");
89
+ params.set("orderBy", "startTime");
90
+
91
+ return calendarRequest(
92
+ `/calendars/${encodeURIComponent(options.calendarId)}/events?${params.toString()}`,
93
+ accessToken
94
+ );
95
+ }
96
+
97
+ // Get single event
98
+ export async function getEvent(
99
+ accessToken: string,
100
+ calendarId: string,
101
+ eventId: string
102
+ ): Promise<CalendarEvent> {
103
+ return calendarRequest(
104
+ `/calendars/${encodeURIComponent(calendarId)}/events/${encodeURIComponent(eventId)}`,
105
+ accessToken
106
+ );
107
+ }
108
+
109
+ // Create event
110
+ export async function createEvent(
111
+ accessToken: string,
112
+ calendarId: string,
113
+ event: Partial<CalendarEvent>
114
+ ): Promise<CalendarEvent> {
115
+ return calendarRequest(
116
+ `/calendars/${encodeURIComponent(calendarId)}/events`,
117
+ accessToken,
118
+ {
119
+ method: "POST",
120
+ body: JSON.stringify(event),
121
+ }
122
+ );
123
+ }
124
+
125
+ // Update event
126
+ export async function updateEvent(
127
+ accessToken: string,
128
+ calendarId: string,
129
+ eventId: string,
130
+ updates: Partial<CalendarEvent>
131
+ ): Promise<CalendarEvent> {
132
+ return calendarRequest(
133
+ `/calendars/${encodeURIComponent(calendarId)}/events/${encodeURIComponent(eventId)}`,
134
+ accessToken,
135
+ {
136
+ method: "PATCH",
137
+ body: JSON.stringify(updates),
138
+ }
139
+ );
140
+ }
141
+
142
+ // Delete event
143
+ export async function deleteEvent(
144
+ accessToken: string,
145
+ calendarId: string,
146
+ eventId: string
147
+ ): Promise<void> {
148
+ await calendarRequest(
149
+ `/calendars/${encodeURIComponent(calendarId)}/events/${encodeURIComponent(eventId)}`,
150
+ accessToken,
151
+ {
152
+ method: "DELETE",
153
+ }
154
+ );
155
+ }
156
+
157
+ // Format date for display
@@ -0,0 +1,22 @@
1
+ import { log } from "./logger";
2
+
3
+ export function getAccessToken(): string {
4
+ const token = process.env.GOOGLE_CALENDAR_ACCESS_TOKEN;
5
+ if (!token) {
6
+ log("Error: Google Calendar not connected.", "error");
7
+ console.error("");
8
+ console.error("To use this skill, you need to connect your Google Calendar:");
9
+ console.error("1. Go to https://skills.md/dashboard/connectors");
10
+ console.error("2. Click 'Connect' on the Google Calendar connector");
11
+ console.error("3. Authorize access to your Google Calendar");
12
+ process.exit(1);
13
+ }
14
+ return token;
15
+ }
16
+
17
+ // Get OpenAI API key
18
+ export function getOpenAIKey(): string | null {
19
+ return process.env.OPENAI_API_KEY || null;
20
+ }
21
+
22
+ // Make authenticated Calendar API request
@@ -0,0 +1,6 @@
1
+ export const CALENDAR_API_BASE = "https://www.googleapis.com/calendar/v3";
2
+
3
+ // Request timeout in milliseconds (30 seconds)
4
+ export const REQUEST_TIMEOUT_MS = 30000;
5
+
6
+ // Constants
@@ -0,0 +1,96 @@
1
+ import type { Calendar, CalendarEvent } from "./types";
2
+
3
+ export function formatDate(dateStr: string): string {
4
+ const date = new Date(dateStr);
5
+ return date.toLocaleDateString("en-US", {
6
+ weekday: "short",
7
+ month: "short",
8
+ day: "numeric",
9
+ year: "numeric",
10
+ });
11
+ }
12
+
13
+ // Format time for display
14
+ export function formatTime(dateStr: string): string {
15
+ const date = new Date(dateStr);
16
+ return date.toLocaleTimeString("en-US", {
17
+ hour: "2-digit",
18
+ minute: "2-digit",
19
+ hour12: true,
20
+ });
21
+ }
22
+
23
+ // Format events for text output
24
+ export function formatEventsText(events: CalendarEvent[]): string {
25
+ if (events.length === 0) {
26
+ return "No upcoming events found.";
27
+ }
28
+
29
+ const lines: string[] = [];
30
+ let currentDate = "";
31
+
32
+ for (const event of events) {
33
+ const startDate = event.start.dateTime || event.start.date || "";
34
+ const eventDate = formatDate(startDate);
35
+
36
+ if (eventDate !== currentDate) {
37
+ if (currentDate !== "") lines.push("");
38
+ lines.push(eventDate);
39
+ currentDate = eventDate;
40
+ }
41
+
42
+ const isAllDay = !event.start.dateTime;
43
+ if (isAllDay) {
44
+ lines.push(` All Day ${event.summary || "(No title)"}`);
45
+ } else {
46
+ const startTime = formatTime(event.start.dateTime!);
47
+ const endTime = formatTime(event.end.dateTime!);
48
+ lines.push(` ${startTime} - ${endTime} ${event.summary || "(No title)"}`);
49
+ }
50
+
51
+ if (event.location) {
52
+ lines.push(` Location: ${event.location}`);
53
+ }
54
+
55
+ lines.push(` ID: ${event.id}`);
56
+ }
57
+
58
+ return lines.join("\n");
59
+ }
60
+
61
+ // Format calendars for text output
62
+ export function formatCalendarsText(calendars: Calendar[]): string {
63
+ const lines = ["Your Calendars", "==============", ""];
64
+
65
+ for (const cal of calendars) {
66
+ const primary = cal.primary ? " (primary)" : "";
67
+ lines.push(`${cal.summary}${primary}`);
68
+ lines.push(` ID: ${cal.id}`);
69
+ if (cal.description) {
70
+ lines.push(` Description: ${cal.description}`);
71
+ }
72
+ lines.push("");
73
+ }
74
+
75
+ return lines.join("\n");
76
+ }
77
+
78
+ // Parse attendees from comma-separated string
79
+ export function parseAttendees(input: string): Array<{ email: string }> {
80
+ return input
81
+ .split(",")
82
+ .map((email) => email.trim())
83
+ .filter(Boolean)
84
+ .map((email) => ({ email }));
85
+ }
86
+
87
+ // Parse reminder minutes from comma-separated string
88
+ export function parseReminders(input: string): Array<{ method: string; minutes: number }> {
89
+ return input
90
+ .split(",")
91
+ .map((m) => parseInt(m.trim(), 10))
92
+ .filter((m) => !isNaN(m))
93
+ .map((minutes) => ({ method: "popup", minutes }));
94
+ }
95
+
96
+ // Show help
@@ -0,0 +1,54 @@
1
+ export function showHelp(): void {
2
+ console.log(`
3
+ Calendar Events - Manage Google Calendar events
4
+
5
+ Usage:
6
+ skills run calendar-events -- <command> [options]
7
+
8
+ Commands:
9
+ list List upcoming events
10
+ create Create a new event with explicit options
11
+ add <text> Create event from natural language (AI-powered)
12
+ update Update an existing event
13
+ delete Delete an event
14
+ get Get details of a specific event
15
+ calendars List available calendars
16
+
17
+ Options:
18
+ --days <n> Days to look ahead (for list) [default: 14]
19
+ --max <n> Maximum events to return [default: 50]
20
+ --calendar <id> Calendar ID [default: primary]
21
+ --id <event-id> Event ID (for get/update/delete)
22
+ --title <text> Event title
23
+ --start <datetime> Start time (ISO 8601: "2025-01-15T10:00:00")
24
+ --end <datetime> End time (ISO 8601: "2025-01-15T11:00:00")
25
+ --duration <mins> Duration in minutes (alternative to --end)
26
+ --date <date> Date for all-day event (YYYY-MM-DD)
27
+ --all-day Create as all-day event
28
+ --location <text> Event location
29
+ --description <text> Event description
30
+ --attendees <emails> Comma-separated attendee emails (create/update)
31
+ --reminder <mins> Reminder minutes (comma-separated, e.g., 10,30)
32
+ --format <format> Output format: text or json [default: text]
33
+ --help, -h Show this help
34
+
35
+ Examples:
36
+ # List events for next 7 days
37
+ skills run calendar-events -- list --days 7
38
+
39
+ # Create an event with explicit options
40
+ skills run calendar-events -- create --title "Meeting" --start "2025-01-15T10:00:00" --end "2025-01-15T11:00:00"
41
+
42
+ # Create an event using natural language (AI-powered)
43
+ skills run calendar-events -- add "Team standup next Monday at 9am for 30 minutes"
44
+ skills run calendar-events -- add "Lunch with Sarah tomorrow at noon at Cafe Milano"
45
+ skills run calendar-events -- add "Vacation Dec 25-27"
46
+
47
+ # Delete an event
48
+ skills run calendar-events -- delete --id abc123
49
+
50
+ Note: The 'add' command requires OPENAI_API_KEY for natural language parsing.
51
+ `);
52
+ }
53
+
54
+ // Main function