@skillsmith/cli 0.7.2 → 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 +5 -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 -285
  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 -108
  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,449 +0,0 @@
1
- /**
2
- * SMI-3083: skillsmith create command tests
3
- */
4
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
5
- import { Command } from 'commander';
6
- // Mock file system
7
- vi.mock('fs/promises', () => ({
8
- mkdir: vi.fn(),
9
- writeFile: vi.fn(),
10
- stat: vi.fn(),
11
- }));
12
- // Mock inquirer
13
- vi.mock('@inquirer/prompts', () => ({
14
- input: vi.fn(),
15
- confirm: vi.fn(),
16
- select: vi.fn(),
17
- }));
18
- // Mock ora
19
- vi.mock('ora', () => ({
20
- default: vi.fn(() => ({
21
- start: vi.fn().mockReturnThis(),
22
- stop: vi.fn().mockReturnThis(),
23
- succeed: vi.fn().mockReturnThis(),
24
- fail: vi.fn().mockReturnThis(),
25
- warn: vi.fn().mockReturnThis(),
26
- text: '',
27
- })),
28
- }));
29
- // ---------------------------------------------------------------------------
30
- // validateSkillName (re-exported from utils/skill-name via create.ts)
31
- // ---------------------------------------------------------------------------
32
- describe('SMI-3083: validateSkillName', () => {
33
- it('accepts valid lowercase-hyphen names', async () => {
34
- const { validateSkillName } = await import('../src/commands/create.js');
35
- expect(validateSkillName('my-skill')).toBe(true);
36
- expect(validateSkillName('skill')).toBe(true);
37
- expect(validateSkillName('a1b2-c3')).toBe(true);
38
- });
39
- it('rejects names with uppercase letters', async () => {
40
- const { validateSkillName } = await import('../src/commands/create.js');
41
- const result = validateSkillName('My-Skill');
42
- expect(result).not.toBe(true);
43
- expect(typeof result).toBe('string');
44
- });
45
- it('rejects names with spaces', async () => {
46
- const { validateSkillName } = await import('../src/commands/create.js');
47
- expect(validateSkillName('my skill')).not.toBe(true);
48
- });
49
- it('rejects names starting with a digit', async () => {
50
- const { validateSkillName } = await import('../src/commands/create.js');
51
- expect(validateSkillName('1skill')).not.toBe(true);
52
- });
53
- it('rejects empty string', async () => {
54
- const { validateSkillName } = await import('../src/commands/create.js');
55
- expect(validateSkillName('')).not.toBe(true);
56
- });
57
- it('rejects names with underscores', async () => {
58
- const { validateSkillName } = await import('../src/commands/create.js');
59
- expect(validateSkillName('my_skill')).not.toBe(true);
60
- });
61
- });
62
- // ---------------------------------------------------------------------------
63
- // createCreateCommand structure
64
- // ---------------------------------------------------------------------------
65
- describe('SMI-3083: createCreateCommand', () => {
66
- it('creates a command with name "create"', async () => {
67
- const { createCreateCommand } = await import('../src/commands/create.js');
68
- const cmd = createCreateCommand();
69
- expect(cmd).toBeInstanceOf(Command);
70
- expect(cmd.name()).toBe('create');
71
- });
72
- it('has --output option with no baked-in default', async () => {
73
- const { createCreateCommand } = await import('../src/commands/create.js');
74
- const cmd = createCreateCommand();
75
- const opt = cmd.options.find((o) => o.long === '--output');
76
- expect(opt).toBeDefined();
77
- // default must be undefined — resolved lazily inside createSkill()
78
- expect(opt?.defaultValue).toBeUndefined();
79
- });
80
- it('has --type option', async () => {
81
- const { createCreateCommand } = await import('../src/commands/create.js');
82
- const cmd = createCreateCommand();
83
- expect(cmd.options.find((o) => o.long === '--type')).toBeDefined();
84
- });
85
- it('has --behavior option', async () => {
86
- const { createCreateCommand } = await import('../src/commands/create.js');
87
- const cmd = createCreateCommand();
88
- expect(cmd.options.find((o) => o.long === '--behavior')).toBeDefined();
89
- });
90
- it('has --description option', async () => {
91
- const { createCreateCommand } = await import('../src/commands/create.js');
92
- const cmd = createCreateCommand();
93
- expect(cmd.options.find((o) => o.long === '--description')).toBeDefined();
94
- });
95
- it('has --author option', async () => {
96
- const { createCreateCommand } = await import('../src/commands/create.js');
97
- const cmd = createCreateCommand();
98
- expect(cmd.options.find((o) => o.long === '--author')).toBeDefined();
99
- });
100
- it('has --category option', async () => {
101
- const { createCreateCommand } = await import('../src/commands/create.js');
102
- const cmd = createCreateCommand();
103
- expect(cmd.options.find((o) => o.long === '--category')).toBeDefined();
104
- });
105
- it('has --scripts flag', async () => {
106
- const { createCreateCommand } = await import('../src/commands/create.js');
107
- const cmd = createCreateCommand();
108
- expect(cmd.options.find((o) => o.long === '--scripts')).toBeDefined();
109
- });
110
- it('has --yes flag', async () => {
111
- const { createCreateCommand } = await import('../src/commands/create.js');
112
- const cmd = createCreateCommand();
113
- expect(cmd.options.find((o) => o.long === '--yes')).toBeDefined();
114
- });
115
- it('has --dry-run flag', async () => {
116
- const { createCreateCommand } = await import('../src/commands/create.js');
117
- const cmd = createCreateCommand();
118
- expect(cmd.options.find((o) => o.long === '--dry-run')).toBeDefined();
119
- });
120
- it('has description mentioning ~/.claude/skills', async () => {
121
- const { createCreateCommand } = await import('../src/commands/create.js');
122
- const cmd = createCreateCommand();
123
- expect(cmd.description()).toContain('~/.claude/skills');
124
- });
125
- it('has description mentioning skillsmith author init', async () => {
126
- const { createCreateCommand } = await import('../src/commands/create.js');
127
- const cmd = createCreateCommand();
128
- expect(cmd.description()).toContain('author init');
129
- });
130
- });
131
- // ---------------------------------------------------------------------------
132
- // createSkill scaffold behaviour
133
- // ---------------------------------------------------------------------------
134
- describe('SMI-3083: createSkill scaffold', () => {
135
- beforeEach(() => {
136
- vi.clearAllMocks();
137
- });
138
- afterEach(() => {
139
- vi.restoreAllMocks();
140
- });
141
- /**
142
- * Set up prompt mocks for tests that provide type/behavior/scripts via options.
143
- * Prompt order (when those options are not provided via flags):
144
- * input: description, author
145
- * select: category, [type, behavior if not in options]
146
- * confirm: [scripts if not in options], [overwrite if dir exists and !yes]
147
- */
148
- async function setupMocks(overrides = {}) {
149
- const { mkdir, writeFile, stat } = await import('fs/promises');
150
- const { input, confirm, select } = await import('@inquirer/prompts');
151
- if (overrides.statRejects !== false) {
152
- vi.mocked(stat).mockRejectedValue(new Error('ENOENT'));
153
- }
154
- else {
155
- vi.mocked(stat).mockResolvedValue({ isDirectory: () => true });
156
- }
157
- vi.mocked(mkdir).mockResolvedValue(undefined);
158
- vi.mocked(writeFile).mockResolvedValue(undefined);
159
- // Defaults assume type/behavior/scripts are passed via options (skips those prompts).
160
- // Only description (input), author (input), and category (select) are prompted.
161
- const selectResponses = overrides.selectResponses ?? ['development'];
162
- const confirmResponses = overrides.confirmResponses ?? [];
163
- const inputResponses = overrides.inputResponses ?? ['A test skill', 'testuser'];
164
- for (const val of selectResponses) {
165
- vi.mocked(select).mockResolvedValueOnce(val);
166
- }
167
- for (const val of confirmResponses) {
168
- vi.mocked(confirm).mockResolvedValueOnce(val);
169
- }
170
- for (const val of inputResponses) {
171
- vi.mocked(input).mockResolvedValueOnce(val);
172
- }
173
- return { mkdir, writeFile, stat };
174
- }
175
- it('scaffolds exactly 4 files when scripts=false (SKILL.md, README.md, CHANGELOG.md, .gitignore)', async () => {
176
- const { writeFile } = await setupMocks();
177
- const { createSkill } = await import('../src/commands/create.js');
178
- await createSkill('test-skill', {
179
- output: '/tmp/test-skills',
180
- type: 'basic',
181
- behavior: 'autonomous',
182
- scripts: false,
183
- });
184
- expect(vi.mocked(writeFile)).toHaveBeenCalledTimes(4);
185
- });
186
- it('scaffolds exactly 5 files when scripts=true (+ scripts/example.js)', async () => {
187
- const { writeFile } = await setupMocks();
188
- const { createSkill } = await import('../src/commands/create.js');
189
- await createSkill('test-skill', {
190
- output: '/tmp/test-skills',
191
- type: 'basic',
192
- behavior: 'autonomous',
193
- scripts: true,
194
- });
195
- expect(vi.mocked(writeFile)).toHaveBeenCalledTimes(5);
196
- });
197
- it('creates resources/ directory', async () => {
198
- const { mkdir } = await setupMocks();
199
- const { createSkill } = await import('../src/commands/create.js');
200
- await createSkill('test-skill', {
201
- output: '/tmp/test-skills',
202
- type: 'basic',
203
- behavior: 'autonomous',
204
- scripts: false,
205
- });
206
- const mkdirCalls = vi.mocked(mkdir).mock.calls.map((c) => c[0]);
207
- expect(mkdirCalls.some((p) => p.endsWith('resources'))).toBe(true);
208
- });
209
- it('CHANGELOG.md content contains [1.0.0]', async () => {
210
- const { writeFile } = await setupMocks();
211
- const { createSkill } = await import('../src/commands/create.js');
212
- await createSkill('test-skill', {
213
- output: '/tmp/test-skills',
214
- type: 'basic',
215
- behavior: 'autonomous',
216
- scripts: false,
217
- });
218
- const call = vi
219
- .mocked(writeFile)
220
- .mock.calls.find((c) => c[0].endsWith('CHANGELOG.md'));
221
- expect(call).toBeDefined();
222
- expect(call[1]).toContain('[1.0.0]');
223
- });
224
- it('SKILL.md content contains Behavioral Classification section', async () => {
225
- const { writeFile } = await setupMocks();
226
- const { createSkill } = await import('../src/commands/create.js');
227
- await createSkill('test-skill', {
228
- output: '/tmp/test-skills',
229
- type: 'advanced',
230
- behavior: 'guided',
231
- scripts: false,
232
- });
233
- const call = vi.mocked(writeFile).mock.calls.find((c) => c[0].endsWith('SKILL.md'));
234
- expect(call).toBeDefined();
235
- expect(call[1]).toContain('Behavioral Classification');
236
- });
237
- it('.gitignore is written with node_modules entry', async () => {
238
- const { writeFile } = await setupMocks();
239
- const { createSkill } = await import('../src/commands/create.js');
240
- await createSkill('test-skill', {
241
- output: '/tmp/test-skills',
242
- type: 'basic',
243
- behavior: 'autonomous',
244
- scripts: false,
245
- });
246
- const call = vi
247
- .mocked(writeFile)
248
- .mock.calls.find((c) => c[0].endsWith('.gitignore'));
249
- expect(call).toBeDefined();
250
- expect(call[1]).toContain('node_modules/');
251
- });
252
- it('scripts/example.js uses JSON.stringify (safe for skill names with quotes)', async () => {
253
- const { writeFile } = await setupMocks();
254
- const { createSkill } = await import('../src/commands/create.js');
255
- await createSkill('test-skill', {
256
- output: '/tmp/test-skills',
257
- type: 'basic',
258
- behavior: 'autonomous',
259
- scripts: true,
260
- });
261
- const call = vi
262
- .mocked(writeFile)
263
- .mock.calls.find((c) => c[0].endsWith('example.js'));
264
- expect(call).toBeDefined();
265
- // JSON.stringify wraps the string in double quotes — no raw single-quote interpolation
266
- expect(call[1]).toContain('"test-skill script executed"');
267
- });
268
- it('does not write files when user declines overwrite', async () => {
269
- // stat resolves (dir exists); confirm returns false (decline)
270
- const { writeFile, stat } = await setupMocks({
271
- statRejects: false,
272
- confirmResponses: [false],
273
- });
274
- vi.mocked(stat).mockResolvedValue({ isDirectory: () => true });
275
- const { createSkill } = await import('../src/commands/create.js');
276
- await createSkill('existing-skill', {
277
- output: '/tmp/test-skills',
278
- type: 'basic',
279
- behavior: 'autonomous',
280
- scripts: false,
281
- });
282
- expect(vi.mocked(writeFile)).not.toHaveBeenCalled();
283
- });
284
- it('--yes always overwrites without prompting even if directory exists', async () => {
285
- const { writeFile, stat, mkdir } = await setupMocks();
286
- vi.mocked(stat).mockResolvedValue({ isDirectory: () => true });
287
- vi.mocked(mkdir).mockResolvedValue(undefined);
288
- vi.mocked(writeFile).mockResolvedValue(undefined);
289
- const { createSkill } = await import('../src/commands/create.js');
290
- const { confirm } = await import('@inquirer/prompts');
291
- await createSkill('existing-skill', {
292
- output: '/tmp/test-skills',
293
- type: 'basic',
294
- behavior: 'autonomous',
295
- scripts: false,
296
- yes: true,
297
- });
298
- expect(vi.mocked(confirm)).not.toHaveBeenCalled();
299
- expect(vi.mocked(writeFile)).toHaveBeenCalledTimes(4);
300
- });
301
- it('--dry-run prints preview without writing any files', async () => {
302
- await setupMocks();
303
- const { createSkill } = await import('../src/commands/create.js');
304
- const { writeFile, mkdir } = await import('fs/promises');
305
- await createSkill('test-skill', {
306
- output: '/tmp/test-skills',
307
- type: 'basic',
308
- behavior: 'autonomous',
309
- scripts: false,
310
- dryRun: true,
311
- });
312
- expect(vi.mocked(writeFile)).not.toHaveBeenCalled();
313
- expect(vi.mocked(mkdir)).not.toHaveBeenCalled();
314
- });
315
- it('supports fully non-interactive mode via --description, --author, --category, --type, --behavior, --scripts', async () => {
316
- const { mkdir, writeFile, stat } = await import('fs/promises');
317
- const { input, confirm, select } = await import('@inquirer/prompts');
318
- vi.mocked(stat).mockRejectedValue(new Error('ENOENT'));
319
- vi.mocked(mkdir).mockResolvedValue(undefined);
320
- vi.mocked(writeFile).mockResolvedValue(undefined);
321
- const { createSkill } = await import('../src/commands/create.js');
322
- await createSkill('test-skill', {
323
- output: '/tmp/test-skills',
324
- description: 'A test skill',
325
- author: 'testuser',
326
- category: 'development',
327
- type: 'basic',
328
- behavior: 'autonomous',
329
- scripts: false,
330
- });
331
- // No prompts should have been called
332
- expect(vi.mocked(input)).not.toHaveBeenCalled();
333
- expect(vi.mocked(select)).not.toHaveBeenCalled();
334
- expect(vi.mocked(confirm)).not.toHaveBeenCalled();
335
- expect(vi.mocked(writeFile)).toHaveBeenCalledTimes(4);
336
- });
337
- it('calls spinner.fail and rethrows when mkdir fails', async () => {
338
- const { mkdir, writeFile, stat } = await import('fs/promises');
339
- const { input, select } = await import('@inquirer/prompts');
340
- const ora = await import('ora');
341
- const failMock = vi.fn().mockReturnThis();
342
- vi.mocked(ora.default).mockReturnValue({
343
- start: vi.fn().mockReturnThis(),
344
- stop: vi.fn().mockReturnThis(),
345
- succeed: vi.fn().mockReturnThis(),
346
- fail: failMock,
347
- warn: vi.fn().mockReturnThis(),
348
- text: '',
349
- });
350
- vi.mocked(stat).mockRejectedValue(new Error('ENOENT'));
351
- vi.mocked(mkdir).mockRejectedValue(new Error('Permission denied'));
352
- vi.mocked(writeFile).mockResolvedValue(undefined);
353
- // All input prompts return a valid value; all select prompts return a valid category
354
- vi.mocked(input).mockResolvedValue('desc');
355
- vi.mocked(select).mockResolvedValue('development');
356
- const { createSkill } = await import('../src/commands/create.js');
357
- await expect(createSkill('fail-skill', {
358
- output: '/tmp/test-skills',
359
- type: 'basic',
360
- behavior: 'autonomous',
361
- scripts: false,
362
- })).rejects.toThrow();
363
- expect(failMock).toHaveBeenCalled();
364
- });
365
- });
366
- // ---------------------------------------------------------------------------
367
- // Validation — CLI flag guards
368
- // ---------------------------------------------------------------------------
369
- describe('SMI-3083: createSkill validation guards', () => {
370
- beforeEach(() => {
371
- vi.clearAllMocks();
372
- });
373
- it('rejects invalid --type value and exits', async () => {
374
- const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
375
- throw new Error('process.exit called');
376
- });
377
- const { createSkill } = await import('../src/commands/create.js');
378
- await expect(createSkill('test-skill', {
379
- output: '/tmp/test-skills',
380
- type: 'invalid-type',
381
- behavior: 'autonomous',
382
- description: 'desc',
383
- author: 'testuser',
384
- category: 'development',
385
- scripts: false,
386
- })).rejects.toThrow();
387
- expect(exitSpy).toHaveBeenCalledWith(1);
388
- exitSpy.mockRestore();
389
- });
390
- it('rejects invalid --behavior value and exits', async () => {
391
- const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
392
- throw new Error('process.exit called');
393
- });
394
- const { createSkill } = await import('../src/commands/create.js');
395
- await expect(createSkill('test-skill', {
396
- output: '/tmp/test-skills',
397
- type: 'basic',
398
- behavior: 'invalid-behavior',
399
- description: 'desc',
400
- author: 'testuser',
401
- category: 'development',
402
- scripts: false,
403
- })).rejects.toThrow();
404
- expect(exitSpy).toHaveBeenCalledWith(1);
405
- exitSpy.mockRestore();
406
- });
407
- it('rejects invalid --category value and exits', async () => {
408
- const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
409
- throw new Error('process.exit called');
410
- });
411
- const { createSkill } = await import('../src/commands/create.js');
412
- await expect(createSkill('test-skill', {
413
- output: '/tmp/test-skills',
414
- type: 'basic',
415
- behavior: 'autonomous',
416
- description: 'desc',
417
- author: 'testuser',
418
- category: 'invalid-category',
419
- scripts: false,
420
- })).rejects.toThrow();
421
- expect(exitSpy).toHaveBeenCalledWith(1);
422
- exitSpy.mockRestore();
423
- });
424
- });
425
- // ---------------------------------------------------------------------------
426
- // Template exports
427
- // ---------------------------------------------------------------------------
428
- describe('SMI-3083: CHANGELOG_MD_TEMPLATE', () => {
429
- it('is exported from templates/index', async () => {
430
- const { CHANGELOG_MD_TEMPLATE } = await import('../src/templates/index.js');
431
- expect(typeof CHANGELOG_MD_TEMPLATE).toBe('string');
432
- });
433
- it('contains [1.0.0] placeholder pattern', async () => {
434
- const { CHANGELOG_MD_TEMPLATE } = await import('../src/templates/index.js');
435
- expect(CHANGELOG_MD_TEMPLATE).toContain('[1.0.0]');
436
- });
437
- it('contains {{name}} and {{date}} placeholders', async () => {
438
- const { CHANGELOG_MD_TEMPLATE } = await import('../src/templates/index.js');
439
- expect(CHANGELOG_MD_TEMPLATE).toContain('{{name}}');
440
- expect(CHANGELOG_MD_TEMPLATE).toContain('{{date}}');
441
- });
442
- });
443
- describe('SMI-3083: SKILL_MD_TEMPLATE has {{behavioralClassification}} placeholder', () => {
444
- it('contains {{behavioralClassification}} for create/init branching', async () => {
445
- const { SKILL_MD_TEMPLATE } = await import('../src/templates/index.js');
446
- expect(SKILL_MD_TEMPLATE).toContain('{{behavioralClassification}}');
447
- });
448
- });
449
- //# sourceMappingURL=create.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.test.js","sourceRoot":"","sources":["../../tests/create.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * @fileoverview SMI-5413 e2e — affix-tolerant registry-name recovery.
3
- *
4
- * A skill installed under a SHORT local dir name (`affixdemo`) is recovered from
5
- * its `claude-skill-affixdemo` registry entry; an EXACT name match is preferred
6
- * over affix variants so a clean hit is never downgraded to ambiguous. Real temp
7
- * filesystem + real temp SQLite (seeded `skills`); $HOME redirected before the
8
- * dynamic import so the action's module-level MANIFEST_PATH freezes onto it.
9
- */
10
- export {};
11
- //# sourceMappingURL=audit-sources-affix.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit-sources-affix.test.d.ts","sourceRoot":"","sources":["../../../tests/e2e/audit-sources-affix.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -1,121 +0,0 @@
1
- /**
2
- * @fileoverview SMI-5413 e2e — affix-tolerant registry-name recovery.
3
- *
4
- * A skill installed under a SHORT local dir name (`affixdemo`) is recovered from
5
- * its `claude-skill-affixdemo` registry entry; an EXACT name match is preferred
6
- * over affix variants so a clean hit is never downgraded to ambiguous. Real temp
7
- * filesystem + real temp SQLite (seeded `skills`); $HOME redirected before the
8
- * dynamic import so the action's module-level MANIFEST_PATH freezes onto it.
9
- */
10
- import { describe, it, expect, beforeAll, afterAll, vi } from 'vitest';
11
- import * as fs from 'node:fs';
12
- import * as os from 'node:os';
13
- import * as path from 'node:path';
14
- import { skillMd, seedSkillsDb } from './utils/source-recovery-fixture.js';
15
- let runAuditSources;
16
- let tempHome = '';
17
- let originalHome;
18
- beforeAll(async () => {
19
- originalHome = process.env['HOME'];
20
- tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'smi5413-home-'));
21
- process.env['HOME'] = tempHome;
22
- ({ runAuditSources } = await import('../../src/commands/audit-sources.action.js'));
23
- });
24
- afterAll(() => {
25
- if (originalHome === undefined)
26
- delete process.env['HOME'];
27
- else
28
- process.env['HOME'] = originalHome;
29
- if (tempHome)
30
- fs.rmSync(tempHome, { recursive: true, force: true });
31
- });
32
- function writeLocalSkill(root, name) {
33
- const dir = path.join(root, name);
34
- fs.mkdirSync(dir, { recursive: true });
35
- fs.writeFileSync(path.join(dir, 'SKILL.md'), skillMd(name));
36
- }
37
- function makeOpts(skillsRoot, db) {
38
- return {
39
- skillsRoot,
40
- apply: false,
41
- yes: false,
42
- set: undefined,
43
- minConfidence: 'high',
44
- json: true,
45
- embedding: false,
46
- catalogHint: false,
47
- writeFrontmatter: false,
48
- forceWriteFrontmatter: false,
49
- db,
50
- };
51
- }
52
- async function recover(skillsRoot, db) {
53
- const chunks = [];
54
- const spy = vi
55
- .spyOn(process.stdout, 'write')
56
- .mockImplementation((chunk) => {
57
- chunks.push(typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString('utf-8'));
58
- return true;
59
- });
60
- try {
61
- await runAuditSources(makeOpts(skillsRoot, db));
62
- }
63
- finally {
64
- spy.mockRestore();
65
- }
66
- return JSON.parse(chunks.join('').trim()).skills;
67
- }
68
- function tmpRoot(tag) {
69
- return fs.mkdtempSync(path.join(os.tmpdir(), `smi5413-${tag}-`));
70
- }
71
- function tmpDb(tag) {
72
- return path.join(fs.mkdtempSync(path.join(os.tmpdir(), `smi5413-db-${tag}-`)), 'skills.db');
73
- }
74
- describe('SMI-5413 e2e — affix-tolerant registry-name recovery', () => {
75
- it('recovers a short local name from its claude-skill-<name> registry entry', async () => {
76
- const root = tmpRoot('affix');
77
- writeLocalSkill(root, 'affixdemo');
78
- const db = tmpDb('affix');
79
- await seedSkillsDb(db, [
80
- {
81
- id: 'uuid-affix',
82
- name: 'claude-skill-affixdemo',
83
- repoUrl: 'https://github.com/wrsmith108/claude-skill-affixdemo',
84
- qualityScore: 0.5,
85
- },
86
- ]);
87
- const skills = await recover(root, db);
88
- const s = skills.find((x) => x.skillName === 'affixdemo');
89
- expect(s?.method).toBe('registry-name');
90
- expect(s?.confidence).toBe('medium');
91
- expect(s?.recoveredSource?.url).toBe('https://github.com/wrsmith108/claude-skill-affixdemo');
92
- fs.rmSync(root, { recursive: true, force: true });
93
- });
94
- it('prefers an EXACT name match over affix variants (no ambiguous downgrade)', async () => {
95
- const root = tmpRoot('exact');
96
- writeLocalSkill(root, 'affixdemo');
97
- const db = tmpDb('exact');
98
- // Both an exact `affixdemo` and an affixed `claude-skill-affixdemo` exist;
99
- // the exact one must win as a single medium candidate, not become low/ambiguous.
100
- await seedSkillsDb(db, [
101
- {
102
- id: 'uuid-exact',
103
- name: 'affixdemo',
104
- repoUrl: 'https://github.com/someone/affixdemo',
105
- qualityScore: 0.4,
106
- },
107
- {
108
- id: 'uuid-affix2',
109
- name: 'claude-skill-affixdemo',
110
- repoUrl: 'https://github.com/wrsmith108/claude-skill-affixdemo',
111
- qualityScore: 0.9,
112
- },
113
- ]);
114
- const skills = await recover(root, db);
115
- const s = skills.find((x) => x.skillName === 'affixdemo');
116
- expect(s?.confidence).toBe('medium');
117
- expect(s?.recoveredSource?.url).toBe('https://github.com/someone/affixdemo');
118
- fs.rmSync(root, { recursive: true, force: true });
119
- });
120
- });
121
- //# sourceMappingURL=audit-sources-affix.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit-sources-affix.test.js","sourceRoot":"","sources":["../../../tests/e2e/audit-sources-affix.test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * @fileoverview SMI-5407 end-to-end — `sklx audit sources --apply` write paths.
3
- *
4
- * Real temp manifest (redirected via $HOME) + real temp SQLite. Covers:
5
- * 3. Collision safety — ambiguous low match is NOT auto-written; `--set` then
6
- * writes the user-specified owner/skill-name id + https source.
7
- * 6. Idempotency + never-clobber — a second `--apply` is a no-op; a pre-existing
8
- * healthy entry with a differing source is left untouched.
9
- * 8. --write-frontmatter churn guard — never writes `repository:` into a `.git`
10
- * dir or when one already exists; DOES write into a non-git dir lacking it.
11
- */
12
- export {};
13
- //# sourceMappingURL=audit-sources-apply.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit-sources-apply.test.d.ts","sourceRoot":"","sources":["../../../tests/e2e/audit-sources-apply.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}