@skillsmith/mcp-server 0.4.2 → 0.4.3

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 (178) hide show
  1. package/README.md +11 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/__tests__/LocalIndexer.test.js +158 -0
  4. package/dist/src/__tests__/LocalIndexer.test.js.map +1 -1
  5. package/dist/src/__tests__/compare.test.d.ts +8 -0
  6. package/dist/src/__tests__/compare.test.d.ts.map +1 -0
  7. package/dist/src/__tests__/compare.test.js +162 -0
  8. package/dist/src/__tests__/compare.test.js.map +1 -0
  9. package/dist/src/__tests__/context.async.test.d.ts +8 -0
  10. package/dist/src/__tests__/context.async.test.d.ts.map +1 -0
  11. package/dist/src/__tests__/context.async.test.js +223 -0
  12. package/dist/src/__tests__/context.async.test.js.map +1 -0
  13. package/dist/src/__tests__/middleware/errorFormatter.builders.test.d.ts +10 -0
  14. package/dist/src/__tests__/middleware/errorFormatter.builders.test.d.ts.map +1 -0
  15. package/dist/src/__tests__/middleware/errorFormatter.builders.test.js +93 -0
  16. package/dist/src/__tests__/middleware/errorFormatter.builders.test.js.map +1 -0
  17. package/dist/src/__tests__/middleware/license-renewal.test.d.ts +10 -0
  18. package/dist/src/__tests__/middleware/license-renewal.test.d.ts.map +1 -0
  19. package/dist/src/__tests__/middleware/license-renewal.test.js +152 -0
  20. package/dist/src/__tests__/middleware/license-renewal.test.js.map +1 -0
  21. package/dist/src/__tests__/middleware/quota-helpers.test.d.ts +9 -0
  22. package/dist/src/__tests__/middleware/quota-helpers.test.d.ts.map +1 -0
  23. package/dist/src/__tests__/middleware/quota-helpers.test.js +105 -0
  24. package/dist/src/__tests__/middleware/quota-helpers.test.js.map +1 -0
  25. package/dist/src/__tests__/middleware/quota.test.d.ts +12 -0
  26. package/dist/src/__tests__/middleware/quota.test.d.ts.map +1 -0
  27. package/dist/src/__tests__/middleware/quota.test.js +189 -0
  28. package/dist/src/__tests__/middleware/quota.test.js.map +1 -0
  29. package/dist/src/__tests__/recommend-online-path.test.d.ts +10 -0
  30. package/dist/src/__tests__/recommend-online-path.test.d.ts.map +1 -0
  31. package/dist/src/__tests__/recommend-online-path.test.js +225 -0
  32. package/dist/src/__tests__/recommend-online-path.test.js.map +1 -0
  33. package/dist/src/__tests__/recommend.test.d.ts +2 -0
  34. package/dist/src/__tests__/recommend.test.d.ts.map +1 -1
  35. package/dist/src/__tests__/recommend.test.js +14 -2
  36. package/dist/src/__tests__/recommend.test.js.map +1 -1
  37. package/dist/src/__tests__/search-online-path.test.d.ts +10 -0
  38. package/dist/src/__tests__/search-online-path.test.d.ts.map +1 -0
  39. package/dist/src/__tests__/search-online-path.test.js +140 -0
  40. package/dist/src/__tests__/search-online-path.test.js.map +1 -0
  41. package/dist/src/__tests__/search.test.js +153 -5
  42. package/dist/src/__tests__/search.test.js.map +1 -1
  43. package/dist/src/context/project-detector.d.ts.map +1 -1
  44. package/dist/src/context/project-detector.js +1 -0
  45. package/dist/src/context/project-detector.js.map +1 -1
  46. package/dist/src/context.async.d.ts +48 -0
  47. package/dist/src/context.async.d.ts.map +1 -0
  48. package/dist/src/context.async.js +215 -0
  49. package/dist/src/context.async.js.map +1 -0
  50. package/dist/src/context.d.ts +5 -145
  51. package/dist/src/context.d.ts.map +1 -1
  52. package/dist/src/context.helpers.d.ts +25 -0
  53. package/dist/src/context.helpers.d.ts.map +1 -0
  54. package/dist/src/context.helpers.js +49 -0
  55. package/dist/src/context.helpers.js.map +1 -0
  56. package/dist/src/context.js +11 -228
  57. package/dist/src/context.js.map +1 -1
  58. package/dist/src/context.types.d.ts +110 -0
  59. package/dist/src/context.types.d.ts.map +1 -0
  60. package/dist/src/context.types.js +10 -0
  61. package/dist/src/context.types.js.map +1 -0
  62. package/dist/src/health/readinessCheck.d.ts +1 -1
  63. package/dist/src/health/readinessCheck.d.ts.map +1 -1
  64. package/dist/src/index.js +21 -152
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/indexer/FrontmatterParser.d.ts +6 -0
  67. package/dist/src/indexer/FrontmatterParser.d.ts.map +1 -1
  68. package/dist/src/indexer/FrontmatterParser.js +15 -0
  69. package/dist/src/indexer/FrontmatterParser.js.map +1 -1
  70. package/dist/src/indexer/LocalIndexer.d.ts +4 -0
  71. package/dist/src/indexer/LocalIndexer.d.ts.map +1 -1
  72. package/dist/src/indexer/LocalIndexer.js +3 -0
  73. package/dist/src/indexer/LocalIndexer.js.map +1 -1
  74. package/dist/src/middleware/degradation.d.ts.map +1 -1
  75. package/dist/src/middleware/degradation.js +8 -0
  76. package/dist/src/middleware/degradation.js.map +1 -1
  77. package/dist/src/middleware/errorFormatter.builders.d.ts +49 -0
  78. package/dist/src/middleware/errorFormatter.builders.d.ts.map +1 -0
  79. package/dist/src/middleware/errorFormatter.builders.js +237 -0
  80. package/dist/src/middleware/errorFormatter.builders.js.map +1 -0
  81. package/dist/src/middleware/errorFormatter.d.ts +5 -100
  82. package/dist/src/middleware/errorFormatter.d.ts.map +1 -1
  83. package/dist/src/middleware/errorFormatter.js +16 -238
  84. package/dist/src/middleware/errorFormatter.js.map +1 -1
  85. package/dist/src/middleware/errorFormatter.types.d.ts +81 -0
  86. package/dist/src/middleware/errorFormatter.types.d.ts.map +1 -0
  87. package/dist/src/middleware/errorFormatter.types.js +34 -0
  88. package/dist/src/middleware/errorFormatter.types.js.map +1 -0
  89. package/dist/src/middleware/toolFeatureMapping.d.ts +1 -1
  90. package/dist/src/middleware/toolFeatureMapping.d.ts.map +1 -1
  91. package/dist/src/middleware/toolFeatureMapping.js +8 -0
  92. package/dist/src/middleware/toolFeatureMapping.js.map +1 -1
  93. package/dist/src/tool-dispatch.d.ts +27 -0
  94. package/dist/src/tool-dispatch.d.ts.map +1 -0
  95. package/dist/src/tool-dispatch.js +127 -0
  96. package/dist/src/tool-dispatch.js.map +1 -0
  97. package/dist/src/tools/LocalSkillSearch.d.ts.map +1 -1
  98. package/dist/src/tools/LocalSkillSearch.js +4 -0
  99. package/dist/src/tools/LocalSkillSearch.js.map +1 -1
  100. package/dist/src/tools/get-skill.d.ts.map +1 -1
  101. package/dist/src/tools/get-skill.js +14 -0
  102. package/dist/src/tools/get-skill.js.map +1 -1
  103. package/dist/src/tools/index.d.ts +6 -0
  104. package/dist/src/tools/index.d.ts.map +1 -1
  105. package/dist/src/tools/index.js +6 -0
  106. package/dist/src/tools/index.js.map +1 -1
  107. package/dist/src/tools/install.d.ts +3 -35
  108. package/dist/src/tools/install.d.ts.map +1 -1
  109. package/dist/src/tools/install.js +22 -74
  110. package/dist/src/tools/install.js.map +1 -1
  111. package/dist/src/tools/install.optimize.d.ts +46 -0
  112. package/dist/src/tools/install.optimize.d.ts.map +1 -0
  113. package/dist/src/tools/install.optimize.js +67 -0
  114. package/dist/src/tools/install.optimize.js.map +1 -0
  115. package/dist/src/tools/install.tool.d.ts +44 -0
  116. package/dist/src/tools/install.tool.d.ts.map +1 -0
  117. package/dist/src/tools/install.tool.js +44 -0
  118. package/dist/src/tools/install.tool.js.map +1 -0
  119. package/dist/src/tools/install.types.d.ts +7 -1
  120. package/dist/src/tools/install.types.d.ts.map +1 -1
  121. package/dist/src/tools/recommend.d.ts +2 -4
  122. package/dist/src/tools/recommend.d.ts.map +1 -1
  123. package/dist/src/tools/recommend.format.d.ts +28 -0
  124. package/dist/src/tools/recommend.format.d.ts.map +1 -0
  125. package/dist/src/tools/recommend.format.js +111 -0
  126. package/dist/src/tools/recommend.format.js.map +1 -0
  127. package/dist/src/tools/recommend.js +6 -97
  128. package/dist/src/tools/recommend.js.map +1 -1
  129. package/dist/src/tools/recommend.types.d.ts +1 -1
  130. package/dist/src/tools/search.d.ts +24 -21
  131. package/dist/src/tools/search.d.ts.map +1 -1
  132. package/dist/src/tools/search.formatter.d.ts +30 -0
  133. package/dist/src/tools/search.formatter.d.ts.map +1 -0
  134. package/dist/src/tools/search.formatter.js +64 -0
  135. package/dist/src/tools/search.formatter.js.map +1 -0
  136. package/dist/src/tools/search.js +55 -54
  137. package/dist/src/tools/search.js.map +1 -1
  138. package/dist/src/tools/skill-audit.d.ts +98 -0
  139. package/dist/src/tools/skill-audit.d.ts.map +1 -0
  140. package/dist/src/tools/skill-audit.js +105 -0
  141. package/dist/src/tools/skill-audit.js.map +1 -0
  142. package/dist/src/tools/skill-audit.test.d.ts +6 -0
  143. package/dist/src/tools/skill-audit.test.d.ts.map +1 -0
  144. package/dist/src/tools/skill-audit.test.js +121 -0
  145. package/dist/src/tools/skill-audit.test.js.map +1 -0
  146. package/dist/src/tools/skill-diff.d.ts +107 -0
  147. package/dist/src/tools/skill-diff.d.ts.map +1 -0
  148. package/dist/src/tools/skill-diff.js +268 -0
  149. package/dist/src/tools/skill-diff.js.map +1 -0
  150. package/dist/src/tools/skill-diff.test.d.ts +6 -0
  151. package/dist/src/tools/skill-diff.test.d.ts.map +1 -0
  152. package/dist/src/tools/skill-diff.test.js +260 -0
  153. package/dist/src/tools/skill-diff.test.js.map +1 -0
  154. package/dist/src/tools/skill-updates.d.ts +1 -1
  155. package/dist/src/tools/skill-updates.d.ts.map +1 -1
  156. package/dist/src/tools/suggest.d.ts +4 -4
  157. package/dist/src/tools/uninstall.d.ts +1 -1
  158. package/dist/src/tools/validate.helpers.d.ts.map +1 -1
  159. package/dist/src/tools/validate.helpers.js +31 -0
  160. package/dist/src/tools/validate.helpers.js.map +1 -1
  161. package/dist/src/utils/validation.d.ts +13 -0
  162. package/dist/src/utils/validation.d.ts.map +1 -1
  163. package/dist/src/utils/validation.js +27 -0
  164. package/dist/src/utils/validation.js.map +1 -1
  165. package/dist/tests/health.test.js +4 -4
  166. package/dist/tests/health.test.js.map +1 -1
  167. package/dist/tests/integration/recommend.integration.test.js +2 -0
  168. package/dist/tests/integration/recommend.integration.test.js.map +1 -1
  169. package/dist/tests/integration/setup.d.ts +3 -1
  170. package/dist/tests/integration/setup.d.ts.map +1 -1
  171. package/dist/tests/integration/setup.js +4 -1
  172. package/dist/tests/integration/setup.js.map +1 -1
  173. package/dist/tests/recommend.test.js +2 -0
  174. package/dist/tests/recommend.test.js.map +1 -1
  175. package/dist/tests/unit/validate-helpers.test.js +54 -0
  176. package/dist/tests/unit/validate-helpers.test.js.map +1 -1
  177. package/package.json +2 -2
  178. package/server.json +2 -2
@@ -2,6 +2,7 @@
2
2
  * @fileoverview MCP Install Skill Tool for downloading and installing skills
3
3
  * @module @skillsmith/mcp-server/tools/install
4
4
  * @see {@link https://github.com/wrsmith108/skillsmith|Skillsmith Repository}
5
+ * @see SMI-2741: Split to meet 500-line standard
5
6
  *
6
7
  * Provides skill installation functionality with:
7
8
  * - GitHub repository fetching (supports owner/repo and full URLs)
@@ -12,7 +13,7 @@
12
13
  *
13
14
  * Skills are installed to ~/.claude/skills/ and tracked in ~/.skillsmith/manifest.json
14
15
  */
15
- import { SecurityScanner, TransformationService, safeWriteFile } from '@skillsmith/core';
16
+ import { SecurityScanner, safeWriteFile } from '@skillsmith/core';
16
17
  import * as fs from 'fs/promises';
17
18
  import * as path from 'path';
18
19
  import * as os from 'os';
@@ -23,6 +24,11 @@ import { TRUST_TIER_SCANNER_OPTIONS, CLAUDE_SKILLS_DIR, } from './install.types.
23
24
  import { loadManifest, updateManifestSafely, parseSkillId, parseRepoUrl, lookupSkillFromRegistry, fetchFromGitHub, validateSkillMd, generateOptimizedTips, hashContent, storeOriginal, } from './install.helpers.js';
24
25
  // SMI-1867: Conflict resolution logic (extracted per governance review)
25
26
  import { checkForConflicts, handleMergeAction } from './install.conflict.js';
27
+ // SMI-1788/SMI-2741: Optimization layer extracted to companion file
28
+ import { applySkillOptimization } from './install.optimize.js';
29
+ // SMI-2741: MCP tool definition extracted to companion file
30
+ export { installTool } from './install.tool.js';
31
+ export { default } from './install.tool.js';
26
32
  // Re-export only public API types (SMI-1718: trimmed internal exports)
27
33
  export { installInputSchema } from './install.types.js';
28
34
  /**
@@ -253,45 +259,16 @@ export async function installSkill(input, _context) {
253
259
  }
254
260
  }
255
261
  // SMI-1788: Apply Skillsmith Optimization Layer (unless skipped)
256
- let optimizationInfo = { optimized: false };
257
- let finalSkillContent = skillMdContent;
258
- let subSkillFiles = [];
259
- let subagentContent;
260
- let claudeMdSnippet;
261
- if (!input.skipOptimize) {
262
- try {
263
- const transformService = new TransformationService(context.db, {
264
- cacheTtl: 3600, // 1 hour cache
265
- version: '1.0.0',
266
- });
267
- // Extract skill name and description for transformation
268
- const nameMatch = skillMdContent.match(/^name:\s*(.+)$/m);
269
- const descMatch = skillMdContent.match(/^description:\s*(.+)$/m);
270
- const extractedName = nameMatch ? nameMatch[1].trim() : skillName;
271
- const extractedDesc = descMatch ? descMatch[1].trim() : '';
272
- const transformResult = await transformService.transform(input.skillId, extractedName, extractedDesc, skillMdContent);
273
- if (transformResult.transformed) {
274
- finalSkillContent = transformResult.mainSkillContent;
275
- subSkillFiles = transformResult.subSkills;
276
- subagentContent = transformResult.subagent?.content;
277
- claudeMdSnippet = transformResult.claudeMdSnippet;
278
- optimizationInfo = {
279
- optimized: true,
280
- subSkills: subSkillFiles.map((s) => s.filename),
281
- subagentGenerated: !!subagentContent,
282
- tokenReductionPercent: transformResult.stats.tokenReductionPercent,
283
- originalLines: transformResult.stats.originalLines,
284
- optimizedLines: transformResult.stats.optimizedLines,
285
- };
286
- }
262
+ const optimizeResult = input.skipOptimize
263
+ ? {
264
+ finalSkillContent: skillMdContent,
265
+ subSkillFiles: [],
266
+ subagentContent: undefined,
267
+ claudeMdSnippet: undefined,
268
+ optimizationInfo: { optimized: false },
287
269
  }
288
- catch (transformError) {
289
- // Transformation failed - continue with original content
290
- console.warn('[install] Optimization failed, using original content:', transformError);
291
- finalSkillContent = skillMdContent;
292
- optimizationInfo = { optimized: false };
293
- }
294
- }
270
+ : await applySkillOptimization(input.skillId, skillName, skillMdContent, context.db);
271
+ const { finalSkillContent, subSkillFiles, subagentContent, claudeMdSnippet, optimizationInfo } = optimizeResult;
295
272
  // SMI-1867: Compute hash before file operations (needed in manifest update)
296
273
  const contentHash = hashContent(finalSkillContent);
297
274
  // SMI-1792, SMI-1797: Atomic file installation with transaction pattern
@@ -385,6 +362,12 @@ export async function installSkill(input, _context) {
385
362
  },
386
363
  },
387
364
  }));
365
+ // SMI-2761: Record session co-install pairs for "also installed" recommendations
366
+ context.coInstallRepository.recordSessionCoInstalls([
367
+ ...context.sessionInstalledSkillIds,
368
+ input.skillId,
369
+ ]);
370
+ context.sessionInstalledSkillIds.push(input.skillId);
388
371
  return {
389
372
  success: true,
390
373
  skillId: input.skillId,
@@ -426,39 +409,4 @@ export async function installSkill(input, _context) {
426
409
  };
427
410
  }
428
411
  }
429
- /**
430
- * MCP tool definition
431
- */
432
- export const installTool = {
433
- name: 'install_skill',
434
- description: 'Install a Claude Code skill from GitHub. Performs security scan and Skillsmith optimization before installation.',
435
- inputSchema: {
436
- type: 'object',
437
- properties: {
438
- skillId: {
439
- type: 'string',
440
- description: 'Skill ID (owner/repo/skill) or GitHub URL',
441
- },
442
- force: {
443
- type: 'boolean',
444
- description: 'Force reinstall if skill already exists',
445
- },
446
- skipScan: {
447
- type: 'boolean',
448
- description: 'Skip security scan (not recommended)',
449
- },
450
- skipOptimize: {
451
- type: 'boolean',
452
- description: 'Skip Skillsmith optimization (decomposition, subagent generation)',
453
- },
454
- conflictAction: {
455
- type: 'string',
456
- enum: ['overwrite', 'merge', 'cancel'],
457
- description: 'Action when local modifications detected: overwrite (backup + replace), merge (three-way), or cancel',
458
- },
459
- },
460
- required: ['skillId'],
461
- },
462
- };
463
- export default installTool;
464
412
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @fileoverview Skillsmith Optimization Layer for skill installation
3
+ * @module @skillsmith/mcp-server/tools/install.optimize
4
+ * @see SMI-1788: Apply Skillsmith Optimization Layer
5
+ * @see SMI-2741: Split from install.ts to meet 500-line standard
6
+ *
7
+ * Handles the optional Skillsmith optimization step during skill installation:
8
+ * - Decomposition via TransformationService
9
+ * - Sub-skill generation
10
+ * - Subagent companion generation
11
+ * - CLAUDE.md snippet generation
12
+ */
13
+ import type { Database } from '@skillsmith/core';
14
+ import type { OptimizationInfo } from './install.types.js';
15
+ /**
16
+ * Result of applying the Skillsmith optimization layer
17
+ */
18
+ export interface OptimizeResult {
19
+ /** Final (possibly transformed) SKILL.md content */
20
+ finalSkillContent: string;
21
+ /** Generated sub-skill files */
22
+ subSkillFiles: Array<{
23
+ filename: string;
24
+ content: string;
25
+ }>;
26
+ /** Generated subagent content (optional) */
27
+ subagentContent: string | undefined;
28
+ /** Generated CLAUDE.md snippet (optional) */
29
+ claudeMdSnippet: string | undefined;
30
+ /** Optimization metadata */
31
+ optimizationInfo: OptimizationInfo;
32
+ }
33
+ /**
34
+ * Apply Skillsmith Optimization Layer to a skill's content.
35
+ *
36
+ * SMI-1788: Runs the TransformationService to decompose and optimize the skill.
37
+ * Falls back to original content if transformation fails.
38
+ *
39
+ * @param skillId - Skill identifier for the transformation
40
+ * @param skillName - Extracted skill name
41
+ * @param skillMdContent - Raw SKILL.md content
42
+ * @param db - Database instance for caching
43
+ * @returns Optimization result with transformed content and metadata
44
+ */
45
+ export declare function applySkillOptimization(skillId: string, skillName: string, skillMdContent: string, db: Database): Promise<OptimizeResult>;
46
+ //# sourceMappingURL=install.optimize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.optimize.d.ts","sourceRoot":"","sources":["../../../src/tools/install.optimize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,CAAA;IACzB,gCAAgC;IAChC,aAAa,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,4CAA4C;IAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,6CAA6C;IAC7C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,4BAA4B;IAC5B,gBAAgB,EAAE,gBAAgB,CAAA;CACnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,QAAQ,GACX,OAAO,CAAC,cAAc,CAAC,CAgDzB"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @fileoverview Skillsmith Optimization Layer for skill installation
3
+ * @module @skillsmith/mcp-server/tools/install.optimize
4
+ * @see SMI-1788: Apply Skillsmith Optimization Layer
5
+ * @see SMI-2741: Split from install.ts to meet 500-line standard
6
+ *
7
+ * Handles the optional Skillsmith optimization step during skill installation:
8
+ * - Decomposition via TransformationService
9
+ * - Sub-skill generation
10
+ * - Subagent companion generation
11
+ * - CLAUDE.md snippet generation
12
+ */
13
+ import { TransformationService } from '@skillsmith/core';
14
+ /**
15
+ * Apply Skillsmith Optimization Layer to a skill's content.
16
+ *
17
+ * SMI-1788: Runs the TransformationService to decompose and optimize the skill.
18
+ * Falls back to original content if transformation fails.
19
+ *
20
+ * @param skillId - Skill identifier for the transformation
21
+ * @param skillName - Extracted skill name
22
+ * @param skillMdContent - Raw SKILL.md content
23
+ * @param db - Database instance for caching
24
+ * @returns Optimization result with transformed content and metadata
25
+ */
26
+ export async function applySkillOptimization(skillId, skillName, skillMdContent, db) {
27
+ try {
28
+ const transformService = new TransformationService(db, {
29
+ cacheTtl: 3600, // 1 hour cache
30
+ version: '1.0.0',
31
+ });
32
+ // Extract skill name and description for transformation
33
+ const nameMatch = skillMdContent.match(/^name:\s*(.+)$/m);
34
+ const descMatch = skillMdContent.match(/^description:\s*(.+)$/m);
35
+ const extractedName = nameMatch ? nameMatch[1].trim() : skillName;
36
+ const extractedDesc = descMatch ? descMatch[1].trim() : '';
37
+ const transformResult = await transformService.transform(skillId, extractedName, extractedDesc, skillMdContent);
38
+ if (transformResult.transformed) {
39
+ return {
40
+ finalSkillContent: transformResult.mainSkillContent,
41
+ subSkillFiles: transformResult.subSkills,
42
+ subagentContent: transformResult.subagent?.content,
43
+ claudeMdSnippet: transformResult.claudeMdSnippet,
44
+ optimizationInfo: {
45
+ optimized: true,
46
+ subSkills: transformResult.subSkills.map((s) => s.filename),
47
+ subagentGenerated: !!transformResult.subagent?.content,
48
+ tokenReductionPercent: transformResult.stats.tokenReductionPercent,
49
+ originalLines: transformResult.stats.originalLines,
50
+ optimizedLines: transformResult.stats.optimizedLines,
51
+ },
52
+ };
53
+ }
54
+ }
55
+ catch (transformError) {
56
+ // Transformation failed - continue with original content
57
+ console.warn('[install] Optimization failed, using original content:', transformError);
58
+ }
59
+ return {
60
+ finalSkillContent: skillMdContent,
61
+ subSkillFiles: [],
62
+ subagentContent: undefined,
63
+ claudeMdSnippet: undefined,
64
+ optimizationInfo: { optimized: false },
65
+ };
66
+ }
67
+ //# sourceMappingURL=install.optimize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.optimize.js","sourceRoot":"","sources":["../../../src/tools/install.optimize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAoBxD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,SAAiB,EACjB,cAAsB,EACtB,EAAY;IAEZ,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,EAAE,EAAE;YACrD,QAAQ,EAAE,IAAI,EAAE,eAAe;YAC/B,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;QAEF,wDAAwD;QACxD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACzD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAChE,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACjE,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAE1D,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,SAAS,CACtD,OAAO,EACP,aAAa,EACb,aAAa,EACb,cAAc,CACf,CAAA;QAED,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;YAChC,OAAO;gBACL,iBAAiB,EAAE,eAAe,CAAC,gBAAgB;gBACnD,aAAa,EAAE,eAAe,CAAC,SAAS;gBACxC,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO;gBAClD,eAAe,EAAE,eAAe,CAAC,eAAe;gBAChD,gBAAgB,EAAE;oBAChB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC3D,iBAAiB,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO;oBACtD,qBAAqB,EAAE,eAAe,CAAC,KAAK,CAAC,qBAAqB;oBAClE,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,aAAa;oBAClD,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,cAAc;iBACrD;aACF,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,cAAc,EAAE,CAAC;QACxB,yDAAyD;QACzD,OAAO,CAAC,IAAI,CAAC,wDAAwD,EAAE,cAAc,CAAC,CAAA;IACxF,CAAC;IAED,OAAO;QACL,iBAAiB,EAAE,cAAc;QACjC,aAAa,EAAE,EAAE;QACjB,eAAe,EAAE,SAAS;QAC1B,eAAe,EAAE,SAAS;QAC1B,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;KACvC,CAAA;AACH,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @fileoverview MCP Tool Definition for install_skill
3
+ * @module @skillsmith/mcp-server/tools/install.tool
4
+ * @see SMI-2741: Split from install.ts to meet 500-line standard
5
+ *
6
+ * The MCP tool schema definition for the install_skill tool, extracted
7
+ * from install.ts to keep that file within the 500-line limit.
8
+ */
9
+ /**
10
+ * MCP tool definition for install_skill
11
+ */
12
+ export declare const installTool: {
13
+ name: string;
14
+ description: string;
15
+ inputSchema: {
16
+ type: "object";
17
+ properties: {
18
+ skillId: {
19
+ type: string;
20
+ description: string;
21
+ };
22
+ force: {
23
+ type: string;
24
+ description: string;
25
+ };
26
+ skipScan: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ skipOptimize: {
31
+ type: string;
32
+ description: string;
33
+ };
34
+ conflictAction: {
35
+ type: string;
36
+ enum: string[];
37
+ description: string;
38
+ };
39
+ };
40
+ required: string[];
41
+ };
42
+ };
43
+ export default installTool;
44
+ //# sourceMappingURL=install.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/install.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @fileoverview MCP Tool Definition for install_skill
3
+ * @module @skillsmith/mcp-server/tools/install.tool
4
+ * @see SMI-2741: Split from install.ts to meet 500-line standard
5
+ *
6
+ * The MCP tool schema definition for the install_skill tool, extracted
7
+ * from install.ts to keep that file within the 500-line limit.
8
+ */
9
+ /**
10
+ * MCP tool definition for install_skill
11
+ */
12
+ export const installTool = {
13
+ name: 'install_skill',
14
+ description: 'Install a Claude Code skill from GitHub. Performs security scan and Skillsmith optimization before installation.',
15
+ inputSchema: {
16
+ type: 'object',
17
+ properties: {
18
+ skillId: {
19
+ type: 'string',
20
+ description: 'Skill ID (owner/repo/skill) or GitHub URL',
21
+ },
22
+ force: {
23
+ type: 'boolean',
24
+ description: 'Force reinstall if skill already exists',
25
+ },
26
+ skipScan: {
27
+ type: 'boolean',
28
+ description: 'Skip security scan (not recommended)',
29
+ },
30
+ skipOptimize: {
31
+ type: 'boolean',
32
+ description: 'Skip Skillsmith optimization (decomposition, subagent generation)',
33
+ },
34
+ conflictAction: {
35
+ type: 'string',
36
+ enum: ['overwrite', 'merge', 'cancel'],
37
+ description: 'Action when local modifications detected: overwrite (backup + replace), merge (three-way), or cancel',
38
+ },
39
+ },
40
+ required: ['skillId'],
41
+ },
42
+ };
43
+ export default installTool;
44
+ //# sourceMappingURL=install.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.tool.js","sourceRoot":"","sources":["../../../src/tools/install.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,kHAAkH;IACpH,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2CAA2C;aACzD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,yCAAyC;aACvD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,sCAAsC;aACpD;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,mEAAmE;aACjF;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC;gBACtC,WAAW,EACT,sGAAsG;aACzG;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACF,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -83,8 +83,8 @@ export declare const installInputSchema: z.ZodObject<{
83
83
  /** SMI-1864: Action to take when a conflict is detected during update */
84
84
  conflictAction: z.ZodOptional<z.ZodEnum<["overwrite", "merge", "cancel"]>>;
85
85
  }, "strip", z.ZodTypeAny, {
86
- skillId: string;
87
86
  force: boolean;
87
+ skillId: string;
88
88
  skipScan: boolean;
89
89
  skipOptimize: boolean;
90
90
  conflictAction?: "overwrite" | "merge" | "cancel" | undefined;
@@ -150,6 +150,12 @@ export interface SkillManifestEntry {
150
150
  lastUpdated: string;
151
151
  /** SMI-1864: SHA-256 hash of SKILL.md at install time for modification detection */
152
152
  originalContentHash?: string;
153
+ /** SMI-skill-version-tracking Wave 1: SHA-256 hash of the content at last update */
154
+ contentHash?: string;
155
+ /** SMI-skill-version-tracking Wave 1: Pinned semver (Wave 2: update policy enforcement) */
156
+ pinnedVersion?: string;
157
+ /** SMI-skill-version-tracking Wave 1: How updates are handled (Wave 2: enforcement) */
158
+ updatePolicy?: 'auto' | 'manual' | 'never';
153
159
  }
154
160
  export interface SkillManifest {
155
161
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"install.types.d.ts","sourceRoot":"","sources":["../../../src/tools/install.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.types.d.ts","sourceRoot":"","sources":["../../../src/tools/install.types.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,12 @@
5
5
  * @see SMI-602: Integrate semantic matching with EmbeddingService
6
6
  * @see SMI-604: Add trigger phrase overlap detection
7
7
  * @see SMI-1837: Include local skills in recommendations (parallel search)
8
+ * @see SMI-2741: Split to meet 500-line standard
8
9
  */
9
10
  import type { ToolContext } from '../context.js';
10
11
  import { type RecommendInput, type RecommendResponse } from './recommend.types.js';
11
12
  export { recommendInputSchema, recommendToolSchema, type RecommendInput, type RecommendResponse, type SkillRecommendation, } from './recommend.types.js';
13
+ export { formatRecommendations, mergeAndDeduplicateRecommendations } from './recommend.format.js';
12
14
  /**
13
15
  * Execute skill recommendation based on installed skills and context.
14
16
  *
@@ -17,8 +19,4 @@ export { recommendInputSchema, recommendToolSchema, type RecommendInput, type Re
17
19
  * - Falls back to local semantic matching if API is offline or fails
18
20
  */
19
21
  export declare function executeRecommend(input: RecommendInput, context: ToolContext): Promise<RecommendResponse>;
20
- /**
21
- * Format recommendations for terminal display
22
- */
23
- export declare function formatRecommendations(response: RecommendResponse): string;
24
22
  //# sourceMappingURL=recommend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../../../src/tools/recommend.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAGvB,MAAM,sBAAsB,CAAA;AAc7B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAA;AAsH7B;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA0T5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAyDzE"}
1
+ {"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../../../src/tools/recommend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAGvB,MAAM,sBAAsB,CAAA;AAiB7B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,qBAAqB,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAA;AA0DjG;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA0T5B"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @fileoverview Recommendation Formatting and Deduplication Utilities
3
+ * @module @skillsmith/mcp-server/tools/recommend.format
4
+ * @see SMI-2741: Split from recommend.ts to meet 500-line standard
5
+ *
6
+ * Standalone utilities extracted from executeRecommend:
7
+ * - mergeAndDeduplicateRecommendations: Merge API and local results, removing duplicates
8
+ * - formatRecommendations: Format recommendation response for terminal display
9
+ */
10
+ import type { SkillRecommendation, RecommendResponse } from './recommend.types.js';
11
+ /**
12
+ * Merge and deduplicate API and local skill recommendations.
13
+ * API results take priority over local results with the same name.
14
+ *
15
+ * @param apiResults - Results from API
16
+ * @param localResults - Results from local skill search
17
+ * @param limit - Maximum combined results
18
+ * @returns Merged and deduplicated recommendations
19
+ */
20
+ export declare function mergeAndDeduplicateRecommendations(apiResults: SkillRecommendation[], localResults: SkillRecommendation[], limit: number): SkillRecommendation[];
21
+ /**
22
+ * Format recommendations for terminal display
23
+ *
24
+ * @param response - Recommendation response to format
25
+ * @returns Formatted string for terminal output
26
+ */
27
+ export declare function formatRecommendations(response: RecommendResponse): string;
28
+ //# sourceMappingURL=recommend.format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommend.format.d.ts","sourceRoot":"","sources":["../../../src/tools/recommend.format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAElF;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,mBAAmB,EAAE,EACjC,YAAY,EAAE,mBAAmB,EAAE,EACnC,KAAK,EAAE,MAAM,GACZ,mBAAmB,EAAE,CA8CvB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAyDzE"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @fileoverview Recommendation Formatting and Deduplication Utilities
3
+ * @module @skillsmith/mcp-server/tools/recommend.format
4
+ * @see SMI-2741: Split from recommend.ts to meet 500-line standard
5
+ *
6
+ * Standalone utilities extracted from executeRecommend:
7
+ * - mergeAndDeduplicateRecommendations: Merge API and local results, removing duplicates
8
+ * - formatRecommendations: Format recommendation response for terminal display
9
+ */
10
+ import { getTrustBadge } from '../utils/validation.js';
11
+ /**
12
+ * Merge and deduplicate API and local skill recommendations.
13
+ * API results take priority over local results with the same name.
14
+ *
15
+ * @param apiResults - Results from API
16
+ * @param localResults - Results from local skill search
17
+ * @param limit - Maximum combined results
18
+ * @returns Merged and deduplicated recommendations
19
+ */
20
+ export function mergeAndDeduplicateRecommendations(apiResults, localResults, limit) {
21
+ // Build a Set of names from API results for deduplication
22
+ const apiSkillNames = new Set(apiResults.map((r) => r.name.toLowerCase()));
23
+ // Also track skill IDs (without the author prefix)
24
+ const apiSkillIdNames = new Set(apiResults.map((r) => r.skill_id.split('/').pop()?.toLowerCase() || ''));
25
+ // Filter local results to exclude duplicates
26
+ const uniqueLocalResults = localResults.filter((local) => {
27
+ const localName = local.name.toLowerCase();
28
+ const localIdName = local.skill_id.split('/').pop()?.toLowerCase() || '';
29
+ // Exclude if name matches an API result
30
+ if (apiSkillNames.has(localName)) {
31
+ return false;
32
+ }
33
+ // Exclude if ID name matches an API result
34
+ if (apiSkillIdNames.has(localIdName)) {
35
+ return false;
36
+ }
37
+ // Exclude if local name is contained in or contains an API skill name
38
+ for (const apiName of apiSkillNames) {
39
+ if (localName.includes(apiName) || apiName.includes(localName)) {
40
+ return false;
41
+ }
42
+ }
43
+ return true;
44
+ });
45
+ // Combine API results first (higher priority), then unique local results
46
+ const combined = [...apiResults, ...uniqueLocalResults];
47
+ // Sort by quality score descending, then by similarity score
48
+ combined.sort((a, b) => {
49
+ if (b.quality_score !== a.quality_score) {
50
+ return b.quality_score - a.quality_score;
51
+ }
52
+ return b.similarity_score - a.similarity_score;
53
+ });
54
+ return combined.slice(0, limit);
55
+ }
56
+ /**
57
+ * Format recommendations for terminal display
58
+ *
59
+ * @param response - Recommendation response to format
60
+ * @returns Formatted string for terminal output
61
+ */
62
+ export function formatRecommendations(response) {
63
+ const lines = [];
64
+ lines.push('\n=== Skill Recommendations ===\n');
65
+ if (response.recommendations.length === 0) {
66
+ lines.push('No recommendations found.');
67
+ lines.push('');
68
+ lines.push('Suggestions:');
69
+ lines.push(' - Try adding more installed skills for better matching');
70
+ lines.push(' - Provide a project context for more relevant results');
71
+ // SMI-1631: Suggest removing role filter if one was applied
72
+ if (response.context.role_filter) {
73
+ lines.push(` - Try removing the role filter (currently: ${response.context.role_filter})`);
74
+ }
75
+ }
76
+ else {
77
+ lines.push(`Found ${response.recommendations.length} recommendation(s):\n`);
78
+ response.recommendations.forEach((rec, index) => {
79
+ const trustBadge = getTrustBadge(rec.trust_tier);
80
+ // SMI-1631: Show roles if present
81
+ const rolesDisplay = rec.roles?.length ? ` [${rec.roles.join(', ')}]` : '';
82
+ lines.push(`${index + 1}. ${rec.name} ${trustBadge}${rolesDisplay}`);
83
+ lines.push(` Score: ${rec.quality_score}/100 | Relevance: ${Math.round(rec.similarity_score * 100)}%`);
84
+ lines.push(` ${rec.reason}`);
85
+ lines.push(` ID: ${rec.skill_id}`);
86
+ lines.push('');
87
+ });
88
+ }
89
+ lines.push('---');
90
+ lines.push(`Candidates considered: ${response.candidates_considered}`);
91
+ if (response.overlap_filtered > 0) {
92
+ lines.push(`Filtered for overlap: ${response.overlap_filtered}`);
93
+ }
94
+ // SMI-1631: Show role filter stats
95
+ if (response.role_filtered > 0) {
96
+ lines.push(`Filtered for role: ${response.role_filtered}`);
97
+ }
98
+ if (response.context.role_filter) {
99
+ lines.push(`Role filter: ${response.context.role_filter}`);
100
+ }
101
+ if (response.context.auto_detected) {
102
+ lines.push(`Installed skills: ${response.context.installed_count} (auto-detected from ~/.claude/skills/)`);
103
+ }
104
+ else {
105
+ lines.push(`Installed skills: ${response.context.installed_count}`);
106
+ }
107
+ lines.push(`Semantic matching: ${response.context.using_semantic_matching ? 'enabled' : 'disabled'}`);
108
+ lines.push(`Completed in ${response.timing.totalMs}ms`);
109
+ return lines.join('\n');
110
+ }
111
+ //# sourceMappingURL=recommend.format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommend.format.js","sourceRoot":"","sources":["../../../src/tools/recommend.format.ts"],"names":[],"mappings":"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"}