@skillsmith/mcp-server 0.2.3 → 0.3.1

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 (315) hide show
  1. package/package.json +3 -2
  2. package/src/assets/docs/USER_GUIDE.md +192 -0
  3. package/src/assets/skills/skillsmith/SKILL.md +147 -0
  4. package/src/assets/skills/skillsmith/docs/QUOTAS.md +182 -0
  5. package/src/assets/skills/skillsmith/docs/SECURITY.md +174 -0
  6. package/src/assets/skills/skillsmith/docs/TRUST_TIERS.md +142 -0
  7. package/dist/.tsbuildinfo +0 -1
  8. package/dist/src/__tests__/get-skill.test.d.ts +0 -6
  9. package/dist/src/__tests__/get-skill.test.d.ts.map +0 -1
  10. package/dist/src/__tests__/get-skill.test.js +0 -88
  11. package/dist/src/__tests__/get-skill.test.js.map +0 -1
  12. package/dist/src/__tests__/middleware/errorFormatter.test.d.ts +0 -7
  13. package/dist/src/__tests__/middleware/errorFormatter.test.d.ts.map +0 -1
  14. package/dist/src/__tests__/middleware/errorFormatter.test.js +0 -304
  15. package/dist/src/__tests__/middleware/errorFormatter.test.js.map +0 -1
  16. package/dist/src/__tests__/middleware/license.test.d.ts +0 -7
  17. package/dist/src/__tests__/middleware/license.test.d.ts.map +0 -1
  18. package/dist/src/__tests__/middleware/license.test.js +0 -500
  19. package/dist/src/__tests__/middleware/license.test.js.map +0 -1
  20. package/dist/src/__tests__/search.test.d.ts +0 -6
  21. package/dist/src/__tests__/search.test.d.ts.map +0 -1
  22. package/dist/src/__tests__/search.test.js +0 -86
  23. package/dist/src/__tests__/search.test.js.map +0 -1
  24. package/dist/src/__tests__/test-utils.d.ts +0 -20
  25. package/dist/src/__tests__/test-utils.d.ts.map +0 -1
  26. package/dist/src/__tests__/test-utils.js +0 -91
  27. package/dist/src/__tests__/test-utils.js.map +0 -1
  28. package/dist/src/context/index.d.ts +0 -19
  29. package/dist/src/context/index.d.ts.map +0 -1
  30. package/dist/src/context/index.js +0 -25
  31. package/dist/src/context/index.js.map +0 -1
  32. package/dist/src/context/project-detector.d.ts +0 -145
  33. package/dist/src/context/project-detector.d.ts.map +0 -1
  34. package/dist/src/context/project-detector.js +0 -321
  35. package/dist/src/context/project-detector.js.map +0 -1
  36. package/dist/src/context.d.ts +0 -135
  37. package/dist/src/context.d.ts.map +0 -1
  38. package/dist/src/context.js +0 -191
  39. package/dist/src/context.js.map +0 -1
  40. package/dist/src/core-shim.d.ts +0 -7
  41. package/dist/src/core-shim.d.ts.map +0 -1
  42. package/dist/src/core-shim.js +0 -9
  43. package/dist/src/core-shim.js.map +0 -1
  44. package/dist/src/health/healthCheck.d.ts +0 -88
  45. package/dist/src/health/healthCheck.d.ts.map +0 -1
  46. package/dist/src/health/healthCheck.js +0 -117
  47. package/dist/src/health/healthCheck.js.map +0 -1
  48. package/dist/src/health/index.d.ts +0 -21
  49. package/dist/src/health/index.d.ts.map +0 -1
  50. package/dist/src/health/index.js +0 -21
  51. package/dist/src/health/index.js.map +0 -1
  52. package/dist/src/health/readinessCheck.d.ts +0 -139
  53. package/dist/src/health/readinessCheck.d.ts.map +0 -1
  54. package/dist/src/health/readinessCheck.js +0 -266
  55. package/dist/src/health/readinessCheck.js.map +0 -1
  56. package/dist/src/index.d.ts +0 -8
  57. package/dist/src/index.d.ts.map +0 -1
  58. package/dist/src/index.js +0 -178
  59. package/dist/src/index.js.map +0 -1
  60. package/dist/src/index.test.d.ts +0 -2
  61. package/dist/src/index.test.d.ts.map +0 -1
  62. package/dist/src/index.test.js +0 -43
  63. package/dist/src/index.test.js.map +0 -1
  64. package/dist/src/logger.d.ts +0 -26
  65. package/dist/src/logger.d.ts.map +0 -1
  66. package/dist/src/logger.js +0 -179
  67. package/dist/src/logger.js.map +0 -1
  68. package/dist/src/middleware/__tests__/csp.test.d.ts +0 -2
  69. package/dist/src/middleware/__tests__/csp.test.d.ts.map +0 -1
  70. package/dist/src/middleware/__tests__/csp.test.js +0 -390
  71. package/dist/src/middleware/__tests__/csp.test.js.map +0 -1
  72. package/dist/src/middleware/csp.d.ts +0 -103
  73. package/dist/src/middleware/csp.d.ts.map +0 -1
  74. package/dist/src/middleware/csp.js +0 -273
  75. package/dist/src/middleware/csp.js.map +0 -1
  76. package/dist/src/middleware/degradation.d.ts +0 -105
  77. package/dist/src/middleware/degradation.d.ts.map +0 -1
  78. package/dist/src/middleware/degradation.js +0 -319
  79. package/dist/src/middleware/degradation.js.map +0 -1
  80. package/dist/src/middleware/errorFormatter.d.ts +0 -119
  81. package/dist/src/middleware/errorFormatter.d.ts.map +0 -1
  82. package/dist/src/middleware/errorFormatter.js +0 -294
  83. package/dist/src/middleware/errorFormatter.js.map +0 -1
  84. package/dist/src/middleware/index.d.ts +0 -11
  85. package/dist/src/middleware/index.d.ts.map +0 -1
  86. package/dist/src/middleware/index.js +0 -16
  87. package/dist/src/middleware/index.js.map +0 -1
  88. package/dist/src/middleware/license.d.ts +0 -169
  89. package/dist/src/middleware/license.d.ts.map +0 -1
  90. package/dist/src/middleware/license.js +0 -292
  91. package/dist/src/middleware/license.js.map +0 -1
  92. package/dist/src/middleware/quota.d.ts +0 -182
  93. package/dist/src/middleware/quota.d.ts.map +0 -1
  94. package/dist/src/middleware/quota.js +0 -309
  95. package/dist/src/middleware/quota.js.map +0 -1
  96. package/dist/src/middleware/toolFeatureMapping.d.ts +0 -36
  97. package/dist/src/middleware/toolFeatureMapping.d.ts.map +0 -1
  98. package/dist/src/middleware/toolFeatureMapping.js +0 -96
  99. package/dist/src/middleware/toolFeatureMapping.js.map +0 -1
  100. package/dist/src/onboarding/first-run.d.ts +0 -64
  101. package/dist/src/onboarding/first-run.d.ts.map +0 -1
  102. package/dist/src/onboarding/first-run.js +0 -77
  103. package/dist/src/onboarding/first-run.js.map +0 -1
  104. package/dist/src/onboarding/index.d.ts +0 -7
  105. package/dist/src/onboarding/index.d.ts.map +0 -1
  106. package/dist/src/onboarding/index.js +0 -7
  107. package/dist/src/onboarding/index.js.map +0 -1
  108. package/dist/src/suggestions/index.d.ts +0 -21
  109. package/dist/src/suggestions/index.d.ts.map +0 -1
  110. package/dist/src/suggestions/index.js +0 -20
  111. package/dist/src/suggestions/index.js.map +0 -1
  112. package/dist/src/suggestions/suggestion-engine.d.ts +0 -185
  113. package/dist/src/suggestions/suggestion-engine.d.ts.map +0 -1
  114. package/dist/src/suggestions/suggestion-engine.js +0 -352
  115. package/dist/src/suggestions/suggestion-engine.js.map +0 -1
  116. package/dist/src/suggestions/types.d.ts +0 -88
  117. package/dist/src/suggestions/types.d.ts.map +0 -1
  118. package/dist/src/suggestions/types.js +0 -21
  119. package/dist/src/suggestions/types.js.map +0 -1
  120. package/dist/src/tools/analyze.d.ts +0 -151
  121. package/dist/src/tools/analyze.d.ts.map +0 -1
  122. package/dist/src/tools/analyze.js +0 -205
  123. package/dist/src/tools/analyze.js.map +0 -1
  124. package/dist/src/tools/compare.d.ts +0 -149
  125. package/dist/src/tools/compare.d.ts.map +0 -1
  126. package/dist/src/tools/compare.js +0 -464
  127. package/dist/src/tools/compare.js.map +0 -1
  128. package/dist/src/tools/get-skill.d.ts +0 -107
  129. package/dist/src/tools/get-skill.d.ts.map +0 -1
  130. package/dist/src/tools/get-skill.js +0 -260
  131. package/dist/src/tools/get-skill.js.map +0 -1
  132. package/dist/src/tools/index.d.ts +0 -20
  133. package/dist/src/tools/index.d.ts.map +0 -1
  134. package/dist/src/tools/index.js +0 -20
  135. package/dist/src/tools/index.js.map +0 -1
  136. package/dist/src/tools/install.d.ts +0 -122
  137. package/dist/src/tools/install.d.ts.map +0 -1
  138. package/dist/src/tools/install.js +0 -326
  139. package/dist/src/tools/install.js.map +0 -1
  140. package/dist/src/tools/recommend.d.ts +0 -169
  141. package/dist/src/tools/recommend.d.ts.map +0 -1
  142. package/dist/src/tools/recommend.js +0 -357
  143. package/dist/src/tools/recommend.js.map +0 -1
  144. package/dist/src/tools/search.d.ts +0 -114
  145. package/dist/src/tools/search.d.ts.map +0 -1
  146. package/dist/src/tools/search.js +0 -247
  147. package/dist/src/tools/search.js.map +0 -1
  148. package/dist/src/tools/suggest.d.ts +0 -181
  149. package/dist/src/tools/suggest.d.ts.map +0 -1
  150. package/dist/src/tools/suggest.js +0 -310
  151. package/dist/src/tools/suggest.js.map +0 -1
  152. package/dist/src/tools/uninstall.d.ts +0 -123
  153. package/dist/src/tools/uninstall.d.ts.map +0 -1
  154. package/dist/src/tools/uninstall.js +0 -250
  155. package/dist/src/tools/uninstall.js.map +0 -1
  156. package/dist/src/tools/validate.d.ts +0 -122
  157. package/dist/src/tools/validate.d.ts.map +0 -1
  158. package/dist/src/tools/validate.js +0 -497
  159. package/dist/src/tools/validate.js.map +0 -1
  160. package/dist/src/utils/installed-skills.d.ts +0 -101
  161. package/dist/src/utils/installed-skills.d.ts.map +0 -1
  162. package/dist/src/utils/installed-skills.js +0 -220
  163. package/dist/src/utils/installed-skills.js.map +0 -1
  164. package/dist/src/utils/validation.d.ts +0 -95
  165. package/dist/src/utils/validation.d.ts.map +0 -1
  166. package/dist/src/utils/validation.js +0 -186
  167. package/dist/src/utils/validation.js.map +0 -1
  168. package/dist/src/webhooks/index.d.ts +0 -8
  169. package/dist/src/webhooks/index.d.ts.map +0 -1
  170. package/dist/src/webhooks/index.js +0 -9
  171. package/dist/src/webhooks/index.js.map +0 -1
  172. package/dist/src/webhooks/webhook-endpoint.d.ts +0 -149
  173. package/dist/src/webhooks/webhook-endpoint.d.ts.map +0 -1
  174. package/dist/src/webhooks/webhook-endpoint.js +0 -339
  175. package/dist/src/webhooks/webhook-endpoint.js.map +0 -1
  176. package/dist/tests/compare.test.d.ts +0 -6
  177. package/dist/tests/compare.test.d.ts.map +0 -1
  178. package/dist/tests/compare.test.js +0 -225
  179. package/dist/tests/compare.test.js.map +0 -1
  180. package/dist/tests/context/project-detector.test.d.ts +0 -6
  181. package/dist/tests/context/project-detector.test.d.ts.map +0 -1
  182. package/dist/tests/context/project-detector.test.js +0 -719
  183. package/dist/tests/context/project-detector.test.js.map +0 -1
  184. package/dist/tests/e2e/compare.e2e.test.d.ts +0 -10
  185. package/dist/tests/e2e/compare.e2e.test.d.ts.map +0 -1
  186. package/dist/tests/e2e/compare.e2e.test.js +0 -296
  187. package/dist/tests/e2e/compare.e2e.test.js.map +0 -1
  188. package/dist/tests/e2e/install-flow.e2e.test.d.ts +0 -10
  189. package/dist/tests/e2e/install-flow.e2e.test.d.ts.map +0 -1
  190. package/dist/tests/e2e/install-flow.e2e.test.js +0 -229
  191. package/dist/tests/e2e/install-flow.e2e.test.js.map +0 -1
  192. package/dist/tests/e2e/recommend.e2e.test.d.ts +0 -12
  193. package/dist/tests/e2e/recommend.e2e.test.d.ts.map +0 -1
  194. package/dist/tests/e2e/recommend.e2e.test.js +0 -357
  195. package/dist/tests/e2e/recommend.e2e.test.js.map +0 -1
  196. package/dist/tests/e2e/skill-flow.e2e.test.d.ts +0 -10
  197. package/dist/tests/e2e/skill-flow.e2e.test.d.ts.map +0 -1
  198. package/dist/tests/e2e/skill-flow.e2e.test.js +0 -311
  199. package/dist/tests/e2e/skill-flow.e2e.test.js.map +0 -1
  200. package/dist/tests/e2e/suggest.e2e.test.d.ts +0 -13
  201. package/dist/tests/e2e/suggest.e2e.test.d.ts.map +0 -1
  202. package/dist/tests/e2e/suggest.e2e.test.js +0 -367
  203. package/dist/tests/e2e/suggest.e2e.test.js.map +0 -1
  204. package/dist/tests/e2e/utils/baseline-collector.d.ts +0 -107
  205. package/dist/tests/e2e/utils/baseline-collector.d.ts.map +0 -1
  206. package/dist/tests/e2e/utils/baseline-collector.js +0 -211
  207. package/dist/tests/e2e/utils/baseline-collector.js.map +0 -1
  208. package/dist/tests/e2e/utils/hardcoded-detector.d.ts +0 -46
  209. package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +0 -1
  210. package/dist/tests/e2e/utils/hardcoded-detector.js +0 -255
  211. package/dist/tests/e2e/utils/hardcoded-detector.js.map +0 -1
  212. package/dist/tests/e2e/utils/index.d.ts +0 -7
  213. package/dist/tests/e2e/utils/index.d.ts.map +0 -1
  214. package/dist/tests/e2e/utils/index.js +0 -7
  215. package/dist/tests/e2e/utils/index.js.map +0 -1
  216. package/dist/tests/e2e/utils/linear-reporter.d.ts +0 -60
  217. package/dist/tests/e2e/utils/linear-reporter.d.ts.map +0 -1
  218. package/dist/tests/e2e/utils/linear-reporter.js +0 -232
  219. package/dist/tests/e2e/utils/linear-reporter.js.map +0 -1
  220. package/dist/tests/health.test.d.ts +0 -9
  221. package/dist/tests/health.test.d.ts.map +0 -1
  222. package/dist/tests/health.test.js +0 -308
  223. package/dist/tests/health.test.js.map +0 -1
  224. package/dist/tests/integration/analyze.integration.test.d.ts +0 -2
  225. package/dist/tests/integration/analyze.integration.test.d.ts.map +0 -1
  226. package/dist/tests/integration/analyze.integration.test.js +0 -244
  227. package/dist/tests/integration/analyze.integration.test.js.map +0 -1
  228. package/dist/tests/integration/compare.integration.test.d.ts +0 -2
  229. package/dist/tests/integration/compare.integration.test.d.ts.map +0 -1
  230. package/dist/tests/integration/compare.integration.test.js +0 -120
  231. package/dist/tests/integration/compare.integration.test.js.map +0 -1
  232. package/dist/tests/integration/fixtures/test-skills.d.ts +0 -62
  233. package/dist/tests/integration/fixtures/test-skills.d.ts.map +0 -1
  234. package/dist/tests/integration/fixtures/test-skills.js +0 -644
  235. package/dist/tests/integration/fixtures/test-skills.js.map +0 -1
  236. package/dist/tests/integration/get-skill.integration.test.d.ts +0 -6
  237. package/dist/tests/integration/get-skill.integration.test.d.ts.map +0 -1
  238. package/dist/tests/integration/get-skill.integration.test.js +0 -203
  239. package/dist/tests/integration/get-skill.integration.test.js.map +0 -1
  240. package/dist/tests/integration/github-api.integration.test.d.ts +0 -14
  241. package/dist/tests/integration/github-api.integration.test.d.ts.map +0 -1
  242. package/dist/tests/integration/github-api.integration.test.js +0 -190
  243. package/dist/tests/integration/github-api.integration.test.js.map +0 -1
  244. package/dist/tests/integration/install.integration.test.d.ts +0 -6
  245. package/dist/tests/integration/install.integration.test.d.ts.map +0 -1
  246. package/dist/tests/integration/install.integration.test.js +0 -282
  247. package/dist/tests/integration/install.integration.test.js.map +0 -1
  248. package/dist/tests/integration/recommend.integration.test.d.ts +0 -2
  249. package/dist/tests/integration/recommend.integration.test.d.ts.map +0 -1
  250. package/dist/tests/integration/recommend.integration.test.js +0 -217
  251. package/dist/tests/integration/recommend.integration.test.js.map +0 -1
  252. package/dist/tests/integration/search.integration.test.d.ts +0 -6
  253. package/dist/tests/integration/search.integration.test.d.ts.map +0 -1
  254. package/dist/tests/integration/search.integration.test.js +0 -229
  255. package/dist/tests/integration/search.integration.test.js.map +0 -1
  256. package/dist/tests/integration/setup.d.ts +0 -74
  257. package/dist/tests/integration/setup.d.ts.map +0 -1
  258. package/dist/tests/integration/setup.js +0 -131
  259. package/dist/tests/integration/setup.js.map +0 -1
  260. package/dist/tests/integration/uninstall.integration.test.d.ts +0 -6
  261. package/dist/tests/integration/uninstall.integration.test.d.ts.map +0 -1
  262. package/dist/tests/integration/uninstall.integration.test.js +0 -296
  263. package/dist/tests/integration/uninstall.integration.test.js.map +0 -1
  264. package/dist/tests/integration/validate.integration.test.d.ts +0 -2
  265. package/dist/tests/integration/validate.integration.test.d.ts.map +0 -1
  266. package/dist/tests/integration/validate.integration.test.js +0 -181
  267. package/dist/tests/integration/validate.integration.test.js.map +0 -1
  268. package/dist/tests/onboarding/first-run.test.d.ts +0 -7
  269. package/dist/tests/onboarding/first-run.test.d.ts.map +0 -1
  270. package/dist/tests/onboarding/first-run.test.js +0 -258
  271. package/dist/tests/onboarding/first-run.test.js.map +0 -1
  272. package/dist/tests/performance/search-performance.test.d.ts +0 -10
  273. package/dist/tests/performance/search-performance.test.d.ts.map +0 -1
  274. package/dist/tests/performance/search-performance.test.js +0 -222
  275. package/dist/tests/performance/search-performance.test.js.map +0 -1
  276. package/dist/tests/recommend.test.d.ts +0 -6
  277. package/dist/tests/recommend.test.d.ts.map +0 -1
  278. package/dist/tests/recommend.test.js +0 -210
  279. package/dist/tests/recommend.test.js.map +0 -1
  280. package/dist/tests/suggestions/suggestion-engine.test.d.ts +0 -6
  281. package/dist/tests/suggestions/suggestion-engine.test.d.ts.map +0 -1
  282. package/dist/tests/suggestions/suggestion-engine.test.js +0 -448
  283. package/dist/tests/suggestions/suggestion-engine.test.js.map +0 -1
  284. package/dist/tests/test-utils.d.ts +0 -74
  285. package/dist/tests/test-utils.d.ts.map +0 -1
  286. package/dist/tests/test-utils.js +0 -98
  287. package/dist/tests/test-utils.js.map +0 -1
  288. package/dist/tests/tools.test.d.ts +0 -5
  289. package/dist/tests/tools.test.d.ts.map +0 -1
  290. package/dist/tests/tools.test.js +0 -138
  291. package/dist/tests/tools.test.js.map +0 -1
  292. package/dist/tests/unit/installed-skills.test.d.ts +0 -6
  293. package/dist/tests/unit/installed-skills.test.d.ts.map +0 -1
  294. package/dist/tests/unit/installed-skills.test.js +0 -285
  295. package/dist/tests/unit/installed-skills.test.js.map +0 -1
  296. package/dist/tests/unit/logger.test.d.ts +0 -6
  297. package/dist/tests/unit/logger.test.d.ts.map +0 -1
  298. package/dist/tests/unit/logger.test.js +0 -281
  299. package/dist/tests/unit/logger.test.js.map +0 -1
  300. package/dist/tests/validate.test.d.ts +0 -5
  301. package/dist/tests/validate.test.d.ts.map +0 -1
  302. package/dist/tests/validate.test.js +0 -303
  303. package/dist/tests/validate.test.js.map +0 -1
  304. package/dist/tests/webhooks/proxy-trust.security.test.d.ts +0 -8
  305. package/dist/tests/webhooks/proxy-trust.security.test.d.ts.map +0 -1
  306. package/dist/tests/webhooks/proxy-trust.security.test.js +0 -145
  307. package/dist/tests/webhooks/proxy-trust.security.test.js.map +0 -1
  308. package/dist/tests/webhooks/rate-limiter.security.test.d.ts +0 -8
  309. package/dist/tests/webhooks/rate-limiter.security.test.d.ts.map +0 -1
  310. package/dist/tests/webhooks/rate-limiter.security.test.js +0 -122
  311. package/dist/tests/webhooks/rate-limiter.security.test.js.map +0 -1
  312. package/dist/vitest.config.d.ts +0 -6
  313. package/dist/vitest.config.d.ts.map +0 -1
  314. package/dist/vitest.config.js +0 -13
  315. package/dist/vitest.config.js.map +0 -1
@@ -1,260 +0,0 @@
1
- /**
2
- * @fileoverview MCP Get Skill Tool for retrieving detailed skill information
3
- * @module @skillsmith/mcp-server/tools/get-skill
4
- * @see {@link https://github.com/wrsmith108/skillsmith|Skillsmith Repository}
5
- * @see SMI-790: Wire get-skill tool to SkillRepository
6
- *
7
- * Retrieves comprehensive details for a specific skill including:
8
- * - Basic metadata (name, author, version, category)
9
- * - Quality scores with breakdown (quality, popularity, maintenance, security, documentation)
10
- * - Trust tier with explanation
11
- * - Repository link and tags
12
- * - Installation command
13
- *
14
- * @example
15
- * // Get skill by ID with context
16
- * const response = await executeGetSkill({ id: 'anthropic/commit' }, context);
17
- * console.log(response.skill.description);
18
- *
19
- * @example
20
- * // Format for terminal display
21
- * const response = await executeGetSkill({ id: 'community/jest-helper' }, context);
22
- * console.log(formatSkillDetails(response));
23
- */
24
- import { z } from 'zod';
25
- import { TrustTierDescriptions, SkillsmithError, ErrorCodes, trackSkillView, } from '@skillsmith/core';
26
- import { isValidSkillId, mapTrustTierFromDb, extractCategoryFromTags } from '../utils/validation.js';
27
- /**
28
- * Zod schema for get-skill input validation
29
- */
30
- export const getSkillInputSchema = z.object({
31
- id: z.string().min(1, 'Skill ID is required'),
32
- });
33
- /**
34
- * Get skill tool schema for MCP
35
- */
36
- export const getSkillToolSchema = {
37
- name: 'get_skill',
38
- description: 'Get full details for a specific skill by ID',
39
- inputSchema: {
40
- type: 'object',
41
- properties: {
42
- id: {
43
- type: 'string',
44
- description: 'The skill ID (e.g., "anthropic/commit" or UUID)',
45
- },
46
- },
47
- required: ['id'],
48
- },
49
- };
50
- // isValidSkillId imported from ../utils/validation.js
51
- /**
52
- * Retrieve full details for a specific skill by ID.
53
- *
54
- * SMI-1183: Uses API as primary source with local DB fallback.
55
- * - Tries live API first (api.skillsmith.app)
56
- * - Falls back to local SkillRepository if API is offline or fails
57
- *
58
- * @param input - Input containing the skill ID to retrieve
59
- * @param context - Tool context with API client and local services
60
- * @returns Promise resolving to skill details and install command
61
- * @throws {SkillsmithError} VALIDATION_REQUIRED_FIELD - When ID is empty
62
- * @throws {SkillsmithError} SKILL_INVALID_ID - When ID format is invalid
63
- * @throws {SkillsmithError} SKILL_NOT_FOUND - When skill doesn't exist
64
- *
65
- * @example
66
- * // Get a verified skill
67
- * const response = await executeGetSkill({ id: 'anthropic/commit' }, context);
68
- * console.log(response.skill.score); // 95
69
- */
70
- export async function executeGetSkill(input, context) {
71
- const startTime = performance.now();
72
- // Validate input
73
- if (!input.id || input.id.trim().length === 0) {
74
- throw new SkillsmithError(ErrorCodes.VALIDATION_REQUIRED_FIELD, 'Skill ID is required', {
75
- details: { field: 'id' },
76
- });
77
- }
78
- const skillId = input.id.trim();
79
- // Validate ID format
80
- if (!isValidSkillId(skillId)) {
81
- throw new SkillsmithError(ErrorCodes.SKILL_INVALID_ID, 'Invalid skill ID format: "' + input.id + '"', {
82
- details: { id: input.id },
83
- suggestion: 'Skill IDs should be in format "author/skill-name" (e.g., "anthropic/commit") or a valid UUID',
84
- });
85
- }
86
- // SMI-1183: Try API first, fall back to local DB
87
- if (!context.apiClient.isOffline()) {
88
- try {
89
- const apiResponse = await context.apiClient.getSkill(skillId);
90
- const apiSkill = apiResponse.data;
91
- // Convert API skill to MCP skill format
92
- const skill = {
93
- id: apiSkill.id,
94
- name: apiSkill.name,
95
- description: apiSkill.description || '',
96
- author: apiSkill.author || 'unknown',
97
- repository: apiSkill.repo_url || undefined,
98
- version: undefined,
99
- category: extractCategoryFromTags(apiSkill.tags),
100
- trustTier: mapTrustTierFromDb(apiSkill.trust_tier),
101
- score: Math.round((apiSkill.quality_score ?? 0) * 100),
102
- scoreBreakdown: undefined,
103
- tags: apiSkill.tags || [],
104
- installCommand: 'claude skill add ' + apiSkill.id,
105
- createdAt: apiSkill.created_at,
106
- updatedAt: apiSkill.updated_at,
107
- };
108
- const endTime = performance.now();
109
- // SMI-1184: Track skill view event (silent on failure)
110
- if (context.distinctId) {
111
- trackSkillView(context.distinctId, skill.id, 'mcp');
112
- }
113
- return {
114
- skill,
115
- installCommand: skill.installCommand || 'claude skill add ' + skill.id,
116
- timing: {
117
- totalMs: Math.round(endTime - startTime),
118
- },
119
- };
120
- }
121
- catch (error) {
122
- // SMI-1183: Log and fall through to local database for all errors
123
- // This allows local-only skills to be found even if API returns 404
124
- console.warn('[skillsmith] API getSkill failed, using local database:', error.message);
125
- }
126
- }
127
- // Fallback: Look up skill from local database using SkillRepository
128
- const dbSkill = context.skillRepository.findById(skillId);
129
- if (!dbSkill) {
130
- throw new SkillsmithError(ErrorCodes.SKILL_NOT_FOUND, 'Skill "' + input.id + '" not found', {
131
- details: { id: input.id },
132
- suggestion: 'Try searching for similar skills with the search tool',
133
- });
134
- }
135
- // Convert database skill to MCP skill format
136
- const skill = {
137
- id: dbSkill.id,
138
- name: dbSkill.name,
139
- description: dbSkill.description || '',
140
- author: dbSkill.author || 'unknown',
141
- repository: dbSkill.repoUrl || undefined,
142
- version: undefined, // Version not stored in current schema
143
- category: extractCategoryFromTags(dbSkill.tags),
144
- trustTier: mapTrustTierFromDb(dbSkill.trustTier),
145
- score: Math.round((dbSkill.qualityScore ?? 0) * 100),
146
- scoreBreakdown: undefined, // Breakdown not stored in current schema
147
- tags: dbSkill.tags || [],
148
- installCommand: 'claude skill add ' + dbSkill.id,
149
- createdAt: dbSkill.createdAt,
150
- updatedAt: dbSkill.updatedAt,
151
- };
152
- const endTime = performance.now();
153
- // SMI-1184: Track skill view event (silent on failure)
154
- if (context.distinctId) {
155
- trackSkillView(context.distinctId, skill.id, 'mcp');
156
- }
157
- return {
158
- skill,
159
- installCommand: skill.installCommand || 'claude skill add ' + skill.id,
160
- timing: {
161
- totalMs: Math.round(endTime - startTime),
162
- },
163
- };
164
- }
165
- /**
166
- * Format skill details for terminal/CLI display.
167
- *
168
- * Produces a comprehensive human-readable string including:
169
- * - Basic info (ID, author, version, category)
170
- * - Full description
171
- * - Trust tier with explanation
172
- * - Visual score breakdown bars
173
- * - Repository and tags
174
- * - Installation command
175
- *
176
- * @param response - Get skill response from executeGetSkill
177
- * @returns Formatted string suitable for terminal output
178
- *
179
- * @example
180
- * const response = await executeGetSkill({ id: 'anthropic/commit' });
181
- * console.log(formatSkillDetails(response));
182
- * // Output:
183
- * // === commit ===
184
- * // ID: anthropic/commit
185
- * // Author: anthropic
186
- * // Version: 1.2.0
187
- * // ...
188
- */
189
- export function formatSkillDetails(response) {
190
- const skill = response.skill;
191
- const lines = [];
192
- lines.push('\n=== ' + skill.name + ' ===\n');
193
- // Basic info
194
- lines.push('ID: ' + skill.id);
195
- lines.push('Author: ' + skill.author);
196
- lines.push('Version: ' + (skill.version || 'N/A'));
197
- lines.push('Category: ' + skill.category);
198
- lines.push('');
199
- // Description
200
- lines.push('Description:');
201
- lines.push(' ' + skill.description);
202
- lines.push('');
203
- // Trust tier with explanation
204
- lines.push('Trust Tier: ' + formatTrustTier(skill.trustTier));
205
- lines.push(' ' + TrustTierDescriptions[skill.trustTier]);
206
- lines.push('');
207
- // Score breakdown
208
- lines.push('Overall Score: ' + skill.score + '/100');
209
- if (skill.scoreBreakdown) {
210
- lines.push('Score Breakdown:');
211
- lines.push(' Quality: ' + formatScoreBar(skill.scoreBreakdown.quality));
212
- lines.push(' Popularity: ' + formatScoreBar(skill.scoreBreakdown.popularity));
213
- lines.push(' Maintenance: ' + formatScoreBar(skill.scoreBreakdown.maintenance));
214
- lines.push(' Security: ' + formatScoreBar(skill.scoreBreakdown.security));
215
- lines.push(' Documentation: ' + formatScoreBar(skill.scoreBreakdown.documentation));
216
- }
217
- lines.push('');
218
- // Repository
219
- if (skill.repository) {
220
- lines.push('Repository: ' + skill.repository);
221
- }
222
- // Tags
223
- if (skill.tags && skill.tags.length > 0) {
224
- lines.push('Tags: ' + skill.tags.join(', '));
225
- }
226
- lines.push('');
227
- // Installation
228
- lines.push('--- Installation ---');
229
- lines.push(' ' + response.installCommand);
230
- lines.push('');
231
- // Timing
232
- lines.push('---');
233
- lines.push('Retrieved in ' + response.timing.totalMs + 'ms');
234
- return lines.join('\n');
235
- }
236
- /**
237
- * Format trust tier with visual indicator
238
- */
239
- function formatTrustTier(tier) {
240
- switch (tier) {
241
- case 'verified':
242
- return '[*] VERIFIED';
243
- case 'community':
244
- return '[+] COMMUNITY';
245
- case 'experimental':
246
- return '[~] EXPERIMENTAL';
247
- case 'unknown':
248
- return '[?] UNKNOWN';
249
- }
250
- }
251
- /**
252
- * Format score as a visual bar
253
- */
254
- function formatScoreBar(score) {
255
- const filled = Math.round(score / 10);
256
- const empty = 10 - filled;
257
- const bar = '='.repeat(filled) + '-'.repeat(empty);
258
- return '[' + bar + '] ' + score + '/100';
259
- }
260
- //# sourceMappingURL=get-skill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-skill.js","sourceRoot":"","sources":["../../../src/tools/get-skill.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- /**
2
- * MCP Tools exports
3
- */
4
- export { searchToolSchema, executeSearch, formatSearchResults } from './search.js';
5
- export type { SearchInput } from './search.js';
6
- export { installTool, installSkill, installInputSchema } from './install.js';
7
- export type { InstallInput, InstallResult } from './install.js';
8
- export { uninstallTool, uninstallSkill, uninstallInputSchema, listInstalledSkills, } from './uninstall.js';
9
- export type { UninstallInput, UninstallResult } from './uninstall.js';
10
- export { getSkillToolSchema, executeGetSkill } from './get-skill.js';
11
- export type { GetSkillInput } from './get-skill.js';
12
- export { recommendToolSchema, recommendInputSchema, executeRecommend, formatRecommendations, } from './recommend.js';
13
- export type { RecommendInput, SkillRecommendation, RecommendResponse } from './recommend.js';
14
- export { validateToolSchema, validateInputSchema, executeValidate, formatValidationResults, } from './validate.js';
15
- export type { ValidateInput, ValidationError, ValidateResponse } from './validate.js';
16
- export { compareToolSchema, compareInputSchema, executeCompare, formatComparisonResults, } from './compare.js';
17
- export type { CompareInput, SkillSummary, SkillDifference, CompareResponse } from './compare.js';
18
- export { analyzeToolSchema, analyzeInputSchema, executeAnalyze, formatAnalysisResults, } from './analyze.js';
19
- export type { AnalyzeInput, AnalyzeFramework, AnalyzeDependency, AnalyzeResponse, } from './analyze.js';
20
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC5E,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG/D,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAG5F,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAGrF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAGhG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAA"}
@@ -1,20 +0,0 @@
1
- /**
2
- * MCP Tools exports
3
- */
4
- // Search tool (SMI-581)
5
- export { searchToolSchema, executeSearch, formatSearchResults } from './search.js';
6
- // Install tool (SMI-586)
7
- export { installTool, installSkill, installInputSchema } from './install.js';
8
- // Uninstall tool (SMI-588)
9
- export { uninstallTool, uninstallSkill, uninstallInputSchema, listInstalledSkills, } from './uninstall.js';
10
- // Get skill tool (SMI-582)
11
- export { getSkillToolSchema, executeGetSkill } from './get-skill.js';
12
- // Recommend tool (SMI-741)
13
- export { recommendToolSchema, recommendInputSchema, executeRecommend, formatRecommendations, } from './recommend.js';
14
- // Validate tool (SMI-742)
15
- export { validateToolSchema, validateInputSchema, executeValidate, formatValidationResults, } from './validate.js';
16
- // Compare tool (SMI-743)
17
- export { compareToolSchema, compareInputSchema, executeCompare, formatComparisonResults, } from './compare.js';
18
- // Analyze codebase tool (SMI-600)
19
- export { analyzeToolSchema, analyzeInputSchema, executeAnalyze, formatAnalysisResults, } from './analyze.js';
20
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGlF,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAG5E,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAGvB,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGpE,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AAGvB,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,eAAe,CAAA;AAGtB,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,cAAc,CAAA;AAGrB,kCAAkC;AAClC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAA"}
@@ -1,122 +0,0 @@
1
- /**
2
- * @fileoverview MCP Install Skill Tool for downloading and installing skills
3
- * @module @skillsmith/mcp-server/tools/install
4
- * @see {@link https://github.com/wrsmith108/skillsmith|Skillsmith Repository}
5
- *
6
- * Provides skill installation functionality with:
7
- * - GitHub repository fetching (supports owner/repo and full URLs)
8
- * - Automatic security scanning before installation
9
- * - SKILL.md validation
10
- * - Manifest tracking of installed skills
11
- * - Optional file fetching (README.md, examples.md, config.json)
12
- *
13
- * Skills are installed to ~/.claude/skills/ and tracked in ~/.skillsmith/manifest.json
14
- *
15
- * @example
16
- * // Install from owner/repo format
17
- * const result = await installSkill({ skillId: 'anthropic/commit' });
18
- *
19
- * @example
20
- * // Install from GitHub URL
21
- * const result = await installSkill({
22
- * skillId: 'https://github.com/user/repo/tree/main/skills/my-skill'
23
- * });
24
- *
25
- * @example
26
- * // Force reinstall with security scan skip
27
- * const result = await installSkill({
28
- * skillId: 'community/helper',
29
- * force: true,
30
- * skipScan: true // Not recommended
31
- * });
32
- */
33
- import { z } from 'zod';
34
- import { type ScanReport } from '@skillsmith/core';
35
- import type { ToolContext } from '../context.js';
36
- export declare const installInputSchema: z.ZodObject<{
37
- skillId: z.ZodString;
38
- force: z.ZodDefault<z.ZodBoolean>;
39
- skipScan: z.ZodDefault<z.ZodBoolean>;
40
- }, "strip", z.ZodTypeAny, {
41
- skillId: string;
42
- force: boolean;
43
- skipScan: boolean;
44
- }, {
45
- skillId: string;
46
- force?: boolean | undefined;
47
- skipScan?: boolean | undefined;
48
- }>;
49
- export type InstallInput = z.infer<typeof installInputSchema>;
50
- export interface InstallResult {
51
- success: boolean;
52
- skillId: string;
53
- installPath: string;
54
- securityReport?: ScanReport;
55
- tips?: string[];
56
- error?: string;
57
- }
58
- /**
59
- * Install a skill from GitHub to the local Claude Code skills directory.
60
- *
61
- * This function:
62
- * 1. Parses the skill ID or GitHub URL
63
- * 2. Checks if already installed (returns error unless force=true)
64
- * 3. Fetches SKILL.md from GitHub (required)
65
- * 4. Validates SKILL.md content
66
- * 5. Runs security scan (unless skipScan=true)
67
- * 6. Creates installation directory at ~/.claude/skills/{skillName}
68
- * 7. Writes skill files
69
- * 8. Updates manifest at ~/.skillsmith/manifest.json
70
- *
71
- * @param input - Installation parameters
72
- * @param input.skillId - Skill ID (owner/repo) or full GitHub URL
73
- * @param input.force - Force reinstall if skill already exists (default: false)
74
- * @param input.skipScan - Skip security scan (default: false, not recommended)
75
- * @returns Promise resolving to installation result with success status
76
- *
77
- * @example
78
- * // Successful installation
79
- * const result = await installSkill({ skillId: 'anthropic/commit' });
80
- * if (result.success) {
81
- * console.log(`Installed to ${result.installPath}`);
82
- * result.tips?.forEach(tip => console.log(tip));
83
- * }
84
- *
85
- * @example
86
- * // Handle security scan failure
87
- * const result = await installSkill({ skillId: 'untrusted/skill' });
88
- * if (!result.success && result.securityReport) {
89
- * console.log('Security issues found:');
90
- * result.securityReport.findings.forEach(f =>
91
- * console.log(` ${f.severity}: ${f.message}`)
92
- * );
93
- * }
94
- */
95
- export declare function installSkill(input: InstallInput, _context?: ToolContext): Promise<InstallResult>;
96
- /**
97
- * MCP tool definition
98
- */
99
- export declare const installTool: {
100
- name: string;
101
- description: string;
102
- inputSchema: {
103
- type: "object";
104
- properties: {
105
- skillId: {
106
- type: string;
107
- description: string;
108
- };
109
- force: {
110
- type: string;
111
- description: string;
112
- };
113
- skipScan: {
114
- type: string;
115
- description: string;
116
- };
117
- };
118
- required: string[];
119
- };
120
- };
121
- export default installTool;
122
- //# sourceMappingURL=install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAInE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAG7D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,UAAU,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAkID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,aAAa,CAAC,CAyIxB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;CAsBvB,CAAA;AAED,eAAe,WAAW,CAAA"}