@skillsmith/cli 0.7.1 → 0.7.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 (560) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli.js +44039 -0
  4. package/package.json +21 -11
  5. package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts +0 -20
  6. package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts.map +0 -1
  7. package/dist/src/commands/__meta__/telemetry-coverage.test.js +0 -118
  8. package/dist/src/commands/__meta__/telemetry-coverage.test.js.map +0 -1
  9. package/dist/src/commands/ab-test.d.ts +0 -29
  10. package/dist/src/commands/ab-test.d.ts.map +0 -1
  11. package/dist/src/commands/ab-test.js +0 -226
  12. package/dist/src/commands/ab-test.js.map +0 -1
  13. package/dist/src/commands/ab-test.test.d.ts +0 -7
  14. package/dist/src/commands/ab-test.test.d.ts.map +0 -1
  15. package/dist/src/commands/ab-test.test.js +0 -255
  16. package/dist/src/commands/ab-test.test.js.map +0 -1
  17. package/dist/src/commands/analyze.d.ts +0 -14
  18. package/dist/src/commands/analyze.d.ts.map +0 -1
  19. package/dist/src/commands/analyze.js +0 -191
  20. package/dist/src/commands/analyze.js.map +0 -1
  21. package/dist/src/commands/audit-collisions.d.ts +0 -68
  22. package/dist/src/commands/audit-collisions.d.ts.map +0 -1
  23. package/dist/src/commands/audit-collisions.js +0 -309
  24. package/dist/src/commands/audit-collisions.js.map +0 -1
  25. package/dist/src/commands/audit-sources.action.d.ts +0 -37
  26. package/dist/src/commands/audit-sources.action.d.ts.map +0 -1
  27. package/dist/src/commands/audit-sources.action.js +0 -321
  28. package/dist/src/commands/audit-sources.action.js.map +0 -1
  29. package/dist/src/commands/audit-sources.d.ts +0 -37
  30. package/dist/src/commands/audit-sources.d.ts.map +0 -1
  31. package/dist/src/commands/audit-sources.js +0 -55
  32. package/dist/src/commands/audit-sources.js.map +0 -1
  33. package/dist/src/commands/audit-sources.test.d.ts +0 -9
  34. package/dist/src/commands/audit-sources.test.d.ts.map +0 -1
  35. package/dist/src/commands/audit-sources.test.js +0 -228
  36. package/dist/src/commands/audit-sources.test.js.map +0 -1
  37. package/dist/src/commands/audit.d.ts +0 -40
  38. package/dist/src/commands/audit.d.ts.map +0 -1
  39. package/dist/src/commands/audit.js +0 -223
  40. package/dist/src/commands/audit.js.map +0 -1
  41. package/dist/src/commands/audit.test.d.ts +0 -8
  42. package/dist/src/commands/audit.test.d.ts.map +0 -1
  43. package/dist/src/commands/audit.test.js +0 -97
  44. package/dist/src/commands/audit.test.js.map +0 -1
  45. package/dist/src/commands/author/index.d.ts +0 -17
  46. package/dist/src/commands/author/index.d.ts.map +0 -1
  47. package/dist/src/commands/author/index.js +0 -21
  48. package/dist/src/commands/author/index.js.map +0 -1
  49. package/dist/src/commands/author/init.action.d.ts +0 -29
  50. package/dist/src/commands/author/init.action.d.ts.map +0 -1
  51. package/dist/src/commands/author/init.action.js +0 -131
  52. package/dist/src/commands/author/init.action.js.map +0 -1
  53. package/dist/src/commands/author/init.d.ts +0 -36
  54. package/dist/src/commands/author/init.d.ts.map +0 -1
  55. package/dist/src/commands/author/init.helpers.d.ts +0 -80
  56. package/dist/src/commands/author/init.helpers.d.ts.map +0 -1
  57. package/dist/src/commands/author/init.helpers.js +0 -107
  58. package/dist/src/commands/author/init.helpers.js.map +0 -1
  59. package/dist/src/commands/author/init.js +0 -320
  60. package/dist/src/commands/author/init.js.map +0 -1
  61. package/dist/src/commands/author/mcp-init.d.ts +0 -21
  62. package/dist/src/commands/author/mcp-init.d.ts.map +0 -1
  63. package/dist/src/commands/author/mcp-init.js +0 -202
  64. package/dist/src/commands/author/mcp-init.js.map +0 -1
  65. package/dist/src/commands/author/subagent.d.ts +0 -23
  66. package/dist/src/commands/author/subagent.d.ts.map +0 -1
  67. package/dist/src/commands/author/subagent.js +0 -174
  68. package/dist/src/commands/author/subagent.js.map +0 -1
  69. package/dist/src/commands/author/transform.d.ts +0 -23
  70. package/dist/src/commands/author/transform.d.ts.map +0 -1
  71. package/dist/src/commands/author/transform.js +0 -149
  72. package/dist/src/commands/author/transform.js.map +0 -1
  73. package/dist/src/commands/author/utils.d.ts +0 -27
  74. package/dist/src/commands/author/utils.d.ts.map +0 -1
  75. package/dist/src/commands/author/utils.js +0 -118
  76. package/dist/src/commands/author/utils.js.map +0 -1
  77. package/dist/src/commands/config.d.ts +0 -57
  78. package/dist/src/commands/config.d.ts.map +0 -1
  79. package/dist/src/commands/config.js +0 -226
  80. package/dist/src/commands/config.js.map +0 -1
  81. package/dist/src/commands/create.d.ts +0 -43
  82. package/dist/src/commands/create.d.ts.map +0 -1
  83. package/dist/src/commands/create.js +0 -336
  84. package/dist/src/commands/create.js.map +0 -1
  85. package/dist/src/commands/diff.d.ts +0 -21
  86. package/dist/src/commands/diff.d.ts.map +0 -1
  87. package/dist/src/commands/diff.js +0 -227
  88. package/dist/src/commands/diff.js.map +0 -1
  89. package/dist/src/commands/diff.test.d.ts +0 -6
  90. package/dist/src/commands/diff.test.d.ts.map +0 -1
  91. package/dist/src/commands/diff.test.js +0 -327
  92. package/dist/src/commands/diff.test.js.map +0 -1
  93. package/dist/src/commands/import-local.d.ts +0 -28
  94. package/dist/src/commands/import-local.d.ts.map +0 -1
  95. package/dist/src/commands/import-local.helpers.d.ts +0 -28
  96. package/dist/src/commands/import-local.helpers.d.ts.map +0 -1
  97. package/dist/src/commands/import-local.helpers.js +0 -166
  98. package/dist/src/commands/import-local.helpers.js.map +0 -1
  99. package/dist/src/commands/import-local.js +0 -273
  100. package/dist/src/commands/import-local.js.map +0 -1
  101. package/dist/src/commands/import-local.types.d.ts +0 -59
  102. package/dist/src/commands/import-local.types.d.ts.map +0 -1
  103. package/dist/src/commands/import-local.types.js +0 -2
  104. package/dist/src/commands/import-local.types.js.map +0 -1
  105. package/dist/src/commands/import.d.ts +0 -47
  106. package/dist/src/commands/import.d.ts.map +0 -1
  107. package/dist/src/commands/import.js +0 -314
  108. package/dist/src/commands/import.js.map +0 -1
  109. package/dist/src/commands/index.d.ts +0 -28
  110. package/dist/src/commands/index.d.ts.map +0 -1
  111. package/dist/src/commands/index.js +0 -50
  112. package/dist/src/commands/index.js.map +0 -1
  113. package/dist/src/commands/info.d.ts +0 -19
  114. package/dist/src/commands/info.d.ts.map +0 -1
  115. package/dist/src/commands/info.js +0 -110
  116. package/dist/src/commands/info.js.map +0 -1
  117. package/dist/src/commands/install-skill.d.ts +0 -16
  118. package/dist/src/commands/install-skill.d.ts.map +0 -1
  119. package/dist/src/commands/install-skill.js +0 -155
  120. package/dist/src/commands/install-skill.js.map +0 -1
  121. package/dist/src/commands/install.d.ts +0 -34
  122. package/dist/src/commands/install.d.ts.map +0 -1
  123. package/dist/src/commands/install.js +0 -311
  124. package/dist/src/commands/install.js.map +0 -1
  125. package/dist/src/commands/inventory.action.d.ts +0 -55
  126. package/dist/src/commands/inventory.action.d.ts.map +0 -1
  127. package/dist/src/commands/inventory.action.js +0 -179
  128. package/dist/src/commands/inventory.action.js.map +0 -1
  129. package/dist/src/commands/inventory.action.test.d.ts +0 -19
  130. package/dist/src/commands/inventory.action.test.d.ts.map +0 -1
  131. package/dist/src/commands/inventory.action.test.js +0 -371
  132. package/dist/src/commands/inventory.action.test.js.map +0 -1
  133. package/dist/src/commands/inventory.d.ts +0 -21
  134. package/dist/src/commands/inventory.d.ts.map +0 -1
  135. package/dist/src/commands/inventory.js +0 -42
  136. package/dist/src/commands/inventory.js.map +0 -1
  137. package/dist/src/commands/login.d.ts +0 -7
  138. package/dist/src/commands/login.d.ts.map +0 -1
  139. package/dist/src/commands/login.js +0 -323
  140. package/dist/src/commands/login.js.map +0 -1
  141. package/dist/src/commands/login.test-helpers.d.ts +0 -7
  142. package/dist/src/commands/login.test-helpers.d.ts.map +0 -1
  143. package/dist/src/commands/login.test-helpers.js +0 -44
  144. package/dist/src/commands/login.test-helpers.js.map +0 -1
  145. package/dist/src/commands/login.test.d.ts +0 -2
  146. package/dist/src/commands/login.test.d.ts.map +0 -1
  147. package/dist/src/commands/login.test.js +0 -387
  148. package/dist/src/commands/login.test.js.map +0 -1
  149. package/dist/src/commands/logout.d.ts +0 -15
  150. package/dist/src/commands/logout.d.ts.map +0 -1
  151. package/dist/src/commands/logout.js +0 -54
  152. package/dist/src/commands/logout.js.map +0 -1
  153. package/dist/src/commands/logout.test.d.ts +0 -8
  154. package/dist/src/commands/logout.test.d.ts.map +0 -1
  155. package/dist/src/commands/logout.test.js +0 -137
  156. package/dist/src/commands/logout.test.js.map +0 -1
  157. package/dist/src/commands/manage.d.ts +0 -19
  158. package/dist/src/commands/manage.d.ts.map +0 -1
  159. package/dist/src/commands/manage.js +0 -346
  160. package/dist/src/commands/manage.js.map +0 -1
  161. package/dist/src/commands/merge.d.ts +0 -24
  162. package/dist/src/commands/merge.d.ts.map +0 -1
  163. package/dist/src/commands/merge.js +0 -168
  164. package/dist/src/commands/merge.js.map +0 -1
  165. package/dist/src/commands/pin.d.ts +0 -26
  166. package/dist/src/commands/pin.d.ts.map +0 -1
  167. package/dist/src/commands/pin.js +0 -138
  168. package/dist/src/commands/pin.js.map +0 -1
  169. package/dist/src/commands/pin.test.d.ts +0 -6
  170. package/dist/src/commands/pin.test.d.ts.map +0 -1
  171. package/dist/src/commands/pin.test.js +0 -206
  172. package/dist/src/commands/pin.test.js.map +0 -1
  173. package/dist/src/commands/recommend-scoring.d.ts +0 -29
  174. package/dist/src/commands/recommend-scoring.d.ts.map +0 -1
  175. package/dist/src/commands/recommend-scoring.js +0 -141
  176. package/dist/src/commands/recommend-scoring.js.map +0 -1
  177. package/dist/src/commands/recommend.d.ts +0 -15
  178. package/dist/src/commands/recommend.d.ts.map +0 -1
  179. package/dist/src/commands/recommend.helpers.d.ts +0 -44
  180. package/dist/src/commands/recommend.helpers.d.ts.map +0 -1
  181. package/dist/src/commands/recommend.helpers.js +0 -303
  182. package/dist/src/commands/recommend.helpers.js.map +0 -1
  183. package/dist/src/commands/recommend.js +0 -198
  184. package/dist/src/commands/recommend.js.map +0 -1
  185. package/dist/src/commands/recommend.types.d.ts +0 -66
  186. package/dist/src/commands/recommend.types.d.ts.map +0 -1
  187. package/dist/src/commands/recommend.types.js +0 -14
  188. package/dist/src/commands/recommend.types.js.map +0 -1
  189. package/dist/src/commands/run-registry-sync.d.ts +0 -31
  190. package/dist/src/commands/run-registry-sync.d.ts.map +0 -1
  191. package/dist/src/commands/run-registry-sync.js +0 -45
  192. package/dist/src/commands/run-registry-sync.js.map +0 -1
  193. package/dist/src/commands/search-formatters.d.ts +0 -36
  194. package/dist/src/commands/search-formatters.d.ts.map +0 -1
  195. package/dist/src/commands/search-formatters.js +0 -132
  196. package/dist/src/commands/search-formatters.js.map +0 -1
  197. package/dist/src/commands/search-types.d.ts +0 -46
  198. package/dist/src/commands/search-types.d.ts.map +0 -1
  199. package/dist/src/commands/search-types.js +0 -12
  200. package/dist/src/commands/search-types.js.map +0 -1
  201. package/dist/src/commands/search.action.d.ts +0 -16
  202. package/dist/src/commands/search.action.d.ts.map +0 -1
  203. package/dist/src/commands/search.action.js +0 -384
  204. package/dist/src/commands/search.action.js.map +0 -1
  205. package/dist/src/commands/search.d.ts +0 -18
  206. package/dist/src/commands/search.d.ts.map +0 -1
  207. package/dist/src/commands/search.helpers.d.ts +0 -52
  208. package/dist/src/commands/search.helpers.d.ts.map +0 -1
  209. package/dist/src/commands/search.helpers.js +0 -95
  210. package/dist/src/commands/search.helpers.js.map +0 -1
  211. package/dist/src/commands/search.js +0 -48
  212. package/dist/src/commands/search.js.map +0 -1
  213. package/dist/src/commands/search.test.d.ts +0 -10
  214. package/dist/src/commands/search.test.d.ts.map +0 -1
  215. package/dist/src/commands/search.test.js +0 -179
  216. package/dist/src/commands/search.test.js.map +0 -1
  217. package/dist/src/commands/sync.action.d.ts +0 -39
  218. package/dist/src/commands/sync.action.d.ts.map +0 -1
  219. package/dist/src/commands/sync.action.js +0 -353
  220. package/dist/src/commands/sync.action.js.map +0 -1
  221. package/dist/src/commands/sync.d.ts +0 -24
  222. package/dist/src/commands/sync.d.ts.map +0 -1
  223. package/dist/src/commands/sync.helpers.d.ts +0 -55
  224. package/dist/src/commands/sync.helpers.d.ts.map +0 -1
  225. package/dist/src/commands/sync.helpers.js +0 -90
  226. package/dist/src/commands/sync.helpers.js.map +0 -1
  227. package/dist/src/commands/sync.js +0 -101
  228. package/dist/src/commands/sync.js.map +0 -1
  229. package/dist/src/commands/telemetry.action.d.ts +0 -38
  230. package/dist/src/commands/telemetry.action.d.ts.map +0 -1
  231. package/dist/src/commands/telemetry.action.js +0 -350
  232. package/dist/src/commands/telemetry.action.js.map +0 -1
  233. package/dist/src/commands/telemetry.d.ts +0 -30
  234. package/dist/src/commands/telemetry.d.ts.map +0 -1
  235. package/dist/src/commands/telemetry.helpers.d.ts +0 -58
  236. package/dist/src/commands/telemetry.helpers.d.ts.map +0 -1
  237. package/dist/src/commands/telemetry.helpers.js +0 -173
  238. package/dist/src/commands/telemetry.helpers.js.map +0 -1
  239. package/dist/src/commands/telemetry.helpers.test.d.ts +0 -15
  240. package/dist/src/commands/telemetry.helpers.test.d.ts.map +0 -1
  241. package/dist/src/commands/telemetry.helpers.test.js +0 -240
  242. package/dist/src/commands/telemetry.helpers.test.js.map +0 -1
  243. package/dist/src/commands/telemetry.js +0 -65
  244. package/dist/src/commands/telemetry.js.map +0 -1
  245. package/dist/src/commands/telemetry.test.d.ts +0 -18
  246. package/dist/src/commands/telemetry.test.d.ts.map +0 -1
  247. package/dist/src/commands/telemetry.test.js +0 -401
  248. package/dist/src/commands/telemetry.test.js.map +0 -1
  249. package/dist/src/commands/whoami.d.ts +0 -15
  250. package/dist/src/commands/whoami.d.ts.map +0 -1
  251. package/dist/src/commands/whoami.js +0 -55
  252. package/dist/src/commands/whoami.js.map +0 -1
  253. package/dist/src/commands/whoami.test.d.ts +0 -8
  254. package/dist/src/commands/whoami.test.d.ts.map +0 -1
  255. package/dist/src/commands/whoami.test.js +0 -133
  256. package/dist/src/commands/whoami.test.js.map +0 -1
  257. package/dist/src/config.d.ts +0 -29
  258. package/dist/src/config.d.ts.map +0 -1
  259. package/dist/src/config.js +0 -34
  260. package/dist/src/config.js.map +0 -1
  261. package/dist/src/index.d.ts +0 -22
  262. package/dist/src/index.d.ts.map +0 -1
  263. package/dist/src/index.js +0 -117
  264. package/dist/src/index.js.map +0 -1
  265. package/dist/src/templates/changelog.md.template.d.ts +0 -8
  266. package/dist/src/templates/changelog.md.template.d.ts.map +0 -1
  267. package/dist/src/templates/changelog.md.template.js +0 -19
  268. package/dist/src/templates/changelog.md.template.js.map +0 -1
  269. package/dist/src/templates/index.d.ts +0 -11
  270. package/dist/src/templates/index.d.ts.map +0 -1
  271. package/dist/src/templates/index.js +0 -11
  272. package/dist/src/templates/index.js.map +0 -1
  273. package/dist/src/templates/mcp-server.template.d.ts +0 -82
  274. package/dist/src/templates/mcp-server.template.d.ts.map +0 -1
  275. package/dist/src/templates/mcp-server.template.js +0 -430
  276. package/dist/src/templates/mcp-server.template.js.map +0 -1
  277. package/dist/src/templates/mcp-server.template.snippets.d.ts +0 -51
  278. package/dist/src/templates/mcp-server.template.snippets.d.ts.map +0 -1
  279. package/dist/src/templates/mcp-server.template.snippets.js +0 -162
  280. package/dist/src/templates/mcp-server.template.snippets.js.map +0 -1
  281. package/dist/src/templates/mcp-template-handlers.d.ts +0 -33
  282. package/dist/src/templates/mcp-template-handlers.d.ts.map +0 -1
  283. package/dist/src/templates/mcp-template-handlers.js +0 -106
  284. package/dist/src/templates/mcp-template-handlers.js.map +0 -1
  285. package/dist/src/templates/mcp-template-types.d.ts +0 -48
  286. package/dist/src/templates/mcp-template-types.d.ts.map +0 -1
  287. package/dist/src/templates/mcp-template-types.js +0 -18
  288. package/dist/src/templates/mcp-template-types.js.map +0 -1
  289. package/dist/src/templates/readme.md.template.d.ts +0 -8
  290. package/dist/src/templates/readme.md.template.d.ts.map +0 -1
  291. package/dist/src/templates/readme.md.template.js +0 -86
  292. package/dist/src/templates/readme.md.template.js.map +0 -1
  293. package/dist/src/templates/skill.md.template.d.ts +0 -8
  294. package/dist/src/templates/skill.md.template.d.ts.map +0 -1
  295. package/dist/src/templates/skill.md.template.js +0 -97
  296. package/dist/src/templates/skill.md.template.js.map +0 -1
  297. package/dist/src/templates/subagent.md.template.d.ts +0 -38
  298. package/dist/src/templates/subagent.md.template.d.ts.map +0 -1
  299. package/dist/src/templates/subagent.md.template.js +0 -128
  300. package/dist/src/templates/subagent.md.template.js.map +0 -1
  301. package/dist/src/utils/errors.d.ts +0 -52
  302. package/dist/src/utils/errors.d.ts.map +0 -1
  303. package/dist/src/utils/errors.js +0 -58
  304. package/dist/src/utils/errors.js.map +0 -1
  305. package/dist/src/utils/formatters.d.ts +0 -39
  306. package/dist/src/utils/formatters.d.ts.map +0 -1
  307. package/dist/src/utils/formatters.js +0 -69
  308. package/dist/src/utils/formatters.js.map +0 -1
  309. package/dist/src/utils/license-types.d.ts +0 -88
  310. package/dist/src/utils/license-types.d.ts.map +0 -1
  311. package/dist/src/utils/license-types.js +0 -60
  312. package/dist/src/utils/license-types.js.map +0 -1
  313. package/dist/src/utils/license-validation.d.ts +0 -61
  314. package/dist/src/utils/license-validation.d.ts.map +0 -1
  315. package/dist/src/utils/license-validation.js +0 -198
  316. package/dist/src/utils/license-validation.js.map +0 -1
  317. package/dist/src/utils/license.d.ts +0 -56
  318. package/dist/src/utils/license.d.ts.map +0 -1
  319. package/dist/src/utils/license.js +0 -163
  320. package/dist/src/utils/license.js.map +0 -1
  321. package/dist/src/utils/license.test.d.ts +0 -7
  322. package/dist/src/utils/license.test.d.ts.map +0 -1
  323. package/dist/src/utils/license.test.js +0 -308
  324. package/dist/src/utils/license.test.js.map +0 -1
  325. package/dist/src/utils/manifest.d.ts +0 -121
  326. package/dist/src/utils/manifest.d.ts.map +0 -1
  327. package/dist/src/utils/manifest.js +0 -133
  328. package/dist/src/utils/manifest.js.map +0 -1
  329. package/dist/src/utils/manifest.test.d.ts +0 -20
  330. package/dist/src/utils/manifest.test.d.ts.map +0 -1
  331. package/dist/src/utils/manifest.test.js +0 -344
  332. package/dist/src/utils/manifest.test.js.map +0 -1
  333. package/dist/src/utils/node-version.d.ts +0 -41
  334. package/dist/src/utils/node-version.d.ts.map +0 -1
  335. package/dist/src/utils/node-version.js +0 -123
  336. package/dist/src/utils/node-version.js.map +0 -1
  337. package/dist/src/utils/open-database.d.ts +0 -35
  338. package/dist/src/utils/open-database.d.ts.map +0 -1
  339. package/dist/src/utils/open-database.js +0 -73
  340. package/dist/src/utils/open-database.js.map +0 -1
  341. package/dist/src/utils/require-tier.d.ts +0 -38
  342. package/dist/src/utils/require-tier.d.ts.map +0 -1
  343. package/dist/src/utils/require-tier.js +0 -74
  344. package/dist/src/utils/require-tier.js.map +0 -1
  345. package/dist/src/utils/sanitize.d.ts +0 -30
  346. package/dist/src/utils/sanitize.d.ts.map +0 -1
  347. package/dist/src/utils/sanitize.js +0 -45
  348. package/dist/src/utils/sanitize.js.map +0 -1
  349. package/dist/src/utils/skill-name.d.ts +0 -19
  350. package/dist/src/utils/skill-name.d.ts.map +0 -1
  351. package/dist/src/utils/skill-name.js +0 -26
  352. package/dist/src/utils/skill-name.js.map +0 -1
  353. package/dist/src/utils/skills-directory.d.ts +0 -95
  354. package/dist/src/utils/skills-directory.d.ts.map +0 -1
  355. package/dist/src/utils/skills-directory.js +0 -283
  356. package/dist/src/utils/skills-directory.js.map +0 -1
  357. package/dist/src/utils/startup-header-gate.d.ts +0 -29
  358. package/dist/src/utils/startup-header-gate.d.ts.map +0 -1
  359. package/dist/src/utils/startup-header-gate.js +0 -44
  360. package/dist/src/utils/startup-header-gate.js.map +0 -1
  361. package/dist/src/utils/startup-header-gate.test.d.ts +0 -2
  362. package/dist/src/utils/startup-header-gate.test.d.ts.map +0 -1
  363. package/dist/src/utils/startup-header-gate.test.js +0 -46
  364. package/dist/src/utils/startup-header-gate.test.js.map +0 -1
  365. package/dist/src/utils/tool-analyzer.d.ts +0 -54
  366. package/dist/src/utils/tool-analyzer.d.ts.map +0 -1
  367. package/dist/src/utils/tool-analyzer.js +0 -156
  368. package/dist/src/utils/tool-analyzer.js.map +0 -1
  369. package/dist/src/version.d.ts +0 -2
  370. package/dist/src/version.d.ts.map +0 -1
  371. package/dist/src/version.js +0 -24
  372. package/dist/src/version.js.map +0 -1
  373. package/dist/tests/audit-collisions.test.d.ts +0 -42
  374. package/dist/tests/audit-collisions.test.d.ts.map +0 -1
  375. package/dist/tests/audit-collisions.test.js +0 -370
  376. package/dist/tests/audit-collisions.test.js.map +0 -1
  377. package/dist/tests/audit-restructure.test.d.ts +0 -15
  378. package/dist/tests/audit-restructure.test.d.ts.map +0 -1
  379. package/dist/tests/audit-restructure.test.js +0 -151
  380. package/dist/tests/audit-restructure.test.js.map +0 -1
  381. package/dist/tests/author.test.d.ts +0 -5
  382. package/dist/tests/author.test.d.ts.map +0 -1
  383. package/dist/tests/author.test.js +0 -653
  384. package/dist/tests/author.test.js.map +0 -1
  385. package/dist/tests/config.test.d.ts +0 -33
  386. package/dist/tests/config.test.d.ts.map +0 -1
  387. package/dist/tests/config.test.js +0 -240
  388. package/dist/tests/config.test.js.map +0 -1
  389. package/dist/tests/create.test.d.ts +0 -5
  390. package/dist/tests/create.test.d.ts.map +0 -1
  391. package/dist/tests/create.test.js +0 -449
  392. package/dist/tests/create.test.js.map +0 -1
  393. package/dist/tests/e2e/audit-sources-affix.test.d.ts +0 -11
  394. package/dist/tests/e2e/audit-sources-affix.test.d.ts.map +0 -1
  395. package/dist/tests/e2e/audit-sources-affix.test.js +0 -121
  396. package/dist/tests/e2e/audit-sources-affix.test.js.map +0 -1
  397. package/dist/tests/e2e/audit-sources-apply.test.d.ts +0 -13
  398. package/dist/tests/e2e/audit-sources-apply.test.d.ts.map +0 -1
  399. package/dist/tests/e2e/audit-sources-apply.test.js +0 -166
  400. package/dist/tests/e2e/audit-sources-apply.test.js.map +0 -1
  401. package/dist/tests/e2e/audit-sources-recovery.test.d.ts +0 -15
  402. package/dist/tests/e2e/audit-sources-recovery.test.d.ts.map +0 -1
  403. package/dist/tests/e2e/audit-sources-recovery.test.js +0 -179
  404. package/dist/tests/e2e/audit-sources-recovery.test.js.map +0 -1
  405. package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts +0 -23
  406. package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts.map +0 -1
  407. package/dist/tests/e2e/audit-sources-roundtrip.test.js +0 -139
  408. package/dist/tests/e2e/audit-sources-roundtrip.test.js.map +0 -1
  409. package/dist/tests/e2e/author.e2e.test.d.ts +0 -9
  410. package/dist/tests/e2e/author.e2e.test.d.ts.map +0 -1
  411. package/dist/tests/e2e/author.e2e.test.js +0 -666
  412. package/dist/tests/e2e/author.e2e.test.js.map +0 -1
  413. package/dist/tests/e2e/import.e2e.test.d.ts +0 -10
  414. package/dist/tests/e2e/import.e2e.test.d.ts.map +0 -1
  415. package/dist/tests/e2e/import.e2e.test.js +0 -213
  416. package/dist/tests/e2e/import.e2e.test.js.map +0 -1
  417. package/dist/tests/e2e/manage.e2e.test.d.ts +0 -9
  418. package/dist/tests/e2e/manage.e2e.test.d.ts.map +0 -1
  419. package/dist/tests/e2e/manage.e2e.test.js +0 -277
  420. package/dist/tests/e2e/manage.e2e.test.js.map +0 -1
  421. package/dist/tests/e2e/search.e2e.test.d.ts +0 -10
  422. package/dist/tests/e2e/search.e2e.test.d.ts.map +0 -1
  423. package/dist/tests/e2e/search.e2e.test.js +0 -324
  424. package/dist/tests/e2e/search.e2e.test.js.map +0 -1
  425. package/dist/tests/e2e/test-config.d.ts +0 -39
  426. package/dist/tests/e2e/test-config.d.ts.map +0 -1
  427. package/dist/tests/e2e/test-config.js +0 -44
  428. package/dist/tests/e2e/test-config.js.map +0 -1
  429. package/dist/tests/e2e/utils/baseline-collector.d.ts +0 -107
  430. package/dist/tests/e2e/utils/baseline-collector.d.ts.map +0 -1
  431. package/dist/tests/e2e/utils/baseline-collector.js +0 -211
  432. package/dist/tests/e2e/utils/baseline-collector.js.map +0 -1
  433. package/dist/tests/e2e/utils/hardcoded-detector.d.ts +0 -46
  434. package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +0 -1
  435. package/dist/tests/e2e/utils/hardcoded-detector.js +0 -238
  436. package/dist/tests/e2e/utils/hardcoded-detector.js.map +0 -1
  437. package/dist/tests/e2e/utils/index.d.ts +0 -12
  438. package/dist/tests/e2e/utils/index.d.ts.map +0 -1
  439. package/dist/tests/e2e/utils/index.js +0 -12
  440. package/dist/tests/e2e/utils/index.js.map +0 -1
  441. package/dist/tests/e2e/utils/linear-reporter.d.ts +0 -60
  442. package/dist/tests/e2e/utils/linear-reporter.d.ts.map +0 -1
  443. package/dist/tests/e2e/utils/linear-reporter.js +0 -223
  444. package/dist/tests/e2e/utils/linear-reporter.js.map +0 -1
  445. package/dist/tests/e2e/utils/mock-github.d.ts +0 -23
  446. package/dist/tests/e2e/utils/mock-github.d.ts.map +0 -1
  447. package/dist/tests/e2e/utils/mock-github.js +0 -60
  448. package/dist/tests/e2e/utils/mock-github.js.map +0 -1
  449. package/dist/tests/e2e/utils/mock-prompts.d.ts +0 -19
  450. package/dist/tests/e2e/utils/mock-prompts.d.ts.map +0 -1
  451. package/dist/tests/e2e/utils/mock-prompts.js +0 -48
  452. package/dist/tests/e2e/utils/mock-prompts.js.map +0 -1
  453. package/dist/tests/e2e/utils/source-recovery-fixture.d.ts +0 -49
  454. package/dist/tests/e2e/utils/source-recovery-fixture.d.ts.map +0 -1
  455. package/dist/tests/e2e/utils/source-recovery-fixture.js +0 -106
  456. package/dist/tests/e2e/utils/source-recovery-fixture.js.map +0 -1
  457. package/dist/tests/embedding-probe-stdio.test.d.ts +0 -11
  458. package/dist/tests/embedding-probe-stdio.test.d.ts.map +0 -1
  459. package/dist/tests/embedding-probe-stdio.test.js +0 -58
  460. package/dist/tests/embedding-probe-stdio.test.js.map +0 -1
  461. package/dist/tests/import.test.d.ts +0 -5
  462. package/dist/tests/import.test.d.ts.map +0 -1
  463. package/dist/tests/import.test.js +0 -11
  464. package/dist/tests/import.test.js.map +0 -1
  465. package/dist/tests/init.test.d.ts +0 -30
  466. package/dist/tests/init.test.d.ts.map +0 -1
  467. package/dist/tests/init.test.js +0 -357
  468. package/dist/tests/init.test.js.map +0 -1
  469. package/dist/tests/install-multi-client.test.d.ts +0 -2
  470. package/dist/tests/install-multi-client.test.d.ts.map +0 -1
  471. package/dist/tests/install-multi-client.test.js +0 -202
  472. package/dist/tests/install-multi-client.test.js.map +0 -1
  473. package/dist/tests/install-quarantine.test.d.ts +0 -10
  474. package/dist/tests/install-quarantine.test.d.ts.map +0 -1
  475. package/dist/tests/install-quarantine.test.js +0 -86
  476. package/dist/tests/install-quarantine.test.js.map +0 -1
  477. package/dist/tests/install-skill.test.d.ts +0 -8
  478. package/dist/tests/install-skill.test.d.ts.map +0 -1
  479. package/dist/tests/install-skill.test.js +0 -414
  480. package/dist/tests/install-skill.test.js.map +0 -1
  481. package/dist/tests/integration/import-local.test.d.ts +0 -2
  482. package/dist/tests/integration/import-local.test.d.ts.map +0 -1
  483. package/dist/tests/integration/import-local.test.js +0 -158
  484. package/dist/tests/integration/import-local.test.js.map +0 -1
  485. package/dist/tests/license-validation.test.d.ts +0 -8
  486. package/dist/tests/license-validation.test.d.ts.map +0 -1
  487. package/dist/tests/license-validation.test.js +0 -186
  488. package/dist/tests/license-validation.test.js.map +0 -1
  489. package/dist/tests/manage.test.d.ts +0 -5
  490. package/dist/tests/manage.test.d.ts.map +0 -1
  491. package/dist/tests/manage.test.js +0 -495
  492. package/dist/tests/manage.test.js.map +0 -1
  493. package/dist/tests/mcp-server-template.test.d.ts +0 -7
  494. package/dist/tests/mcp-server-template.test.d.ts.map +0 -1
  495. package/dist/tests/mcp-server-template.test.js +0 -372
  496. package/dist/tests/mcp-server-template.test.js.map +0 -1
  497. package/dist/tests/node-version.test.d.ts +0 -8
  498. package/dist/tests/node-version.test.d.ts.map +0 -1
  499. package/dist/tests/node-version.test.js +0 -200
  500. package/dist/tests/node-version.test.js.map +0 -1
  501. package/dist/tests/open-database.test.d.ts +0 -2
  502. package/dist/tests/open-database.test.d.ts.map +0 -1
  503. package/dist/tests/open-database.test.js +0 -77
  504. package/dist/tests/open-database.test.js.map +0 -1
  505. package/dist/tests/recommend-helpers.test.d.ts +0 -9
  506. package/dist/tests/recommend-helpers.test.d.ts.map +0 -1
  507. package/dist/tests/recommend-helpers.test.js +0 -308
  508. package/dist/tests/recommend-helpers.test.js.map +0 -1
  509. package/dist/tests/recommend-scoring.test.d.ts +0 -8
  510. package/dist/tests/recommend-scoring.test.d.ts.map +0 -1
  511. package/dist/tests/recommend-scoring.test.js +0 -184
  512. package/dist/tests/recommend-scoring.test.js.map +0 -1
  513. package/dist/tests/recommend.errors.test.d.ts +0 -8
  514. package/dist/tests/recommend.errors.test.d.ts.map +0 -1
  515. package/dist/tests/recommend.errors.test.js +0 -232
  516. package/dist/tests/recommend.errors.test.js.map +0 -1
  517. package/dist/tests/recommend.filters.test.d.ts +0 -9
  518. package/dist/tests/recommend.filters.test.d.ts.map +0 -1
  519. package/dist/tests/recommend.filters.test.js +0 -235
  520. package/dist/tests/recommend.filters.test.js.map +0 -1
  521. package/dist/tests/recommend.test-helpers.d.ts +0 -66
  522. package/dist/tests/recommend.test-helpers.d.ts.map +0 -1
  523. package/dist/tests/recommend.test-helpers.js +0 -79
  524. package/dist/tests/recommend.test-helpers.js.map +0 -1
  525. package/dist/tests/recommend.test.d.ts +0 -11
  526. package/dist/tests/recommend.test.d.ts.map +0 -1
  527. package/dist/tests/recommend.test.js +0 -320
  528. package/dist/tests/recommend.test.js.map +0 -1
  529. package/dist/tests/search-helpers.test.d.ts +0 -2
  530. package/dist/tests/search-helpers.test.d.ts.map +0 -1
  531. package/dist/tests/search-helpers.test.js +0 -110
  532. package/dist/tests/search-helpers.test.js.map +0 -1
  533. package/dist/tests/search.test.d.ts +0 -5
  534. package/dist/tests/search.test.d.ts.map +0 -1
  535. package/dist/tests/search.test.js +0 -91
  536. package/dist/tests/search.test.js.map +0 -1
  537. package/dist/tests/skills-directory-per-harness.test.d.ts +0 -2
  538. package/dist/tests/skills-directory-per-harness.test.d.ts.map +0 -1
  539. package/dist/tests/skills-directory-per-harness.test.js +0 -116
  540. package/dist/tests/skills-directory-per-harness.test.js.map +0 -1
  541. package/dist/tests/skills-directory.test.d.ts +0 -2
  542. package/dist/tests/skills-directory.test.d.ts.map +0 -1
  543. package/dist/tests/skills-directory.test.js +0 -97
  544. package/dist/tests/skills-directory.test.js.map +0 -1
  545. package/dist/tests/sync.auth-ux.test.d.ts +0 -14
  546. package/dist/tests/sync.auth-ux.test.d.ts.map +0 -1
  547. package/dist/tests/sync.auth-ux.test.js +0 -148
  548. package/dist/tests/sync.auth-ux.test.js.map +0 -1
  549. package/dist/tests/tool-analyzer.test.d.ts +0 -8
  550. package/dist/tests/tool-analyzer.test.d.ts.map +0 -1
  551. package/dist/tests/tool-analyzer.test.js +0 -149
  552. package/dist/tests/tool-analyzer.test.js.map +0 -1
  553. package/dist/tests/unit/commands/install.test.d.ts +0 -7
  554. package/dist/tests/unit/commands/install.test.d.ts.map +0 -1
  555. package/dist/tests/unit/commands/install.test.js +0 -482
  556. package/dist/tests/unit/commands/install.test.js.map +0 -1
  557. package/dist/tests/unit/import-local.helpers.test.d.ts +0 -2
  558. package/dist/tests/unit/import-local.helpers.test.d.ts.map +0 -1
  559. package/dist/tests/unit/import-local.helpers.test.js +0 -96
  560. package/dist/tests/unit/import-local.helpers.test.js.map +0 -1
@@ -1,228 +0,0 @@
1
- /**
2
- * @fileoverview Unit tests for `sklx audit sources` CLI command.
3
- * @see SMI-5407: Skill Source Provenance Recovery
4
- *
5
- * Tests the action layer (`runAuditSources`) with injected mocks so the test
6
- * suite runs fully offline without a real DB or skills directory.
7
- */
8
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
9
- import * as os from 'node:os';
10
- import * as path from 'node:path';
11
- // ============================================================================
12
- // Module mocks — must be declared before the imports that use them
13
- // ============================================================================
14
- const mockOpenCliDatabase = vi.fn();
15
- vi.mock('../utils/open-database.js', () => ({
16
- openCliDatabase: (...args) => mockOpenCliDatabase(...args),
17
- }));
18
- const mockLoadManifest = vi.fn();
19
- vi.mock('../utils/manifest.js', () => ({
20
- loadManifest: () => mockLoadManifest(),
21
- }));
22
- const mockRecoverSources = vi.fn();
23
- const mockBackfillManifest = vi.fn();
24
- vi.mock('@skillsmith/core', async (importOriginal) => {
25
- const actual = await importOriginal();
26
- return {
27
- ...actual,
28
- // Must be a regular function (not arrow) so `new SourceRecoveryService()` works.
29
- SourceRecoveryService: function MockSourceRecoveryService() {
30
- return { recoverSources: (...args) => mockRecoverSources(...args) };
31
- },
32
- backfillManifest: (...args) => mockBackfillManifest(...args),
33
- defaultSkillsRoot: () => path.join(os.homedir(), '.claude', 'skills'),
34
- };
35
- });
36
- // ============================================================================
37
- // Import after mocks
38
- // ============================================================================
39
- import { runAuditSources } from './audit-sources.action.js';
40
- function makeReport(overrides = {}) {
41
- return {
42
- skills: [
43
- {
44
- skillName: 'linear',
45
- installPath: '/home/user/.claude/skills/linear',
46
- recoveredSource: {
47
- owner: 'williamsmith',
48
- repo: 'linear',
49
- url: 'https://github.com/williamsmith/linear',
50
- },
51
- registryId: 'uuid-linear',
52
- method: 'git-remote',
53
- confidence: 'exact',
54
- candidates: [],
55
- status: 'recovered',
56
- },
57
- ],
58
- summary: { total: 1, recovered: 1, already_tracked: 0, unknown: 0, skipped_backup: 0 },
59
- ...overrides,
60
- };
61
- }
62
- function makeDb() {
63
- return {
64
- prepare: vi.fn().mockReturnValue({ all: vi.fn().mockReturnValue([]) }),
65
- close: vi.fn(),
66
- };
67
- }
68
- function baseOptions(overrides = {}) {
69
- return {
70
- skillsRoot: '/tmp/test-skills',
71
- apply: false,
72
- yes: false,
73
- set: undefined,
74
- minConfidence: 'high',
75
- json: false,
76
- embedding: false,
77
- catalogHint: false,
78
- writeFrontmatter: false,
79
- forceWriteFrontmatter: false,
80
- db: ':memory:',
81
- ...overrides,
82
- };
83
- }
84
- // ============================================================================
85
- // Tests
86
- // ============================================================================
87
- describe('runAuditSources', () => {
88
- beforeEach(() => {
89
- vi.clearAllMocks();
90
- mockOpenCliDatabase.mockResolvedValue(makeDb());
91
- mockLoadManifest.mockResolvedValue({ version: '1.0.0', installedSkills: {} });
92
- mockRecoverSources.mockResolvedValue(makeReport());
93
- mockBackfillManifest.mockResolvedValue({ planned: [], written: [], skipped: [] });
94
- });
95
- afterEach(() => {
96
- vi.clearAllMocks();
97
- });
98
- // --------------------------------------------------------------------------
99
- // --json shape + exit 0
100
- // --------------------------------------------------------------------------
101
- it('--json emits valid JSON with skills and summary', async () => {
102
- const report = makeReport();
103
- mockRecoverSources.mockResolvedValue(report);
104
- const written = [];
105
- vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
106
- if (typeof chunk === 'string')
107
- written.push(chunk);
108
- return true;
109
- });
110
- await runAuditSources(baseOptions({ json: true }));
111
- const output = written.join('');
112
- const parsed = JSON.parse(output);
113
- expect(Array.isArray(parsed.skills)).toBe(true);
114
- expect(parsed.summary.total).toBe(1);
115
- });
116
- // --------------------------------------------------------------------------
117
- // Dry-run: default run does NOT write the manifest
118
- // --------------------------------------------------------------------------
119
- it('dry-run by default: does not call backfillManifest', async () => {
120
- const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
121
- await runAuditSources(baseOptions());
122
- expect(mockBackfillManifest).not.toHaveBeenCalled();
123
- logSpy.mockRestore();
124
- });
125
- // --------------------------------------------------------------------------
126
- // already_tracked overlay
127
- // --------------------------------------------------------------------------
128
- it('overlays already_tracked when manifest already has a source', async () => {
129
- mockLoadManifest.mockResolvedValue({
130
- version: '1.0.0',
131
- installedSkills: {
132
- linear: {
133
- id: 'uuid-linear',
134
- name: 'linear',
135
- version: '1.0.0',
136
- source: 'https://github.com/williamsmith/linear',
137
- installPath: '/home/user/.claude/skills/linear',
138
- installedAt: '2024-01-01T00:00:00.000Z',
139
- lastUpdated: '2024-01-01T00:00:00.000Z',
140
- },
141
- },
142
- });
143
- const jsonChunks = [];
144
- vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
145
- if (typeof chunk === 'string')
146
- jsonChunks.push(chunk);
147
- return true;
148
- });
149
- await runAuditSources(baseOptions({ json: true }));
150
- const parsed = JSON.parse(jsonChunks.join(''));
151
- const alreadyTracked = parsed.skills.find((s) => s.status === 'already_tracked');
152
- expect(alreadyTracked).toBeDefined();
153
- expect(parsed.summary.already_tracked).toBe(1);
154
- });
155
- // --------------------------------------------------------------------------
156
- // --apply --yes writes the manifest
157
- // --------------------------------------------------------------------------
158
- it('--apply --yes calls backfillManifest with apply: true', async () => {
159
- mockBackfillManifest.mockResolvedValue({ planned: [], written: ['linear'], skipped: [] });
160
- const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
161
- await runAuditSources(baseOptions({ apply: true, yes: true }));
162
- expect(mockBackfillManifest).toHaveBeenCalledWith(expect.objectContaining({ summary: expect.any(Object) }), expect.objectContaining({ apply: true }));
163
- logSpy.mockRestore();
164
- });
165
- // --------------------------------------------------------------------------
166
- // Multi-candidate row appears in JSON output
167
- // --------------------------------------------------------------------------
168
- it('--json includes candidates array when ambiguous (multi-match)', async () => {
169
- const ambiguousReport = makeReport({
170
- skills: [
171
- {
172
- skillName: 'git-helper',
173
- installPath: '/home/user/.claude/skills/git-helper',
174
- recoveredSource: null,
175
- registryId: null,
176
- method: 'registry-name',
177
- confidence: 'low',
178
- candidates: [
179
- {
180
- id: 'id-1',
181
- name: 'git-helper',
182
- owner: 'alice',
183
- repo: 'git-helper',
184
- url: 'https://github.com/alice/git-helper',
185
- qualityScore: 80,
186
- },
187
- {
188
- id: 'id-2',
189
- name: 'git-helper',
190
- owner: 'bob',
191
- repo: 'git-helper',
192
- url: 'https://github.com/bob/git-helper',
193
- qualityScore: 60,
194
- },
195
- ],
196
- status: 'unknown',
197
- },
198
- ],
199
- summary: { total: 1, recovered: 0, already_tracked: 0, unknown: 1, skipped_backup: 0 },
200
- });
201
- mockRecoverSources.mockResolvedValue(ambiguousReport);
202
- const written = [];
203
- vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
204
- if (typeof chunk === 'string')
205
- written.push(chunk);
206
- return true;
207
- });
208
- await runAuditSources(baseOptions({ json: true }));
209
- const parsed = JSON.parse(written.join(''));
210
- expect(parsed.skills[0]?.candidates).toHaveLength(2);
211
- });
212
- // --------------------------------------------------------------------------
213
- // --write-frontmatter without --force-write-frontmatter exits non-zero
214
- // --------------------------------------------------------------------------
215
- it('--write-frontmatter without --force-write-frontmatter exits with code 1', async () => {
216
- const exitSpy = vi
217
- .spyOn(process, 'exit')
218
- .mockImplementation((_code) => {
219
- throw new Error('process.exit');
220
- });
221
- const errSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
222
- await expect(runAuditSources(baseOptions({ writeFrontmatter: true, forceWriteFrontmatter: false }))).rejects.toThrow('process.exit');
223
- expect(exitSpy).toHaveBeenCalledWith(1);
224
- exitSpy.mockRestore();
225
- errSpy.mockRestore();
226
- });
227
- });
228
- //# sourceMappingURL=audit-sources.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit-sources.test.js","sourceRoot":"","sources":["../../../src/commands/audit-sources.test.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- /**
2
- * @fileoverview skillsmith audit command — CLI security advisory checker
3
- * @module @skillsmith/cli/commands/audit
4
- * @see SMI-skill-version-tracking Wave 3 (advisories subcommand)
5
- * @see SMI-4590 Wave 4 Step 0a — restructured into parent `audit` command
6
- *
7
- * Lists active security advisories for installed skills in npm-audit style
8
- * output. Advisories are published by the Skillsmith team as security
9
- * issues are identified.
10
- *
11
- * Tier gate: Team (via requireTier).
12
- * Use --fix to attempt `skillsmith update <skill>` for each advisory with a patch.
13
- *
14
- * Surface (post-SMI-4590 Step 0a):
15
- * - `sklx audit advisories <skill-id>` (canonical)
16
- * - `sklx audit <skill-id>` (deprecation alias — emits warning, forwards to advisories)
17
- * - `sklx audit collisions` is the namespace-collision audit (SMI-4590 PR 5/6).
18
- */
19
- import { Command } from 'commander';
20
- export declare const advisoriesAction: (opts: Record<string, string | boolean | undefined>) => Promise<void>;
21
- export declare function createAuditAdvisoriesSubcommand(): Command;
22
- /**
23
- * Deprecation warning for top-level `sklx audit <skill-id>` flat invocation.
24
- * Removal target: next minor release.
25
- *
26
- * @internal exported for tests.
27
- */
28
- export declare const AUDIT_FLAT_DEPRECATION_NOTICE = "[DEPRECATED] sklx audit <skill-id> is deprecated; use 'sklx audit advisories <skill-id>' instead. This alias will be removed in the next minor version.";
29
- /**
30
- * Build the parent `audit` command. Subcommands:
31
- * - `advisories` — security advisory checker (canonical, Team tier).
32
- * - `<skill-id>` (positional fallback) — deprecation alias forwarding to
33
- * `advisories`. Emits a stderr warning. Removed in next minor release.
34
- *
35
- * `sklx audit collisions` is added by SMI-4590 PR 5/6.
36
- */
37
- export declare function createAuditCommand(): Command;
38
- export declare const auditAction: (skillId: string | undefined, opts: Record<string, string | boolean | undefined>, command: Command) => Promise<void>;
39
- export default createAuditCommand;
40
- //# sourceMappingURL=audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiKnC,eAAO,MAAM,gBAAgB,uEAI3B,CAAA;AAEF,wBAAgB,+BAA+B,IAAI,OAAO,CAMzD;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,4JACiH,CAAA;AAE3J;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C;AA4BD,eAAO,MAAM,WAAW,sHAItB,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
@@ -1,223 +0,0 @@
1
- /**
2
- * @fileoverview skillsmith audit command — CLI security advisory checker
3
- * @module @skillsmith/cli/commands/audit
4
- * @see SMI-skill-version-tracking Wave 3 (advisories subcommand)
5
- * @see SMI-4590 Wave 4 Step 0a — restructured into parent `audit` command
6
- *
7
- * Lists active security advisories for installed skills in npm-audit style
8
- * output. Advisories are published by the Skillsmith team as security
9
- * issues are identified.
10
- *
11
- * Tier gate: Team (via requireTier).
12
- * Use --fix to attempt `skillsmith update <skill>` for each advisory with a patch.
13
- *
14
- * Surface (post-SMI-4590 Step 0a):
15
- * - `sklx audit advisories <skill-id>` (canonical)
16
- * - `sklx audit <skill-id>` (deprecation alias — emits warning, forwards to advisories)
17
- * - `sklx audit collisions` is the namespace-collision audit (SMI-4590 PR 5/6).
18
- */
19
- import { Command } from 'commander';
20
- import chalk from 'chalk';
21
- import { AdvisoryRepository } from '@skillsmith/core';
22
- import { withTelemetry } from '@skillsmith/core/telemetry';
23
- import { openCliDatabase } from '../utils/open-database.js';
24
- import { DEFAULT_DB_PATH } from '../config.js';
25
- import { sanitizeError } from '../utils/sanitize.js';
26
- import { requireTier } from '../utils/require-tier.js';
27
- import { createAuditCollisionsSubcommand } from './audit-collisions.js';
28
- import { createAuditSourcesSubcommand } from './audit-sources.js';
29
- // ============================================================================
30
- // Severity display helpers
31
- // ============================================================================
32
- const SEVERITY_COLORS = {
33
- critical: chalk.bgRed.white.bold,
34
- high: chalk.red.bold,
35
- medium: chalk.yellow.bold,
36
- low: chalk.cyan,
37
- };
38
- const SEVERITY_PREFIXES = {
39
- critical: '[!]',
40
- high: '[*]',
41
- medium: '[+]',
42
- low: '[-]',
43
- };
44
- function colorSeverity(severity) {
45
- const colorFn = SEVERITY_COLORS[severity] ?? chalk.white;
46
- const prefix = SEVERITY_PREFIXES[severity] ?? ' ';
47
- return colorFn(prefix + ' ' + severity.padEnd(8));
48
- }
49
- // ============================================================================
50
- // Output formatting
51
- // ============================================================================
52
- /**
53
- * Print advisories in npm-audit style format
54
- */
55
- function printAdvisories(advisories) {
56
- for (const adv of advisories) {
57
- const fixLabel = adv.patchedVersions
58
- ? chalk.green(`Fix: skillsmith update ${adv.skillId}`)
59
- : chalk.dim('No fix available');
60
- console.log(`${colorSeverity(adv.severity)} ${chalk.bold(adv.title)}\n` +
61
- ` ${chalk.dim(adv.id)}\n` +
62
- ` ${fixLabel}\n`);
63
- }
64
- }
65
- /**
66
- * Print severity summary
67
- */
68
- function printSummary(counts) {
69
- const total = Object.values(counts).reduce((a, b) => a + b, 0);
70
- console.log(chalk.bold('Summary:'));
71
- if (counts['critical'])
72
- console.log(` ${chalk.bgRed.white.bold('[!] critical')} ${counts['critical']}`);
73
- if (counts['high'])
74
- console.log(` ${chalk.red.bold('[*] high ')} ${counts['high']}`);
75
- if (counts['medium'])
76
- console.log(` ${chalk.yellow.bold('[+] medium ')} ${counts['medium']}`);
77
- if (counts['low'])
78
- console.log(` ${chalk.cyan('[-] low ')} ${counts['low']}`);
79
- console.log(` ${' total '.padEnd(14)} ${total}`);
80
- }
81
- async function runAdvisoriesAudit(options) {
82
- // Team tier required for security advisories
83
- await requireTier('team');
84
- const db = await openCliDatabase(options.db);
85
- try {
86
- const advisoryRepo = new AdvisoryRepository(db);
87
- const advisories = advisoryRepo.getActiveAdvisories();
88
- if (advisories.length === 0) {
89
- console.log(chalk.dim('\nNo advisories found.'));
90
- console.log(chalk.dim('No advisories have been published yet. This does not indicate installed\n' +
91
- 'skills have been reviewed. Run `skillsmith sync` to fetch the latest.'));
92
- console.log();
93
- return;
94
- }
95
- console.log(chalk.bold.blue('\n=== Skill Security Audit ===\n'));
96
- printAdvisories(advisories);
97
- // Count by severity
98
- const counts = {};
99
- for (const adv of advisories) {
100
- counts[adv.severity] = (counts[adv.severity] ?? 0) + 1;
101
- }
102
- printSummary(counts);
103
- console.log();
104
- if (options.fix) {
105
- const fixable = advisories.filter((a) => a.patchedVersions);
106
- if (fixable.length === 0) {
107
- console.log(chalk.yellow('No fixable advisories found.'));
108
- return;
109
- }
110
- console.log(chalk.bold(`\nAttempting to fix ${fixable.length} advisory(s)...\n`));
111
- const skillsToUpdate = [...new Set(fixable.map((a) => a.skillId))];
112
- for (const skillId of skillsToUpdate) {
113
- console.log(chalk.cyan(` Running: skillsmith update ${skillId}`));
114
- // Wave 2 will implement full update logic; this surfaces the intent clearly
115
- console.log(chalk.dim(` (update for ${skillId} — requires Wave 2 update implementation)`));
116
- }
117
- }
118
- }
119
- finally {
120
- db.close();
121
- }
122
- }
123
- // ============================================================================
124
- // Command factories
125
- // ============================================================================
126
- /**
127
- * Build the `advisories` subcommand. Same body as the pre-SMI-4590 flat
128
- * `audit` command — only the surface (parent + name) changed.
129
- *
130
- * @internal exported for tests; consumers should use {@link createAuditCommand}.
131
- */
132
- // SMI-5128: extracted from inline .action() closure so withTelemetry can wrap
133
- // it at the export boundary (SMI-5040 coverage gate).
134
- async function advisoriesActionImpl(opts) {
135
- try {
136
- await runAdvisoriesAudit({
137
- db: opts['db'],
138
- fix: opts['fix'] ?? false,
139
- });
140
- }
141
- catch (error) {
142
- console.error(chalk.red('Error:'), sanitizeError(error));
143
- process.exit(1);
144
- }
145
- }
146
- export const advisoriesAction = withTelemetry(advisoriesActionImpl, {
147
- source: 'cli',
148
- extractSkillId: () => 'advisories',
149
- extractFramework: () => 'cli',
150
- });
151
- export function createAuditAdvisoriesSubcommand() {
152
- return new Command('advisories')
153
- .description('Check installed skills for known security advisories (Team tier required)')
154
- .option('-d, --db <path>', 'Database file path', DEFAULT_DB_PATH)
155
- .option('--fix', 'Attempt to update skills with available patches')
156
- .action(advisoriesAction);
157
- }
158
- /**
159
- * Deprecation warning for top-level `sklx audit <skill-id>` flat invocation.
160
- * Removal target: next minor release.
161
- *
162
- * @internal exported for tests.
163
- */
164
- export const AUDIT_FLAT_DEPRECATION_NOTICE = "[DEPRECATED] sklx audit <skill-id> is deprecated; use 'sklx audit advisories <skill-id>' instead. This alias will be removed in the next minor version.";
165
- /**
166
- * Build the parent `audit` command. Subcommands:
167
- * - `advisories` — security advisory checker (canonical, Team tier).
168
- * - `<skill-id>` (positional fallback) — deprecation alias forwarding to
169
- * `advisories`. Emits a stderr warning. Removed in next minor release.
170
- *
171
- * `sklx audit collisions` is added by SMI-4590 PR 5/6.
172
- */
173
- export function createAuditCommand() {
174
- const audit = new Command('audit').description('Audit installed skills (advisories, namespace collisions)');
175
- audit.addCommand(createAuditAdvisoriesSubcommand());
176
- // SMI-4590 PR 5/6 — register `collisions` sibling subcommand.
177
- audit.addCommand(createAuditCollisionsSubcommand());
178
- // SMI-5407 — register `sources` sibling subcommand.
179
- audit.addCommand(createAuditSourcesSubcommand());
180
- // Deprecation alias: `sklx audit <skill-id>` → forward to `advisories`.
181
- // Implemented as a default-action on the parent: when Commander is invoked
182
- // with positional args that don't match a registered subcommand, emit the
183
- // deprecation notice and route to the advisories action.
184
- //
185
- // We use `.argument('[skillId]')` + `.action()` to capture the positional
186
- // fallback. Commander resolves registered subcommands first, so this fires
187
- // only for unknown subcommand strings (treated as <skill-id>).
188
- audit
189
- .argument('[skillId]', 'Legacy positional skill-id (deprecated; use `advisories <skill-id>`)')
190
- .option('-d, --db <path>', 'Database file path (deprecated alias)', DEFAULT_DB_PATH)
191
- .option('--fix', 'Attempt to update skills with available patches (deprecated alias)')
192
- .action(auditAction);
193
- return audit;
194
- }
195
- // SMI-5128: extracted from the parent `audit` inline .action() closure so
196
- // withTelemetry can wrap it. `command.help()` (commander passes the Command as
197
- // the final action arg) replaces the closure's `audit.help()`.
198
- async function auditActionImpl(skillId, opts, command) {
199
- if (skillId === undefined) {
200
- // No subcommand and no positional — print parent help.
201
- command.help();
202
- return;
203
- }
204
- // Emit deprecation warning to stderr; do not pollute stdout.
205
- console.error(chalk.yellow(AUDIT_FLAT_DEPRECATION_NOTICE));
206
- try {
207
- await runAdvisoriesAudit({
208
- db: opts['db'],
209
- fix: opts['fix'] ?? false,
210
- });
211
- }
212
- catch (error) {
213
- console.error(chalk.red('Error:'), sanitizeError(error));
214
- process.exit(1);
215
- }
216
- }
217
- export const auditAction = withTelemetry(auditActionImpl, {
218
- source: 'cli',
219
- extractSkillId: () => 'audit',
220
- extractFramework: () => 'cli',
221
- });
222
- export default createAuditCommand;
223
- //# sourceMappingURL=audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * @fileoverview Unit tests for `skillsmith audit` CLI command
3
- * @see SMI-skill-version-tracking Wave 3
4
- *
5
- * Uses SKILLSMITH_SKIP_LICENSE_CHECK=true to bypass tier gate in tests.
6
- */
7
- export {};
8
- //# sourceMappingURL=audit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.test.d.ts","sourceRoot":"","sources":["../../../src/commands/audit.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,97 +0,0 @@
1
- /**
2
- * @fileoverview Unit tests for `skillsmith audit` CLI command
3
- * @see SMI-skill-version-tracking Wave 3
4
- *
5
- * Uses SKILLSMITH_SKIP_LICENSE_CHECK=true to bypass tier gate in tests.
6
- */
7
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
8
- import { AdvisoryRepository } from '@skillsmith/core';
9
- import { createTestDatabase, closeDatabase } from '@skillsmith/core/testkit';
10
- // ============================================================================
11
- // Helpers
12
- // ============================================================================
13
- function makeAdvisory(overrides = {}) {
14
- return {
15
- id: 'SSA-2026-001',
16
- skillId: 'community/commit-helper',
17
- severity: 'critical',
18
- title: 'Prompt Injection in commit-helper',
19
- description: 'A test advisory for CLI tests.',
20
- publishedAt: '2026-01-15T00:00:00Z',
21
- ...overrides,
22
- };
23
- }
24
- // ============================================================================
25
- // Tests — isolate the core logic by testing AdvisoryRepository output
26
- // that the audit command displays, without spawning an actual Commander
27
- // process (which would require SKILLSMITH_SKIP_LICENSE_CHECK in env).
28
- // The command action itself is thin formatting logic over the repo.
29
- // ============================================================================
30
- describe('audit command — AdvisoryRepository integration', () => {
31
- let db;
32
- let repo;
33
- beforeEach(async () => {
34
- process.env['SKILLSMITH_SKIP_LICENSE_CHECK'] = 'true';
35
- db = await createTestDatabase();
36
- repo = new AdvisoryRepository(db);
37
- });
38
- afterEach(() => {
39
- delete process.env['SKILLSMITH_SKIP_LICENSE_CHECK'];
40
- closeDatabase(db);
41
- });
42
- it('returns empty array when DB has no advisories', () => {
43
- const advisories = repo.getActiveAdvisories();
44
- expect(advisories).toHaveLength(0);
45
- });
46
- it('returns advisory data for display when advisories exist', () => {
47
- repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-001', severity: 'critical', skillId: 'community/commit-helper' }));
48
- repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-002', severity: 'high', skillId: 'community/jest-helper' }));
49
- const advisories = repo.getActiveAdvisories();
50
- expect(advisories).toHaveLength(2);
51
- const critical = advisories.filter((a) => a.severity === 'critical');
52
- const high = advisories.filter((a) => a.severity === 'high');
53
- expect(critical).toHaveLength(1);
54
- expect(high).toHaveLength(1);
55
- expect(critical[0].skillId).toBe('community/commit-helper');
56
- expect(high[0].skillId).toBe('community/jest-helper');
57
- });
58
- it('reflects npm audit style data: title and id are present per advisory', () => {
59
- repo.upsertAdvisory(makeAdvisory({
60
- id: 'SSA-2026-003',
61
- title: 'Prompt Injection in commit-helper',
62
- severity: 'critical',
63
- }));
64
- const advisories = repo.getActiveAdvisories();
65
- expect(advisories[0].title).toBe('Prompt Injection in commit-helper');
66
- expect(advisories[0].id).toBe('SSA-2026-003');
67
- });
68
- it('fixAvailable is determined by presence of patchedVersions', () => {
69
- repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-004', patchedVersions: '[">=2.0.0"]' }));
70
- repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-005', skillId: 'community/other-skill' }));
71
- const withPatch = repo.getAdvisoriesForSkill('community/commit-helper')[0];
72
- const withoutPatch = repo.getAdvisoriesForSkill('community/other-skill')[0];
73
- expect(withPatch.patchedVersions).toBeTruthy();
74
- expect(withoutPatch.patchedVersions).toBeUndefined();
75
- });
76
- });
77
- // ============================================================================
78
- // Tests — requireTier bypass with SKILLSMITH_SKIP_LICENSE_CHECK
79
- // ============================================================================
80
- describe('audit command — requireTier bypass', () => {
81
- it('does not throw when SKILLSMITH_SKIP_LICENSE_CHECK=true', async () => {
82
- process.env['SKILLSMITH_SKIP_LICENSE_CHECK'] = 'true';
83
- // requireTier should return without throwing
84
- const { requireTier } = await import('../utils/require-tier.js');
85
- await expect(requireTier('team')).resolves.toBeUndefined();
86
- delete process.env['SKILLSMITH_SKIP_LICENSE_CHECK'];
87
- });
88
- it('throws when no license key and tier is required', async () => {
89
- delete process.env['SKILLSMITH_SKIP_LICENSE_CHECK'];
90
- delete process.env['SKILLSMITH_LICENSE_KEY'];
91
- const { requireTier } = await import('../utils/require-tier.js');
92
- // With no license key, community tier — should reject team requirement
93
- // getLicenseStatus returns community tier when no key is present
94
- await expect(requireTier('team')).rejects.toThrow(/team tier/);
95
- });
96
- });
97
- //# sourceMappingURL=audit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.test.js","sourceRoot":"","sources":["../../../src/commands/audit.test.ts"],"names":[],"mappings":"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"}