@skillsmith/cli 0.7.2 → 0.7.4

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 +44014 -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,226 +0,0 @@
1
- /**
2
- * @fileoverview `sklx config` command — get/set Skillsmith configuration values.
3
- * @module @skillsmith/cli/commands/config
4
- * @see SMI-4590 Wave 4 PR 5/6 §8 — `audit_mode` CLI plumbing + tier-revalidation
5
- *
6
- * v1 surface (intentionally narrow):
7
- * - `sklx config get audit_mode` → prints the resolved audit-mode for
8
- * the caller (config-file value when
9
- * set, else tier default).
10
- * - `sklx config set audit_mode <value>` → writes `audit_mode` to
11
- * `~/.skillsmith/config.json`. Atomic
12
- * write via `<path>.tmp` + rename.
13
- * Tier-revalidated against
14
- * `tierAllowsAuditMode` —
15
- * community/individual cannot select
16
- * `power_user` or `governance`.
17
- *
18
- * Typed error codes (printed to stderr; exit 1):
19
- * audit.mode.invalid_value — value not in {preventative,power_user,governance,off}
20
- * audit.mode.tier_ineligible — tier cannot select the requested mode
21
- *
22
- * No file write occurs on either error path. Other keys are rejected with a
23
- * generic "unsupported key" message — the surface intentionally locks down
24
- * to v1 deliverables; v2 extends with additional keys.
25
- */
26
- import * as crypto from 'node:crypto';
27
- import * as fs from 'node:fs';
28
- import { homedir } from 'node:os';
29
- import { join, dirname } from 'node:path';
30
- import { Command } from 'commander';
31
- import chalk from 'chalk';
32
- import { isAuditMode, resolveAuditMode } from '@skillsmith/core/config/audit-mode';
33
- import { withTelemetry } from '@skillsmith/core/telemetry';
34
- import { tierAllowsAuditMode } from '@skillsmith/core/audit';
35
- import { sanitizeError } from '../utils/sanitize.js';
36
- import { getLicenseStatus } from '../utils/license.js';
37
- // ---------------------------------------------------------------------------
38
- // Constants
39
- // ---------------------------------------------------------------------------
40
- const CONFIG_DIR = '.skillsmith';
41
- const CONFIG_FILE = 'config.json';
42
- const SUPPORTED_KEYS = ['audit_mode'];
43
- const VALID_AUDIT_MODES = [
44
- 'preventative',
45
- 'power_user',
46
- 'governance',
47
- 'off',
48
- ];
49
- // ---------------------------------------------------------------------------
50
- // Typed error envelope (stderr-only; never logged with secrets)
51
- // ---------------------------------------------------------------------------
52
- class ConfigError extends Error {
53
- code;
54
- constructor(code, message) {
55
- super(message);
56
- this.code = code;
57
- this.name = 'ConfigError';
58
- }
59
- }
60
- function isSupportedKey(key) {
61
- return SUPPORTED_KEYS.includes(key);
62
- }
63
- // ---------------------------------------------------------------------------
64
- // Path helpers
65
- // ---------------------------------------------------------------------------
66
- function configPath() {
67
- // Re-evaluates os.homedir() each call so test harnesses that toggle
68
- // process.env.HOME observe the updated location (mirrors the
69
- // `defaultLedgerPath` pattern in namespace-overrides.ts).
70
- return join(homedir(), CONFIG_DIR, CONFIG_FILE);
71
- }
72
- function readConfigFile() {
73
- const path = configPath();
74
- if (!fs.existsSync(path))
75
- return {};
76
- try {
77
- const raw = fs.readFileSync(path, 'utf-8');
78
- const parsed = JSON.parse(raw);
79
- if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
80
- return {};
81
- return parsed;
82
- }
83
- catch {
84
- // Malformed JSON: degrade to empty rather than fail-loud — the user can
85
- // still set audit_mode (write will overwrite the malformed file).
86
- return {};
87
- }
88
- }
89
- /**
90
- * Atomic write of the config file: `<path>.<rand>.tmp` + `fs.rename`.
91
- * Plan §403 explicitly requires atomic writes for `sklx config set` so a
92
- * crashed process never leaves a half-written config behind.
93
- *
94
- * The unique tmp suffix prevents two concurrent writers from clobbering
95
- * each other's staging file (mirrors the namespace-overrides ledger
96
- * writer's pattern).
97
- */
98
- function writeConfigFileAtomic(config) {
99
- const path = configPath();
100
- const dir = dirname(path);
101
- fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
102
- const tmpSuffix = crypto.randomBytes(6).toString('hex');
103
- const tmpPath = `${path}.${tmpSuffix}.tmp`;
104
- const json = JSON.stringify(config, null, 2);
105
- fs.writeFileSync(tmpPath, json, { encoding: 'utf-8', mode: 0o600 });
106
- fs.renameSync(tmpPath, path);
107
- // chmod the final path defensively; ignore errors (Windows / read-only FS).
108
- try {
109
- fs.chmodSync(path, 0o600);
110
- }
111
- catch {
112
- // Best-effort.
113
- }
114
- }
115
- // ---------------------------------------------------------------------------
116
- // `config get` / `config set` action handlers
117
- // ---------------------------------------------------------------------------
118
- async function runConfigGet(key) {
119
- if (!isSupportedKey(key)) {
120
- throw new ConfigError('config.unsupported_key', `Unsupported config key: ${key}`);
121
- }
122
- if (key === 'audit_mode') {
123
- const file = readConfigFile();
124
- const status = await getLicenseStatus();
125
- const tier = status.tier ?? 'community';
126
- const fileValue = isAuditMode(file.audit_mode) ? file.audit_mode : null;
127
- const resolved = resolveAuditMode({ tier, override: fileValue });
128
- if (fileValue) {
129
- console.log(`${fileValue}`);
130
- }
131
- else {
132
- console.log(`${resolved} ${chalk.dim('(tier default)')}`);
133
- }
134
- }
135
- }
136
- /**
137
- * Validate + write `audit_mode`. Two-stage gate:
138
- * 1. Value validation: must be in VALID_AUDIT_MODES → else `audit.mode.invalid_value`.
139
- * 2. Tier revalidation: `tierAllowsAuditMode` → else `audit.mode.tier_ineligible`.
140
- *
141
- * Both errors are raised BEFORE any file IO so a rejected write leaves the
142
- * existing config untouched (load-bearing per plan §810-813 security test).
143
- */
144
- async function runConfigSet(key, value) {
145
- if (!isSupportedKey(key)) {
146
- throw new ConfigError('config.unsupported_key', `Unsupported config key: ${key}`);
147
- }
148
- if (key === 'audit_mode') {
149
- if (!isAuditMode(value)) {
150
- throw new ConfigError('audit.mode.invalid_value', `Invalid audit_mode value: ${value}. Expected one of: ${VALID_AUDIT_MODES.join(', ')}`);
151
- }
152
- const status = await getLicenseStatus();
153
- const tier = status.tier ?? 'community';
154
- if (!tierAllowsAuditMode(tier, value)) {
155
- throw new ConfigError('audit.mode.tier_ineligible', `Tier '${tier}' cannot select audit_mode '${value}'. ` +
156
- `Upgrade required — see https://skillsmith.app/upgrade`);
157
- }
158
- const existing = readConfigFile();
159
- const updated = { ...existing, audit_mode: value };
160
- writeConfigFileAtomic(updated);
161
- console.log(`${chalk.green('OK')} audit_mode = ${value}`);
162
- }
163
- }
164
- // ---------------------------------------------------------------------------
165
- // Command factory
166
- // ---------------------------------------------------------------------------
167
- // SMI-5128 batch B: extracted from inline .action() closures so withTelemetry
168
- // can wrap them at the export boundary (SMI-5018 coverage gate).
169
- async function configGetActionImpl(key) {
170
- try {
171
- await runConfigGet(key);
172
- }
173
- catch (error) {
174
- if (error instanceof ConfigError) {
175
- console.error(chalk.red(`Error [${error.code}]:`), error.message);
176
- }
177
- else {
178
- console.error(chalk.red('Error:'), sanitizeError(error));
179
- }
180
- process.exit(1);
181
- }
182
- }
183
- export const configGetAction = withTelemetry(configGetActionImpl, {
184
- source: 'cli',
185
- extractSkillId: () => 'config get',
186
- extractFramework: () => 'cli',
187
- });
188
- async function configSetActionImpl(key, value) {
189
- try {
190
- await runConfigSet(key, value);
191
- }
192
- catch (error) {
193
- if (error instanceof ConfigError) {
194
- console.error(chalk.red(`Error [${error.code}]:`), error.message);
195
- }
196
- else {
197
- console.error(chalk.red('Error:'), sanitizeError(error));
198
- }
199
- process.exit(1);
200
- }
201
- }
202
- export const configSetAction = withTelemetry(configSetActionImpl, {
203
- source: 'cli',
204
- extractSkillId: () => 'config set',
205
- extractFramework: () => 'cli',
206
- });
207
- /**
208
- * Build the `config` parent command. v1 supports `get` / `set` subcommands
209
- * with a single supported key (`audit_mode`). Additional keys land in v2.
210
- */
211
- export function createConfigCommand() {
212
- const config = new Command('config').description('Get or set Skillsmith configuration values (~/.skillsmith/config.json)');
213
- config
214
- .command('get <key>')
215
- .description('Read a configuration value (e.g. `audit_mode`)')
216
- .action(configGetAction);
217
- config
218
- .command('set <key> <value>')
219
- .description('Write a configuration value (atomic; tier-revalidated for audit_mode)')
220
- .action(configSetAction);
221
- return config;
222
- }
223
- // Internal exports for tests. Consumers should use `createConfigCommand`.
224
- export { runConfigGet, runConfigSet, ConfigError, configPath, readConfigFile };
225
- export default createConfigCommand;
226
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- /**
2
- * SMI-3083: skillsmith create command
3
- *
4
- * Scaffolds a new agent skill into ~/.claude/skills/<name>/ with
5
- * SKILL.md, README.md, CHANGELOG.md, .gitignore, resources/, and an optional
6
- * scripts/ directory.
7
- *
8
- * Relationship with `skillsmith author init`:
9
- * - `create` → ~/.claude/skills/<name>/ (user-level, publish-oriented,
10
- * CHANGELOG.md + Behavioral Classification included)
11
- * - `author init` → current working directory (in-project skill authoring)
12
- *
13
- * Long-term, `create` is the preferred command for publishing new skills to the
14
- * Skillsmith registry. `author init` is retained for in-project authoring workflows.
15
- */
16
- import { Command } from 'commander';
17
- import { validateSkillName } from '../utils/skill-name.js';
18
- export { validateSkillName };
19
- export interface CreateOptions {
20
- output?: string | undefined;
21
- type?: string | undefined;
22
- behavior?: string | undefined;
23
- description?: string | undefined;
24
- author?: string | undefined;
25
- category?: string | undefined;
26
- scripts?: boolean | undefined;
27
- yes?: boolean | undefined;
28
- dryRun?: boolean | undefined;
29
- }
30
- /**
31
- * Scaffold a new agent skill at ~/.claude/skills/<name>/ (or --output).
32
- */
33
- export declare function createSkill(name: string | undefined, options?: CreateOptions): Promise<void>;
34
- export declare const createAction: (name: string | undefined, opts: Record<string, string | boolean | undefined>) => Promise<void>;
35
- /**
36
- * Create the `skillsmith create` command.
37
- * SMI-3083: Scaffold new agent skills without a separate skill install.
38
- *
39
- * See also: `skillsmith author init` — scaffolds into the CWD for in-project
40
- * skill authoring (no CHANGELOG.md or Behavioral Classification section).
41
- */
42
- export declare function createCreateCommand(): Command;
43
- //# sourceMappingURL=create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAqF5B,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC7B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkPf;AA8BD,eAAO,MAAM,YAAY,iGAIvB,CAAA;AAEF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAsB7C"}
@@ -1,336 +0,0 @@
1
- /**
2
- * SMI-3083: skillsmith create command
3
- *
4
- * Scaffolds a new agent skill into ~/.claude/skills/<name>/ with
5
- * SKILL.md, README.md, CHANGELOG.md, .gitignore, resources/, and an optional
6
- * scripts/ directory.
7
- *
8
- * Relationship with `skillsmith author init`:
9
- * - `create` → ~/.claude/skills/<name>/ (user-level, publish-oriented,
10
- * CHANGELOG.md + Behavioral Classification included)
11
- * - `author init` → current working directory (in-project skill authoring)
12
- *
13
- * Long-term, `create` is the preferred command for publishing new skills to the
14
- * Skillsmith registry. `author init` is retained for in-project authoring workflows.
15
- */
16
- import { Command } from 'commander';
17
- import { input, confirm, select } from '@inquirer/prompts';
18
- import chalk from 'chalk';
19
- import ora from 'ora';
20
- import { mkdir, writeFile, stat } from 'fs/promises';
21
- import { join } from 'path';
22
- import { getCanonicalInstallPath } from '@skillsmith/core/install';
23
- import { withTelemetry } from '@skillsmith/core/telemetry';
24
- import { sanitizeError } from '../utils/sanitize.js';
25
- import { validateSkillName } from '../utils/skill-name.js';
26
- import { SKILL_MD_TEMPLATE, README_MD_TEMPLATE, CHANGELOG_MD_TEMPLATE } from '../templates/index.js';
27
- export { validateSkillName };
28
- // ---------------------------------------------------------------------------
29
- // Constants
30
- // ---------------------------------------------------------------------------
31
- const VALID_TYPES = ['basic', 'intermediate', 'advanced'];
32
- const VALID_BEHAVIORS = ['autonomous', 'guided', 'interactive', 'configurable'];
33
- const VALID_CATEGORIES = [
34
- 'development',
35
- 'productivity',
36
- 'communication',
37
- 'data',
38
- 'security',
39
- 'other',
40
- ];
41
- /** GitHub username format: alphanumeric and hyphens, must start with alphanumeric. */
42
- const GITHUB_USERNAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9-]*$/;
43
- // ---------------------------------------------------------------------------
44
- // Helpers
45
- // ---------------------------------------------------------------------------
46
- /**
47
- * Sanitize a user-supplied string for safe insertion into a YAML scalar value.
48
- * Strips newlines/carriage returns and double-quotes values containing YAML
49
- * special characters to prevent frontmatter corruption.
50
- */
51
- function sanitizeYamlScalar(value) {
52
- const safe = value.replace(/[\r\n]/g, ' ').trim();
53
- // Wrap in double quotes when value contains YAML-special characters
54
- if (/[:#[\]{}&|>'"*?!%@`]/.test(safe) || safe.startsWith(' ') || safe.endsWith(' ')) {
55
- return `"${safe.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
56
- }
57
- return safe;
58
- }
59
- function capitalize(s) {
60
- return s.charAt(0).toUpperCase() + s.slice(1);
61
- }
62
- function behaviorDescription(behavior) {
63
- switch (behavior) {
64
- case 'autonomous':
65
- return 'This skill operates autonomously — it executes its full workflow without requiring user input at each step.';
66
- case 'guided':
67
- return 'This skill is guided — it asks for your input on key decisions, then executes based on your choices.';
68
- case 'interactive':
69
- return 'This skill is interactive — it maintains a back-and-forth dialogue throughout execution.';
70
- case 'configurable':
71
- return 'This skill is configurable — behavior is controlled by settings you provide upfront.';
72
- default:
73
- return '';
74
- }
75
- }
76
- /** Build the SKILL.md content, sanitizing YAML frontmatter values. */
77
- function buildSkillMd(opts) {
78
- const behavioralClassification = `\n## Behavioral Classification\n\n**Type**: ${capitalize(opts.type)}\n**Behavior**: ${capitalize(opts.behavior)}\n\n${behaviorDescription(opts.behavior)}\n`;
79
- return SKILL_MD_TEMPLATE.replace(/\{\{name\}\}/g, opts.name)
80
- .replace(/\{\{description\}\}/g, sanitizeYamlScalar(opts.description))
81
- .replace(/\{\{author\}\}/g, sanitizeYamlScalar(opts.author))
82
- .replace(/\{\{category\}\}/g, opts.category)
83
- .replace(/\{\{date\}\}/g, opts.date)
84
- .replace(/\{\{behavioralClassification\}\}/g, behavioralClassification);
85
- }
86
- /**
87
- * Scaffold a new agent skill at ~/.claude/skills/<name>/ (or --output).
88
- */
89
- export async function createSkill(name, options = {}) {
90
- // 1. Skill name
91
- const skillName = name ??
92
- (await input({
93
- message: 'Skill name (lowercase, hyphens only):',
94
- validate: validateSkillName,
95
- }));
96
- const nameValidation = validateSkillName(skillName);
97
- if (nameValidation !== true) {
98
- console.error(chalk.red(`Invalid skill name: ${nameValidation}`));
99
- process.exit(1);
100
- }
101
- // 2. Description (identity fields first, so user understands context before technical choices)
102
- const description = options.description ??
103
- (await input({
104
- message: 'Description:',
105
- default: `An agent skill for ${skillName}`,
106
- validate: (v) => (v.trim() ? true : 'Description is required'),
107
- }));
108
- if (!description.trim()) {
109
- console.error(chalk.red('Description is required'));
110
- process.exit(1);
111
- }
112
- // 3. Author (GitHub username) — validated for URL safety
113
- const rawAuthor = options.author ??
114
- (await input({
115
- message: 'Author (GitHub username):',
116
- default: process.env['USER'] ?? process.env['USERNAME'] ?? 'author',
117
- validate: (v) => {
118
- if (!v.trim())
119
- return 'Author is required';
120
- if (!GITHUB_USERNAME_RE.test(v.trim()))
121
- return 'Must be a valid GitHub username (alphanumeric and hyphens only)';
122
- return true;
123
- },
124
- }));
125
- if (!rawAuthor.trim() || !GITHUB_USERNAME_RE.test(rawAuthor.trim())) {
126
- console.error(chalk.red('Invalid author: must be a valid GitHub username (alphanumeric and hyphens only)'));
127
- process.exit(1);
128
- }
129
- const author = rawAuthor.trim();
130
- // 4. Category — validate CLI flag; select prompt constrains to valid values
131
- if (options.category && !VALID_CATEGORIES.includes(options.category)) {
132
- console.error(chalk.red(`Invalid category: ${options.category}. Valid: ${VALID_CATEGORIES.join(', ')}`));
133
- process.exit(1);
134
- }
135
- const category = options.category ??
136
- (await select({
137
- message: 'Category:',
138
- choices: [
139
- { name: 'Development', value: 'development' },
140
- { name: 'Productivity', value: 'productivity' },
141
- { name: 'Communication', value: 'communication' },
142
- { name: 'Data', value: 'data' },
143
- { name: 'Security', value: 'security' },
144
- { name: 'Other', value: 'other' },
145
- ],
146
- }));
147
- // 5. Skill type — validate CLI flag
148
- if (options.type && !VALID_TYPES.includes(options.type)) {
149
- console.error(chalk.red(`Invalid type: ${options.type}. Valid: ${VALID_TYPES.join(', ')}`));
150
- process.exit(1);
151
- }
152
- const skillType = options.type ??
153
- (await select({
154
- message: 'Skill type:',
155
- choices: [
156
- { name: 'Basic — simple, single-purpose skill', value: 'basic' },
157
- { name: 'Intermediate — multi-step with some decisions', value: 'intermediate' },
158
- { name: 'Advanced — complex orchestration or agent delegation', value: 'advanced' },
159
- ],
160
- }));
161
- // 6. Behavioral classification — validate CLI flag
162
- if (options.behavior && !VALID_BEHAVIORS.includes(options.behavior)) {
163
- console.error(chalk.red(`Invalid behavior: ${options.behavior}. Valid: ${VALID_BEHAVIORS.join(', ')}`));
164
- process.exit(1);
165
- }
166
- const behavior = options.behavior ??
167
- (await select({
168
- message: 'Behavioral classification:',
169
- choices: [
170
- { name: 'Autonomous — runs without user input', value: 'autonomous' },
171
- { name: 'Guided — asks key questions then executes', value: 'guided' },
172
- {
173
- name: 'Interactive — back-and-forth dialogue throughout execution',
174
- value: 'interactive',
175
- },
176
- { name: 'Configurable — settings-driven, provided upfront', value: 'configurable' },
177
- ],
178
- }));
179
- // 7. Scripts directory
180
- const includeScripts = options.scripts ??
181
- (await confirm({
182
- message: 'Include a scripts/ directory?',
183
- default: false,
184
- }));
185
- // 8. Resolve output directory — lazy (never baked in at module load time).
186
- // SMI-4578: routes through canonical install path so default-client
187
- // directory is defined in exactly one place.
188
- const outputDir = options.output ?? getCanonicalInstallPath();
189
- const skillDir = join(outputDir, skillName);
190
- // 9. Overwrite check — after all prompts so user knows what they committed to
191
- let exists = false;
192
- try {
193
- await stat(skillDir);
194
- exists = true;
195
- }
196
- catch {
197
- // Directory does not exist — proceed
198
- }
199
- if (exists && !options.yes) {
200
- // --yes semantics: always overwrite without prompt
201
- const overwrite = await confirm({
202
- message: `${skillDir} already exists. Overwrite?`,
203
- default: false,
204
- });
205
- if (!overwrite) {
206
- console.log(chalk.yellow('Cancelled.'));
207
- return;
208
- }
209
- }
210
- const date = new Date().toISOString().split('T')[0] ?? new Date().toISOString().slice(0, 10);
211
- // Build file contents
212
- const skillMdContent = buildSkillMd({
213
- name: skillName,
214
- description,
215
- author,
216
- category,
217
- type: skillType,
218
- behavior,
219
- date,
220
- });
221
- const readmeContent = README_MD_TEMPLATE.replace(/\{\{author\}\}/g, sanitizeYamlScalar(author))
222
- .replace(/\{\{name\}\}/g, skillName)
223
- .replace(/\{\{description\}\}/g, description);
224
- const changelogContent = CHANGELOG_MD_TEMPLATE.replace(/\{\{name\}\}/g, skillName).replace(/\{\{date\}\}/g, date);
225
- // JSON.stringify prevents skill names containing single-quotes from breaking generated JS
226
- const scriptContent = `#!/usr/bin/env node\n/**\n * ${skillName} - Example Script\n */\nconsole.log(${JSON.stringify(`${skillName} script executed`)})\n`;
227
- const gitignoreContent = `# Dependencies\nnode_modules/\n\n# Build output\ndist/\n\n# Environment\n.env\n.env.local\n\n# OS files\n.DS_Store\nThumbs.db\n`;
228
- // 10. Dry run — preview scaffold output without writing any files
229
- if (options.dryRun) {
230
- console.log();
231
- console.log(chalk.bold(`Dry run — would scaffold: ${skillDir}/`));
232
- console.log(chalk.dim(' SKILL.md'));
233
- console.log(chalk.dim(' README.md'));
234
- console.log(chalk.dim(' CHANGELOG.md'));
235
- console.log(chalk.dim(' .gitignore'));
236
- console.log(chalk.dim(' resources/'));
237
- if (includeScripts) {
238
- console.log(chalk.dim(' scripts/'));
239
- console.log(chalk.dim(' scripts/example.js'));
240
- }
241
- console.log();
242
- console.log(chalk.bold('SKILL.md preview:'));
243
- const preview = skillMdContent.length > 500 ? skillMdContent.slice(0, 500) + '\n…' : skillMdContent;
244
- console.log(chalk.dim(preview));
245
- console.log();
246
- return;
247
- }
248
- const spinner = ora('Scaffolding skill...').start();
249
- try {
250
- await mkdir(skillDir, { recursive: true });
251
- await mkdir(join(skillDir, 'resources'), { recursive: true });
252
- if (includeScripts) {
253
- await mkdir(join(skillDir, 'scripts'), { recursive: true });
254
- }
255
- await writeFile(join(skillDir, 'SKILL.md'), skillMdContent, 'utf-8');
256
- await writeFile(join(skillDir, 'README.md'), readmeContent, 'utf-8');
257
- await writeFile(join(skillDir, 'CHANGELOG.md'), changelogContent, 'utf-8');
258
- await writeFile(join(skillDir, '.gitignore'), gitignoreContent, 'utf-8');
259
- if (includeScripts) {
260
- await writeFile(join(skillDir, 'scripts', 'example.js'), scriptContent, 'utf-8');
261
- }
262
- spinner.succeed(`Skill scaffolded at ${skillDir}`);
263
- }
264
- catch (error) {
265
- spinner.fail(`Failed to scaffold skill: ${sanitizeError(error)}`);
266
- throw error;
267
- }
268
- // Publishing checklist — aligned with v1.1.0 publish gate requirements
269
- // (README filled, CHANGELOG filled, release tag, registry submit)
270
- console.log();
271
- console.log(chalk.bold('Publishing checklist:'));
272
- console.log(chalk.dim(` 1. Edit SKILL.md — write your skill's instructions and trigger phrases`));
273
- console.log(chalk.dim(` 2. Complete README.md — problem statement, usage examples, requirements`));
274
- console.log(chalk.dim(` 3. Update CHANGELOG.md — confirm the [1.0.0] entry is accurate`));
275
- console.log(chalk.dim(' 4. Test your skill locally with your MCP-compatible agent'));
276
- console.log(chalk.dim(' 5. Publish to GitHub:'));
277
- console.log(chalk.cyan(` gh repo create ${skillName} --public`));
278
- console.log(chalk.cyan(` cd ${skillDir} && git init && git add . && git commit -m "feat: initial skill"`));
279
- console.log(chalk.cyan(` git remote add origin https://github.com/${author}/${skillName}`));
280
- console.log(chalk.cyan(' git push -u origin main'));
281
- console.log(chalk.cyan(' gh release create v1.0.0 --title "v1.0.0" --notes "Initial release"'));
282
- console.log(chalk.dim(' 6. Submit to Skillsmith registry: skillsmith publish'));
283
- console.log();
284
- }
285
- // ---------------------------------------------------------------------------
286
- // Command factory
287
- // ---------------------------------------------------------------------------
288
- // SMI-5128: extracted from inline .action() closure to a named function so
289
- // withTelemetry can wrap it at the export boundary (SMI-5040 coverage gate).
290
- async function createActionImpl(name, opts) {
291
- try {
292
- await createSkill(name, {
293
- output: opts['output'],
294
- type: opts['type'],
295
- behavior: opts['behavior'],
296
- description: opts['description'],
297
- author: opts['author'],
298
- category: opts['category'],
299
- scripts: opts['scripts'],
300
- yes: opts['yes'],
301
- dryRun: opts['dryRun'],
302
- });
303
- }
304
- catch (error) {
305
- console.error(chalk.red('Error creating skill:'), sanitizeError(error));
306
- process.exit(1);
307
- }
308
- }
309
- export const createAction = withTelemetry(createActionImpl, {
310
- source: 'cli',
311
- extractSkillId: () => 'create',
312
- extractFramework: () => 'cli',
313
- });
314
- /**
315
- * Create the `skillsmith create` command.
316
- * SMI-3083: Scaffold new agent skills without a separate skill install.
317
- *
318
- * See also: `skillsmith author init` — scaffolds into the CWD for in-project
319
- * skill authoring (no CHANGELOG.md or Behavioral Classification section).
320
- */
321
- export function createCreateCommand() {
322
- return new Command('create')
323
- .description('Scaffold a new agent skill at ~/.claude/skills/<name>/ (see also: skillsmith author init)')
324
- .argument('[name]', 'Skill name (lowercase, hyphens only)')
325
- .option('-o, --output <dir>', 'Output directory (default: ~/.claude/skills)')
326
- .option('--type <type>', 'Skill type: basic|intermediate|advanced')
327
- .option('--behavior <behavior>', 'Behavioral classification: autonomous|guided|interactive|configurable')
328
- .option('-d, --description <description>', 'Skill description (skips prompt)')
329
- .option('-a, --author <author>', 'Author GitHub username (skips prompt)')
330
- .option('-c, --category <category>', 'Category: development|productivity|communication|data|security|other (skips prompt)')
331
- .option('--scripts', 'Include a scripts/ directory')
332
- .option('-y, --yes', 'Auto-confirm overwrite — always overwrites if skill directory exists')
333
- .option('--dry-run', 'Preview scaffold output without writing files')
334
- .action(createAction);
335
- }
336
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/create.ts"],"names":[],"mappings":"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"}