@skillsmith/mcp-server 0.4.7 → 0.4.9

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 (213) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +21 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/src/__tests__/tool-dispatch.test.d.ts +8 -0
  5. package/dist/src/__tests__/tool-dispatch.test.d.ts.map +1 -0
  6. package/dist/src/__tests__/tool-dispatch.test.js +144 -0
  7. package/dist/src/__tests__/tool-dispatch.test.js.map +1 -0
  8. package/dist/src/index.js +31 -2
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/middleware/license.d.ts +23 -0
  11. package/dist/src/middleware/license.d.ts.map +1 -1
  12. package/dist/src/middleware/license.js +28 -0
  13. package/dist/src/middleware/license.js.map +1 -1
  14. package/dist/src/middleware/toolFeatureMapping.d.ts.map +1 -1
  15. package/dist/src/middleware/toolFeatureMapping.js +4 -1
  16. package/dist/src/middleware/toolFeatureMapping.js.map +1 -1
  17. package/dist/src/supabase-client.d.ts +24 -0
  18. package/dist/src/supabase-client.d.ts.map +1 -0
  19. package/dist/src/supabase-client.js +63 -0
  20. package/dist/src/supabase-client.js.map +1 -0
  21. package/dist/src/tool-dispatch.d.ts.map +1 -1
  22. package/dist/src/tool-dispatch.js +71 -62
  23. package/dist/src/tool-dispatch.js.map +1 -1
  24. package/dist/src/tools/analytics.d.ts +155 -0
  25. package/dist/src/tools/analytics.d.ts.map +1 -0
  26. package/dist/src/tools/analytics.js +321 -0
  27. package/dist/src/tools/analytics.js.map +1 -0
  28. package/dist/src/tools/analytics.service.d.ts +46 -0
  29. package/dist/src/tools/analytics.service.d.ts.map +1 -0
  30. package/dist/src/tools/analytics.service.js +69 -0
  31. package/dist/src/tools/analytics.service.js.map +1 -0
  32. package/dist/src/tools/analytics.service.test.d.ts +6 -0
  33. package/dist/src/tools/analytics.service.test.d.ts.map +1 -0
  34. package/dist/src/tools/analytics.service.test.js +151 -0
  35. package/dist/src/tools/analytics.service.test.js.map +1 -0
  36. package/dist/src/tools/analytics.stub.d.ts +27 -0
  37. package/dist/src/tools/analytics.stub.d.ts.map +1 -0
  38. package/dist/src/tools/analytics.stub.js +200 -0
  39. package/dist/src/tools/analytics.stub.js.map +1 -0
  40. package/dist/src/tools/analytics.test.d.ts +6 -0
  41. package/dist/src/tools/analytics.test.d.ts.map +1 -0
  42. package/dist/src/tools/analytics.test.js +146 -0
  43. package/dist/src/tools/analytics.test.js.map +1 -0
  44. package/dist/src/tools/analyze.d.ts.map +1 -1
  45. package/dist/src/tools/analyze.js +7 -1
  46. package/dist/src/tools/analyze.js.map +1 -1
  47. package/dist/src/tools/audit-tools.d.ts +172 -0
  48. package/dist/src/tools/audit-tools.d.ts.map +1 -0
  49. package/dist/src/tools/audit-tools.js +187 -0
  50. package/dist/src/tools/audit-tools.js.map +1 -0
  51. package/dist/src/tools/audit-tools.test.d.ts +10 -0
  52. package/dist/src/tools/audit-tools.test.d.ts.map +1 -0
  53. package/dist/src/tools/audit-tools.test.js +147 -0
  54. package/dist/src/tools/audit-tools.test.js.map +1 -0
  55. package/dist/src/tools/compliance-tools.d.ts +103 -0
  56. package/dist/src/tools/compliance-tools.d.ts.map +1 -0
  57. package/dist/src/tools/compliance-tools.js +257 -0
  58. package/dist/src/tools/compliance-tools.js.map +1 -0
  59. package/dist/src/tools/compliance-tools.service.d.ts +19 -0
  60. package/dist/src/tools/compliance-tools.service.d.ts.map +1 -0
  61. package/dist/src/tools/compliance-tools.service.js +107 -0
  62. package/dist/src/tools/compliance-tools.service.js.map +1 -0
  63. package/dist/src/tools/compliance-tools.service.test.d.ts +6 -0
  64. package/dist/src/tools/compliance-tools.service.test.d.ts.map +1 -0
  65. package/dist/src/tools/compliance-tools.service.test.js +140 -0
  66. package/dist/src/tools/compliance-tools.service.test.js.map +1 -0
  67. package/dist/src/tools/compliance-tools.test.d.ts +6 -0
  68. package/dist/src/tools/compliance-tools.test.d.ts.map +1 -0
  69. package/dist/src/tools/compliance-tools.test.js +136 -0
  70. package/dist/src/tools/compliance-tools.test.js.map +1 -0
  71. package/dist/src/tools/get-skill.d.ts.map +1 -1
  72. package/dist/src/tools/get-skill.js +24 -1
  73. package/dist/src/tools/get-skill.js.map +1 -1
  74. package/dist/src/tools/index-local.d.ts.map +1 -1
  75. package/dist/src/tools/index-local.js +4 -0
  76. package/dist/src/tools/index-local.js.map +1 -1
  77. package/dist/src/tools/install.d.ts.map +1 -1
  78. package/dist/src/tools/install.js +11 -1
  79. package/dist/src/tools/install.js.map +1 -1
  80. package/dist/src/tools/install.tool.d.ts +4 -0
  81. package/dist/src/tools/install.tool.d.ts.map +1 -1
  82. package/dist/src/tools/install.tool.js +4 -0
  83. package/dist/src/tools/install.tool.js.map +1 -1
  84. package/dist/src/tools/install.types.d.ts +4 -0
  85. package/dist/src/tools/install.types.d.ts.map +1 -1
  86. package/dist/src/tools/install.types.js +5 -0
  87. package/dist/src/tools/install.types.js.map +1 -1
  88. package/dist/src/tools/integration-tools.d.ts +210 -0
  89. package/dist/src/tools/integration-tools.d.ts.map +1 -0
  90. package/dist/src/tools/integration-tools.js +264 -0
  91. package/dist/src/tools/integration-tools.js.map +1 -0
  92. package/dist/src/tools/integration-tools.service.d.ts +54 -0
  93. package/dist/src/tools/integration-tools.service.d.ts.map +1 -0
  94. package/dist/src/tools/integration-tools.service.js +299 -0
  95. package/dist/src/tools/integration-tools.service.js.map +1 -0
  96. package/dist/src/tools/integration-tools.service.test.d.ts +8 -0
  97. package/dist/src/tools/integration-tools.service.test.d.ts.map +1 -0
  98. package/dist/src/tools/integration-tools.service.test.js +401 -0
  99. package/dist/src/tools/integration-tools.service.test.js.map +1 -0
  100. package/dist/src/tools/integration-tools.stub.d.ts +13 -0
  101. package/dist/src/tools/integration-tools.stub.d.ts.map +1 -0
  102. package/dist/src/tools/integration-tools.stub.js +133 -0
  103. package/dist/src/tools/integration-tools.stub.js.map +1 -0
  104. package/dist/src/tools/integration-tools.test.d.ts +6 -0
  105. package/dist/src/tools/integration-tools.test.d.ts.map +1 -0
  106. package/dist/src/tools/integration-tools.test.js +259 -0
  107. package/dist/src/tools/integration-tools.test.js.map +1 -0
  108. package/dist/src/tools/publish-private.d.ts +60 -0
  109. package/dist/src/tools/publish-private.d.ts.map +1 -0
  110. package/dist/src/tools/publish-private.js +85 -0
  111. package/dist/src/tools/publish-private.js.map +1 -0
  112. package/dist/src/tools/publish-private.test.d.ts +6 -0
  113. package/dist/src/tools/publish-private.test.d.ts.map +1 -0
  114. package/dist/src/tools/publish-private.test.js +118 -0
  115. package/dist/src/tools/publish-private.test.js.map +1 -0
  116. package/dist/src/tools/publish.types.d.ts +2 -2
  117. package/dist/src/tools/rbac-tools.d.ts +180 -0
  118. package/dist/src/tools/rbac-tools.d.ts.map +1 -0
  119. package/dist/src/tools/rbac-tools.js +300 -0
  120. package/dist/src/tools/rbac-tools.js.map +1 -0
  121. package/dist/src/tools/rbac-tools.test.d.ts +6 -0
  122. package/dist/src/tools/rbac-tools.test.d.ts.map +1 -0
  123. package/dist/src/tools/rbac-tools.test.js +299 -0
  124. package/dist/src/tools/rbac-tools.test.js.map +1 -0
  125. package/dist/src/tools/rbac-tools.types.d.ts +70 -0
  126. package/dist/src/tools/rbac-tools.types.d.ts.map +1 -0
  127. package/dist/src/tools/rbac-tools.types.js +119 -0
  128. package/dist/src/tools/rbac-tools.types.js.map +1 -0
  129. package/dist/src/tools/recommend.helpers.d.ts.map +1 -1
  130. package/dist/src/tools/recommend.helpers.js +2 -1
  131. package/dist/src/tools/recommend.helpers.js.map +1 -1
  132. package/dist/src/tools/recommend.js +3 -3
  133. package/dist/src/tools/recommend.js.map +1 -1
  134. package/dist/src/tools/registry-tools.d.ts +133 -0
  135. package/dist/src/tools/registry-tools.d.ts.map +1 -0
  136. package/dist/src/tools/registry-tools.js +246 -0
  137. package/dist/src/tools/registry-tools.js.map +1 -0
  138. package/dist/src/tools/registry-tools.test.d.ts +6 -0
  139. package/dist/src/tools/registry-tools.test.d.ts.map +1 -0
  140. package/dist/src/tools/registry-tools.test.js +167 -0
  141. package/dist/src/tools/registry-tools.test.js.map +1 -0
  142. package/dist/src/tools/search.formatter.d.ts.map +1 -1
  143. package/dist/src/tools/search.formatter.js +11 -1
  144. package/dist/src/tools/search.formatter.js.map +1 -1
  145. package/dist/src/tools/skill-audit.d.ts +3 -3
  146. package/dist/src/tools/skill-audit.d.ts.map +1 -1
  147. package/dist/src/tools/skill-audit.js +5 -5
  148. package/dist/src/tools/skill-audit.js.map +1 -1
  149. package/dist/src/tools/skill-audit.test.js +5 -5
  150. package/dist/src/tools/skill-audit.test.js.map +1 -1
  151. package/dist/src/tools/skill-pack-audit.d.ts +22 -1
  152. package/dist/src/tools/skill-pack-audit.d.ts.map +1 -1
  153. package/dist/src/tools/skill-pack-audit.helpers.d.ts +53 -0
  154. package/dist/src/tools/skill-pack-audit.helpers.d.ts.map +1 -0
  155. package/dist/src/tools/skill-pack-audit.helpers.js +181 -0
  156. package/dist/src/tools/skill-pack-audit.helpers.js.map +1 -0
  157. package/dist/src/tools/skill-pack-audit.js +122 -5
  158. package/dist/src/tools/skill-pack-audit.js.map +1 -1
  159. package/dist/src/tools/skill-pack-audit.types.d.ts +70 -0
  160. package/dist/src/tools/skill-pack-audit.types.d.ts.map +1 -0
  161. package/dist/src/tools/skill-pack-audit.types.js +8 -0
  162. package/dist/src/tools/skill-pack-audit.types.js.map +1 -0
  163. package/dist/src/tools/skill-rescan.d.ts.map +1 -1
  164. package/dist/src/tools/skill-rescan.js +2 -3
  165. package/dist/src/tools/skill-rescan.js.map +1 -1
  166. package/dist/src/tools/skill-rescan.test.js +2 -2
  167. package/dist/src/tools/skill-rescan.test.js.map +1 -1
  168. package/dist/src/tools/sso-tools.d.ts +136 -0
  169. package/dist/src/tools/sso-tools.d.ts.map +1 -0
  170. package/dist/src/tools/sso-tools.js +214 -0
  171. package/dist/src/tools/sso-tools.js.map +1 -0
  172. package/dist/src/tools/sso-tools.test.d.ts +6 -0
  173. package/dist/src/tools/sso-tools.test.d.ts.map +1 -0
  174. package/dist/src/tools/sso-tools.test.js +167 -0
  175. package/dist/src/tools/sso-tools.test.js.map +1 -0
  176. package/dist/src/tools/suggest.d.ts.map +1 -1
  177. package/dist/src/tools/suggest.js +7 -1
  178. package/dist/src/tools/suggest.js.map +1 -1
  179. package/dist/src/tools/team-workspace.d.ts +179 -0
  180. package/dist/src/tools/team-workspace.d.ts.map +1 -0
  181. package/dist/src/tools/team-workspace.js +243 -0
  182. package/dist/src/tools/team-workspace.js.map +1 -0
  183. package/dist/src/tools/team-workspace.stub.d.ts +13 -0
  184. package/dist/src/tools/team-workspace.stub.d.ts.map +1 -0
  185. package/dist/src/tools/team-workspace.stub.js +76 -0
  186. package/dist/src/tools/team-workspace.stub.js.map +1 -0
  187. package/dist/src/tools/team-workspace.test.d.ts +7 -0
  188. package/dist/src/tools/team-workspace.test.d.ts.map +1 -0
  189. package/dist/src/tools/team-workspace.test.js +273 -0
  190. package/dist/src/tools/team-workspace.test.js.map +1 -0
  191. package/dist/src/tools/validate.helpers.d.ts.map +1 -1
  192. package/dist/src/tools/validate.helpers.js +15 -0
  193. package/dist/src/tools/validate.helpers.js.map +1 -1
  194. package/dist/src/utils/team-resolver.d.ts +20 -0
  195. package/dist/src/utils/team-resolver.d.ts.map +1 -0
  196. package/dist/src/utils/team-resolver.js +52 -0
  197. package/dist/src/utils/team-resolver.js.map +1 -0
  198. package/dist/src/utils/url-validator.d.ts +24 -0
  199. package/dist/src/utils/url-validator.d.ts.map +1 -0
  200. package/dist/src/utils/url-validator.js +59 -0
  201. package/dist/src/utils/url-validator.js.map +1 -0
  202. package/dist/tests/integration/recommend.integration.test.js +1 -1
  203. package/dist/tests/integration/recommend.integration.test.js.map +1 -1
  204. package/dist/tests/recommend.test.js +1 -1
  205. package/dist/tests/recommend.test.js.map +1 -1
  206. package/dist/tests/unit/skill-pack-audit.test.js +225 -0
  207. package/dist/tests/unit/skill-pack-audit.test.js.map +1 -1
  208. package/package.json +3 -3
  209. package/server.json +2 -2
  210. package/dist/vitest.config.d.ts +0 -6
  211. package/dist/vitest.config.d.ts.map +0 -1
  212. package/dist/vitest.config.js +0 -23
  213. package/dist/vitest.config.js.map +0 -1
@@ -42,7 +42,17 @@ export function formatSearchResults(response) {
42
42
  response.results.forEach((skill, index) => {
43
43
  const trustBadge = getTrustBadge(skill.trustTier);
44
44
  lines.push(index + 1 + '. ' + skill.name + ' ' + trustBadge);
45
- lines.push(' Author: ' + skill.author + ' | Score: ' + skill.score + '/100');
45
+ const securityStatus = skill.security?.passed === true
46
+ ? 'PASS'
47
+ : skill.security?.passed === false
48
+ ? 'FAIL (' + (skill.security.riskScore ?? '?') + '/100)'
49
+ : 'N/A';
50
+ lines.push(' Author: ' +
51
+ skill.author +
52
+ ' | Score: ' +
53
+ skill.score +
54
+ '/100 | Security: ' +
55
+ securityStatus);
46
56
  lines.push(' ' + skill.description);
47
57
  lines.push(' ID: ' + skill.id);
48
58
  // SMI-2734: Surface registry install ID so models can use owner/name directly
@@ -1 +1 @@
1
- {"version":3,"file":"search.formatter.js","sourceRoot":"","sources":["../../../src/tools/search.formatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,4BAA4B,GAAG,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;IAErE,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;QAClD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACxC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAClC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC,CAAA;QAEtD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACjD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,CAAA;YAC5D,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAA;YAC9E,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;YACrC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA;YAChC,8EAA8E;YAC9E,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;YAChD,CAAC;YACD,4DAA4D;YAC5D,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;YAClD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,KAAK,CAAC,IAAI,CACR,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CACxF,CAAA;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"search.formatter.js","sourceRoot":"","sources":["../../../src/tools/search.formatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,4BAA4B,GAAG,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;IAErE,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;QAClD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACxC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAClC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC,CAAA;QAEtD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACjD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,CAAA;YAC5D,MAAM,cAAc,GAClB,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI;gBAC7B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK;oBAChC,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,OAAO;oBACxD,CAAC,CAAC,KAAK,CAAA;YACb,KAAK,CAAC,IAAI,CACR,aAAa;gBACX,KAAK,CAAC,MAAM;gBACZ,YAAY;gBACZ,KAAK,CAAC,KAAK;gBACX,mBAAmB;gBACnB,cAAc,CACjB,CAAA;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;YACrC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA;YAChC,8EAA8E;YAC9E,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;YAChD,CAAC;YACD,4DAA4D;YAC5D,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;YAClD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,KAAK,CAAC,IAAI,CACR,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CACxF,CAAA;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
@@ -4,8 +4,8 @@
4
4
  * @see SMI-skill-version-tracking Wave 3
5
5
  *
6
6
  * Returns a summary of active security advisories for installed skills.
7
- * The advisory system is in early access advisories are published by the
8
- * Skillsmith team as security issues are identified.
7
+ * Advisories are published by the Skillsmith team as security issues
8
+ * are identified.
9
9
  *
10
10
  * Tier gate: Team (skill_security_audit feature flag).
11
11
  * Community and Individual users receive a graceful license error response.
@@ -55,7 +55,7 @@ export interface AdvisorySummary {
55
55
  export interface SkillAuditResponse {
56
56
  /** Whether advisories data is available */
57
57
  advisoriesAvailable: boolean;
58
- /** Early-access message when no advisories are in the database */
58
+ /** Message when no advisories are in the database */
59
59
  message?: string;
60
60
  /** Counts by severity (only present when advisoriesAvailable: true) */
61
61
  summary?: AdvisorySummary;
@@ -1 +1 @@
1
- {"version":3,"file":"skill-audit.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAMhD;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,2DAA2D;;;;;;EAK3D,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,wBAAwB;IACxB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IAChD,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAA;IACV,6CAA6C;IAC7C,YAAY,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,mBAAmB,EAAE,OAAO,CAAA;IAC5B,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,yEAAyE;IACzE,UAAU,CAAC,EAAE,aAAa,EAAE,CAAA;CAC7B;AAMD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CAmBhC,CAAA;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CA0C7B"}
1
+ {"version":3,"file":"skill-audit.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAMhD;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,2DAA2D;;;;;;EAK3D,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,wBAAwB;IACxB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IAChD,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAA;IACV,6CAA6C;IAC7C,YAAY,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,mBAAmB,EAAE,OAAO,CAAA;IAC5B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,yEAAyE;IACzE,UAAU,CAAC,EAAE,aAAa,EAAE,CAAA;CAC7B;AAMD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CAmBhC,CAAA;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CA0C7B"}
@@ -4,8 +4,8 @@
4
4
  * @see SMI-skill-version-tracking Wave 3
5
5
  *
6
6
  * Returns a summary of active security advisories for installed skills.
7
- * The advisory system is in early access advisories are published by the
8
- * Skillsmith team as security issues are identified.
7
+ * Advisories are published by the Skillsmith team as security issues
8
+ * are identified.
9
9
  *
10
10
  * Tier gate: Team (skill_security_audit feature flag).
11
11
  * Community and Individual users receive a graceful license error response.
@@ -74,12 +74,12 @@ export async function executeSkillAudit(input, context) {
74
74
  else {
75
75
  advisories = advisoryRepo.getActiveAdvisories();
76
76
  }
77
- // No advisories in DB — early-access message
77
+ // No advisories in DB
78
78
  if (advisories.length === 0) {
79
79
  return {
80
80
  advisoriesAvailable: false,
81
- message: 'Advisory system is in early access the Skillsmith team publishes advisories as ' +
82
- 'security issues are identified. Run `skillsmith sync` to fetch the latest.',
81
+ message: 'No advisories have been published yet. This does not indicate installed ' +
82
+ 'skills have been reviewed. Run `skillsmith sync` to fetch the latest.',
83
83
  };
84
84
  }
85
85
  // Build summary counts
@@ -1 +1 @@
1
- {"version":3,"file":"skill-audit.js","sourceRoot":"","sources":["../../../src/tools/skill-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,2DAA2D;IAC3D,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxB,QAAQ,EAAE;SACV,QAAQ,CAAC,wEAAwE,CAAC;CACtF,CAAC,CAAA;AA6CF,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,aAAsB;IAC5B,WAAW,EACT,wDAAwD;QACxD,+DAA+D;QAC/D,oFAAoF;QACpF,0FAA0F;IAC5F,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EACT,iFAAiF;aACpF;SACF;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAA;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAsB,EACtB,OAAoB;IAEpB,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvD,oDAAoD;IACpD,IAAI,UAAU,CAAA;IACd,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAA;IACrF,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAA;IACjD,CAAC;IAED,6CAA6C;IAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,mBAAmB,EAAE,KAAK;YAC1B,OAAO,EACL,mFAAmF;gBACnF,4EAA4E;SAC/E,CAAA;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,OAAO,GAAoB,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IACtF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAA;QACvB,OAAO,CAAC,KAAK,EAAE,CAAA;IACjB,CAAC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAoB,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxD,SAAS,EAAE,GAAG,CAAC,OAAO;QACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;KAC3C,CAAC,CAAC,CAAA;IAEH,OAAO;QACL,mBAAmB,EAAE,IAAI;QACzB,OAAO;QACP,UAAU,EAAE,OAAO;KACpB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"skill-audit.js","sourceRoot":"","sources":["../../../src/tools/skill-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,2DAA2D;IAC3D,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxB,QAAQ,EAAE;SACV,QAAQ,CAAC,wEAAwE,CAAC;CACtF,CAAC,CAAA;AA6CF,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,aAAsB;IAC5B,WAAW,EACT,wDAAwD;QACxD,+DAA+D;QAC/D,oFAAoF;QACpF,0FAA0F;IAC5F,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EACT,iFAAiF;aACpF;SACF;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAA;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAsB,EACtB,OAAoB;IAEpB,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvD,oDAAoD;IACpD,IAAI,UAAU,CAAA;IACd,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAA;IACrF,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAA;IACjD,CAAC;IAED,sBAAsB;IACtB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,mBAAmB,EAAE,KAAK;YAC1B,OAAO,EACL,0EAA0E;gBAC1E,uEAAuE;SAC1E,CAAA;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,OAAO,GAAoB,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IACtF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAA;QACvB,OAAO,CAAC,KAAK,EAAE,CAAA;IACjB,CAAC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAoB,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxD,SAAS,EAAE,GAAG,CAAC,OAAO;QACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;KAC3C,CAAC,CAAC,CAAA;IAEH,OAAO;QACL,mBAAmB,EAAE,IAAI;QACzB,OAAO;QACP,UAAU,EAAE,OAAO;KACpB,CAAA;AACH,CAAC"}
@@ -37,12 +37,12 @@ describe('executeSkillAudit', () => {
37
37
  closeDatabase(db);
38
38
  });
39
39
  // --------------------------------------------------------------------------
40
- // Empty database — early-access message
40
+ // Empty database — no advisories message
41
41
  // --------------------------------------------------------------------------
42
- it('returns advisoriesAvailable: false with early-access message when DB has no advisories', async () => {
42
+ it('returns advisoriesAvailable: false with no-advisories message when DB has no advisories', async () => {
43
43
  const result = await executeSkillAudit({}, makeContext(db));
44
44
  expect(result.advisoriesAvailable).toBe(false);
45
- expect(result.message).toContain('early access');
45
+ expect(result.message).toContain('No advisories have been published yet');
46
46
  expect(result.message).toContain('skillsmith sync');
47
47
  expect(result.summary).toBeUndefined();
48
48
  expect(result.advisories).toBeUndefined();
@@ -85,11 +85,11 @@ describe('executeSkillAudit', () => {
85
85
  expect(result.advisories).toHaveLength(1);
86
86
  expect(result.advisories[0].skillName).toBe('community/skill-a');
87
87
  });
88
- it('returns early-access message when skillIds filter matches no advisories', async () => {
88
+ it('returns no-advisories message when skillIds filter matches no advisories', async () => {
89
89
  advisoryRepo.upsertAdvisory(makeAdvisory({ skillId: 'community/skill-a' }));
90
90
  const result = await executeSkillAudit({ skillIds: ['community/nonexistent'] }, makeContext(db));
91
91
  expect(result.advisoriesAvailable).toBe(false);
92
- expect(result.message).toContain('early access');
92
+ expect(result.message).toContain('No advisories have been published yet');
93
93
  });
94
94
  // --------------------------------------------------------------------------
95
95
  // Withdrawn advisories excluded
@@ -1 +1 @@
1
- {"version":3,"file":"skill-audit.test.js","sourceRoot":"","sources":["../../../src/tools/skill-audit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-audit.test.js","sourceRoot":"","sources":["../../../src/tools/skill-audit.test.ts"],"names":[],"mappings":"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"}
@@ -18,18 +18,22 @@
18
18
  * Community users see a graceful license error response, never a hard throw.
19
19
  */
20
20
  import { z } from 'zod';
21
+ import type { NamespaceFlag, TriggerQuality } from './skill-pack-audit.types.js';
21
22
  import type { ToolContext } from '../context.js';
22
23
  /**
23
24
  * Input schema for skill_pack_audit tool
24
25
  */
25
26
  export declare const skillPackAuditInputSchema: z.ZodObject<{
26
27
  pack_path: z.ZodString;
28
+ check_trigger_quality: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
27
29
  }, "strip", z.ZodTypeAny, {
28
30
  pack_path: string;
31
+ check_trigger_quality: boolean;
29
32
  }, {
30
33
  pack_path: string;
34
+ check_trigger_quality?: boolean | undefined;
31
35
  }>;
32
- export type SkillPackAuditInput = z.infer<typeof skillPackAuditInputSchema>;
36
+ export type SkillPackAuditInput = z.input<typeof skillPackAuditInputSchema>;
33
37
  /**
34
38
  * Drift status for a single skill in the pack
35
39
  */
@@ -63,6 +67,18 @@ export interface SkillPackAuditResponse {
63
67
  noRegistryDataCount: number;
64
68
  /** Per-skill audit results, sorted alphabetically by name */
65
69
  skills: PackSkillEntry[];
70
+ /**
71
+ * SMI-4124: Trigger-quality analysis across the pack (generic trigger words
72
+ * in skill names/descriptions). Present when `check_trigger_quality` is `true`
73
+ * (default). Omitted when the caller explicitly opts out.
74
+ */
75
+ triggerQuality?: TriggerQuality;
76
+ /**
77
+ * SMI-4124: Namespace-quality flag on the pack itself. Present (possibly
78
+ * `null`) when `check_trigger_quality` is `true`. `null` = clean pack name.
79
+ * Omitted when the caller opts out.
80
+ */
81
+ namespaceQuality?: NamespaceFlag | null;
66
82
  }
67
83
  /**
68
84
  * MCP tool definition for skill_pack_audit
@@ -77,6 +93,11 @@ export declare const skillPackAuditToolSchema: {
77
93
  type: string;
78
94
  description: string;
79
95
  };
96
+ check_trigger_quality: {
97
+ type: string;
98
+ default: boolean;
99
+ description: string;
100
+ };
80
101
  };
81
102
  required: string[];
82
103
  };
@@ -1 +1 @@
1
- {"version":3,"file":"skill-pack-audit.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-pack-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAMhD;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;EAQpC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,UAAU,GACV,OAAO,GACP,kBAAkB,GAClB,iBAAiB,CAAA;AAErB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,0EAA0E;IAC1E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gFAAgF;IAChF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,mBAAmB;IACnB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAA;IAClB,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAA;IAC3B,6DAA6D;IAC7D,MAAM,EAAE,cAAc,EAAE,CAAA;CACzB;AAMD;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;CAkBpC,CAAA;AA4BD;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAuGjC"}
1
+ {"version":3,"file":"skill-pack-audit.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-pack-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EAEf,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAMhD;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;EAiBpC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,UAAU,GACV,OAAO,GACP,kBAAkB,GAClB,iBAAiB,CAAA;AAErB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,0EAA0E;IAC1E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gFAAgF;IAChF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,mBAAmB;IACnB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAA;IAClB,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAA;IAC3B,6DAA6D;IAC7D,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;CACxC;AAMD;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;CA6BpC,CAAA;AA4BD;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAkNjC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @fileoverview Generic trigger-word + namespace detection helpers for
3
+ * `skill_pack_audit`.
4
+ * @module @skillsmith/mcp-server/tools/skill-pack-audit.helpers
5
+ * @see SMI-4124
6
+ *
7
+ * Pure functions — no I/O, no database access. Tested via
8
+ * `tests/unit/skill-pack-audit.test.ts`.
9
+ */
10
+ import type { GenericTriggersStoplist } from '@skillsmith/core';
11
+ import type { GenericWordFlag, NamespaceFlag } from './skill-pack-audit.types.js';
12
+ /**
13
+ * Detect generic trigger words in a skill's name and description.
14
+ *
15
+ * - Skill-name hits produce `severity: 'error'` (unconditional false-trigger magnet).
16
+ * - Description hits produce `severity: 'warning'`.
17
+ * - `suggested` is `${packDomain}-${token}` when a pack domain is available,
18
+ * otherwise `null`.
19
+ *
20
+ * @param description - Raw description value from frontmatter (may be string
21
+ * or string[] from block-scalar parsing, or other).
22
+ * @param skillName - Skill's `name` frontmatter value (falls back to dir name).
23
+ * @param packDomain - Inferred pack domain, or `null` when indeterminate.
24
+ * @param stoplist - Curated stoplist from `@skillsmith/core`.
25
+ * @returns Flags (name errors first, then description warnings).
26
+ */
27
+ export declare function detectGenericTriggerWords(description: unknown, skillName: string, packDomain: string | null, stoplist: GenericTriggersStoplist): GenericWordFlag[];
28
+ /**
29
+ * Aggregate per-skill `tags` across a pack to derive a pack domain.
30
+ *
31
+ * Priority:
32
+ * 1. If `packName` ends with `-skills` and is not itself generic, strip the
33
+ * suffix and return the prefix (e.g. `planning-skills` → `planning`).
34
+ * 2. Otherwise, compute the mode of non-generic tags across all skills.
35
+ * 3. Returns `null` when no domain can be inferred with confidence.
36
+ *
37
+ * @param packName - Pack directory name.
38
+ * @param allSkills - Per-skill tag arrays (undefined / non-array → ignored).
39
+ * @param stoplist - Curated stoplist (for generic-tag filtering).
40
+ */
41
+ export declare function derivePackDomain(packName: string, allSkills: Array<{
42
+ tags?: unknown;
43
+ }>, stoplist: GenericTriggersStoplist): string | null;
44
+ /**
45
+ * Detect a generic pack namespace.
46
+ *
47
+ * @returns NamespaceFlag when the pack name matches a generic namespace,
48
+ * otherwise null.
49
+ */
50
+ export declare function detectGenericNamespace(packName: string, allSkills: Array<{
51
+ tags?: unknown;
52
+ }>, stoplist: GenericTriggersStoplist): NamespaceFlag | null;
53
+ //# sourceMappingURL=skill-pack-audit.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-pack-audit.helpers.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-pack-audit.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AA4BjF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,QAAQ,EAAE,uBAAuB,GAChC,eAAe,EAAE,CAqDnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,EACpC,QAAQ,EAAE,uBAAuB,GAChC,MAAM,GAAG,IAAI,CAyCf;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,EACpC,QAAQ,EAAE,uBAAuB,GAChC,aAAa,GAAG,IAAI,CAqBtB"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * @fileoverview Generic trigger-word + namespace detection helpers for
3
+ * `skill_pack_audit`.
4
+ * @module @skillsmith/mcp-server/tools/skill-pack-audit.helpers
5
+ * @see SMI-4124
6
+ *
7
+ * Pure functions — no I/O, no database access. Tested via
8
+ * `tests/unit/skill-pack-audit.test.ts`.
9
+ */
10
+ import { FIELD_LIMITS } from './validate.types.js';
11
+ /**
12
+ * Coerce a description value into a plain string. `parseYamlFrontmatter` returns
13
+ * block-scalar (`description: |`) values as `string[]`, so we join with spaces.
14
+ * Non-string/non-string-array values yield an empty string.
15
+ */
16
+ function coerceDescription(description) {
17
+ if (typeof description === 'string')
18
+ return description;
19
+ if (Array.isArray(description)) {
20
+ return description.filter((item) => typeof item === 'string').join(' ');
21
+ }
22
+ return '';
23
+ }
24
+ /** Split cleaned description text into lowercase word tokens. */
25
+ function tokenizeForTriggers(text) {
26
+ // Clamp to the same limit `validate` enforces to prevent quadratic scans
27
+ // on malicious oversized frontmatter.
28
+ const clamped = text.slice(0, FIELD_LIMITS.description);
29
+ // Strip common punctuation / markdown, collapse whitespace.
30
+ return clamped
31
+ .toLowerCase()
32
+ .replace(/[^a-z0-9\s-]/g, ' ')
33
+ .split(/\s+/)
34
+ .filter((t) => t.length > 0);
35
+ }
36
+ /**
37
+ * Detect generic trigger words in a skill's name and description.
38
+ *
39
+ * - Skill-name hits produce `severity: 'error'` (unconditional false-trigger magnet).
40
+ * - Description hits produce `severity: 'warning'`.
41
+ * - `suggested` is `${packDomain}-${token}` when a pack domain is available,
42
+ * otherwise `null`.
43
+ *
44
+ * @param description - Raw description value from frontmatter (may be string
45
+ * or string[] from block-scalar parsing, or other).
46
+ * @param skillName - Skill's `name` frontmatter value (falls back to dir name).
47
+ * @param packDomain - Inferred pack domain, or `null` when indeterminate.
48
+ * @param stoplist - Curated stoplist from `@skillsmith/core`.
49
+ * @returns Flags (name errors first, then description warnings).
50
+ */
51
+ export function detectGenericTriggerWords(description, skillName, packDomain, stoplist) {
52
+ const flags = [];
53
+ const triggerSet = new Set(stoplist.triggerWords.map((w) => w.toLowerCase()));
54
+ // Name check (error): tokenize on non-alphanumerics so "spec-builder" flags both.
55
+ const nameTokens = new Set(skillName
56
+ .toLowerCase()
57
+ .split(/[^a-z0-9]+/)
58
+ .filter((t) => t.length > 0));
59
+ for (const token of nameTokens) {
60
+ if (triggerSet.has(token)) {
61
+ flags.push({
62
+ token,
63
+ location: 'name',
64
+ severity: 'error',
65
+ suggested: packDomain ? `${packDomain}-${token}` : null,
66
+ reason: `Skill name contains generic trigger word "${token}". ` +
67
+ `This causes Claude's skill-trigger heuristic to misfire on unrelated prompts. ` +
68
+ (packDomain
69
+ ? `Rename to "${packDomain}-${token}" to qualify the scope.`
70
+ : `Qualify with a domain prefix (e.g. "planning-${token}").`),
71
+ });
72
+ }
73
+ }
74
+ // Description check (warning): full-text tokenization.
75
+ const descText = coerceDescription(description);
76
+ if (descText.length > 0) {
77
+ const descTokens = tokenizeForTriggers(descText);
78
+ const seen = new Set();
79
+ for (const token of descTokens) {
80
+ if (seen.has(token))
81
+ continue;
82
+ if (nameTokens.has(token))
83
+ continue; // already flagged as name error
84
+ if (triggerSet.has(token)) {
85
+ seen.add(token);
86
+ flags.push({
87
+ token,
88
+ location: 'description',
89
+ severity: 'warning',
90
+ suggested: packDomain ? `${packDomain}-${token}` : null,
91
+ reason: `Description contains generic trigger word "${token}". ` +
92
+ `Consider rewording or qualifying the skill's activation phrasing to ` +
93
+ `avoid false-positive skill triggers.`,
94
+ });
95
+ }
96
+ }
97
+ }
98
+ return flags;
99
+ }
100
+ /**
101
+ * Aggregate per-skill `tags` across a pack to derive a pack domain.
102
+ *
103
+ * Priority:
104
+ * 1. If `packName` ends with `-skills` and is not itself generic, strip the
105
+ * suffix and return the prefix (e.g. `planning-skills` → `planning`).
106
+ * 2. Otherwise, compute the mode of non-generic tags across all skills.
107
+ * 3. Returns `null` when no domain can be inferred with confidence.
108
+ *
109
+ * @param packName - Pack directory name.
110
+ * @param allSkills - Per-skill tag arrays (undefined / non-array → ignored).
111
+ * @param stoplist - Curated stoplist (for generic-tag filtering).
112
+ */
113
+ export function derivePackDomain(packName, allSkills, stoplist) {
114
+ const genericNamespaces = new Set(stoplist.namespaces.map((n) => n.toLowerCase()));
115
+ const genericWords = new Set(stoplist.triggerWords.map((w) => w.toLowerCase()));
116
+ // Strategy 1: strip `-skills` suffix from non-generic pack name.
117
+ const lowerPack = packName.toLowerCase();
118
+ if (lowerPack.endsWith('-skills') && !genericNamespaces.has(lowerPack)) {
119
+ const prefix = lowerPack.slice(0, -'-skills'.length);
120
+ if (prefix.length > 0 && !genericNamespaces.has(prefix) && !genericWords.has(prefix)) {
121
+ return prefix;
122
+ }
123
+ }
124
+ // Strategy 2: mode of per-skill tags.
125
+ const counts = new Map();
126
+ for (const skill of allSkills) {
127
+ if (!Array.isArray(skill.tags))
128
+ continue;
129
+ for (const raw of skill.tags) {
130
+ if (typeof raw !== 'string')
131
+ continue;
132
+ const tag = raw.toLowerCase().trim();
133
+ if (tag.length === 0)
134
+ continue;
135
+ if (genericNamespaces.has(tag) || genericWords.has(tag))
136
+ continue;
137
+ counts.set(tag, (counts.get(tag) ?? 0) + 1);
138
+ }
139
+ }
140
+ if (counts.size === 0)
141
+ return null;
142
+ let bestTag = null;
143
+ let bestCount = 0;
144
+ for (const [tag, count] of counts) {
145
+ if (count > bestCount) {
146
+ bestTag = tag;
147
+ bestCount = count;
148
+ }
149
+ }
150
+ // Require the mode to cover at least 2 skills (or the only skill) to avoid
151
+ // picking random one-offs.
152
+ const minSkills = allSkills.length >= 2 ? 2 : 1;
153
+ return bestCount >= minSkills ? bestTag : null;
154
+ }
155
+ /**
156
+ * Detect a generic pack namespace.
157
+ *
158
+ * @returns NamespaceFlag when the pack name matches a generic namespace,
159
+ * otherwise null.
160
+ */
161
+ export function detectGenericNamespace(packName, allSkills, stoplist) {
162
+ const lowerPack = packName.toLowerCase();
163
+ const genericNamespaces = new Set(stoplist.namespaces.map((n) => n.toLowerCase()));
164
+ if (!genericNamespaces.has(lowerPack))
165
+ return null;
166
+ const domain = derivePackDomain(packName, allSkills, stoplist);
167
+ const suggested = domain ? `${domain}-skills` : null;
168
+ const reason = suggested
169
+ ? `Pack name "${packName}" is a generic namespace. Rename to "${suggested}" ` +
170
+ `to reflect its domain (inferred from per-skill tags).`
171
+ : `Pack name "${packName}" is a generic namespace and per-skill tags do not ` +
172
+ `converge on a clear domain. Rename to "<domain>-skills" where <domain> is ` +
173
+ `a specific scope (e.g. "planning-skills", "cicd-skills").`;
174
+ return {
175
+ packName,
176
+ severity: 'warning',
177
+ suggested,
178
+ reason,
179
+ };
180
+ }
181
+ //# sourceMappingURL=skill-pack-audit.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-pack-audit.helpers.js","sourceRoot":"","sources":["../../../src/tools/skill-pack-audit.helpers.ts"],"names":[],"mappings":"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"}