@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 +0,0 @@
1
- {"version":3,"file":"install-flow.e2e.test.js","sourceRoot":"","sources":["../../../tests/e2e/install-flow.e2e.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * E2E Test: MCP skill_recommend tool
3
- *
4
- * Tests the recommend tool against real skill databases
5
- * in a clean Codespace environment.
6
- *
7
- * FOCUS: Detect hardcoded values that caused SMI-902/904 issues
8
- *
9
- * User Journey: Get skill recommendations based on context
10
- */
11
- export {};
12
- //# sourceMappingURL=recommend.e2e.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommend.e2e.test.d.ts","sourceRoot":"","sources":["../../../tests/e2e/recommend.e2e.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -1,357 +0,0 @@
1
- /**
2
- * E2E Test: MCP skill_recommend tool
3
- *
4
- * Tests the recommend tool against real skill databases
5
- * in a clean Codespace environment.
6
- *
7
- * FOCUS: Detect hardcoded values that caused SMI-902/904 issues
8
- *
9
- * User Journey: Get skill recommendations based on context
10
- */
11
- import { describe, it, expect, beforeAll, afterAll } from 'vitest';
12
- import { existsSync, rmSync, mkdirSync, writeFileSync } from 'fs';
13
- import { join } from 'path';
14
- import { tmpdir, homedir } from 'os';
15
- import { createDatabase, initializeSchema, SkillRepository, } from '@skillsmith/core';
16
- import { createToolContext } from '../../src/context.js';
17
- import { executeRecommend } from '../../src/tools/recommend.js';
18
- import { scanForHardcoded } from './utils/hardcoded-detector.js';
19
- import { recordTiming, measureAsync } from './utils/baseline-collector.js';
20
- // Test configuration
21
- const TEST_DIR = join(tmpdir(), 'skillsmith-e2e-recommend');
22
- const TEST_DB_PATH = join(TEST_DIR, 'recommend-test.db');
23
- const TEST_SKILLS_DIR = join(TEST_DIR, '.claude', 'skills');
24
- // Diverse seed data for testing recommendations
25
- const SEED_SKILLS = [
26
- {
27
- id: 'anthropic/commit',
28
- name: 'commit',
29
- description: 'Generate semantic commit messages following conventional commits',
30
- author: 'anthropic',
31
- repoUrl: 'https://github.com/anthropics/claude-code/tree/main/skills/commit',
32
- qualityScore: 0.95,
33
- trustTier: 'verified',
34
- tags: ['development', 'git', 'commit', 'conventional-commits'],
35
- },
36
- {
37
- id: 'community/jest-helper',
38
- name: 'jest-helper',
39
- description: 'Generate Jest test cases for React components',
40
- author: 'community',
41
- repoUrl: 'https://github.com/skillsmith-community/jest-helper',
42
- qualityScore: 0.87,
43
- trustTier: 'community',
44
- tags: ['testing', 'jest', 'react', 'unit-tests'],
45
- },
46
- {
47
- id: 'community/vitest-helper',
48
- name: 'vitest-helper',
49
- description: 'Generate Vitest test cases with modern ESM support',
50
- author: 'community',
51
- repoUrl: 'https://github.com/skillsmith-community/vitest-helper',
52
- qualityScore: 0.85,
53
- trustTier: 'community',
54
- tags: ['testing', 'vitest', 'esm', 'typescript'],
55
- },
56
- {
57
- id: 'community/docker-compose',
58
- name: 'docker-compose',
59
- description: 'Generate and manage Docker Compose configurations',
60
- author: 'community',
61
- repoUrl: 'https://github.com/skillsmith-community/docker-compose',
62
- qualityScore: 0.84,
63
- trustTier: 'community',
64
- tags: ['devops', 'docker', 'containers'],
65
- },
66
- {
67
- id: 'community/eslint-config',
68
- name: 'eslint-config',
69
- description: 'Generate and configure ESLint rules for JavaScript projects',
70
- author: 'community',
71
- repoUrl: 'https://github.com/skillsmith-community/eslint-config',
72
- qualityScore: 0.82,
73
- trustTier: 'community',
74
- tags: ['linting', 'eslint', 'code-quality'],
75
- },
76
- {
77
- id: 'experimental/ai-debug',
78
- name: 'ai-debug',
79
- description: 'AI-powered debugging assistant',
80
- author: 'experimental',
81
- repoUrl: 'https://github.com/skillsmith-community/ai-debug',
82
- qualityScore: 0.65,
83
- trustTier: 'experimental',
84
- tags: ['debugging', 'ai', 'experimental'],
85
- },
86
- {
87
- id: 'unknown/untested-tool',
88
- name: 'untested-tool',
89
- description: 'A newly submitted skill not yet reviewed or assessed',
90
- author: 'unknown-contributor',
91
- repoUrl: 'https://github.com/unknown-contributor/untested-tool',
92
- qualityScore: 0.45,
93
- trustTier: 'unknown',
94
- tags: ['development', 'utility', 'unverified'],
95
- },
96
- ];
97
- /**
98
- * Create mock installed skill for auto-detection tests
99
- */
100
- function createMockInstalledSkill(skillName) {
101
- const skillDir = join(TEST_SKILLS_DIR, skillName);
102
- mkdirSync(skillDir, { recursive: true });
103
- writeFileSync(join(skillDir, 'SKILL.md'), `---
104
- name: ${skillName}
105
- version: 1.0.0
106
- description: Mock skill for testing
107
- ---
108
- # ${skillName}
109
- Mock skill content.
110
- `);
111
- }
112
- /**
113
- * Scan response for hardcoded values
114
- */
115
- function scanResponseForHardcoded(response, command) {
116
- const responseStr = JSON.stringify(response, null, 2);
117
- return scanForHardcoded(responseStr, command, 'database', 'recommend response');
118
- }
119
- describe('E2E: skill_recommend tool', () => {
120
- let db;
121
- let context;
122
- beforeAll(() => {
123
- // Create test environment
124
- if (existsSync(TEST_DIR)) {
125
- rmSync(TEST_DIR, { recursive: true, force: true });
126
- }
127
- mkdirSync(TEST_DIR, { recursive: true });
128
- mkdirSync(TEST_SKILLS_DIR, { recursive: true });
129
- // Initialize database with seed data
130
- db = createDatabase(TEST_DB_PATH);
131
- initializeSchema(db);
132
- const skillRepo = new SkillRepository(db);
133
- for (const skill of SEED_SKILLS) {
134
- skillRepo.create(skill);
135
- }
136
- // Create context pointing to test database
137
- context = createToolContext({ dbPath: TEST_DB_PATH, apiClientConfig: { offlineMode: true } });
138
- });
139
- afterAll(() => {
140
- db?.close();
141
- if (existsSync(TEST_DIR)) {
142
- rmSync(TEST_DIR, { recursive: true, force: true });
143
- }
144
- });
145
- describe('Basic Recommendations', () => {
146
- it('should return recommendations without installed skills', async () => {
147
- const input = {
148
- installed_skills: [],
149
- limit: 5,
150
- };
151
- const { result } = await measureAsync('recommend:empty', 'skill_recommend (no installed)', () => executeRecommend(input, context));
152
- expect(result.recommendations.length).toBeGreaterThan(0);
153
- expect(result.timing.totalMs).toBeGreaterThanOrEqual(0);
154
- // Check for hardcoded values in response
155
- const issues = scanResponseForHardcoded(result, 'skill_recommend');
156
- expect(issues.filter((i) => i.severity === 'error')).toHaveLength(0);
157
- });
158
- it('should return recommendations with installed skills', async () => {
159
- const input = {
160
- installed_skills: ['anthropic/commit'],
161
- limit: 5,
162
- };
163
- const result = await executeRecommend(input, context);
164
- recordTiming('recommend:with_installed', 'skill_recommend (installed)', result.timing.totalMs);
165
- // May have 0 recommendations if seed data overlaps with installed skill
166
- expect(result.recommendations.length).toBeGreaterThanOrEqual(0);
167
- expect(result.context.installed_count).toBe(1);
168
- // If there are recommendations, should not include already installed skill
169
- const recommendedIds = result.recommendations.map((r) => r.skill_id);
170
- expect(recommendedIds).not.toContain('anthropic/commit');
171
- // Check for hardcoded values
172
- const issues = scanResponseForHardcoded(result, 'skill_recommend');
173
- expect(issues.filter((i) => i.severity === 'error')).toHaveLength(0);
174
- });
175
- it('should use project context for recommendations', async () => {
176
- const input = {
177
- installed_skills: [],
178
- project_context: 'React TypeScript frontend with Jest testing',
179
- limit: 5,
180
- };
181
- const result = await executeRecommend(input, context);
182
- recordTiming('recommend:context', 'skill_recommend (context)', result.timing.totalMs);
183
- expect(result.context.has_project_context).toBe(true);
184
- // Check for hardcoded values
185
- const issues = scanResponseForHardcoded(result, 'skill_recommend');
186
- expect(issues.filter((i) => i.severity === 'error')).toHaveLength(0);
187
- });
188
- });
189
- describe('Auto-Detection of Installed Skills', () => {
190
- it('should auto-detect installed skills from ~/.claude/skills/', async () => {
191
- // Create mock installed skill
192
- createMockInstalledSkill('test-installed-skill');
193
- // Override HOME for this test
194
- const originalHome = process.env.HOME;
195
- process.env.HOME = TEST_DIR;
196
- try {
197
- const input = {
198
- installed_skills: [], // Empty to trigger auto-detection
199
- limit: 5,
200
- };
201
- const result = await executeRecommend(input, context);
202
- // Should have auto-detected
203
- expect(result.context.auto_detected).toBe(true);
204
- // Check for hardcoded values
205
- const issues = scanResponseForHardcoded(result, 'skill_recommend (auto-detect)');
206
- expect(issues.filter((i) => i.severity === 'error')).toHaveLength(0);
207
- }
208
- finally {
209
- process.env.HOME = originalHome;
210
- }
211
- });
212
- });
213
- describe('Overlap Detection', () => {
214
- it('should filter overlapping skills when enabled', async () => {
215
- const input = {
216
- installed_skills: ['community/jest-helper'],
217
- detect_overlap: true,
218
- limit: 10,
219
- };
220
- const result = await executeRecommend(input, context);
221
- recordTiming('recommend:overlap', 'skill_recommend (overlap)', result.timing.totalMs);
222
- // vitest-helper might be filtered as similar to jest-helper
223
- // Just verify overlap_filtered is tracked
224
- expect(typeof result.overlap_filtered).toBe('number');
225
- // Check for hardcoded values
226
- const issues = scanResponseForHardcoded(result, 'skill_recommend');
227
- expect(issues.filter((i) => i.severity === 'error')).toHaveLength(0);
228
- });
229
- it('should not filter when detect_overlap is false', async () => {
230
- const input = {
231
- installed_skills: ['community/jest-helper'],
232
- detect_overlap: false,
233
- limit: 10,
234
- };
235
- const result = await executeRecommend(input, context);
236
- // Should have more candidates when overlap not filtered
237
- expect(result.candidates_considered).toBeGreaterThan(0);
238
- });
239
- });
240
- describe('Response Data Quality', () => {
241
- it('should return valid recommendation structure', async () => {
242
- const input = {
243
- installed_skills: [],
244
- limit: 3,
245
- };
246
- const result = await executeRecommend(input, context);
247
- for (const rec of result.recommendations) {
248
- // Validate structure
249
- expect(rec.skill_id).toBeDefined();
250
- expect(rec.name).toBeDefined();
251
- expect(rec.reason).toBeDefined();
252
- expect(rec.similarity_score).toBeGreaterThanOrEqual(0);
253
- expect(rec.similarity_score).toBeLessThanOrEqual(1);
254
- expect(['verified', 'community', 'experimental', 'unknown']).toContain(rec.trust_tier);
255
- expect(rec.quality_score).toBeGreaterThanOrEqual(0);
256
- expect(rec.quality_score).toBeLessThanOrEqual(100);
257
- }
258
- });
259
- it('should not contain hardcoded skill IDs in recommendations', async () => {
260
- const input = {
261
- installed_skills: [],
262
- limit: 10,
263
- };
264
- const result = await executeRecommend(input, context);
265
- // All skill IDs should come from database, not hardcoded
266
- const dbSkillIds = SEED_SKILLS.map((s) => s.id);
267
- for (const rec of result.recommendations) {
268
- expect(dbSkillIds).toContain(rec.skill_id);
269
- }
270
- });
271
- });
272
- describe('Hardcoded Value Detection (SMI-902/904 Regression)', () => {
273
- it('should not expose user paths in response', async () => {
274
- const input = {
275
- installed_skills: ['anthropic/commit'],
276
- project_context: 'Testing for hardcoded paths',
277
- limit: 5,
278
- };
279
- const result = await executeRecommend(input, context);
280
- const responseStr = JSON.stringify(result);
281
- // Should not contain user-specific paths
282
- expect(responseStr).not.toMatch(/\/Users\/[a-zA-Z0-9_-]+\//);
283
- expect(responseStr).not.toMatch(/\/home\/[a-zA-Z0-9_-]+\//);
284
- expect(responseStr).not.toContain(homedir());
285
- });
286
- it('should not expose localhost URLs in response', async () => {
287
- const input = {
288
- installed_skills: [],
289
- limit: 5,
290
- };
291
- const result = await executeRecommend(input, context);
292
- const responseStr = JSON.stringify(result);
293
- // Should not contain localhost
294
- expect(responseStr).not.toMatch(/localhost:\d+/);
295
- expect(responseStr).not.toMatch(/127\.0\.0\.1:\d+/);
296
- });
297
- it('should not expose API keys in response', async () => {
298
- const input = {
299
- installed_skills: [],
300
- project_context: 'Should not leak credentials',
301
- limit: 5,
302
- };
303
- const result = await executeRecommend(input, context);
304
- const responseStr = JSON.stringify(result);
305
- // Should not contain API keys
306
- expect(responseStr).not.toMatch(/ghp_[a-zA-Z0-9]{36}/);
307
- expect(responseStr).not.toMatch(/sk-[a-zA-Z0-9]{32,}/);
308
- expect(responseStr).not.toMatch(/lin_api_[a-zA-Z0-9]+/);
309
- });
310
- it('should have dynamic recommendations not hardcoded static list', async () => {
311
- // Run twice with different contexts
312
- const result1 = await executeRecommend({ installed_skills: [], project_context: 'Docker DevOps', limit: 5 }, context);
313
- const result2 = await executeRecommend({ installed_skills: [], project_context: 'React testing', limit: 5 }, context);
314
- // Results should potentially differ based on context
315
- // (This test helps detect if recommendations are completely static)
316
- const ids1 = result1.recommendations.map((r) => r.skill_id).sort();
317
- const ids2 = result2.recommendations.map((r) => r.skill_id).sort();
318
- // If results are EXACTLY the same regardless of context, may indicate hardcoding
319
- // Note: This is a soft check - might be same due to small dataset
320
- if (ids1.join(',') === ids2.join(',')) {
321
- console.warn('Warning: Recommendations identical for different contexts - may indicate hardcoding');
322
- }
323
- });
324
- });
325
- describe('Performance Baselines', () => {
326
- it('should complete recommendation in reasonable time', async () => {
327
- const { durationMs } = await measureAsync('recommend:baseline', 'skill_recommend baseline', () => executeRecommend({
328
- installed_skills: ['anthropic/commit'],
329
- project_context: 'Full-stack TypeScript project',
330
- limit: 10,
331
- }, context));
332
- // Baseline: should complete within 2 seconds for seed data
333
- expect(durationMs).toBeLessThan(2000);
334
- console.log(`Recommend baseline: ${durationMs}ms`);
335
- });
336
- it('should handle multiple rapid requests', async () => {
337
- const requests = Array(5)
338
- .fill(null)
339
- .map((_, i) => executeRecommend({ installed_skills: [], project_context: `Context ${i}`, limit: 3 }, context));
340
- const results = await Promise.all(requests);
341
- expect(results).toHaveLength(5);
342
- for (const result of results) {
343
- expect(result.recommendations.length).toBeGreaterThanOrEqual(0);
344
- }
345
- });
346
- });
347
- describe('Error Handling', () => {
348
- it('should handle invalid limit gracefully', async () => {
349
- // Zod should enforce limits
350
- await expect(executeRecommend({ installed_skills: [], limit: 100 }, context)).rejects.toThrow();
351
- });
352
- it('should handle invalid min_similarity gracefully', async () => {
353
- await expect(executeRecommend({ installed_skills: [], min_similarity: 2.0 }, context)).rejects.toThrow();
354
- });
355
- });
356
- });
357
- //# sourceMappingURL=recommend.e2e.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommend.e2e.test.js","sourceRoot":"","sources":["../../../tests/e2e/recommend.e2e.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * E2E Test: Search → Get → Install Flow
3
- *
4
- * Tests the complete user journey from discovering a skill to installing it.
5
- * Uses seed data to ensure consistent, reproducible tests.
6
- *
7
- * @see SMI-796: E2E test: Search → Get → Install flow
8
- */
9
- export {};
10
- //# sourceMappingURL=skill-flow.e2e.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-flow.e2e.test.d.ts","sourceRoot":"","sources":["../../../tests/e2e/skill-flow.e2e.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}