@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,1149 @@
1
+ #!/usr/bin/env bun
2
+
3
+ /**
4
+ * Deep Research Skill
5
+ *
6
+ * Performs comprehensive multi-step research using AI and web search.
7
+ * Breaks down questions, searches sources, analyzes content, and generates
8
+ * detailed reports with proper citations.
9
+ */
10
+
11
+ import { parseArgs } from "util";
12
+ import { writeFile, mkdir, appendFile } from "fs/promises";
13
+ import { join } from "path";
14
+ import { existsSync, mkdirSync } from "fs";
15
+ import { randomUUID } from "crypto";
16
+
17
+ // ============================================================================
18
+ // Security: HTML Escaping to prevent XSS
19
+ // ============================================================================
20
+
21
+ /**
22
+ * Escape HTML special characters to prevent XSS attacks
23
+ */
24
+ function escapeHtml(str: string | undefined | null): string {
25
+ if (str === undefined || str === null) return "";
26
+ return String(str)
27
+ .replace(/&/g, "&")
28
+ .replace(/</g, "&lt;")
29
+ .replace(/>/g, "&gt;")
30
+ .replace(/"/g, "&quot;")
31
+ .replace(/'/g, "&#x27;");
32
+ }
33
+
34
+ // ============================================================================
35
+ // Constants & Logging
36
+ // ============================================================================
37
+
38
+ const SKILL_NAME = "deep-research";
39
+ const SESSION_ID = randomUUID().slice(0, 8);
40
+ const SKILLS_OUTPUT_DIR = process.env.SKILLS_OUTPUT_DIR || join(process.cwd(), ".skills");
41
+ const LOGS_DIR = join(SKILLS_OUTPUT_DIR, "logs", SKILL_NAME);
42
+ const SESSION_TIMESTAMP = new Date().toISOString().replace(/[:.]/g, "_").slice(0, 19);
43
+
44
+ function ensureDir(dir: string) {
45
+ if (!existsSync(dir)) {
46
+ mkdirSync(dir, { recursive: true });
47
+ }
48
+ }
49
+
50
+ async function log(message: string, level: "info" | "error" | "success" | "debug" = "info") {
51
+ ensureDir(LOGS_DIR);
52
+ const timestamp = new Date().toISOString();
53
+ const logFile = join(LOGS_DIR, `log_${SESSION_TIMESTAMP}_${SESSION_ID}.log`);
54
+ const logEntry = `[${timestamp}] [${level.toUpperCase()}] ${message}\n`;
55
+
56
+ try {
57
+ await appendFile(logFile, logEntry);
58
+ } catch (e) {
59
+ // Silent fail for logging
60
+ }
61
+
62
+ const prefix = level === "error" ? "āŒ" : level === "success" ? "āœ…" : level === "debug" ? "šŸ”" : "ā„¹ļø";
63
+ if (level === "error") {
64
+ console.error(`${prefix} ${message}`);
65
+ } else if (level !== "debug") {
66
+ console.log(`${prefix} ${message}`);
67
+ }
68
+ }
69
+
70
+ // ============================================================================
71
+ // Types
72
+ // ============================================================================
73
+
74
+ type ResearchDepth = "quick" | "standard" | "deep" | "exhaustive";
75
+ type ResearchMode = "general" | "academic" | "news" | "technical" | "market";
76
+ type OutputFormat = "md" | "json" | "html" | "pdf";
77
+ type CitationStyle = "apa" | "mla" | "chicago" | "none";
78
+
79
+ interface ResearchOptions {
80
+ query: string;
81
+ depth: ResearchDepth;
82
+ mode: ResearchMode;
83
+ maxSources: number;
84
+ output?: string;
85
+ format: OutputFormat;
86
+ citationStyle: CitationStyle;
87
+ includeRaw: boolean;
88
+ focusDomains?: string[];
89
+ excludeDomains?: string[];
90
+ dateRange?: { start: string; end: string };
91
+ language: string;
92
+ verbose: boolean;
93
+ }
94
+
95
+ interface Source {
96
+ id: number;
97
+ title: string;
98
+ url: string;
99
+ authors?: string[];
100
+ date?: string;
101
+ type: string;
102
+ content: string;
103
+ credibilityScore: number;
104
+ domain: string;
105
+ }
106
+
107
+ interface Finding {
108
+ finding: string;
109
+ sources: number[];
110
+ confidence: "high" | "medium" | "low";
111
+ quotes?: string[];
112
+ }
113
+
114
+ interface ResearchResult {
115
+ metadata: {
116
+ topic: string;
117
+ generatedAt: string;
118
+ depth: ResearchDepth;
119
+ mode: ResearchMode;
120
+ sourcesAnalyzed: number;
121
+ durationSeconds: number;
122
+ tokenUsage: number;
123
+ };
124
+ executiveSummary: string;
125
+ keyFindings: Finding[];
126
+ sections: Array<{
127
+ title: string;
128
+ content: string;
129
+ subsections?: Array<{ title: string; content: string }>;
130
+ }>;
131
+ sources: Source[];
132
+ searchQueries: string[];
133
+ rawData?: any;
134
+ }
135
+
136
+ // ============================================================================
137
+ // Configuration
138
+ // ============================================================================
139
+
140
+ const DEPTH_CONFIG = {
141
+ quick: { sources: 10, iterations: 1, queries: 5 },
142
+ standard: { sources: 20, iterations: 3, queries: 12 },
143
+ deep: { sources: 50, iterations: 5, queries: 25 },
144
+ exhaustive: { sources: 100, iterations: 7, queries: 40 },
145
+ };
146
+
147
+ const MODE_CONFIG = {
148
+ general: {
149
+ domains: [],
150
+ keywords: [],
151
+ },
152
+ academic: {
153
+ domains: ["arxiv.org", "scholar.google.com", "pubmed.ncbi.nlm.nih.gov", ".edu", ".gov"],
154
+ keywords: ["research", "study", "paper", "journal", "peer-reviewed"],
155
+ },
156
+ news: {
157
+ domains: ["reuters.com", "apnews.com", "bbc.com", "theguardian.com", "nytimes.com"],
158
+ keywords: ["news", "breaking", "report", "announced"],
159
+ },
160
+ technical: {
161
+ domains: ["github.com", "stackoverflow.com", "dev.to", "medium.com/tag/programming"],
162
+ keywords: ["documentation", "tutorial", "guide", "implementation", "code"],
163
+ },
164
+ market: {
165
+ domains: ["bloomberg.com", "reuters.com", "wsj.com", "forbes.com", "crunchbase.com"],
166
+ keywords: ["market", "business", "company", "revenue", "industry"],
167
+ },
168
+ };
169
+
170
+ // ============================================================================
171
+ // API Clients
172
+ // ============================================================================
173
+
174
+ class AIClient {
175
+ private provider: "openai" | "anthropic";
176
+ private apiKey: string;
177
+ private baseURL: string;
178
+ private model: string;
179
+
180
+ constructor() {
181
+ if (process.env.OPENAI_API_KEY) {
182
+ this.provider = "openai";
183
+ this.apiKey = process.env.OPENAI_API_KEY;
184
+ this.baseURL = "https://api.openai.com/v1";
185
+ this.model = "gpt-4o";
186
+ } else if (process.env.ANTHROPIC_API_KEY) {
187
+ this.provider = "anthropic";
188
+ this.apiKey = process.env.ANTHROPIC_API_KEY;
189
+ this.baseURL = "https://api.anthropic.com/v1";
190
+ this.model = "claude-3-5-sonnet-20241022";
191
+ } else {
192
+ throw new Error("No AI API key found. Set OPENAI_API_KEY or ANTHROPIC_API_KEY");
193
+ }
194
+ }
195
+
196
+ async chat(messages: Array<{ role: string; content: string }>, options?: { maxTokens?: number }): Promise<string> {
197
+ if (this.provider === "openai") {
198
+ return this.chatOpenAI(messages, options);
199
+ } else {
200
+ return this.chatAnthropic(messages, options);
201
+ }
202
+ }
203
+
204
+ private async chatOpenAI(messages: Array<{ role: string; content: string }>, options?: { maxTokens?: number }): Promise<string> {
205
+ const response = await fetch(`${this.baseURL}/chat/completions`, {
206
+ method: "POST",
207
+ headers: {
208
+ "Content-Type": "application/json",
209
+ "Authorization": `Bearer ${this.apiKey}`,
210
+ },
211
+ body: JSON.stringify({
212
+ model: this.model,
213
+ messages,
214
+ max_tokens: options?.maxTokens || 4000,
215
+ temperature: 0.7,
216
+ }),
217
+ });
218
+
219
+ if (!response.ok) {
220
+ const error = await response.text();
221
+ throw new Error(`OpenAI API error: ${response.status} ${error}`);
222
+ }
223
+
224
+ const data = await response.json();
225
+ return data.choices[0].message.content;
226
+ }
227
+
228
+ private async chatAnthropic(messages: Array<{ role: string; content: string }>, options?: { maxTokens?: number }): Promise<string> {
229
+ // Convert messages format for Anthropic
230
+ const systemMessage = messages.find((m) => m.role === "system")?.content || "";
231
+ const userMessages = messages.filter((m) => m.role !== "system");
232
+
233
+ const response = await fetch(`${this.baseURL}/messages`, {
234
+ method: "POST",
235
+ headers: {
236
+ "Content-Type": "application/json",
237
+ "x-api-key": this.apiKey,
238
+ "anthropic-version": "2023-06-01",
239
+ },
240
+ body: JSON.stringify({
241
+ model: this.model,
242
+ max_tokens: options?.maxTokens || 4000,
243
+ system: systemMessage,
244
+ messages: userMessages,
245
+ }),
246
+ });
247
+
248
+ if (!response.ok) {
249
+ const error = await response.text();
250
+ throw new Error(`Anthropic API error: ${response.status} ${error}`);
251
+ }
252
+
253
+ const data = await response.json();
254
+ return data.content[0].text;
255
+ }
256
+ }
257
+
258
+ class SearchClient {
259
+ private provider: "exa" | "tavily" | "serpapi";
260
+ private apiKey: string;
261
+ private baseURL: string;
262
+
263
+ constructor() {
264
+ if (process.env.EXA_API_KEY) {
265
+ this.provider = "exa";
266
+ this.apiKey = process.env.EXA_API_KEY;
267
+ this.baseURL = "https://api.exa.ai";
268
+ } else if (process.env.TAVILY_API_KEY) {
269
+ this.provider = "tavily";
270
+ this.apiKey = process.env.TAVILY_API_KEY;
271
+ this.baseURL = "https://api.tavily.com";
272
+ } else if (process.env.SERPAPI_KEY) {
273
+ this.provider = "serpapi";
274
+ this.apiKey = process.env.SERPAPI_KEY;
275
+ this.baseURL = "https://serpapi.com";
276
+ } else {
277
+ throw new Error("No search API key found. Set EXA_API_KEY, TAVILY_API_KEY, or SERPAPI_KEY");
278
+ }
279
+ }
280
+
281
+ async search(
282
+ query: string,
283
+ options: {
284
+ numResults?: number;
285
+ includeDomains?: string[];
286
+ excludeDomains?: string[];
287
+ dateRange?: { start: string; end: string };
288
+ } = {}
289
+ ): Promise<Array<{ title: string; url: string; snippet: string; date?: string }>> {
290
+ if (this.provider === "exa") {
291
+ return this.searchExa(query, options);
292
+ } else if (this.provider === "tavily") {
293
+ return this.searchTavily(query, options);
294
+ } else {
295
+ return this.searchSerpAPI(query, options);
296
+ }
297
+ }
298
+
299
+ private async searchExa(
300
+ query: string,
301
+ options: {
302
+ numResults?: number;
303
+ includeDomains?: string[];
304
+ excludeDomains?: string[];
305
+ dateRange?: { start: string; end: string };
306
+ }
307
+ ): Promise<Array<{ title: string; url: string; snippet: string; date?: string }>> {
308
+ const response = await fetch(`${this.baseURL}/search`, {
309
+ method: "POST",
310
+ headers: {
311
+ "Content-Type": "application/json",
312
+ "x-api-key": this.apiKey,
313
+ },
314
+ body: JSON.stringify({
315
+ query,
316
+ num_results: options.numResults || 10,
317
+ use_autoprompt: true,
318
+ include_domains: options.includeDomains,
319
+ exclude_domains: options.excludeDomains,
320
+ start_published_date: options.dateRange?.start,
321
+ end_published_date: options.dateRange?.end,
322
+ }),
323
+ });
324
+
325
+ if (!response.ok) {
326
+ throw new Error(`Exa API error: ${response.status}`);
327
+ }
328
+
329
+ const data = await response.json();
330
+ return data.results.map((r: any) => ({
331
+ title: r.title,
332
+ url: r.url,
333
+ snippet: r.text || r.snippet || "",
334
+ date: r.published_date,
335
+ }));
336
+ }
337
+
338
+ private async searchTavily(
339
+ query: string,
340
+ options: {
341
+ numResults?: number;
342
+ includeDomains?: string[];
343
+ excludeDomains?: string[];
344
+ }
345
+ ): Promise<Array<{ title: string; url: string; snippet: string; date?: string }>> {
346
+ const response = await fetch(`${this.baseURL}/search`, {
347
+ method: "POST",
348
+ headers: {
349
+ "Content-Type": "application/json",
350
+ },
351
+ body: JSON.stringify({
352
+ api_key: this.apiKey,
353
+ query,
354
+ max_results: options.numResults || 10,
355
+ include_domains: options.includeDomains,
356
+ exclude_domains: options.excludeDomains,
357
+ search_depth: "advanced",
358
+ }),
359
+ });
360
+
361
+ if (!response.ok) {
362
+ throw new Error(`Tavily API error: ${response.status}`);
363
+ }
364
+
365
+ const data = await response.json();
366
+ return data.results.map((r: any) => ({
367
+ title: r.title,
368
+ url: r.url,
369
+ snippet: r.content,
370
+ }));
371
+ }
372
+
373
+ private async searchSerpAPI(
374
+ query: string,
375
+ options: {
376
+ numResults?: number;
377
+ }
378
+ ): Promise<Array<{ title: string; url: string; snippet: string }>> {
379
+ const params = new URLSearchParams({
380
+ api_key: this.apiKey,
381
+ q: query,
382
+ num: String(options.numResults || 10),
383
+ engine: "google",
384
+ });
385
+
386
+ const response = await fetch(`${this.baseURL}/search?${params}`);
387
+
388
+ if (!response.ok) {
389
+ throw new Error(`SerpAPI error: ${response.status}`);
390
+ }
391
+
392
+ const data = await response.json();
393
+ return (data.organic_results || []).map((r: any) => ({
394
+ title: r.title,
395
+ url: r.link,
396
+ snippet: r.snippet,
397
+ }));
398
+ }
399
+ }
400
+
401
+ // ============================================================================
402
+ // Content Fetcher
403
+ // ============================================================================
404
+
405
+ async function fetchContent(url: string): Promise<string> {
406
+ try {
407
+ // Try Jina AI Reader first if available
408
+ if (process.env.JINA_API_KEY) {
409
+ const response = await fetch(`https://r.jina.ai/${url}`, {
410
+ headers: {
411
+ Authorization: `Bearer ${process.env.JINA_API_KEY}`,
412
+ },
413
+ });
414
+ if (response.ok) {
415
+ return await response.text();
416
+ }
417
+ }
418
+
419
+ // Fallback to direct fetch
420
+ const response = await fetch(url, {
421
+ headers: {
422
+ "User-Agent": "Mozilla/5.0 (compatible; skills.md-deep-research/1.0)",
423
+ },
424
+ });
425
+
426
+ if (!response.ok) {
427
+ throw new Error(`HTTP ${response.status}`);
428
+ }
429
+
430
+ const html = await response.text();
431
+ // Basic text extraction (remove HTML tags)
432
+ return html
433
+ .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "")
434
+ .replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "")
435
+ .replace(/<[^>]+>/g, " ")
436
+ .replace(/\s+/g, " ")
437
+ .trim()
438
+ .slice(0, 10000); // Limit to 10k chars
439
+ } catch (error) {
440
+ log(`Failed to fetch ${url}: ${error}`, "error");
441
+ return "";
442
+ }
443
+ }
444
+
445
+ // ============================================================================
446
+ // Research Engine
447
+ // ============================================================================
448
+
449
+ class ResearchEngine {
450
+ private ai: AIClient;
451
+ private search: SearchClient;
452
+ private options: ResearchOptions;
453
+ private sources: Source[] = [];
454
+ private allQueries: string[] = [];
455
+ private tokenUsage = 0;
456
+
457
+ constructor(options: ResearchOptions) {
458
+ this.ai = new AIClient();
459
+ this.search = new SearchClient();
460
+ this.options = options;
461
+ }
462
+
463
+ async run(): Promise<ResearchResult> {
464
+ const startTime = Date.now();
465
+
466
+ if (this.options.verbose) {
467
+ log(`Starting ${this.options.depth} research on: "${this.options.query}"`, "info");
468
+ log(`Mode: ${this.options.mode}`, "info");
469
+ }
470
+
471
+ // Step 1: Break down the research question
472
+ const subQuestions = await this.generateSubQuestions();
473
+ if (this.options.verbose) {
474
+ log(`Generated ${subQuestions.length} sub-questions`, "debug");
475
+ }
476
+
477
+ // Step 2: Generate search queries
478
+ const searchQueries = await this.generateSearchQueries(subQuestions);
479
+ if (this.options.verbose) {
480
+ log(`Generated ${searchQueries.length} search queries`, "debug");
481
+ }
482
+
483
+ // Step 3: Search and fetch sources
484
+ await this.searchAndFetchSources(searchQueries);
485
+ if (this.options.verbose) {
486
+ log(`Collected ${this.sources.length} sources`, "debug");
487
+ }
488
+
489
+ // Step 4: Analyze sources and extract findings
490
+ const findings = await this.analyzeSourcesForFindings();
491
+ if (this.options.verbose) {
492
+ log(`Extracted ${findings.length} key findings`, "debug");
493
+ }
494
+
495
+ // Step 5: Generate executive summary
496
+ const executiveSummary = await this.generateExecutiveSummary(findings);
497
+
498
+ // Step 6: Generate detailed sections
499
+ const sections = await this.generateDetailedSections(findings);
500
+
501
+ // Step 7: Build result
502
+ const duration = Math.floor((Date.now() - startTime) / 1000);
503
+ const result: ResearchResult = {
504
+ metadata: {
505
+ topic: this.options.query,
506
+ generatedAt: new Date().toISOString(),
507
+ depth: this.options.depth,
508
+ mode: this.options.mode,
509
+ sourcesAnalyzed: this.sources.length,
510
+ durationSeconds: duration,
511
+ tokenUsage: this.tokenUsage,
512
+ },
513
+ executiveSummary,
514
+ keyFindings: findings,
515
+ sections,
516
+ sources: this.sources,
517
+ searchQueries: this.allQueries,
518
+ rawData: this.options.includeRaw ? { subQuestions, searchQueries } : undefined,
519
+ };
520
+
521
+ return result;
522
+ }
523
+
524
+ private async generateSubQuestions(): Promise<string[]> {
525
+ const config = DEPTH_CONFIG[this.options.depth];
526
+ const numQuestions = Math.ceil(config.iterations * 2);
527
+
528
+ const prompt = `You are a research expert. Break down this research question into ${numQuestions} focused sub-questions that will help conduct comprehensive research.
529
+
530
+ Research Question: "${this.options.query}"
531
+ Research Mode: ${this.options.mode}
532
+
533
+ Generate ${numQuestions} specific, focused sub-questions. Each should explore a different aspect or angle.
534
+ Return ONLY the questions, one per line, numbered.`;
535
+
536
+ const response = await this.ai.chat([
537
+ { role: "system", content: "You are a research planning expert." },
538
+ { role: "user", content: prompt },
539
+ ]);
540
+
541
+ this.tokenUsage += response.length;
542
+
543
+ return response
544
+ .split("\n")
545
+ .filter((line) => line.trim().match(/^\d+\./))
546
+ .map((line) => line.replace(/^\d+\.\s*/, "").trim())
547
+ .slice(0, numQuestions);
548
+ }
549
+
550
+ private async generateSearchQueries(subQuestions: string[]): Promise<string[]> {
551
+ const config = DEPTH_CONFIG[this.options.depth];
552
+ const modeConfig = MODE_CONFIG[this.options.mode];
553
+
554
+ const prompt = `Generate ${config.queries} search queries to find information about these questions:
555
+
556
+ ${subQuestions.map((q, i) => `${i + 1}. ${q}`).join("\n")}
557
+
558
+ Research Mode: ${this.options.mode}
559
+ ${modeConfig.keywords.length > 0 ? `Focus Keywords: ${modeConfig.keywords.join(", ")}` : ""}
560
+
561
+ Generate diverse, specific search queries. Include different phrasings, technical terms, and related concepts.
562
+ Return ONLY the search queries, one per line.`;
563
+
564
+ const response = await this.ai.chat([
565
+ { role: "system", content: "You are a search query optimization expert." },
566
+ { role: "user", content: prompt },
567
+ ]);
568
+
569
+ this.tokenUsage += response.length;
570
+
571
+ const queries = response
572
+ .split("\n")
573
+ .map((line) => line.replace(/^\d+\.\s*|-\s*/, "").trim())
574
+ .filter((q) => q.length > 0)
575
+ .slice(0, config.queries);
576
+
577
+ this.allQueries = queries;
578
+ return queries;
579
+ }
580
+
581
+ private async searchAndFetchSources(queries: string[]): Promise<void> {
582
+ const config = DEPTH_CONFIG[this.options.depth];
583
+ const modeConfig = MODE_CONFIG[this.options.mode];
584
+ const resultsPerQuery = Math.ceil(config.sources / queries.length);
585
+
586
+ const searchOptions = {
587
+ numResults: resultsPerQuery,
588
+ includeDomains: this.options.focusDomains || modeConfig.domains,
589
+ excludeDomains: this.options.excludeDomains,
590
+ dateRange: this.options.dateRange,
591
+ };
592
+
593
+ let sourceId = 1;
594
+ const seenUrls = new Set<string>();
595
+
596
+ for (const query of queries) {
597
+ if (this.sources.length >= this.options.maxSources) break;
598
+
599
+ try {
600
+ const results = await this.search.search(query, searchOptions);
601
+
602
+ for (const result of results) {
603
+ if (this.sources.length >= this.options.maxSources) break;
604
+ if (seenUrls.has(result.url)) continue;
605
+
606
+ seenUrls.add(result.url);
607
+
608
+ if (this.options.verbose) {
609
+ log(`Fetching: ${result.title.slice(0, 60)}...`, "debug");
610
+ }
611
+
612
+ const content = await fetchContent(result.url);
613
+ if (!content) continue;
614
+
615
+ const domain = new URL(result.url).hostname;
616
+ const source: Source = {
617
+ id: sourceId++,
618
+ title: result.title,
619
+ url: result.url,
620
+ date: result.date,
621
+ type: this.classifySourceType(domain),
622
+ content,
623
+ credibilityScore: this.calculateCredibilityScore(domain, content),
624
+ domain,
625
+ };
626
+
627
+ this.sources.push(source);
628
+ }
629
+ } catch (error) {
630
+ log(`Search failed for query "${query}": ${error}`, "error");
631
+ }
632
+
633
+ // Rate limiting
634
+ await new Promise((resolve) => setTimeout(resolve, 500));
635
+ }
636
+ }
637
+
638
+ private classifySourceType(domain: string): string {
639
+ if (domain.includes("arxiv.org") || domain.includes("scholar.google")) return "academic_preprint";
640
+ if (domain.endsWith(".edu")) return "academic";
641
+ if (domain.endsWith(".gov")) return "government";
642
+ if (domain.includes("github.com")) return "code_repository";
643
+ if (domain.includes("stackoverflow.com")) return "technical_forum";
644
+ if (domain.includes("medium.com") || domain.includes("dev.to")) return "blog";
645
+ if (domain.includes("reuters.com") || domain.includes("bbc.com")) return "news";
646
+ return "web";
647
+ }
648
+
649
+ private calculateCredibilityScore(domain: string, content: string): number {
650
+ let score = 0.5; // Base score
651
+
652
+ // Domain-based scoring
653
+ if (domain.endsWith(".edu")) score += 0.2;
654
+ if (domain.endsWith(".gov")) score += 0.3;
655
+ if (domain.includes("arxiv.org") || domain.includes("scholar.google")) score += 0.25;
656
+ if (domain.includes("reuters.com") || domain.includes("apnews.com")) score += 0.2;
657
+
658
+ // Content-based scoring
659
+ if (content.includes("peer-reviewed") || content.includes("published in")) score += 0.1;
660
+ if (content.includes("citation") || content.includes("references")) score += 0.05;
661
+ if (content.length > 5000) score += 0.05; // Substantial content
662
+
663
+ return Math.min(score, 1.0);
664
+ }
665
+
666
+ private async analyzeSourcesForFindings(): Promise<Finding[]> {
667
+ const findings: Finding[] = [];
668
+
669
+ // Group sources into batches for analysis
670
+ const batchSize = 5;
671
+ for (let i = 0; i < this.sources.length; i += batchSize) {
672
+ const batch = this.sources.slice(i, i + batchSize);
673
+
674
+ const sourcesText = batch
675
+ .map(
676
+ (s) =>
677
+ `[Source ${s.id}] ${s.title}\nURL: ${s.url}\nContent: ${s.content.slice(0, 2000)}...`
678
+ )
679
+ .join("\n\n");
680
+
681
+ const prompt = `Analyze these sources and extract key findings related to: "${this.options.query}"
682
+
683
+ ${sourcesText}
684
+
685
+ For each finding:
686
+ 1. State the finding clearly
687
+ 2. List source IDs that support it
688
+ 3. Rate confidence (high/medium/low)
689
+ 4. Extract 1-2 key quotes if relevant
690
+
691
+ Return findings in JSON format:
692
+ [
693
+ {
694
+ "finding": "Finding text",
695
+ "sources": [1, 2],
696
+ "confidence": "high",
697
+ "quotes": ["quote 1", "quote 2"]
698
+ }
699
+ ]`;
700
+
701
+ try {
702
+ const response = await this.ai.chat([
703
+ { role: "system", content: "You are a research analyst expert at synthesizing information." },
704
+ { role: "user", content: prompt },
705
+ ]);
706
+
707
+ this.tokenUsage += response.length;
708
+
709
+ // Extract JSON from response
710
+ const jsonMatch = response.match(/\[[\s\S]*\]/);
711
+ if (jsonMatch) {
712
+ const batchFindings = JSON.parse(jsonMatch[0]);
713
+ findings.push(...batchFindings);
714
+ }
715
+ } catch (error) {
716
+ log(`Failed to analyze batch: ${error}`, "error");
717
+ }
718
+ }
719
+
720
+ return findings.slice(0, 20); // Limit to top 20 findings
721
+ }
722
+
723
+ private async generateExecutiveSummary(findings: Finding[]): Promise<string> {
724
+ const findingsText = findings
725
+ .map((f) => `- ${f.finding} (Confidence: ${f.confidence})`)
726
+ .join("\n");
727
+
728
+ const prompt = `Write a comprehensive executive summary (2-3 paragraphs) for this research on: "${this.options.query}"
729
+
730
+ Key Findings:
731
+ ${findingsText}
732
+
733
+ The summary should:
734
+ - Highlight the most important insights
735
+ - Provide context and implications
736
+ - Be clear and concise
737
+ - Use professional language`;
738
+
739
+ const response = await this.ai.chat([
740
+ { role: "system", content: "You are a professional research writer." },
741
+ { role: "user", content: prompt },
742
+ ]);
743
+
744
+ this.tokenUsage += response.length;
745
+ return response.trim();
746
+ }
747
+
748
+ private async generateDetailedSections(findings: Finding[]): Promise<Array<{ title: string; content: string }>> {
749
+ // Group findings into sections
750
+ const sectionsPrompt = `Given these findings about "${this.options.query}", suggest 3-5 main section titles for organizing them:
751
+
752
+ ${findings.map((f, i) => `${i + 1}. ${f.finding}`).join("\n")}
753
+
754
+ Return ONLY the section titles, one per line.`;
755
+
756
+ const sectionsResponse = await this.ai.chat([
757
+ { role: "system", content: "You are a document structure expert." },
758
+ { role: "user", content: sectionsPrompt },
759
+ ]);
760
+
761
+ this.tokenUsage += sectionsResponse.length;
762
+
763
+ const sectionTitles = sectionsResponse
764
+ .split("\n")
765
+ .map((line) => line.replace(/^\d+\.\s*|-\s*/, "").trim())
766
+ .filter((t) => t.length > 0)
767
+ .slice(0, 5);
768
+
769
+ // Generate content for each section
770
+ const sections = [];
771
+ for (const title of sectionTitles) {
772
+ const relevantFindings = findings.slice(0, 4); // Use top findings
773
+
774
+ const contentPrompt = `Write detailed content for the section "${title}" in a research report about "${this.options.query}".
775
+
776
+ Incorporate these findings:
777
+ ${relevantFindings.map((f) => `- ${f.finding}`).join("\n")}
778
+
779
+ Include:
780
+ - Detailed analysis
781
+ - Evidence and supporting information
782
+ - Citations in format [Source N]
783
+ - 2-3 paragraphs
784
+
785
+ Write in clear, professional academic style.`;
786
+
787
+ const content = await this.ai.chat([
788
+ { role: "system", content: "You are a professional research writer." },
789
+ { role: "user", content: contentPrompt },
790
+ ]);
791
+
792
+ this.tokenUsage += content.length;
793
+
794
+ sections.push({
795
+ title,
796
+ content: content.trim(),
797
+ });
798
+ }
799
+
800
+ return sections;
801
+ }
802
+ }
803
+
804
+ // ============================================================================
805
+ // Output Formatters
806
+ // ============================================================================
807
+
808
+ function formatMarkdown(result: ResearchResult, citationStyle: CitationStyle): string {
809
+ let md = `# Research Report: ${result.metadata.topic}\n\n`;
810
+ md += `**Generated**: ${new Date(result.metadata.generatedAt).toLocaleString()}\n`;
811
+ md += `**Depth**: ${result.metadata.depth}\n`;
812
+ md += `**Sources Analyzed**: ${result.metadata.sourcesAnalyzed}\n`;
813
+ md += `**Research Mode**: ${result.metadata.mode}\n\n`;
814
+ md += `---\n\n`;
815
+
816
+ // Executive Summary
817
+ md += `## Executive Summary\n\n`;
818
+ md += `${result.executiveSummary}\n\n`;
819
+ md += `---\n\n`;
820
+
821
+ // Table of Contents
822
+ md += `## Table of Contents\n\n`;
823
+ md += `1. Introduction\n`;
824
+ md += `2. Key Findings\n`;
825
+ md += `3. Detailed Analysis\n`;
826
+ result.sections.forEach((section, i) => {
827
+ md += ` 3.${i + 1} ${section.title}\n`;
828
+ });
829
+ md += `4. Methodology\n`;
830
+ md += `5. Conclusions\n`;
831
+ md += `6. Sources\n\n`;
832
+ md += `---\n\n`;
833
+
834
+ // Introduction
835
+ md += `## 1. Introduction\n\n`;
836
+ md += `This report presents comprehensive research on "${result.metadata.topic}". `;
837
+ md += `The research was conducted using ${result.metadata.mode} mode with ${result.metadata.depth} depth, `;
838
+ md += `analyzing ${result.metadata.sourcesAnalyzed} sources over ${result.searchQueries.length} search queries.\n\n`;
839
+ md += `---\n\n`;
840
+
841
+ // Key Findings
842
+ md += `## 2. Key Findings\n\n`;
843
+ result.keyFindings.forEach((finding) => {
844
+ const sourceRefs = finding.sources.map((id) => id).join(", ");
845
+ md += `- **${finding.finding}** [Sources: ${sourceRefs}] _(Confidence: ${finding.confidence})_\n`;
846
+
847
+ if (finding.quotes && finding.quotes.length > 0) {
848
+ md += ` > "${finding.quotes[0]}"\n`;
849
+ }
850
+ });
851
+ md += `\n---\n\n`;
852
+
853
+ // Detailed Analysis
854
+ md += `## 3. Detailed Analysis\n\n`;
855
+ result.sections.forEach((section, i) => {
856
+ md += `### 3.${i + 1} ${section.title}\n\n`;
857
+ md += `${section.content}\n\n`;
858
+ });
859
+ md += `---\n\n`;
860
+
861
+ // Methodology
862
+ md += `## 4. Methodology\n\n`;
863
+ md += `**Search Strategy**: Multi-iteration search with AI-generated queries\n`;
864
+ md += `**Research Mode**: ${result.metadata.mode}\n`;
865
+ md += `**Sources Consulted**: ${result.metadata.sourcesAnalyzed}\n`;
866
+ md += `**Search Queries**: ${result.searchQueries.length}\n`;
867
+ md += `**Quality Assessment**: Sources rated by domain credibility and content quality\n\n`;
868
+ md += `---\n\n`;
869
+
870
+ // Conclusions
871
+ md += `## 5. Conclusions\n\n`;
872
+ md += `This research on "${result.metadata.topic}" has revealed several key insights across ${result.sections.length} main areas. `;
873
+ md += `The findings are supported by ${result.metadata.sourcesAnalyzed} diverse sources and provide a comprehensive overview of the current state of knowledge on this topic.\n\n`;
874
+ md += `---\n\n`;
875
+
876
+ // Sources
877
+ md += `## 6. Sources\n\n`;
878
+ result.sources.forEach((source) => {
879
+ const citation = formatCitation(source, citationStyle);
880
+ md += `${source.id}. ${citation}\n`;
881
+ });
882
+ md += `\n---\n\n`;
883
+
884
+ // Footer
885
+ md += `**Research completed in**: ${Math.floor(result.metadata.durationSeconds / 60)} minutes ${result.metadata.durationSeconds % 60} seconds\n`;
886
+ md += `**Token usage**: ~${result.metadata.tokenUsage.toLocaleString()} tokens\n`;
887
+
888
+ return md;
889
+ }
890
+
891
+ function formatCitation(source: Source, style: CitationStyle): string {
892
+ if (style === "none") {
893
+ return `${source.title}. ${source.url}`;
894
+ }
895
+
896
+ const domain = source.domain;
897
+ const year = source.date ? new Date(source.date).getFullYear() : new Date().getFullYear();
898
+
899
+ if (style === "apa") {
900
+ return `${domain}. (${year}). ${source.title}. Retrieved from ${source.url}`;
901
+ } else if (style === "mla") {
902
+ return `"${source.title}." ${domain}, ${year}, ${source.url}.`;
903
+ } else if (style === "chicago") {
904
+ return `${domain}. "${source.title}." ${year}. ${source.url}.`;
905
+ }
906
+
907
+ return `${source.title}. ${source.url}`;
908
+ }
909
+
910
+ function formatJSON(result: ResearchResult): string {
911
+ return JSON.stringify(result, null, 2);
912
+ }
913
+
914
+ function formatHTML(result: ResearchResult, citationStyle: CitationStyle): string {
915
+ const md = formatMarkdown(result, citationStyle);
916
+
917
+ // Convert markdown to HTML with proper escaping
918
+ // Process line by line to maintain control over escaping
919
+ const lines = md.split("\n");
920
+ const htmlLines: string[] = [];
921
+
922
+ for (const line of lines) {
923
+ const trimmed = line.trim();
924
+
925
+ if (!trimmed) {
926
+ htmlLines.push("");
927
+ continue;
928
+ }
929
+
930
+ // Escape the content first, then apply formatting
931
+ if (trimmed.startsWith("# ")) {
932
+ htmlLines.push(`<h1>${escapeHtml(trimmed.slice(2))}</h1>`);
933
+ } else if (trimmed.startsWith("## ")) {
934
+ htmlLines.push(`<h2>${escapeHtml(trimmed.slice(3))}</h2>`);
935
+ } else if (trimmed.startsWith("### ")) {
936
+ htmlLines.push(`<h3>${escapeHtml(trimmed.slice(4))}</h3>`);
937
+ } else if (trimmed.startsWith("- ")) {
938
+ htmlLines.push(`<li>${escapeHtml(trimmed.slice(2))}</li>`);
939
+ } else if (trimmed === "---") {
940
+ htmlLines.push("<hr>");
941
+ } else {
942
+ // Apply inline formatting to escaped content
943
+ let escapedLine = escapeHtml(trimmed);
944
+ // Bold: **text** - need to unescape the asterisks temporarily
945
+ escapedLine = escapedLine.replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>");
946
+ // Italic: *text*
947
+ escapedLine = escapedLine.replace(/\*([^*]+)\*/g, "<em>$1</em>");
948
+ htmlLines.push(`<p>${escapedLine}</p>`);
949
+ }
950
+ }
951
+
952
+ // Wrap consecutive list items in ul tags
953
+ let html = htmlLines.join("\n");
954
+ html = html.replace(/(<li>[\s\S]*?<\/li>\n?)+/g, (match) => `<ul>\n${match}</ul>\n`);
955
+
956
+ return `<!DOCTYPE html>
957
+ <html>
958
+ <head>
959
+ <meta charset="UTF-8">
960
+ <title>Research Report: ${escapeHtml(result.metadata.topic)}</title>
961
+ <style>
962
+ body { font-family: Georgia, serif; max-width: 800px; margin: 50px auto; line-height: 1.6; }
963
+ h1 { color: #2c3e50; }
964
+ h2 { color: #34495e; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
965
+ h3 { color: #7f8c8d; }
966
+ hr { border: 0; border-top: 1px solid #ecf0f1; margin: 30px 0; }
967
+ ul { margin: 1em 0; padding-left: 2em; }
968
+ li { margin: 0.5em 0; }
969
+ </style>
970
+ </head>
971
+ <body>
972
+ ${html}
973
+ </body>
974
+ </html>`;
975
+ }
976
+
977
+ // ============================================================================
978
+ // Main
979
+ // ============================================================================
980
+
981
+ async function main() {
982
+ try {
983
+ // Parse arguments
984
+ const { values, positionals } = parseArgs({
985
+ args: process.argv.slice(2),
986
+ options: {
987
+ depth: { type: "string", default: "standard" },
988
+ mode: { type: "string", default: "general" },
989
+ "max-sources": { type: "string", default: "20" },
990
+ output: { type: "string" },
991
+ format: { type: "string", default: "md" },
992
+ "citation-style": { type: "string", default: "apa" },
993
+ "include-raw": { type: "boolean", default: false },
994
+ "focus-domains": { type: "string" },
995
+ "exclude-domains": { type: "string" },
996
+ "date-range": { type: "string" },
997
+ language: { type: "string", default: "en" },
998
+ verbose: { type: "boolean", default: false },
999
+ help: { type: "boolean", default: false },
1000
+ },
1001
+ allowPositionals: true,
1002
+ });
1003
+
1004
+ if (values.help) {
1005
+ console.log(`
1006
+ Deep Research Skill
1007
+
1008
+ Usage:
1009
+ skills run deep-research -- "Your research question" [options]
1010
+
1011
+ Options:
1012
+ --depth <level> Research depth: quick, standard, deep, exhaustive (default: standard)
1013
+ --mode <type> Research mode: general, academic, news, technical, market (default: general)
1014
+ --max-sources <number> Maximum sources to analyze (default: 20)
1015
+ --output <path> Output file path
1016
+ --format <type> Output format: md, json, html (default: md)
1017
+ --citation-style <style> Citation style: apa, mla, chicago, none (default: apa)
1018
+ --include-raw Include raw source data
1019
+ --focus-domains <list> Comma-separated domains to prioritize
1020
+ --exclude-domains <list> Comma-separated domains to exclude
1021
+ --date-range <range> Date range: YYYY-MM-DD:YYYY-MM-DD
1022
+ --language <code> Research language (default: en)
1023
+ --verbose Show progress
1024
+ --help Show this help
1025
+
1026
+ Examples:
1027
+ skills run deep-research -- "What are the latest advances in quantum computing?" --depth quick
1028
+ skills run deep-research -- "Impact of microplastics" --mode academic --citation-style apa
1029
+ skills run deep-research -- "Best Kubernetes practices" --mode technical --verbose
1030
+ `);
1031
+ return;
1032
+ }
1033
+
1034
+ // Get query
1035
+ const query = positionals.join(" ").trim();
1036
+ if (!query) {
1037
+ log("Error: Research query is required", "error");
1038
+ console.error('Usage: skills run deep-research -- "Your research question"');
1039
+ process.exit(1);
1040
+ }
1041
+
1042
+ // Validate options
1043
+ const depth = values.depth as ResearchDepth;
1044
+ if (!["quick", "standard", "deep", "exhaustive"].includes(depth)) {
1045
+ log("Error: Invalid depth. Use: quick, standard, deep, or exhaustive", "error");
1046
+ process.exit(1);
1047
+ }
1048
+
1049
+ const mode = values.mode as ResearchMode;
1050
+ if (!["general", "academic", "news", "technical", "market"].includes(mode)) {
1051
+ log("Error: Invalid mode. Use: general, academic, news, technical, or market", "error");
1052
+ process.exit(1);
1053
+ }
1054
+
1055
+ const format = values.format as OutputFormat;
1056
+ if (!["md", "json", "html", "pdf"].includes(format)) {
1057
+ log("Error: Invalid format. Use: md, json, html, or pdf", "error");
1058
+ process.exit(1);
1059
+ }
1060
+
1061
+ if (format === "pdf") {
1062
+ log("Error: PDF format not yet implemented. Use md, json, or html", "error");
1063
+ process.exit(1);
1064
+ }
1065
+
1066
+ const citationStyle = values["citation-style"] as CitationStyle;
1067
+ if (!["apa", "mla", "chicago", "none"].includes(citationStyle)) {
1068
+ log("Error: Invalid citation style. Use: apa, mla, chicago, or none", "error");
1069
+ process.exit(1);
1070
+ }
1071
+
1072
+ // Parse optional fields
1073
+ const focusDomains = values["focus-domains"]?.split(",").map((d) => d.trim());
1074
+ const excludeDomains = values["exclude-domains"]?.split(",").map((d) => d.trim());
1075
+
1076
+ let dateRange: { start: string; end: string } | undefined;
1077
+ if (values["date-range"]) {
1078
+ const [start, end] = values["date-range"].split(":");
1079
+ if (start && end) {
1080
+ dateRange = { start, end };
1081
+ }
1082
+ }
1083
+
1084
+ const options: ResearchOptions = {
1085
+ query,
1086
+ depth,
1087
+ mode,
1088
+ maxSources: parseInt(values["max-sources"] || "20"),
1089
+ output: values.output,
1090
+ format,
1091
+ citationStyle,
1092
+ includeRaw: values["include-raw"] || false,
1093
+ focusDomains,
1094
+ excludeDomains,
1095
+ dateRange,
1096
+ language: values.language || "en",
1097
+ verbose: values.verbose || false,
1098
+ };
1099
+
1100
+ // Run research
1101
+ log(`Starting ${SKILL_NAME} session: ${SESSION_ID}`, "debug");
1102
+ console.log(`\nšŸš€ Deep Research v1.0.0\n`);
1103
+ const engine = new ResearchEngine(options);
1104
+ const result = await engine.run();
1105
+
1106
+ // Format output
1107
+ let output: string;
1108
+ if (format === "json") {
1109
+ output = formatJSON(result);
1110
+ } else if (format === "html") {
1111
+ output = formatHTML(result, citationStyle);
1112
+ } else {
1113
+ output = formatMarkdown(result, citationStyle);
1114
+ }
1115
+
1116
+ // Save or print
1117
+ if (options.output) {
1118
+ await writeFile(options.output, output, "utf-8");
1119
+ log(`Research report saved to: ${options.output}`, "success");
1120
+ } else {
1121
+ // Auto-generate filename in exports directory
1122
+ const outputDir = process.env.SKILLS_OUTPUT_DIR || ".skills";
1123
+ const exportsDir = join(outputDir, "exports", "deep-research");
1124
+ await mkdir(exportsDir, { recursive: true });
1125
+
1126
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-").split("T")[0];
1127
+ const sanitizedQuery = query.slice(0, 50).replace(/[^a-z0-9]/gi, "-").toLowerCase();
1128
+ const filename = `research-${sanitizedQuery}-${timestamp}.${format}`;
1129
+ const filepath = join(exportsDir, filename);
1130
+
1131
+ await writeFile(filepath, output, "utf-8");
1132
+ log(`Research report saved to: ${filepath}`, "success");
1133
+ }
1134
+
1135
+ // Print summary
1136
+ console.log(`\nšŸ“Š Research Summary:`);
1137
+ console.log(` Topic: ${result.metadata.topic}`);
1138
+ console.log(` Sources: ${result.metadata.sourcesAnalyzed}`);
1139
+ console.log(` Findings: ${result.keyFindings.length}`);
1140
+ console.log(` Duration: ${Math.floor(result.metadata.durationSeconds / 60)}m ${result.metadata.durationSeconds % 60}s`);
1141
+ console.log(` Tokens: ~${result.metadata.tokenUsage.toLocaleString()}`);
1142
+ console.log();
1143
+ } catch (error) {
1144
+ log(`Error: ${error instanceof Error ? error.message : String(error)}`, "error");
1145
+ process.exit(1);
1146
+ }
1147
+ }
1148
+
1149
+ main();