@hasna/skills 0.0.2 → 0.0.3

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 (387) hide show
  1. package/bin/index.js +253 -715
  2. package/bin/mcp.js +221 -683
  3. package/package.json +1 -1
  4. package/src/cli/cli.test.ts +14 -14
  5. package/src/cli/index.tsx +1 -1
  6. package/src/lib/installer.test.ts +41 -41
  7. package/src/lib/registry.test.ts +10 -10
  8. package/src/lib/registry.ts +10 -472
  9. package/src/lib/skillinfo.test.ts +12 -12
  10. package/src/mcp/index.ts +1 -1
  11. package/skills/skill-architecture-docs/CLAUDE.md +0 -19
  12. package/skills/skill-architecture-docs/package.json +0 -32
  13. package/skills/skill-architecture-docs/src/index.ts +0 -543
  14. package/skills/skill-auto-format/CLAUDE.md +0 -19
  15. package/skills/skill-auto-format/package.json +0 -32
  16. package/skills/skill-auto-format/src/index.ts +0 -103
  17. package/skills/skill-auto-format/tsconfig.json +0 -14
  18. package/skills/skill-brainstorm/README.md +0 -17
  19. package/skills/skill-brainstorm/install.sh +0 -112
  20. package/skills/skill-brainstorm/src/auth.ts +0 -49
  21. package/skills/skill-brainstorm/src/installer.ts +0 -324
  22. package/skills/skill-brainstorm/src/skill-install.ts +0 -205
  23. package/skills/skill-browser-agent/CLAUDE.md +0 -19
  24. package/skills/skill-browser-agent/package.json +0 -32
  25. package/skills/skill-browser-agent/src/index.ts +0 -626
  26. package/skills/skill-browser-agent/tsconfig.json +0 -14
  27. package/skills/skill-browseruse/LICENSE +0 -21
  28. package/skills/skill-browseruse/README.md +0 -27
  29. package/skills/skill-browseruse/SKILL.md +0 -113
  30. package/skills/skill-browseruse/install.sh +0 -112
  31. package/skills/skill-browseruse/package.json +0 -31
  32. package/skills/skill-browseruse/src/auth.ts +0 -49
  33. package/skills/skill-browseruse/src/installer.ts +0 -324
  34. package/skills/skill-browseruse/src/skill-install.ts +0 -174
  35. package/skills/skill-calculate/LICENSE +0 -21
  36. package/skills/skill-calculate/README.md +0 -17
  37. package/skills/skill-calculate/install.sh +0 -112
  38. package/skills/skill-calculate/package.json +0 -31
  39. package/skills/skill-calculate/src/auth.ts +0 -49
  40. package/skills/skill-calculate/src/installer.ts +0 -324
  41. package/skills/skill-calculate/src/skill-install.ts +0 -205
  42. package/skills/skill-chromedevtools/LICENSE +0 -21
  43. package/skills/skill-chromedevtools/README.md +0 -27
  44. package/skills/skill-chromedevtools/SKILL.md +0 -110
  45. package/skills/skill-chromedevtools/install.sh +0 -112
  46. package/skills/skill-chromedevtools/package.json +0 -31
  47. package/skills/skill-chromedevtools/src/auth.ts +0 -49
  48. package/skills/skill-chromedevtools/src/installer.ts +0 -324
  49. package/skills/skill-chromedevtools/src/skill-install.ts +0 -174
  50. package/skills/skill-companyguide/LICENSE +0 -21
  51. package/skills/skill-companyguide/README.md +0 -17
  52. package/skills/skill-companyguide/install.sh +0 -112
  53. package/skills/skill-companyguide/package.json +0 -31
  54. package/skills/skill-companyguide/src/auth.ts +0 -49
  55. package/skills/skill-companyguide/src/installer.ts +0 -324
  56. package/skills/skill-companyguide/src/skill-install.ts +0 -205
  57. package/skills/skill-compose-gmail/tsconfig.json +0 -14
  58. package/skills/skill-context7/LICENSE +0 -21
  59. package/skills/skill-context7/README.md +0 -27
  60. package/skills/skill-context7/SKILL.md +0 -103
  61. package/skills/skill-context7/install.sh +0 -112
  62. package/skills/skill-context7/package.json +0 -31
  63. package/skills/skill-context7/src/auth.ts +0 -49
  64. package/skills/skill-context7/src/installer.ts +0 -324
  65. package/skills/skill-context7/src/skill-install.ts +0 -174
  66. package/skills/skill-crawl/LICENSE +0 -21
  67. package/skills/skill-crawl/README.md +0 -17
  68. package/skills/skill-crawl/install.sh +0 -112
  69. package/skills/skill-crawl/package.json +0 -31
  70. package/skills/skill-crawl/src/auth.ts +0 -49
  71. package/skills/skill-crawl/src/installer.ts +0 -324
  72. package/skills/skill-crawl/src/skill-install.ts +0 -205
  73. package/skills/skill-csv-transformer/CLAUDE.md +0 -19
  74. package/skills/skill-csv-transformer/package.json +0 -32
  75. package/skills/skill-csv-transformer/src/index.ts +0 -81
  76. package/skills/skill-csv-transformer/tsconfig.json +0 -14
  77. package/skills/skill-debug/LICENSE +0 -21
  78. package/skills/skill-debug/README.md +0 -17
  79. package/skills/skill-debug/install.sh +0 -112
  80. package/skills/skill-debug/package.json +0 -31
  81. package/skills/skill-debug/src/auth.ts +0 -49
  82. package/skills/skill-debug/src/installer.ts +0 -324
  83. package/skills/skill-debug/src/skill-install.ts +0 -205
  84. package/skills/skill-deep-research/CLAUDE.md +0 -19
  85. package/skills/skill-deep-research/package.json +0 -32
  86. package/skills/skill-deep-research/src/index.ts +0 -1149
  87. package/skills/skill-deep-research/tsconfig.json +0 -14
  88. package/skills/skill-dns-manager/CLAUDE.md +0 -19
  89. package/skills/skill-dns-manager/package.json +0 -32
  90. package/skills/skill-dns-manager/src/index.ts +0 -92
  91. package/skills/skill-dns-manager/tsconfig.json +0 -14
  92. package/skills/skill-download/LICENSE +0 -21
  93. package/skills/skill-download/README.md +0 -17
  94. package/skills/skill-download/install.sh +0 -112
  95. package/skills/skill-download/package.json +0 -31
  96. package/skills/skill-download/src/auth.ts +0 -49
  97. package/skills/skill-download/src/installer.ts +0 -324
  98. package/skills/skill-download/src/skill-install.ts +0 -205
  99. package/skills/skill-exa/LICENSE +0 -21
  100. package/skills/skill-exa/README.md +0 -26
  101. package/skills/skill-exa/SKILL.md +0 -92
  102. package/skills/skill-exa/install.sh +0 -112
  103. package/skills/skill-exa/package.json +0 -31
  104. package/skills/skill-exa/src/auth.ts +0 -49
  105. package/skills/skill-exa/src/installer.ts +0 -324
  106. package/skills/skill-exa/src/skill-install.ts +0 -174
  107. package/skills/skill-filesearch/LICENSE +0 -21
  108. package/skills/skill-filesearch/README.md +0 -17
  109. package/skills/skill-filesearch/install.sh +0 -112
  110. package/skills/skill-filesearch/package.json +0 -31
  111. package/skills/skill-filesearch/src/auth.ts +0 -49
  112. package/skills/skill-filesearch/src/installer.ts +0 -324
  113. package/skills/skill-filesearch/src/skill-install.ts +0 -205
  114. package/skills/skill-fill/LICENSE +0 -21
  115. package/skills/skill-fill/README.md +0 -17
  116. package/skills/skill-fill/install.sh +0 -112
  117. package/skills/skill-fill/package.json +0 -31
  118. package/skills/skill-fill/src/auth.ts +0 -49
  119. package/skills/skill-fill/src/installer.ts +0 -324
  120. package/skills/skill-fill/src/skill-install.ts +0 -205
  121. package/skills/skill-generate-audio/CLAUDE.md +0 -3
  122. package/skills/skill-generate-audio/SKILL.md +0 -53
  123. package/skills/skill-generate-audio/package.json +0 -30
  124. package/skills/skill-generate-audio/src/index.ts +0 -656
  125. package/skills/skill-generate-audio/tsconfig.json +0 -18
  126. package/skills/skill-generate-readme/CLAUDE.md +0 -19
  127. package/skills/skill-generate-readme/package.json +0 -32
  128. package/skills/skill-generate-readme/src/index.ts +0 -867
  129. package/skills/skill-generate-readme/tsconfig.json +0 -14
  130. package/skills/skill-generate-slides/CLAUDE.md +0 -19
  131. package/skills/skill-generate-slides/package.json +0 -32
  132. package/skills/skill-generate-slides/src/ai.ts +0 -140
  133. package/skills/skill-generate-slides/src/cli.ts +0 -161
  134. package/skills/skill-generate-slides/src/export.ts +0 -65
  135. package/skills/skill-generate-slides/src/index.ts +0 -1417
  136. package/skills/skill-generate-slides/src/layout.ts +0 -31
  137. package/skills/skill-generate-slides/src/parse.ts +0 -282
  138. package/skills/skill-generate-slides/src/render.ts +0 -711
  139. package/skills/skill-generate-slides/tsconfig.json +0 -14
  140. package/skills/skill-get-api-docs/CLAUDE.md +0 -19
  141. package/skills/skill-get-api-docs/package.json +0 -32
  142. package/skills/skill-get-api-docs/src/index.ts +0 -1176
  143. package/skills/skill-get-api-docs/tsconfig.json +0 -14
  144. package/skills/skill-googledrive/LICENSE +0 -21
  145. package/skills/skill-googledrive/README.md +0 -27
  146. package/skills/skill-googledrive/SKILL.md +0 -140
  147. package/skills/skill-googledrive/install.sh +0 -112
  148. package/skills/skill-googledrive/package.json +0 -31
  149. package/skills/skill-googledrive/src/auth.ts +0 -49
  150. package/skills/skill-googledrive/src/installer.ts +0 -324
  151. package/skills/skill-googledrive/src/skill-install.ts +0 -174
  152. package/skills/skill-grant-compliance-scanner/CLAUDE.md +0 -19
  153. package/skills/skill-grant-compliance-scanner/package.json +0 -32
  154. package/skills/skill-grant-compliance-scanner/src/index.ts +0 -94
  155. package/skills/skill-grant-compliance-scanner/tsconfig.json +0 -14
  156. package/skills/skill-hubsearch/LICENSE +0 -21
  157. package/skills/skill-hubsearch/README.md +0 -17
  158. package/skills/skill-hubsearch/install.sh +0 -112
  159. package/skills/skill-hubsearch/package.json +0 -31
  160. package/skills/skill-hubsearch/src/auth.ts +0 -49
  161. package/skills/skill-hubsearch/src/installer.ts +0 -324
  162. package/skills/skill-hubsearch/src/skill-install.ts +0 -205
  163. package/skills/skill-implementation-architecture/CLAUDE.md +0 -19
  164. package/skills/skill-implementation-architecture/package.json +0 -32
  165. package/skills/skill-implementation-architecture/src/index.ts +0 -460
  166. package/skills/skill-implementation-architecture/tsconfig.json +0 -14
  167. package/skills/skill-implementation-audit/CLAUDE.md +0 -19
  168. package/skills/skill-implementation-audit/package.json +0 -32
  169. package/skills/skill-implementation-audit/src/index.ts +0 -502
  170. package/skills/skill-implementation-audit/tsconfig.json +0 -14
  171. package/skills/skill-implementation-cost/CLAUDE.md +0 -19
  172. package/skills/skill-implementation-cost/package.json +0 -32
  173. package/skills/skill-implementation-cost/src/index.ts +0 -873
  174. package/skills/skill-implementation-cost/tsconfig.json +0 -14
  175. package/skills/skill-implementation-dispatch/CLAUDE.md +0 -19
  176. package/skills/skill-implementation-dispatch/package.json +0 -32
  177. package/skills/skill-implementation-dispatch/src/index.ts +0 -390
  178. package/skills/skill-implementation-dispatch/tsconfig.json +0 -14
  179. package/skills/skill-implementation-hook/CLAUDE.md +0 -19
  180. package/skills/skill-implementation-hook/package.json +0 -32
  181. package/skills/skill-implementation-hook/src/index.ts +0 -787
  182. package/skills/skill-implementation-hook/tsconfig.json +0 -14
  183. package/skills/skill-implementation-index/CLAUDE.md +0 -19
  184. package/skills/skill-implementation-index/package.json +0 -32
  185. package/skills/skill-implementation-index/src/index.ts +0 -767
  186. package/skills/skill-implementation-index/tsconfig.json +0 -14
  187. package/skills/skill-implementation-init/CLAUDE.md +0 -19
  188. package/skills/skill-implementation-init/package.json +0 -32
  189. package/skills/skill-implementation-init/src/index.ts +0 -378
  190. package/skills/skill-implementation-init/tsconfig.json +0 -14
  191. package/skills/skill-implementation-memento/CLAUDE.md +0 -19
  192. package/skills/skill-implementation-memento/package.json +0 -32
  193. package/skills/skill-implementation-memento/src/index.ts +0 -442
  194. package/skills/skill-implementation-memento/tsconfig.json +0 -14
  195. package/skills/skill-linear/LICENSE +0 -21
  196. package/skills/skill-linear/README.md +0 -28
  197. package/skills/skill-linear/SKILL.md +0 -94
  198. package/skills/skill-linear/install.sh +0 -112
  199. package/skills/skill-linear/package.json +0 -31
  200. package/skills/skill-linear/src/auth.ts +0 -49
  201. package/skills/skill-linear/src/installer.ts +0 -324
  202. package/skills/skill-linear/src/skill-install.ts +0 -174
  203. package/skills/skill-mail/LICENSE +0 -21
  204. package/skills/skill-mail/README.md +0 -17
  205. package/skills/skill-mail/install.sh +0 -112
  206. package/skills/skill-mail/package.json +0 -31
  207. package/skills/skill-mail/src/auth.ts +0 -49
  208. package/skills/skill-mail/src/installer.ts +0 -324
  209. package/skills/skill-mail/src/skill-install.ts +0 -205
  210. package/skills/skill-manage-gmail/CLAUDE.md +0 -19
  211. package/skills/skill-manage-gmail/package.json +0 -32
  212. package/skills/skill-manage-gmail/src/index.ts +0 -504
  213. package/skills/skill-manage-gmail/tsconfig.json +0 -14
  214. package/skills/skill-merch-mockup-factory/CLAUDE.md +0 -19
  215. package/skills/skill-merch-mockup-factory/package.json +0 -32
  216. package/skills/skill-merch-mockup-factory/src/index.ts +0 -296
  217. package/skills/skill-merch-mockup-factory/tsconfig.json +0 -14
  218. package/skills/skill-message/LICENSE +0 -21
  219. package/skills/skill-message/README.md +0 -17
  220. package/skills/skill-message/install.sh +0 -112
  221. package/skills/skill-message/package.json +0 -31
  222. package/skills/skill-message/src/auth.ts +0 -49
  223. package/skills/skill-message/src/installer.ts +0 -324
  224. package/skills/skill-message/src/skill-install.ts +0 -205
  225. package/skills/skill-newsletter-campaign-planner/CLAUDE.md +0 -19
  226. package/skills/skill-newsletter-campaign-planner/package.json +0 -32
  227. package/skills/skill-newsletter-campaign-planner/src/index.ts +0 -252
  228. package/skills/skill-newsletter-campaign-planner/tsconfig.json +0 -14
  229. package/skills/skill-notify/LICENSE +0 -21
  230. package/skills/skill-notify/README.md +0 -17
  231. package/skills/skill-notify/install.sh +0 -112
  232. package/skills/skill-notify/package.json +0 -31
  233. package/skills/skill-notify/src/auth.ts +0 -49
  234. package/skills/skill-notify/src/installer.ts +0 -324
  235. package/skills/skill-notify/src/skill-install.ts +0 -205
  236. package/skills/skill-notion/LICENSE +0 -21
  237. package/skills/skill-notion/README.md +0 -27
  238. package/skills/skill-notion/SKILL.md +0 -115
  239. package/skills/skill-notion/install.sh +0 -112
  240. package/skills/skill-notion/package.json +0 -31
  241. package/skills/skill-notion/src/auth.ts +0 -49
  242. package/skills/skill-notion/src/installer.ts +0 -324
  243. package/skills/skill-notion/src/skill-install.ts +0 -174
  244. package/skills/skill-parse-pdf/CLAUDE.md +0 -19
  245. package/skills/skill-parse-pdf/package.json +0 -32
  246. package/skills/skill-parse-pdf/src/index.ts +0 -581
  247. package/skills/skill-parse-pdf/tsconfig.json +0 -14
  248. package/skills/skill-playwright/LICENSE +0 -21
  249. package/skills/skill-playwright/README.md +0 -27
  250. package/skills/skill-playwright/SKILL.md +0 -116
  251. package/skills/skill-playwright/install.sh +0 -112
  252. package/skills/skill-playwright/package.json +0 -31
  253. package/skills/skill-playwright/src/auth.ts +0 -49
  254. package/skills/skill-playwright/src/installer.ts +0 -324
  255. package/skills/skill-playwright/src/skill-install.ts +0 -174
  256. package/skills/skill-projectbuild/LICENSE +0 -21
  257. package/skills/skill-projectbuild/README.md +0 -17
  258. package/skills/skill-projectbuild/install.sh +0 -112
  259. package/skills/skill-projectbuild/package.json +0 -31
  260. package/skills/skill-projectbuild/src/auth.ts +0 -49
  261. package/skills/skill-projectbuild/src/installer.ts +0 -324
  262. package/skills/skill-projectbuild/src/skill-install.ts +0 -205
  263. package/skills/skill-read-gmail/CLAUDE.md +0 -19
  264. package/skills/skill-read-gmail/package.json +0 -32
  265. package/skills/skill-read-gmail/src/index.ts +0 -343
  266. package/skills/skill-read-gmail/tsconfig.json +0 -14
  267. package/skills/skill-remember/LICENSE +0 -21
  268. package/skills/skill-remember/README.md +0 -17
  269. package/skills/skill-remember/install.sh +0 -112
  270. package/skills/skill-remember/package.json +0 -31
  271. package/skills/skill-remember/src/auth.ts +0 -49
  272. package/skills/skill-remember/src/installer.ts +0 -324
  273. package/skills/skill-remember/src/skill-install.ts +0 -205
  274. package/skills/skill-schedule/README.md +0 -17
  275. package/skills/skill-schedule/install.sh +0 -112
  276. package/skills/skill-schedule/src/auth.ts +0 -49
  277. package/skills/skill-schedule/src/installer.ts +0 -324
  278. package/skills/skill-schedule/src/skill-install.ts +0 -205
  279. package/skills/skill-search/LICENSE +0 -21
  280. package/skills/skill-search/README.md +0 -17
  281. package/skills/skill-search/install.sh +0 -112
  282. package/skills/skill-search/package.json +0 -31
  283. package/skills/skill-search/src/auth.ts +0 -49
  284. package/skills/skill-search/src/installer.ts +0 -324
  285. package/skills/skill-search/src/skill-install.ts +0 -205
  286. package/skills/skill-shadcn/LICENSE +0 -21
  287. package/skills/skill-shadcn/README.md +0 -27
  288. package/skills/skill-shadcn/SKILL.md +0 -113
  289. package/skills/skill-shadcn/install.sh +0 -112
  290. package/skills/skill-shadcn/package.json +0 -31
  291. package/skills/skill-shadcn/src/auth.ts +0 -49
  292. package/skills/skill-shadcn/src/installer.ts +0 -324
  293. package/skills/skill-shadcn/src/skill-install.ts +0 -174
  294. package/skills/skill-shadcn-theme/CLAUDE.md +0 -19
  295. package/skills/skill-shadcn-theme/package.json +0 -32
  296. package/skills/skill-shadcn-theme/src/index.ts +0 -16
  297. package/skills/skill-shadcn-theme/tsconfig.json +0 -14
  298. package/skills/skill-social-template-kit/CLAUDE.md +0 -19
  299. package/skills/skill-social-template-kit/package.json +0 -32
  300. package/skills/skill-social-template-kit/src/index.ts +0 -303
  301. package/skills/skill-social-template-kit/tsconfig.json +0 -14
  302. package/skills/skill-summarize/LICENSE +0 -21
  303. package/skills/skill-summarize/README.md +0 -17
  304. package/skills/skill-summarize/install.sh +0 -112
  305. package/skills/skill-summarize/package.json +0 -31
  306. package/skills/skill-summarize/src/auth.ts +0 -49
  307. package/skills/skill-summarize/src/installer.ts +0 -324
  308. package/skills/skill-summarize/src/skill-install.ts +0 -205
  309. package/skills/skill-sync/LICENSE +0 -21
  310. package/skills/skill-sync/README.md +0 -17
  311. package/skills/skill-sync/install.sh +0 -112
  312. package/skills/skill-sync/package.json +0 -31
  313. package/skills/skill-sync/src/auth.ts +0 -49
  314. package/skills/skill-sync/src/installer.ts +0 -324
  315. package/skills/skill-sync/src/skill-install.ts +0 -205
  316. package/skills/skill-time-blocking-orchestrator/CLAUDE.md +0 -19
  317. package/skills/skill-time-blocking-orchestrator/package.json +0 -32
  318. package/skills/skill-time-blocking-orchestrator/src/index.ts +0 -328
  319. package/skills/skill-time-blocking-orchestrator/tsconfig.json +0 -14
  320. package/skills/skill-transform/.env.example +0 -2
  321. package/skills/skill-transform/LICENSE +0 -21
  322. package/skills/skill-transform/README.md +0 -17
  323. package/skills/skill-transform/SKILL.md +0 -127
  324. package/skills/skill-transform/install.sh +0 -112
  325. package/skills/skill-transform/package.json +0 -37
  326. package/skills/skill-transform/src/auth.ts +0 -49
  327. package/skills/skill-transform/src/http-client.ts +0 -128
  328. package/skills/skill-transform/src/index-http.ts +0 -111
  329. package/skills/skill-transform/src/index-local.ts +0 -368
  330. package/skills/skill-transform/src/index.ts +0 -111
  331. package/skills/skill-transform/src/installer.ts +0 -324
  332. package/skills/skill-transform/src/skill-install.ts +0 -205
  333. package/skills/skill-transform/src/transformers/ai-transformer.ts +0 -202
  334. package/skills/skill-transform/src/transformers/format-detector.ts +0 -147
  335. package/skills/skill-transform/src/types.ts +0 -95
  336. package/skills/skill-transform/tsconfig.json +0 -18
  337. package/skills/skill-translate/LICENSE +0 -21
  338. package/skills/skill-translate/README.md +0 -17
  339. package/skills/skill-translate/install.sh +0 -112
  340. package/skills/skill-translate/package.json +0 -31
  341. package/skills/skill-translate/src/auth.ts +0 -49
  342. package/skills/skill-translate/src/installer.ts +0 -324
  343. package/skills/skill-translate/src/skill-install.ts +0 -205
  344. package/skills/skill-vendor-comparison-coach/CLAUDE.md +0 -19
  345. package/skills/skill-vendor-comparison-coach/package.json +0 -32
  346. package/skills/skill-vendor-comparison-coach/src/index.ts +0 -337
  347. package/skills/skill-vendor-comparison-coach/tsconfig.json +0 -14
  348. package/skills/skill-videodownload/.env.example +0 -5
  349. package/skills/skill-videodownload/CLAUDE.md +0 -64
  350. package/skills/skill-videodownload/LICENSE +0 -21
  351. package/skills/skill-videodownload/README.md +0 -166
  352. package/skills/skill-videodownload/package.json +0 -49
  353. package/skills/skill-videodownload/src/commands/config.ts +0 -89
  354. package/skills/skill-videodownload/src/commands/download.ts +0 -61
  355. package/skills/skill-videodownload/src/commands/info.ts +0 -83
  356. package/skills/skill-videodownload/src/commands/list.ts +0 -84
  357. package/skills/skill-videodownload/src/lib/downloader.ts +0 -270
  358. package/skills/skill-videodownload/src/lib/storage.ts +0 -167
  359. package/skills/skill-videodownload/src/types/index.ts +0 -64
  360. package/skills/skill-videodownload/src/utils/logger.ts +0 -49
  361. package/skills/skill-videodownload/src/utils/paths.ts +0 -94
  362. package/skills/skill-videodownload/tsconfig.json +0 -17
  363. package/skills/skill-voiceover/.env.example +0 -5
  364. package/skills/skill-voiceover/CLAUDE.md +0 -40
  365. package/skills/skill-voiceover/LICENSE +0 -21
  366. package/skills/skill-voiceover/README.md +0 -64
  367. package/skills/skill-voiceover/package.json +0 -43
  368. package/skills/skill-voiceover/src/commands/config.ts +0 -38
  369. package/skills/skill-voiceover/src/commands/generate.ts +0 -37
  370. package/skills/skill-voiceover/src/commands/voices.ts +0 -33
  371. package/skills/skill-voiceover/src/lib/generator.ts +0 -159
  372. package/skills/skill-voiceover/src/lib/storage.ts +0 -55
  373. package/skills/skill-voiceover/src/types/index.ts +0 -55
  374. package/skills/skill-voiceover/src/utils/logger.ts +0 -30
  375. package/skills/skill-voiceover/src/utils/paths.ts +0 -22
  376. package/skills/skill-voiceover/tsconfig.json +0 -17
  377. package/skills/skill-websearch/LICENSE +0 -21
  378. package/skills/skill-websearch/README.md +0 -17
  379. package/skills/skill-websearch/install.sh +0 -112
  380. package/skills/skill-websearch/package.json +0 -31
  381. package/skills/skill-websearch/src/auth.ts +0 -49
  382. package/skills/skill-websearch/src/installer.ts +0 -324
  383. package/skills/skill-websearch/src/skill-install.ts +0 -205
  384. /package/skills/{skill-compose-gmail → skill-gmail}/CLAUDE.md +0 -0
  385. /package/skills/{skill-compose-gmail → skill-gmail}/package.json +0 -0
  386. /package/skills/{skill-compose-gmail → skill-gmail}/src/index.ts +0 -0
  387. /package/skills/{skill-architecture-docs → skill-gmail}/tsconfig.json +0 -0
@@ -32,7 +32,7 @@ describe("skillinfo", () => {
32
32
  });
33
33
 
34
34
  test("returns docs for skill with CLAUDE.md only", () => {
35
- const docs = getSkillDocs("deep-research");
35
+ const docs = getSkillDocs("deepresearch");
36
36
  expect(docs).not.toBeNull();
37
37
  expect(docs!.claudeMd).toBeTruthy();
38
38
  });
@@ -60,7 +60,7 @@ describe("skillinfo", () => {
60
60
  });
61
61
 
62
62
  test("falls back to CLAUDE.md", () => {
63
- const doc = getSkillBestDoc("deep-research");
63
+ const doc = getSkillBestDoc("deepresearch");
64
64
  expect(doc).toBeTruthy();
65
65
  });
66
66
 
@@ -85,9 +85,9 @@ describe("skillinfo", () => {
85
85
  });
86
86
 
87
87
  test("extracts CLI command for deep-research", () => {
88
- const reqs = getSkillRequirements("deep-research");
88
+ const reqs = getSkillRequirements("deepresearch");
89
89
  expect(reqs).not.toBeNull();
90
- expect(reqs!.cliCommand).toBe("skill-deep-research");
90
+ expect(reqs!.cliCommand).toBe("skill-deepresearch");
91
91
  });
92
92
 
93
93
  test("returns null for nonexistent skill", () => {
@@ -104,7 +104,7 @@ describe("skillinfo", () => {
104
104
  });
105
105
 
106
106
  test("extracts dependencies from package.json", () => {
107
- const reqs = getSkillRequirements("deep-research");
107
+ const reqs = getSkillRequirements("deepresearch");
108
108
  expect(reqs).not.toBeNull();
109
109
  expect(reqs!.dependencies).toHaveProperty("commander");
110
110
  });
@@ -146,12 +146,12 @@ describe("skillinfo", () => {
146
146
 
147
147
  describe("generateSkillMd", () => {
148
148
  test("generates SKILL.md for a skill without one", () => {
149
- const md = generateSkillMd("deep-research");
149
+ const md = generateSkillMd("deepresearch");
150
150
  expect(md).not.toBeNull();
151
151
  expect(md!).toContain("---");
152
- expect(md!).toContain("name: deep-research");
152
+ expect(md!).toContain("name: deepresearch");
153
153
  expect(md!).toContain("description:");
154
- expect(md!).toContain("Deep Research");
154
+ expect(md!).toContain("Deep Research (Agentic)");
155
155
  });
156
156
 
157
157
  test("generates SKILL.md for a skill with existing SKILL.md source", () => {
@@ -162,17 +162,17 @@ describe("skillinfo", () => {
162
162
  });
163
163
 
164
164
  test("includes category and tags", () => {
165
- const md = generateSkillMd("deep-research");
165
+ const md = generateSkillMd("deepresearch");
166
166
  expect(md).not.toBeNull();
167
167
  expect(md!).toContain("Category: Research & Writing");
168
168
  expect(md!).toContain("Tags:");
169
169
  });
170
170
 
171
171
  test("includes CLI section for skills with bin entry", () => {
172
- const md = generateSkillMd("deep-research");
172
+ const md = generateSkillMd("deepresearch");
173
173
  expect(md).not.toBeNull();
174
174
  expect(md!).toContain("## CLI");
175
- expect(md!).toContain("skills run deep-research");
175
+ expect(md!).toContain("skills run deepresearch");
176
176
  });
177
177
 
178
178
  test("returns null for nonexistent skill", () => {
@@ -181,7 +181,7 @@ describe("skillinfo", () => {
181
181
  });
182
182
 
183
183
  test("has valid YAML frontmatter", () => {
184
- const md = generateSkillMd("deep-research");
184
+ const md = generateSkillMd("deepresearch");
185
185
  expect(md).not.toBeNull();
186
186
  // Check frontmatter structure
187
187
  const parts = md!.split("---");
package/src/mcp/index.ts CHANGED
@@ -35,7 +35,7 @@ import {
35
35
 
36
36
  const server = new McpServer({
37
37
  name: "skills",
38
- version: "0.0.2",
38
+ version: "0.0.3",
39
39
  });
40
40
 
41
41
  // ---- Tools ----
@@ -1,19 +0,0 @@
1
- # skill-architecture-docs
2
-
3
- Architecture Docs skill.
4
-
5
- ## Tech Stack
6
-
7
- - Runtime: Bun
8
- - Language: TypeScript
9
- - CLI: Commander.js
10
-
11
- ## CLI
12
-
13
- ```bash
14
- skill-architecture-docs run
15
- ```
16
-
17
- ## Data Directory
18
-
19
- ~/.skill/skill-architecture-docs/
@@ -1,32 +0,0 @@
1
- {
2
- "name": "@hasnaxyz/skill-architecture-docs",
3
- "version": "0.1.0",
4
- "description": "Architecture Docs skill",
5
- "type": "module",
6
- "bin": {
7
- "skill-architecture-docs": "./bin/cli.ts"
8
- },
9
- "scripts": {
10
- "dev": "bun run bin/cli.ts",
11
- "build": "bun build bin/cli.ts --outdir dist --target node",
12
- "typecheck": "tsc --noEmit"
13
- },
14
- "dependencies": {
15
- "commander": "^13.0.0"
16
- },
17
- "devDependencies": {
18
- "@types/bun": "latest",
19
- "typescript": "^5.7.0"
20
- },
21
- "publishConfig": {
22
- "access": "restricted",
23
- "registry": "https://registry.npmjs.org/"
24
- },
25
- "files": ["bin", "src", "tsconfig.json"],
26
- "repository": {
27
- "type": "git",
28
- "url": "https://github.com/hasnaxyz/skill-architecture-docs.git"
29
- },
30
- "author": "Hasna",
31
- "license": "MIT"
32
- }
@@ -1,543 +0,0 @@
1
- #!/usr/bin/env bun
2
- /**
3
- * Architecture Documentation Generator Skill
4
- * Analyzes codebases and generates comprehensive architecture documentation
5
- */
6
-
7
- import { parseArgs } from "util";
8
- import { mkdirSync, writeFileSync, appendFileSync, existsSync, readFileSync, readdirSync, statSync } from "fs";
9
- import { join, dirname, extname, basename, relative } from "path";
10
- import { randomUUID } from "crypto";
11
-
12
- // Types
13
- type OutputFormat = "markdown" | "json" | "html";
14
- type AnalysisDepth = "basic" | "detailed" | "comprehensive";
15
- type ApiProvider = "anthropic" | "openai";
16
-
17
- interface ArchitectureOptions {
18
- path: string;
19
- format: OutputFormat;
20
- output: string;
21
- depth: AnalysisDepth;
22
- includeDiagrams: boolean;
23
- analyzeDependencies: boolean;
24
- apiProvider: ApiProvider;
25
- model?: string;
26
- verbose: boolean;
27
- }
28
-
29
- interface FileInfo {
30
- path: string;
31
- type: string;
32
- lines: number;
33
- language: string | null;
34
- }
35
-
36
- interface ComponentInfo {
37
- name: string;
38
- type: string;
39
- path: string;
40
- dependencies: string[];
41
- exports: string[];
42
- description?: string;
43
- }
44
-
45
- interface ArchitectureAnalysis {
46
- overview: string;
47
- components: ComponentInfo[];
48
- techStack: string[];
49
- patterns: string[];
50
- dataFlow: string;
51
- dependencies: {
52
- internal: string[];
53
- external: string[];
54
- };
55
- diagram?: string;
56
- }
57
-
58
- // =============================================================================
59
- // Security: HTML Escaping to prevent XSS
60
- // =============================================================================
61
-
62
- /**
63
- * Escape HTML special characters to prevent XSS attacks
64
- */
65
- function escapeHtml(str: string | undefined | null): string {
66
- if (str === undefined || str === null) return "";
67
- return String(str)
68
- .replace(/&/g, "&")
69
- .replace(/</g, "&lt;")
70
- .replace(/>/g, "&gt;")
71
- .replace(/"/g, "&quot;")
72
- .replace(/'/g, "&#x27;");
73
- }
74
-
75
- // Constants
76
- const SKILL_NAME = "architecture-docs";
77
- const SESSION_ID = randomUUID().slice(0, 8);
78
-
79
- const SKILLS_OUTPUT_DIR = process.env.SKILLS_OUTPUT_DIR || join(process.cwd(), ".skills");
80
- const EXPORTS_DIR = join(SKILLS_OUTPUT_DIR, "exports", SKILL_NAME);
81
- const LOGS_DIR = join(SKILLS_OUTPUT_DIR, "logs", SKILL_NAME);
82
-
83
- const SESSION_TIMESTAMP = new Date().toISOString().replace(/[:.]/g, "_").replace(/-/g, "_").slice(0, 19).toLowerCase();
84
-
85
- // Ensure directories exist
86
- function ensureDir(dir: string) {
87
- if (!existsSync(dir)) {
88
- mkdirSync(dir, { recursive: true });
89
- }
90
- }
91
-
92
- // Logger
93
- function log(message: string, level: "info" | "error" | "success" | "warn" = "info") {
94
- const timestamp = new Date().toISOString();
95
- const logFile = join(LOGS_DIR, `log_${SESSION_TIMESTAMP}_${SESSION_ID}.log`);
96
-
97
- ensureDir(LOGS_DIR);
98
-
99
- const logEntry = `[${timestamp}] [${level.toUpperCase()}] ${message}\n`;
100
- appendFileSync(logFile, logEntry);
101
-
102
- const prefix = level === "error" ? "Error" : level === "success" ? "Success" : level === "warn" ? "Warning" : "Info";
103
- console.log(`[${prefix}] ${message}`);
104
- }
105
-
106
- // Detect language from file extension
107
- function detectLanguage(filePath: string): string | null {
108
- const ext = extname(filePath).toLowerCase();
109
- const languageMap: Record<string, string> = {
110
- ".ts": "typescript",
111
- ".tsx": "typescript",
112
- ".js": "javascript",
113
- ".jsx": "javascript",
114
- ".py": "python",
115
- ".go": "go",
116
- ".rs": "rust",
117
- ".java": "java",
118
- ".rb": "ruby",
119
- ".php": "php",
120
- };
121
- return languageMap[ext] || null;
122
- }
123
-
124
- // Scan directory and collect file information
125
- function scanDirectory(path: string): FileInfo[] {
126
- const files: FileInfo[] = [];
127
-
128
- if (!existsSync(path)) {
129
- throw new Error(`Path not found: ${path}`);
130
- }
131
-
132
- const stat = statSync(path);
133
-
134
- if (stat.isFile()) {
135
- const language = detectLanguage(path);
136
- if (language) {
137
- const content = readFileSync(path, "utf-8");
138
- files.push({
139
- path,
140
- type: "file",
141
- lines: content.split("\n").length,
142
- language,
143
- });
144
- }
145
- } else if (stat.isDirectory()) {
146
- const entries = readdirSync(path);
147
- for (const entry of entries) {
148
- // Skip common ignored directories
149
- if (["node_modules", ".git", "dist", "build", ".next"].includes(entry)) {
150
- continue;
151
- }
152
-
153
- const fullPath = join(path, entry);
154
- try {
155
- const entryStat = statSync(fullPath);
156
-
157
- if (entryStat.isDirectory()) {
158
- files.push(...scanDirectory(fullPath));
159
- } else if (entryStat.isFile()) {
160
- const language = detectLanguage(fullPath);
161
- if (language) {
162
- const content = readFileSync(fullPath, "utf-8");
163
- files.push({
164
- path: fullPath,
165
- type: "file",
166
- lines: content.split("\n").length,
167
- language,
168
- });
169
- }
170
- }
171
- } catch (error) {
172
- // Skip files we can't read
173
- continue;
174
- }
175
- }
176
- }
177
-
178
- return files;
179
- }
180
-
181
- // Analyze codebase structure
182
- function analyzeCodebase(files: FileInfo[], options: ArchitectureOptions): string {
183
- const filesByLanguage = files.reduce((acc, file) => {
184
- if (file.language) {
185
- acc[file.language] = (acc[file.language] || 0) + 1;
186
- }
187
- return acc;
188
- }, {} as Record<string, number>);
189
-
190
- const totalLines = files.reduce((sum, file) => sum + file.lines, 0);
191
-
192
- let analysis = `# Codebase Analysis\n\n`;
193
- analysis += `- Total Files: ${files.length}\n`;
194
- analysis += `- Total Lines: ${totalLines}\n`;
195
- analysis += `- Languages:\n`;
196
-
197
- for (const [lang, count] of Object.entries(filesByLanguage)) {
198
- analysis += ` - ${lang}: ${count} files\n`;
199
- }
200
-
201
- return analysis;
202
- }
203
-
204
- // Extract dependencies from package.json
205
- function extractDependencies(basePath: string): { internal: string[]; external: string[] } {
206
- const internal: string[] = [];
207
- const external: string[] = [];
208
-
209
- const packageJsonPath = join(basePath, "package.json");
210
- if (existsSync(packageJsonPath)) {
211
- const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
212
-
213
- if (packageJson.dependencies) {
214
- external.push(...Object.keys(packageJson.dependencies));
215
- }
216
-
217
- if (packageJson.devDependencies) {
218
- external.push(...Object.keys(packageJson.devDependencies));
219
- }
220
- }
221
-
222
- return { internal, external };
223
- }
224
-
225
- // Generate architecture analysis using AI
226
- async function generateArchitectureAnalysis(
227
- files: FileInfo[],
228
- options: ArchitectureOptions,
229
- codebaseAnalysis: string
230
- ): Promise<ArchitectureAnalysis> {
231
- const apiKey = options.apiProvider === "anthropic"
232
- ? process.env.ANTHROPIC_API_KEY
233
- : process.env.OPENAI_API_KEY;
234
-
235
- if (!apiKey) {
236
- throw new Error(`${options.apiProvider.toUpperCase()}_API_KEY environment variable is not set`);
237
- }
238
-
239
- const prompt = buildAnalysisPrompt(files, options, codebaseAnalysis);
240
-
241
- if (options.verbose) {
242
- log("Analyzing architecture with AI...");
243
- }
244
-
245
- let analysisText: string;
246
- if (options.apiProvider === "anthropic") {
247
- analysisText = await callAnthropicAPI(prompt, apiKey, options.model || "claude-3-5-sonnet-20241022");
248
- } else {
249
- analysisText = await callOpenAIAPI(prompt, apiKey, options.model || "gpt-4-turbo");
250
- }
251
-
252
- // Parse the AI response into structured format
253
- const dependencies = extractDependencies(options.path);
254
-
255
- return {
256
- overview: analysisText,
257
- components: [],
258
- techStack: [],
259
- patterns: [],
260
- dataFlow: "See overview for data flow analysis",
261
- dependencies,
262
- diagram: options.includeDiagrams ? generateMermaidDiagram(files) : undefined,
263
- };
264
- }
265
-
266
- // Build analysis prompt
267
- function buildAnalysisPrompt(files: FileInfo[], options: ArchitectureOptions, codebaseAnalysis: string): string {
268
- let prompt = `You are a software architecture expert. Analyze the following codebase and generate comprehensive architecture documentation.\n\n`;
269
-
270
- prompt += `Codebase Statistics:\n${codebaseAnalysis}\n\n`;
271
-
272
- prompt += `Analysis Depth: ${options.depth}\n\n`;
273
-
274
- prompt += `Please provide:\n`;
275
- prompt += `1. System Overview - High-level description of the architecture\n`;
276
- prompt += `2. Key Components - Main components and their responsibilities\n`;
277
- prompt += `3. Technology Stack - Technologies, frameworks, and libraries used\n`;
278
- prompt += `4. Design Patterns - Architectural and design patterns identified\n`;
279
- prompt += `5. Data Flow - How data flows through the system\n`;
280
-
281
- if (options.depth === "comprehensive") {
282
- prompt += `6. API Endpoints - If applicable\n`;
283
- prompt += `7. Database Schema - If applicable\n`;
284
- prompt += `8. Security Considerations - Security measures implemented\n`;
285
- }
286
-
287
- prompt += `\nGenerate structured markdown documentation that is clear, comprehensive, and well-organized.`;
288
-
289
- return prompt;
290
- }
291
-
292
- // Generate Mermaid diagram
293
- function generateMermaidDiagram(files: FileInfo[]): string {
294
- const languages = [...new Set(files.map(f => f.language).filter(Boolean))];
295
-
296
- let diagram = "```mermaid\ngraph TD\n";
297
- diagram += " A[Application] --> B[Frontend]\n";
298
- diagram += " A --> C[Backend]\n";
299
- diagram += " C --> D[Database]\n";
300
-
301
- if (languages.includes("typescript") || languages.includes("javascript")) {
302
- diagram += " B --> E[Components]\n";
303
- diagram += " B --> F[Services]\n";
304
- }
305
-
306
- diagram += "```\n";
307
-
308
- return diagram;
309
- }
310
-
311
- // Call Anthropic API
312
- async function callAnthropicAPI(prompt: string, apiKey: string, model: string): Promise<string> {
313
- const response = await fetch("https://api.anthropic.com/v1/messages", {
314
- method: "POST",
315
- headers: {
316
- "Content-Type": "application/json",
317
- "x-api-key": apiKey,
318
- "anthropic-version": "2023-06-01",
319
- },
320
- body: JSON.stringify({
321
- model,
322
- max_tokens: 4096,
323
- messages: [{
324
- role: "user",
325
- content: prompt,
326
- }],
327
- }),
328
- });
329
-
330
- if (!response.ok) {
331
- const error = await response.json();
332
- throw new Error(`Anthropic API error: ${error.error?.message || response.statusText}`);
333
- }
334
-
335
- const data = await response.json();
336
- return data.content[0].text.trim();
337
- }
338
-
339
- // Call OpenAI API
340
- async function callOpenAIAPI(prompt: string, apiKey: string, model: string): Promise<string> {
341
- const response = await fetch("https://api.openai.com/v1/chat/completions", {
342
- method: "POST",
343
- headers: {
344
- "Content-Type": "application/json",
345
- "Authorization": `Bearer ${apiKey}`,
346
- },
347
- body: JSON.stringify({
348
- model,
349
- messages: [{
350
- role: "user",
351
- content: prompt,
352
- }],
353
- max_tokens: 4096,
354
- temperature: 0.3,
355
- }),
356
- });
357
-
358
- if (!response.ok) {
359
- const error = await response.json();
360
- throw new Error(`OpenAI API error: ${error.error?.message || response.statusText}`);
361
- }
362
-
363
- const data = await response.json();
364
- return data.choices[0].message.content.trim();
365
- }
366
-
367
- // Generate markdown output
368
- function generateMarkdownOutput(analysis: ArchitectureAnalysis, options: ArchitectureOptions): string {
369
- let markdown = `# Architecture Documentation\n\n`;
370
- markdown += `Generated on ${new Date().toLocaleString()}\n\n`;
371
-
372
- markdown += `## Overview\n\n${analysis.overview}\n\n`;
373
-
374
- if (analysis.diagram && options.includeDiagrams) {
375
- markdown += `## System Diagram\n\n${analysis.diagram}\n\n`;
376
- }
377
-
378
- if (options.analyzeDependencies) {
379
- markdown += `## Dependencies\n\n`;
380
- markdown += `### External Dependencies\n\n`;
381
- if (analysis.dependencies.external.length > 0) {
382
- analysis.dependencies.external.forEach(dep => {
383
- markdown += `- ${dep}\n`;
384
- });
385
- } else {
386
- markdown += `No external dependencies found.\n`;
387
- }
388
- markdown += `\n`;
389
- }
390
-
391
- markdown += `## Data Flow\n\n${analysis.dataFlow}\n\n`;
392
-
393
- return markdown;
394
- }
395
-
396
- // Generate JSON output
397
- function generateJSONOutput(analysis: ArchitectureAnalysis): string {
398
- return JSON.stringify(analysis, null, 2);
399
- }
400
-
401
- // Generate HTML output
402
- function generateHTMLOutput(analysis: ArchitectureAnalysis): string {
403
- const markdown = generateMarkdownOutput(analysis, {
404
- format: "html",
405
- includeDiagrams: true,
406
- analyzeDependencies: true,
407
- } as ArchitectureOptions);
408
-
409
- return `
410
- <!DOCTYPE html>
411
- <html>
412
- <head>
413
- <title>Architecture Documentation</title>
414
- <style>
415
- body { font-family: Arial, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; }
416
- h1 { color: #333; }
417
- h2 { color: #666; border-bottom: 2px solid #ddd; padding-bottom: 10px; }
418
- pre { background: #f5f5f5; padding: 15px; border-radius: 5px; white-space: pre-wrap; word-wrap: break-word; }
419
- </style>
420
- </head>
421
- <body>
422
- <pre>${escapeHtml(markdown)}</pre>
423
- </body>
424
- </html>
425
- `;
426
- }
427
-
428
- // Main function
429
- async function main() {
430
- const { values, positionals } = parseArgs({
431
- args: Bun.argv.slice(2),
432
- options: {
433
- format: { type: "string", default: "markdown" },
434
- output: { type: "string", default: "./ARCHITECTURE.md" },
435
- depth: { type: "string", default: "detailed" },
436
- "include-diagrams": { type: "boolean", default: true },
437
- "analyze-dependencies": { type: "boolean", default: true },
438
- "api-provider": { type: "string", default: "anthropic" },
439
- model: { type: "string" },
440
- verbose: { type: "boolean", default: false },
441
- help: { type: "boolean", short: "h" },
442
- },
443
- allowPositionals: true,
444
- });
445
-
446
- if (values.help) {
447
- console.log(`
448
- Architecture Documentation Generator
449
-
450
- Usage:
451
- skills run architecture-docs -- <path> [options]
452
-
453
- Options:
454
- --format <format> Output format (markdown, json, html) [default: markdown]
455
- --output <path> Output file path [default: ./ARCHITECTURE.md]
456
- --depth <depth> Analysis depth (basic, detailed, comprehensive) [default: detailed]
457
- --include-diagrams Generate mermaid diagrams [default: true]
458
- --analyze-dependencies Include dependency analysis [default: true]
459
- --api-provider <provider> AI provider (anthropic, openai) [default: anthropic]
460
- --model <model> AI model to use [default: provider default]
461
- --verbose Show detailed logging [default: false]
462
- --help, -h Show this help
463
-
464
- Examples:
465
- skills run architecture-docs -- .
466
- skills run architecture-docs -- ./src --format json --output ./docs/arch.json
467
- skills run architecture-docs -- ./src --depth comprehensive
468
- `);
469
- process.exit(0);
470
- }
471
-
472
- const path = positionals[0] || ".";
473
-
474
- try {
475
- log(`Session ID: ${SESSION_ID}`);
476
-
477
- const options: ArchitectureOptions = {
478
- path,
479
- format: values.format as OutputFormat,
480
- output: values.output as string,
481
- depth: values.depth as AnalysisDepth,
482
- includeDiagrams: values["include-diagrams"] as boolean,
483
- analyzeDependencies: values["analyze-dependencies"] as boolean,
484
- apiProvider: values["api-provider"] as ApiProvider,
485
- model: values.model as string | undefined,
486
- verbose: values.verbose as boolean,
487
- };
488
-
489
- log(`Scanning directory: ${path}`);
490
- const files = scanDirectory(path);
491
- log(`Found ${files.length} files to analyze`);
492
-
493
- if (files.length === 0) {
494
- log("No supported files found", "warn");
495
- process.exit(0);
496
- }
497
-
498
- const codebaseAnalysis = analyzeCodebase(files, options);
499
-
500
- log("Generating architecture documentation...");
501
- const analysis = await generateArchitectureAnalysis(files, options, codebaseAnalysis);
502
-
503
- let output: string;
504
- let extension: string;
505
-
506
- switch (options.format) {
507
- case "json":
508
- output = generateJSONOutput(analysis);
509
- extension = ".json";
510
- break;
511
- case "html":
512
- output = generateHTMLOutput(analysis);
513
- extension = ".html";
514
- break;
515
- default:
516
- output = generateMarkdownOutput(analysis, options);
517
- extension = ".md";
518
- }
519
-
520
- const outputPath = options.output.endsWith(extension)
521
- ? options.output
522
- : options.output.replace(/\.[^/.]+$/, "") + extension;
523
-
524
- ensureDir(dirname(outputPath));
525
- writeFileSync(outputPath, output, "utf-8");
526
-
527
- log(`Documentation generated: ${outputPath}`, "success");
528
-
529
- console.log(`
530
- Architecture documentation complete!
531
- Files analyzed: ${files.length}
532
- Output: ${outputPath}
533
- Format: ${options.format}
534
- Log: ${join(LOGS_DIR, `log_${SESSION_TIMESTAMP}_${SESSION_ID}.log`)}
535
- `);
536
-
537
- } catch (error) {
538
- log(`Error: ${error instanceof Error ? error.message : "Unknown error"}`, "error");
539
- process.exit(1);
540
- }
541
- }
542
-
543
- main();
@@ -1,19 +0,0 @@
1
- # skill-auto-format
2
-
3
- Auto Format skill.
4
-
5
- ## Tech Stack
6
-
7
- - Runtime: Bun
8
- - Language: TypeScript
9
- - CLI: Commander.js
10
-
11
- ## CLI
12
-
13
- ```bash
14
- skill-auto-format run
15
- ```
16
-
17
- ## Data Directory
18
-
19
- ~/.skill/skill-auto-format/