@skillsmith/mcp-server 0.3.0 → 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 (314) hide show
  1. package/package.json +1 -1
  2. package/dist/.tsbuildinfo +0 -1
  3. package/dist/src/__tests__/get-skill.test.d.ts +0 -6
  4. package/dist/src/__tests__/get-skill.test.d.ts.map +0 -1
  5. package/dist/src/__tests__/get-skill.test.js +0 -88
  6. package/dist/src/__tests__/get-skill.test.js.map +0 -1
  7. package/dist/src/__tests__/middleware/errorFormatter.test.d.ts +0 -7
  8. package/dist/src/__tests__/middleware/errorFormatter.test.d.ts.map +0 -1
  9. package/dist/src/__tests__/middleware/errorFormatter.test.js +0 -304
  10. package/dist/src/__tests__/middleware/errorFormatter.test.js.map +0 -1
  11. package/dist/src/__tests__/middleware/license.test.d.ts +0 -7
  12. package/dist/src/__tests__/middleware/license.test.d.ts.map +0 -1
  13. package/dist/src/__tests__/middleware/license.test.js +0 -500
  14. package/dist/src/__tests__/middleware/license.test.js.map +0 -1
  15. package/dist/src/__tests__/search.test.d.ts +0 -6
  16. package/dist/src/__tests__/search.test.d.ts.map +0 -1
  17. package/dist/src/__tests__/search.test.js +0 -86
  18. package/dist/src/__tests__/search.test.js.map +0 -1
  19. package/dist/src/__tests__/test-utils.d.ts +0 -20
  20. package/dist/src/__tests__/test-utils.d.ts.map +0 -1
  21. package/dist/src/__tests__/test-utils.js +0 -91
  22. package/dist/src/__tests__/test-utils.js.map +0 -1
  23. package/dist/src/context/index.d.ts +0 -19
  24. package/dist/src/context/index.d.ts.map +0 -1
  25. package/dist/src/context/index.js +0 -25
  26. package/dist/src/context/index.js.map +0 -1
  27. package/dist/src/context/project-detector.d.ts +0 -145
  28. package/dist/src/context/project-detector.d.ts.map +0 -1
  29. package/dist/src/context/project-detector.js +0 -321
  30. package/dist/src/context/project-detector.js.map +0 -1
  31. package/dist/src/context.d.ts +0 -157
  32. package/dist/src/context.d.ts.map +0 -1
  33. package/dist/src/context.js +0 -231
  34. package/dist/src/context.js.map +0 -1
  35. package/dist/src/core-shim.d.ts +0 -7
  36. package/dist/src/core-shim.d.ts.map +0 -1
  37. package/dist/src/core-shim.js +0 -9
  38. package/dist/src/core-shim.js.map +0 -1
  39. package/dist/src/health/healthCheck.d.ts +0 -88
  40. package/dist/src/health/healthCheck.d.ts.map +0 -1
  41. package/dist/src/health/healthCheck.js +0 -117
  42. package/dist/src/health/healthCheck.js.map +0 -1
  43. package/dist/src/health/index.d.ts +0 -21
  44. package/dist/src/health/index.d.ts.map +0 -1
  45. package/dist/src/health/index.js +0 -21
  46. package/dist/src/health/index.js.map +0 -1
  47. package/dist/src/health/readinessCheck.d.ts +0 -139
  48. package/dist/src/health/readinessCheck.d.ts.map +0 -1
  49. package/dist/src/health/readinessCheck.js +0 -266
  50. package/dist/src/health/readinessCheck.js.map +0 -1
  51. package/dist/src/index.d.ts +0 -9
  52. package/dist/src/index.d.ts.map +0 -1
  53. package/dist/src/index.js +0 -236
  54. package/dist/src/index.js.map +0 -1
  55. package/dist/src/index.test.d.ts +0 -2
  56. package/dist/src/index.test.d.ts.map +0 -1
  57. package/dist/src/index.test.js +0 -43
  58. package/dist/src/index.test.js.map +0 -1
  59. package/dist/src/logger.d.ts +0 -26
  60. package/dist/src/logger.d.ts.map +0 -1
  61. package/dist/src/logger.js +0 -179
  62. package/dist/src/logger.js.map +0 -1
  63. package/dist/src/middleware/__tests__/csp.test.d.ts +0 -2
  64. package/dist/src/middleware/__tests__/csp.test.d.ts.map +0 -1
  65. package/dist/src/middleware/__tests__/csp.test.js +0 -390
  66. package/dist/src/middleware/__tests__/csp.test.js.map +0 -1
  67. package/dist/src/middleware/csp.d.ts +0 -103
  68. package/dist/src/middleware/csp.d.ts.map +0 -1
  69. package/dist/src/middleware/csp.js +0 -273
  70. package/dist/src/middleware/csp.js.map +0 -1
  71. package/dist/src/middleware/degradation.d.ts +0 -105
  72. package/dist/src/middleware/degradation.d.ts.map +0 -1
  73. package/dist/src/middleware/degradation.js +0 -319
  74. package/dist/src/middleware/degradation.js.map +0 -1
  75. package/dist/src/middleware/errorFormatter.d.ts +0 -119
  76. package/dist/src/middleware/errorFormatter.d.ts.map +0 -1
  77. package/dist/src/middleware/errorFormatter.js +0 -294
  78. package/dist/src/middleware/errorFormatter.js.map +0 -1
  79. package/dist/src/middleware/index.d.ts +0 -11
  80. package/dist/src/middleware/index.d.ts.map +0 -1
  81. package/dist/src/middleware/index.js +0 -16
  82. package/dist/src/middleware/index.js.map +0 -1
  83. package/dist/src/middleware/license.d.ts +0 -169
  84. package/dist/src/middleware/license.d.ts.map +0 -1
  85. package/dist/src/middleware/license.js +0 -292
  86. package/dist/src/middleware/license.js.map +0 -1
  87. package/dist/src/middleware/quota.d.ts +0 -182
  88. package/dist/src/middleware/quota.d.ts.map +0 -1
  89. package/dist/src/middleware/quota.js +0 -309
  90. package/dist/src/middleware/quota.js.map +0 -1
  91. package/dist/src/middleware/toolFeatureMapping.d.ts +0 -36
  92. package/dist/src/middleware/toolFeatureMapping.d.ts.map +0 -1
  93. package/dist/src/middleware/toolFeatureMapping.js +0 -96
  94. package/dist/src/middleware/toolFeatureMapping.js.map +0 -1
  95. package/dist/src/onboarding/first-run.d.ts +0 -65
  96. package/dist/src/onboarding/first-run.d.ts.map +0 -1
  97. package/dist/src/onboarding/first-run.js +0 -79
  98. package/dist/src/onboarding/first-run.js.map +0 -1
  99. package/dist/src/onboarding/index.d.ts +0 -7
  100. package/dist/src/onboarding/index.d.ts.map +0 -1
  101. package/dist/src/onboarding/index.js +0 -7
  102. package/dist/src/onboarding/index.js.map +0 -1
  103. package/dist/src/onboarding/install-assets.d.ts +0 -27
  104. package/dist/src/onboarding/install-assets.d.ts.map +0 -1
  105. package/dist/src/onboarding/install-assets.js +0 -128
  106. package/dist/src/onboarding/install-assets.js.map +0 -1
  107. package/dist/src/suggestions/index.d.ts +0 -21
  108. package/dist/src/suggestions/index.d.ts.map +0 -1
  109. package/dist/src/suggestions/index.js +0 -20
  110. package/dist/src/suggestions/index.js.map +0 -1
  111. package/dist/src/suggestions/suggestion-engine.d.ts +0 -185
  112. package/dist/src/suggestions/suggestion-engine.d.ts.map +0 -1
  113. package/dist/src/suggestions/suggestion-engine.js +0 -352
  114. package/dist/src/suggestions/suggestion-engine.js.map +0 -1
  115. package/dist/src/suggestions/types.d.ts +0 -88
  116. package/dist/src/suggestions/types.d.ts.map +0 -1
  117. package/dist/src/suggestions/types.js +0 -21
  118. package/dist/src/suggestions/types.js.map +0 -1
  119. package/dist/src/tools/analyze.d.ts +0 -151
  120. package/dist/src/tools/analyze.d.ts.map +0 -1
  121. package/dist/src/tools/analyze.js +0 -205
  122. package/dist/src/tools/analyze.js.map +0 -1
  123. package/dist/src/tools/compare.d.ts +0 -149
  124. package/dist/src/tools/compare.d.ts.map +0 -1
  125. package/dist/src/tools/compare.js +0 -464
  126. package/dist/src/tools/compare.js.map +0 -1
  127. package/dist/src/tools/get-skill.d.ts +0 -107
  128. package/dist/src/tools/get-skill.d.ts.map +0 -1
  129. package/dist/src/tools/get-skill.js +0 -260
  130. package/dist/src/tools/get-skill.js.map +0 -1
  131. package/dist/src/tools/index.d.ts +0 -20
  132. package/dist/src/tools/index.d.ts.map +0 -1
  133. package/dist/src/tools/index.js +0 -20
  134. package/dist/src/tools/index.js.map +0 -1
  135. package/dist/src/tools/install.d.ts +0 -122
  136. package/dist/src/tools/install.d.ts.map +0 -1
  137. package/dist/src/tools/install.js +0 -326
  138. package/dist/src/tools/install.js.map +0 -1
  139. package/dist/src/tools/recommend.d.ts +0 -169
  140. package/dist/src/tools/recommend.d.ts.map +0 -1
  141. package/dist/src/tools/recommend.js +0 -357
  142. package/dist/src/tools/recommend.js.map +0 -1
  143. package/dist/src/tools/search.d.ts +0 -114
  144. package/dist/src/tools/search.d.ts.map +0 -1
  145. package/dist/src/tools/search.js +0 -247
  146. package/dist/src/tools/search.js.map +0 -1
  147. package/dist/src/tools/suggest.d.ts +0 -181
  148. package/dist/src/tools/suggest.d.ts.map +0 -1
  149. package/dist/src/tools/suggest.js +0 -310
  150. package/dist/src/tools/suggest.js.map +0 -1
  151. package/dist/src/tools/uninstall.d.ts +0 -123
  152. package/dist/src/tools/uninstall.d.ts.map +0 -1
  153. package/dist/src/tools/uninstall.js +0 -250
  154. package/dist/src/tools/uninstall.js.map +0 -1
  155. package/dist/src/tools/validate.d.ts +0 -122
  156. package/dist/src/tools/validate.d.ts.map +0 -1
  157. package/dist/src/tools/validate.js +0 -497
  158. package/dist/src/tools/validate.js.map +0 -1
  159. package/dist/src/utils/installed-skills.d.ts +0 -101
  160. package/dist/src/utils/installed-skills.d.ts.map +0 -1
  161. package/dist/src/utils/installed-skills.js +0 -220
  162. package/dist/src/utils/installed-skills.js.map +0 -1
  163. package/dist/src/utils/validation.d.ts +0 -95
  164. package/dist/src/utils/validation.d.ts.map +0 -1
  165. package/dist/src/utils/validation.js +0 -186
  166. package/dist/src/utils/validation.js.map +0 -1
  167. package/dist/src/webhooks/index.d.ts +0 -8
  168. package/dist/src/webhooks/index.d.ts.map +0 -1
  169. package/dist/src/webhooks/index.js +0 -9
  170. package/dist/src/webhooks/index.js.map +0 -1
  171. package/dist/src/webhooks/webhook-endpoint.d.ts +0 -149
  172. package/dist/src/webhooks/webhook-endpoint.d.ts.map +0 -1
  173. package/dist/src/webhooks/webhook-endpoint.js +0 -339
  174. package/dist/src/webhooks/webhook-endpoint.js.map +0 -1
  175. package/dist/tests/compare.test.d.ts +0 -6
  176. package/dist/tests/compare.test.d.ts.map +0 -1
  177. package/dist/tests/compare.test.js +0 -225
  178. package/dist/tests/compare.test.js.map +0 -1
  179. package/dist/tests/context/project-detector.test.d.ts +0 -6
  180. package/dist/tests/context/project-detector.test.d.ts.map +0 -1
  181. package/dist/tests/context/project-detector.test.js +0 -719
  182. package/dist/tests/context/project-detector.test.js.map +0 -1
  183. package/dist/tests/e2e/compare.e2e.test.d.ts +0 -10
  184. package/dist/tests/e2e/compare.e2e.test.d.ts.map +0 -1
  185. package/dist/tests/e2e/compare.e2e.test.js +0 -296
  186. package/dist/tests/e2e/compare.e2e.test.js.map +0 -1
  187. package/dist/tests/e2e/install-flow.e2e.test.d.ts +0 -10
  188. package/dist/tests/e2e/install-flow.e2e.test.d.ts.map +0 -1
  189. package/dist/tests/e2e/install-flow.e2e.test.js +0 -229
  190. package/dist/tests/e2e/install-flow.e2e.test.js.map +0 -1
  191. package/dist/tests/e2e/recommend.e2e.test.d.ts +0 -12
  192. package/dist/tests/e2e/recommend.e2e.test.d.ts.map +0 -1
  193. package/dist/tests/e2e/recommend.e2e.test.js +0 -357
  194. package/dist/tests/e2e/recommend.e2e.test.js.map +0 -1
  195. package/dist/tests/e2e/skill-flow.e2e.test.d.ts +0 -10
  196. package/dist/tests/e2e/skill-flow.e2e.test.d.ts.map +0 -1
  197. package/dist/tests/e2e/skill-flow.e2e.test.js +0 -311
  198. package/dist/tests/e2e/skill-flow.e2e.test.js.map +0 -1
  199. package/dist/tests/e2e/suggest.e2e.test.d.ts +0 -13
  200. package/dist/tests/e2e/suggest.e2e.test.d.ts.map +0 -1
  201. package/dist/tests/e2e/suggest.e2e.test.js +0 -367
  202. package/dist/tests/e2e/suggest.e2e.test.js.map +0 -1
  203. package/dist/tests/e2e/utils/baseline-collector.d.ts +0 -107
  204. package/dist/tests/e2e/utils/baseline-collector.d.ts.map +0 -1
  205. package/dist/tests/e2e/utils/baseline-collector.js +0 -211
  206. package/dist/tests/e2e/utils/baseline-collector.js.map +0 -1
  207. package/dist/tests/e2e/utils/hardcoded-detector.d.ts +0 -46
  208. package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +0 -1
  209. package/dist/tests/e2e/utils/hardcoded-detector.js +0 -255
  210. package/dist/tests/e2e/utils/hardcoded-detector.js.map +0 -1
  211. package/dist/tests/e2e/utils/index.d.ts +0 -7
  212. package/dist/tests/e2e/utils/index.d.ts.map +0 -1
  213. package/dist/tests/e2e/utils/index.js +0 -7
  214. package/dist/tests/e2e/utils/index.js.map +0 -1
  215. package/dist/tests/e2e/utils/linear-reporter.d.ts +0 -60
  216. package/dist/tests/e2e/utils/linear-reporter.d.ts.map +0 -1
  217. package/dist/tests/e2e/utils/linear-reporter.js +0 -232
  218. package/dist/tests/e2e/utils/linear-reporter.js.map +0 -1
  219. package/dist/tests/health.test.d.ts +0 -9
  220. package/dist/tests/health.test.d.ts.map +0 -1
  221. package/dist/tests/health.test.js +0 -308
  222. package/dist/tests/health.test.js.map +0 -1
  223. package/dist/tests/integration/analyze.integration.test.d.ts +0 -2
  224. package/dist/tests/integration/analyze.integration.test.d.ts.map +0 -1
  225. package/dist/tests/integration/analyze.integration.test.js +0 -244
  226. package/dist/tests/integration/analyze.integration.test.js.map +0 -1
  227. package/dist/tests/integration/compare.integration.test.d.ts +0 -2
  228. package/dist/tests/integration/compare.integration.test.d.ts.map +0 -1
  229. package/dist/tests/integration/compare.integration.test.js +0 -120
  230. package/dist/tests/integration/compare.integration.test.js.map +0 -1
  231. package/dist/tests/integration/fixtures/test-skills.d.ts +0 -62
  232. package/dist/tests/integration/fixtures/test-skills.d.ts.map +0 -1
  233. package/dist/tests/integration/fixtures/test-skills.js +0 -644
  234. package/dist/tests/integration/fixtures/test-skills.js.map +0 -1
  235. package/dist/tests/integration/get-skill.integration.test.d.ts +0 -6
  236. package/dist/tests/integration/get-skill.integration.test.d.ts.map +0 -1
  237. package/dist/tests/integration/get-skill.integration.test.js +0 -203
  238. package/dist/tests/integration/get-skill.integration.test.js.map +0 -1
  239. package/dist/tests/integration/github-api.integration.test.d.ts +0 -14
  240. package/dist/tests/integration/github-api.integration.test.d.ts.map +0 -1
  241. package/dist/tests/integration/github-api.integration.test.js +0 -190
  242. package/dist/tests/integration/github-api.integration.test.js.map +0 -1
  243. package/dist/tests/integration/install.integration.test.d.ts +0 -6
  244. package/dist/tests/integration/install.integration.test.d.ts.map +0 -1
  245. package/dist/tests/integration/install.integration.test.js +0 -282
  246. package/dist/tests/integration/install.integration.test.js.map +0 -1
  247. package/dist/tests/integration/recommend.integration.test.d.ts +0 -2
  248. package/dist/tests/integration/recommend.integration.test.d.ts.map +0 -1
  249. package/dist/tests/integration/recommend.integration.test.js +0 -217
  250. package/dist/tests/integration/recommend.integration.test.js.map +0 -1
  251. package/dist/tests/integration/search.integration.test.d.ts +0 -6
  252. package/dist/tests/integration/search.integration.test.d.ts.map +0 -1
  253. package/dist/tests/integration/search.integration.test.js +0 -229
  254. package/dist/tests/integration/search.integration.test.js.map +0 -1
  255. package/dist/tests/integration/setup.d.ts +0 -74
  256. package/dist/tests/integration/setup.d.ts.map +0 -1
  257. package/dist/tests/integration/setup.js +0 -131
  258. package/dist/tests/integration/setup.js.map +0 -1
  259. package/dist/tests/integration/uninstall.integration.test.d.ts +0 -6
  260. package/dist/tests/integration/uninstall.integration.test.d.ts.map +0 -1
  261. package/dist/tests/integration/uninstall.integration.test.js +0 -296
  262. package/dist/tests/integration/uninstall.integration.test.js.map +0 -1
  263. package/dist/tests/integration/validate.integration.test.d.ts +0 -2
  264. package/dist/tests/integration/validate.integration.test.d.ts.map +0 -1
  265. package/dist/tests/integration/validate.integration.test.js +0 -181
  266. package/dist/tests/integration/validate.integration.test.js.map +0 -1
  267. package/dist/tests/onboarding/first-run.test.d.ts +0 -7
  268. package/dist/tests/onboarding/first-run.test.d.ts.map +0 -1
  269. package/dist/tests/onboarding/first-run.test.js +0 -264
  270. package/dist/tests/onboarding/first-run.test.js.map +0 -1
  271. package/dist/tests/performance/search-performance.test.d.ts +0 -10
  272. package/dist/tests/performance/search-performance.test.d.ts.map +0 -1
  273. package/dist/tests/performance/search-performance.test.js +0 -222
  274. package/dist/tests/performance/search-performance.test.js.map +0 -1
  275. package/dist/tests/recommend.test.d.ts +0 -6
  276. package/dist/tests/recommend.test.d.ts.map +0 -1
  277. package/dist/tests/recommend.test.js +0 -210
  278. package/dist/tests/recommend.test.js.map +0 -1
  279. package/dist/tests/suggestions/suggestion-engine.test.d.ts +0 -6
  280. package/dist/tests/suggestions/suggestion-engine.test.d.ts.map +0 -1
  281. package/dist/tests/suggestions/suggestion-engine.test.js +0 -448
  282. package/dist/tests/suggestions/suggestion-engine.test.js.map +0 -1
  283. package/dist/tests/test-utils.d.ts +0 -74
  284. package/dist/tests/test-utils.d.ts.map +0 -1
  285. package/dist/tests/test-utils.js +0 -98
  286. package/dist/tests/test-utils.js.map +0 -1
  287. package/dist/tests/tools.test.d.ts +0 -5
  288. package/dist/tests/tools.test.d.ts.map +0 -1
  289. package/dist/tests/tools.test.js +0 -138
  290. package/dist/tests/tools.test.js.map +0 -1
  291. package/dist/tests/unit/installed-skills.test.d.ts +0 -6
  292. package/dist/tests/unit/installed-skills.test.d.ts.map +0 -1
  293. package/dist/tests/unit/installed-skills.test.js +0 -285
  294. package/dist/tests/unit/installed-skills.test.js.map +0 -1
  295. package/dist/tests/unit/logger.test.d.ts +0 -6
  296. package/dist/tests/unit/logger.test.d.ts.map +0 -1
  297. package/dist/tests/unit/logger.test.js +0 -281
  298. package/dist/tests/unit/logger.test.js.map +0 -1
  299. package/dist/tests/validate.test.d.ts +0 -5
  300. package/dist/tests/validate.test.d.ts.map +0 -1
  301. package/dist/tests/validate.test.js +0 -303
  302. package/dist/tests/validate.test.js.map +0 -1
  303. package/dist/tests/webhooks/proxy-trust.security.test.d.ts +0 -8
  304. package/dist/tests/webhooks/proxy-trust.security.test.d.ts.map +0 -1
  305. package/dist/tests/webhooks/proxy-trust.security.test.js +0 -145
  306. package/dist/tests/webhooks/proxy-trust.security.test.js.map +0 -1
  307. package/dist/tests/webhooks/rate-limiter.security.test.d.ts +0 -8
  308. package/dist/tests/webhooks/rate-limiter.security.test.d.ts.map +0 -1
  309. package/dist/tests/webhooks/rate-limiter.security.test.js +0 -122
  310. package/dist/tests/webhooks/rate-limiter.security.test.js.map +0 -1
  311. package/dist/vitest.config.d.ts +0 -6
  312. package/dist/vitest.config.d.ts.map +0 -1
  313. package/dist/vitest.config.js +0 -13
  314. package/dist/vitest.config.js.map +0 -1
@@ -1,310 +0,0 @@
1
- /**
2
- * @fileoverview MCP Skill Suggest Tool for proactive skill recommendations
3
- * @module @skillsmith/mcp-server/tools/suggest
4
- * @see Phase 4: Trigger System Architecture
5
- *
6
- * Provides proactive skill suggestions based on user context including:
7
- * - Current file being edited
8
- * - Recent terminal commands
9
- * - Error messages
10
- * - Project structure analysis
11
- *
12
- * Features:
13
- * - Rate limiting (max 1 suggestion per 5 minutes per session)
14
- * - Context scoring to filter low-relevance suggestions
15
- * - Integration with CodebaseAnalyzer
16
- * - Semantic skill matching
17
- *
18
- * @example
19
- * // Client calls suggest when user is working
20
- * const result = await executeSuggest({
21
- * project_path: '/path/to/project',
22
- * current_file: 'src/App.test.tsx',
23
- * recent_commands: ['npm test'],
24
- * installed_skills: ['anthropic/commit']
25
- * }, toolContext);
26
- */
27
- import { z } from 'zod';
28
- import { TriggerDetector, ContextScorer } from '@skillsmith/core';
29
- import { CodebaseAnalyzer } from '@skillsmith/core';
30
- import { SkillMatcher } from '@skillsmith/core';
31
- import { RateLimiter } from '@skillsmith/core';
32
- import { mapTrustTierFromDb, getTrustBadge } from '../utils/validation.js';
33
- /**
34
- * Zod schema for suggest tool input validation
35
- */
36
- export const suggestInputSchema = z.object({
37
- /** Root path of the project */
38
- project_path: z.string().min(1),
39
- /** Current file being edited (optional) */
40
- current_file: z.string().optional(),
41
- /** Recent terminal commands (last 5) */
42
- recent_commands: z.array(z.string()).max(10).default([]),
43
- /** Recent error message if any */
44
- error_message: z.string().optional(),
45
- /** Currently installed skill IDs */
46
- installed_skills: z.array(z.string()).default([]),
47
- /** Maximum suggestions to return (default 3) */
48
- limit: z.number().min(1).max(10).default(3),
49
- /** Session ID for rate limiting */
50
- session_id: z.string().default('default'),
51
- });
52
- /**
53
- * MCP tool schema definition for skill_suggest
54
- */
55
- export const suggestToolSchema = {
56
- name: 'skill_suggest',
57
- description: 'Proactively suggest relevant skills based on current context (files, commands, errors, project structure). Rate-limited to max 1 per 5 minutes per session.',
58
- inputSchema: {
59
- type: 'object',
60
- properties: {
61
- project_path: {
62
- type: 'string',
63
- description: 'Root path of the project to analyze',
64
- },
65
- current_file: {
66
- type: 'string',
67
- description: 'Current file being edited (e.g., "src/App.test.tsx")',
68
- },
69
- recent_commands: {
70
- type: 'array',
71
- items: { type: 'string' },
72
- description: 'Recent terminal commands (last 5, e.g., ["npm test", "git commit"])',
73
- },
74
- error_message: {
75
- type: 'string',
76
- description: 'Recent error message if any',
77
- },
78
- installed_skills: {
79
- type: 'array',
80
- items: { type: 'string' },
81
- description: 'Currently installed skill IDs (for filtering)',
82
- },
83
- limit: {
84
- type: 'number',
85
- description: 'Maximum suggestions to return (default 3, max 10)',
86
- minimum: 1,
87
- maximum: 10,
88
- default: 3,
89
- },
90
- session_id: {
91
- type: 'string',
92
- description: 'Session ID for rate limiting (default: "default")',
93
- default: 'default',
94
- },
95
- },
96
- required: ['project_path'],
97
- },
98
- };
99
- /**
100
- * Transform a database skill to SkillData format for matching
101
- */
102
- function transformSkillToMatchData(skill) {
103
- // Generate trigger phrases from name and first few tags
104
- const triggerPhrases = [
105
- skill.name,
106
- `use ${skill.name}`,
107
- `${skill.name} help`,
108
- ...skill.tags.slice(0, 3).map((tag) => `${tag} ${skill.name}`),
109
- ];
110
- return {
111
- id: skill.id,
112
- name: skill.name,
113
- description: skill.description || '',
114
- triggerPhrases,
115
- keywords: skill.tags,
116
- qualityScore: Math.round((skill.qualityScore ?? 0.5) * 100),
117
- trustTier: mapTrustTierFromDb(skill.trustTier),
118
- // Use tags as categories for filtering
119
- categories: skill.tags,
120
- };
121
- }
122
- /**
123
- * Load skills from database via ToolContext
124
- * Returns skills transformed to SkillData format for matching
125
- */
126
- async function loadSkillsFromDatabase(context, limit = 500) {
127
- const result = context.skillRepository.findAll(limit, 0);
128
- return result.items.map(transformSkillToMatchData);
129
- }
130
- // Rate limiter instance (singleton)
131
- let rateLimiter = null;
132
- /**
133
- * Get or create the rate limiter
134
- */
135
- function getRateLimiter() {
136
- if (!rateLimiter) {
137
- // Use STRICT preset: 10 requests per minute = ~1 per 6 seconds
138
- // For suggestions, we want max 1 per 5 minutes, so we'll use custom config
139
- rateLimiter = new RateLimiter({
140
- maxTokens: 1, // Only 1 suggestion at a time
141
- refillRate: 1 / 300, // 1 token per 300 seconds (5 minutes)
142
- windowMs: 300000, // 5 minute window
143
- keyPrefix: 'suggest',
144
- failMode: 'open', // Allow on errors (graceful degradation)
145
- });
146
- }
147
- return rateLimiter;
148
- }
149
- /**
150
- * Execute skill suggestion based on context.
151
- *
152
- * @param input - Suggestion parameters
153
- * @param context - Tool context with database access
154
- * @returns Promise resolving to suggestion response
155
- *
156
- * @example
157
- * const response = await executeSuggest({
158
- * project_path: '/path/to/project',
159
- * current_file: 'src/App.test.tsx',
160
- * recent_commands: ['npm test'],
161
- * installed_skills: ['anthropic/commit'],
162
- * limit: 3
163
- * }, toolContext);
164
- */
165
- export async function executeSuggest(input, context) {
166
- const startTime = performance.now();
167
- // Validate input
168
- const validated = suggestInputSchema.parse(input);
169
- const { project_path, current_file, recent_commands, error_message, installed_skills, limit, session_id, } = validated;
170
- // Check rate limit
171
- const limiter = getRateLimiter();
172
- const rateLimitResult = await limiter.checkLimit(session_id);
173
- if (!rateLimitResult.allowed) {
174
- return {
175
- suggestions: [],
176
- context_score: 0,
177
- rate_limited: true,
178
- next_suggestion_at: rateLimitResult.resetAt,
179
- triggers_fired: [],
180
- timing: {
181
- totalMs: Math.round(performance.now() - startTime),
182
- },
183
- };
184
- }
185
- const analysisStart = performance.now();
186
- // Analyze codebase (with timeout and caching)
187
- let codebaseContext = null;
188
- try {
189
- const analyzer = new CodebaseAnalyzer();
190
- codebaseContext = await analyzer.analyze(project_path, {
191
- maxFiles: 500,
192
- includeDevDeps: true,
193
- });
194
- }
195
- catch (error) {
196
- // Log error but continue with trigger detection
197
- console.warn('CodebaseAnalyzer failed:', error);
198
- }
199
- const analysisMs = Math.round(performance.now() - analysisStart);
200
- // Detect triggers
201
- const detector = new TriggerDetector();
202
- const triggers = detector.detectTriggers(codebaseContext, {
203
- currentFile: current_file,
204
- recentCommands: recent_commands,
205
- errorMessage: error_message,
206
- minConfidence: 0.5,
207
- });
208
- // Score context
209
- const scorer = new ContextScorer();
210
- const contextScore = scorer.scoreContext(triggers, codebaseContext);
211
- // Check if we should suggest
212
- if (!scorer.shouldSuggest(contextScore)) {
213
- return {
214
- suggestions: [],
215
- context_score: contextScore.score,
216
- rate_limited: false,
217
- triggers_fired: contextScore.triggers,
218
- timing: {
219
- totalMs: Math.round(performance.now() - startTime),
220
- analysisMs,
221
- },
222
- };
223
- }
224
- const matchingStart = performance.now();
225
- // Load skills from database
226
- const skillDatabase = await loadSkillsFromDatabase(context, 500);
227
- // Filter skills by detected categories
228
- const relevantCategories = new Set(contextScore.recommendedCategories);
229
- const candidateSkills = skillDatabase.filter((skill) => {
230
- // Skip already installed skills
231
- if (installed_skills.some((id) => id.toLowerCase() === skill.id.toLowerCase())) {
232
- return false;
233
- }
234
- // Check if skill matches any detected category
235
- return skill.categories.some((cat) => relevantCategories.has(cat));
236
- });
237
- // Use SkillMatcher for semantic ranking
238
- const matcher = new SkillMatcher({
239
- useFallback: true,
240
- minSimilarity: 0.3,
241
- qualityWeight: 0.3,
242
- });
243
- // Build query from triggered categories
244
- const query = contextScore.recommendedCategories.join(' ');
245
- const matchResults = await matcher.findSimilarSkills(query, candidateSkills, limit);
246
- const matchingMs = Math.round(performance.now() - matchingStart);
247
- // Transform to response format
248
- const suggestions = matchResults.map((result) => {
249
- const skill = result.skill;
250
- return {
251
- skill_id: skill.id,
252
- name: skill.name,
253
- reason: result.matchReason,
254
- confidence: contextScore.confidence,
255
- trigger_types: contextScore.triggers,
256
- trust_tier: skill.trustTier,
257
- quality_score: skill.qualityScore,
258
- };
259
- });
260
- matcher.close();
261
- const totalMs = Math.round(performance.now() - startTime);
262
- return {
263
- suggestions,
264
- context_score: contextScore.score,
265
- rate_limited: false,
266
- triggers_fired: contextScore.triggers,
267
- timing: {
268
- totalMs,
269
- analysisMs,
270
- matchingMs,
271
- },
272
- };
273
- }
274
- /**
275
- * Format suggestions for terminal display
276
- */
277
- export function formatSuggestions(response) {
278
- const lines = [];
279
- lines.push('\n=== Skill Suggestions ===\n');
280
- if (response.rate_limited) {
281
- lines.push('Rate limited. Please wait before requesting more suggestions.');
282
- if (response.next_suggestion_at) {
283
- lines.push(`Next suggestion available at: ${response.next_suggestion_at}`);
284
- }
285
- return lines.join('\n');
286
- }
287
- if (response.suggestions.length === 0) {
288
- lines.push('No relevant suggestions at this time.');
289
- lines.push('');
290
- lines.push(`Context score: ${Math.round(response.context_score * 100)}%`);
291
- lines.push(`Triggers: ${response.triggers_fired.join(', ') || 'none'}`);
292
- return lines.join('\n');
293
- }
294
- lines.push(`Found ${response.suggestions.length} suggestion(s):\n`);
295
- response.suggestions.forEach((sug, index) => {
296
- const trustBadge = getTrustBadge(sug.trust_tier);
297
- lines.push(`${index + 1}. ${sug.name} ${trustBadge}`);
298
- lines.push(` Confidence: ${Math.round(sug.confidence * 100)}%`);
299
- lines.push(` ${sug.reason}`);
300
- lines.push(` Triggers: ${sug.trigger_types.join(', ')}`);
301
- lines.push(` ID: ${sug.skill_id}`);
302
- lines.push('');
303
- });
304
- lines.push('---');
305
- lines.push(`Context score: ${Math.round(response.context_score * 100)}%`);
306
- lines.push(`Triggers fired: ${response.triggers_fired.join(', ')}`);
307
- lines.push(`Completed in ${response.timing.totalMs}ms`);
308
- return lines.join('\n');
309
- }
310
- //# sourceMappingURL=suggest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../../src/tools/suggest.ts"],"names":[],"mappings":"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"}
@@ -1,123 +0,0 @@
1
- /**
2
- * @fileoverview MCP Uninstall Skill Tool for safely removing installed skills
3
- * @module @skillsmith/mcp-server/tools/uninstall
4
- * @see {@link https://github.com/wrsmith108/skillsmith|Skillsmith Repository}
5
- *
6
- * Provides skill uninstallation functionality with:
7
- * - Manifest-based tracking of installed skills
8
- * - Modification detection (warns if files changed since install)
9
- * - Force removal option for modified or untracked skills
10
- * - Clean removal from ~/.claude/skills/ directory
11
- *
12
- * @example
13
- * // Uninstall a skill
14
- * const result = await uninstallSkill({ skillName: 'commit' });
15
- * if (result.success) {
16
- * console.log(result.message);
17
- * }
18
- *
19
- * @example
20
- * // Force uninstall modified skill
21
- * const result = await uninstallSkill({
22
- * skillName: 'my-custom-skill',
23
- * force: true
24
- * });
25
- */
26
- import { z } from 'zod';
27
- import type { ToolContext } from '../context.js';
28
- export declare const uninstallInputSchema: z.ZodObject<{
29
- skillName: z.ZodString;
30
- force: z.ZodDefault<z.ZodBoolean>;
31
- }, "strip", z.ZodTypeAny, {
32
- force: boolean;
33
- skillName: string;
34
- }, {
35
- skillName: string;
36
- force?: boolean | undefined;
37
- }>;
38
- export type UninstallInput = z.infer<typeof uninstallInputSchema>;
39
- export interface UninstallResult {
40
- success: boolean;
41
- skillName: string;
42
- message: string;
43
- removedPath?: string;
44
- warning?: string;
45
- }
46
- /**
47
- * Uninstall a skill from the local Claude Code skills directory.
48
- *
49
- * This function:
50
- * 1. Loads the manifest to find the skill
51
- * 2. Checks for local modifications (warns unless force=true)
52
- * 3. Removes the skill directory from ~/.claude/skills/
53
- * 4. Updates the manifest to remove the skill entry
54
- *
55
- * If the skill exists on disk but not in manifest, force=true is required.
56
- *
57
- * @param input - Uninstall parameters
58
- * @param input.skillName - Name of the skill to uninstall
59
- * @param input.force - Force removal even if modified (default: false)
60
- * @returns Promise resolving to uninstall result with success status
61
- *
62
- * @example
63
- * // Standard uninstall
64
- * const result = await uninstallSkill({ skillName: 'jest-helper' });
65
- * if (result.success) {
66
- * console.log(`Removed from ${result.removedPath}`);
67
- * }
68
- *
69
- * @example
70
- * // Handle modified skill
71
- * const result = await uninstallSkill({ skillName: 'custom-skill' });
72
- * if (!result.success && result.warning) {
73
- * console.log(result.warning); // 'Local modifications will be lost...'
74
- * // Ask user confirmation, then:
75
- * await uninstallSkill({ skillName: 'custom-skill', force: true });
76
- * }
77
- *
78
- * @example
79
- * // Check if skill is installed first
80
- * const installed = await listInstalledSkills();
81
- * if (installed.includes('my-skill')) {
82
- * await uninstallSkill({ skillName: 'my-skill' });
83
- * }
84
- */
85
- export declare function uninstallSkill(input: UninstallInput, _context?: ToolContext): Promise<UninstallResult>;
86
- /**
87
- * List all skills currently installed via Skillsmith.
88
- *
89
- * Reads the manifest file and returns an array of skill names.
90
- * This only includes skills tracked in the manifest, not skills
91
- * manually placed in ~/.claude/skills/.
92
- *
93
- * @returns Promise resolving to array of installed skill names
94
- *
95
- * @example
96
- * const skills = await listInstalledSkills();
97
- * console.log(`${skills.length} skills installed:`);
98
- * skills.forEach(s => console.log(` - ${s}`));
99
- */
100
- export declare function listInstalledSkills(): Promise<string[]>;
101
- /**
102
- * MCP tool definition
103
- */
104
- export declare const uninstallTool: {
105
- name: string;
106
- description: string;
107
- inputSchema: {
108
- type: "object";
109
- properties: {
110
- skillName: {
111
- type: string;
112
- description: string;
113
- };
114
- force: {
115
- type: string;
116
- description: string;
117
- };
118
- };
119
- required: string[];
120
- };
121
- };
122
- export default uninstallTool;
123
- //# sourceMappingURL=uninstall.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/tools/uninstall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAGjE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAiFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,cAAc,EACrB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,eAAe,CAAC,CAuF1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG7D;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;CAiBzB,CAAA;AAED,eAAe,aAAa,CAAA"}