@skillsmith/mcp-server 0.4.2 → 0.4.4
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.
- package/README.md +11 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/__tests__/LocalIndexer.test.js +158 -0
- package/dist/src/__tests__/LocalIndexer.test.js.map +1 -1
- package/dist/src/__tests__/compare.test.d.ts +8 -0
- package/dist/src/__tests__/compare.test.d.ts.map +1 -0
- package/dist/src/__tests__/compare.test.js +162 -0
- package/dist/src/__tests__/compare.test.js.map +1 -0
- package/dist/src/__tests__/context.async.test.d.ts +8 -0
- package/dist/src/__tests__/context.async.test.d.ts.map +1 -0
- package/dist/src/__tests__/context.async.test.js +223 -0
- package/dist/src/__tests__/context.async.test.js.map +1 -0
- package/dist/src/__tests__/middleware/errorFormatter.builders.test.d.ts +10 -0
- package/dist/src/__tests__/middleware/errorFormatter.builders.test.d.ts.map +1 -0
- package/dist/src/__tests__/middleware/errorFormatter.builders.test.js +93 -0
- package/dist/src/__tests__/middleware/errorFormatter.builders.test.js.map +1 -0
- package/dist/src/__tests__/middleware/license-renewal.test.d.ts +10 -0
- package/dist/src/__tests__/middleware/license-renewal.test.d.ts.map +1 -0
- package/dist/src/__tests__/middleware/license-renewal.test.js +152 -0
- package/dist/src/__tests__/middleware/license-renewal.test.js.map +1 -0
- package/dist/src/__tests__/middleware/quota-helpers.test.d.ts +9 -0
- package/dist/src/__tests__/middleware/quota-helpers.test.d.ts.map +1 -0
- package/dist/src/__tests__/middleware/quota-helpers.test.js +105 -0
- package/dist/src/__tests__/middleware/quota-helpers.test.js.map +1 -0
- package/dist/src/__tests__/middleware/quota.test.d.ts +12 -0
- package/dist/src/__tests__/middleware/quota.test.d.ts.map +1 -0
- package/dist/src/__tests__/middleware/quota.test.js +189 -0
- package/dist/src/__tests__/middleware/quota.test.js.map +1 -0
- package/dist/src/__tests__/recommend-online-path.test.d.ts +10 -0
- package/dist/src/__tests__/recommend-online-path.test.d.ts.map +1 -0
- package/dist/src/__tests__/recommend-online-path.test.js +225 -0
- package/dist/src/__tests__/recommend-online-path.test.js.map +1 -0
- package/dist/src/__tests__/recommend.test.d.ts +2 -0
- package/dist/src/__tests__/recommend.test.d.ts.map +1 -1
- package/dist/src/__tests__/recommend.test.js +14 -2
- package/dist/src/__tests__/recommend.test.js.map +1 -1
- package/dist/src/__tests__/search-online-path.test.d.ts +10 -0
- package/dist/src/__tests__/search-online-path.test.d.ts.map +1 -0
- package/dist/src/__tests__/search-online-path.test.js +140 -0
- package/dist/src/__tests__/search-online-path.test.js.map +1 -0
- package/dist/src/__tests__/search.test.js +153 -5
- package/dist/src/__tests__/search.test.js.map +1 -1
- package/dist/src/context/project-detector.d.ts.map +1 -1
- package/dist/src/context/project-detector.js +1 -0
- package/dist/src/context/project-detector.js.map +1 -1
- package/dist/src/context.async.d.ts +48 -0
- package/dist/src/context.async.d.ts.map +1 -0
- package/dist/src/context.async.js +217 -0
- package/dist/src/context.async.js.map +1 -0
- package/dist/src/context.d.ts +5 -145
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.helpers.d.ts +25 -0
- package/dist/src/context.helpers.d.ts.map +1 -0
- package/dist/src/context.helpers.js +49 -0
- package/dist/src/context.helpers.js.map +1 -0
- package/dist/src/context.js +13 -228
- package/dist/src/context.js.map +1 -1
- package/dist/src/context.types.d.ts +112 -0
- package/dist/src/context.types.d.ts.map +1 -0
- package/dist/src/context.types.js +10 -0
- package/dist/src/context.types.js.map +1 -0
- package/dist/src/health/readinessCheck.d.ts +1 -1
- package/dist/src/health/readinessCheck.d.ts.map +1 -1
- package/dist/src/index.js +25 -152
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexer/FrontmatterParser.d.ts +6 -0
- package/dist/src/indexer/FrontmatterParser.d.ts.map +1 -1
- package/dist/src/indexer/FrontmatterParser.js +15 -0
- package/dist/src/indexer/FrontmatterParser.js.map +1 -1
- package/dist/src/indexer/LocalIndexer.d.ts +4 -0
- package/dist/src/indexer/LocalIndexer.d.ts.map +1 -1
- package/dist/src/indexer/LocalIndexer.js +3 -0
- package/dist/src/indexer/LocalIndexer.js.map +1 -1
- package/dist/src/middleware/degradation.d.ts.map +1 -1
- package/dist/src/middleware/degradation.js +8 -0
- package/dist/src/middleware/degradation.js.map +1 -1
- package/dist/src/middleware/errorFormatter.builders.d.ts +49 -0
- package/dist/src/middleware/errorFormatter.builders.d.ts.map +1 -0
- package/dist/src/middleware/errorFormatter.builders.js +237 -0
- package/dist/src/middleware/errorFormatter.builders.js.map +1 -0
- package/dist/src/middleware/errorFormatter.d.ts +5 -100
- package/dist/src/middleware/errorFormatter.d.ts.map +1 -1
- package/dist/src/middleware/errorFormatter.js +16 -238
- package/dist/src/middleware/errorFormatter.js.map +1 -1
- package/dist/src/middleware/errorFormatter.types.d.ts +81 -0
- package/dist/src/middleware/errorFormatter.types.d.ts.map +1 -0
- package/dist/src/middleware/errorFormatter.types.js +34 -0
- package/dist/src/middleware/errorFormatter.types.js.map +1 -0
- package/dist/src/middleware/toolFeatureMapping.d.ts +1 -1
- package/dist/src/middleware/toolFeatureMapping.d.ts.map +1 -1
- package/dist/src/middleware/toolFeatureMapping.js +10 -0
- package/dist/src/middleware/toolFeatureMapping.js.map +1 -1
- package/dist/src/tool-dispatch.d.ts +27 -0
- package/dist/src/tool-dispatch.d.ts.map +1 -0
- package/dist/src/tool-dispatch.js +142 -0
- package/dist/src/tool-dispatch.js.map +1 -0
- package/dist/src/tools/LocalSkillSearch.d.ts.map +1 -1
- package/dist/src/tools/LocalSkillSearch.js +4 -0
- package/dist/src/tools/LocalSkillSearch.js.map +1 -1
- package/dist/src/tools/compare.types.d.ts +5 -1
- package/dist/src/tools/compare.types.d.ts.map +1 -1
- package/dist/src/tools/compare.types.js.map +1 -1
- package/dist/src/tools/get-skill.d.ts.map +1 -1
- package/dist/src/tools/get-skill.js +30 -0
- package/dist/src/tools/get-skill.js.map +1 -1
- package/dist/src/tools/index.d.ts +8 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +8 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/install.d.ts +7 -58
- package/dist/src/tools/install.d.ts.map +1 -1
- package/dist/src/tools/install.dep-helpers.d.ts +41 -0
- package/dist/src/tools/install.dep-helpers.d.ts.map +1 -0
- package/dist/src/tools/install.dep-helpers.js +68 -0
- package/dist/src/tools/install.dep-helpers.js.map +1 -0
- package/dist/src/tools/install.dep-helpers.test.d.ts +6 -0
- package/dist/src/tools/install.dep-helpers.test.d.ts.map +1 -0
- package/dist/src/tools/install.dep-helpers.test.js +109 -0
- package/dist/src/tools/install.dep-helpers.test.js.map +1 -0
- package/dist/src/tools/install.js +49 -109
- package/dist/src/tools/install.js.map +1 -1
- package/dist/src/tools/install.optimize.d.ts +46 -0
- package/dist/src/tools/install.optimize.d.ts.map +1 -0
- package/dist/src/tools/install.optimize.js +67 -0
- package/dist/src/tools/install.optimize.js.map +1 -0
- package/dist/src/tools/install.tool.d.ts +44 -0
- package/dist/src/tools/install.tool.d.ts.map +1 -0
- package/dist/src/tools/install.tool.js +44 -0
- package/dist/src/tools/install.tool.js.map +1 -0
- package/dist/src/tools/install.types.d.ts +14 -1
- package/dist/src/tools/install.types.d.ts.map +1 -1
- package/dist/src/tools/install.types.js.map +1 -1
- package/dist/src/tools/outdated.d.ts +101 -0
- package/dist/src/tools/outdated.d.ts.map +1 -0
- package/dist/src/tools/outdated.js +214 -0
- package/dist/src/tools/outdated.js.map +1 -0
- package/dist/src/tools/outdated.test.d.ts +6 -0
- package/dist/src/tools/outdated.test.d.ts.map +1 -0
- package/dist/src/tools/outdated.test.js +287 -0
- package/dist/src/tools/outdated.test.js.map +1 -0
- package/dist/src/tools/recommend.d.ts +2 -4
- package/dist/src/tools/recommend.d.ts.map +1 -1
- package/dist/src/tools/recommend.format.d.ts +28 -0
- package/dist/src/tools/recommend.format.d.ts.map +1 -0
- package/dist/src/tools/recommend.format.js +111 -0
- package/dist/src/tools/recommend.format.js.map +1 -0
- package/dist/src/tools/recommend.js +6 -97
- package/dist/src/tools/recommend.js.map +1 -1
- package/dist/src/tools/recommend.types.d.ts +2 -2
- package/dist/src/tools/search.d.ts +24 -21
- package/dist/src/tools/search.d.ts.map +1 -1
- package/dist/src/tools/search.formatter.d.ts +30 -0
- package/dist/src/tools/search.formatter.d.ts.map +1 -0
- package/dist/src/tools/search.formatter.js +64 -0
- package/dist/src/tools/search.formatter.js.map +1 -0
- package/dist/src/tools/search.js +55 -54
- package/dist/src/tools/search.js.map +1 -1
- package/dist/src/tools/skill-audit.d.ts +98 -0
- package/dist/src/tools/skill-audit.d.ts.map +1 -0
- package/dist/src/tools/skill-audit.js +105 -0
- package/dist/src/tools/skill-audit.js.map +1 -0
- package/dist/src/tools/skill-audit.test.d.ts +6 -0
- package/dist/src/tools/skill-audit.test.d.ts.map +1 -0
- package/dist/src/tools/skill-audit.test.js +121 -0
- package/dist/src/tools/skill-audit.test.js.map +1 -0
- package/dist/src/tools/skill-diff.d.ts +107 -0
- package/dist/src/tools/skill-diff.d.ts.map +1 -0
- package/dist/src/tools/skill-diff.js +268 -0
- package/dist/src/tools/skill-diff.js.map +1 -0
- package/dist/src/tools/skill-diff.test.d.ts +6 -0
- package/dist/src/tools/skill-diff.test.d.ts.map +1 -0
- package/dist/src/tools/skill-diff.test.js +260 -0
- package/dist/src/tools/skill-diff.test.js.map +1 -0
- package/dist/src/tools/skill-pack-audit.d.ts +96 -0
- package/dist/src/tools/skill-pack-audit.d.ts.map +1 -0
- package/dist/src/tools/skill-pack-audit.js +183 -0
- package/dist/src/tools/skill-pack-audit.js.map +1 -0
- package/dist/src/tools/skill-updates.d.ts +1 -1
- package/dist/src/tools/skill-updates.d.ts.map +1 -1
- package/dist/src/tools/uninstall.d.ts.map +1 -1
- package/dist/src/tools/uninstall.js +9 -0
- package/dist/src/tools/uninstall.js.map +1 -1
- package/dist/src/tools/validate.d.ts.map +1 -1
- package/dist/src/tools/validate.dep.test.d.ts +6 -0
- package/dist/src/tools/validate.dep.test.d.ts.map +1 -0
- package/dist/src/tools/validate.dep.test.js +77 -0
- package/dist/src/tools/validate.dep.test.js.map +1 -0
- package/dist/src/tools/validate.helpers.d.ts +12 -0
- package/dist/src/tools/validate.helpers.d.ts.map +1 -1
- package/dist/src/tools/validate.helpers.js +90 -19
- package/dist/src/tools/validate.helpers.js.map +1 -1
- package/dist/src/tools/validate.js +3 -1
- package/dist/src/tools/validate.js.map +1 -1
- package/dist/src/utils/validation.d.ts +13 -0
- package/dist/src/utils/validation.d.ts.map +1 -1
- package/dist/src/utils/validation.js +27 -0
- package/dist/src/utils/validation.js.map +1 -1
- package/dist/tests/health.test.js +4 -4
- package/dist/tests/health.test.js.map +1 -1
- package/dist/tests/integration/recommend.integration.test.js +3 -0
- package/dist/tests/integration/recommend.integration.test.js.map +1 -1
- package/dist/tests/integration/setup.d.ts +4 -1
- package/dist/tests/integration/setup.d.ts.map +1 -1
- package/dist/tests/integration/setup.js +6 -1
- package/dist/tests/integration/setup.js.map +1 -1
- package/dist/tests/integration/validate.integration.test.js +4 -2
- package/dist/tests/integration/validate.integration.test.js.map +1 -1
- package/dist/tests/recommend.test.js +3 -0
- package/dist/tests/recommend.test.js.map +1 -1
- package/dist/tests/unit/skill-pack-audit.test.d.ts +8 -0
- package/dist/tests/unit/skill-pack-audit.test.d.ts.map +1 -0
- package/dist/tests/unit/skill-pack-audit.test.js +342 -0
- package/dist/tests/unit/skill-pack-audit.test.js.map +1 -0
- package/dist/tests/unit/validate-helpers.test.js +99 -2
- package/dist/tests/unit/validate-helpers.test.js.map +1 -1
- package/dist/tests/validate.test.js +4 -0
- package/dist/tests/validate.test.js.map +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
package/dist/src/tools/index.js
CHANGED
|
@@ -21,4 +21,12 @@ export { analyzeToolSchema, analyzeInputSchema, executeAnalyze, formatAnalysisRe
|
|
|
21
21
|
export { indexLocalToolSchema, indexLocalInputSchema, executeIndexLocal, formatIndexLocalResults, } from './index-local.js';
|
|
22
22
|
// Publish tool (SMI-2440)
|
|
23
23
|
export { publishToolSchema, publishInputSchema, executePublish, formatPublishResults, } from './publish.js';
|
|
24
|
+
// Skill Updates tool (SMI-skill-version-tracking Wave 1)
|
|
25
|
+
export { skillUpdatesToolSchema, skillUpdatesInputSchema, executeSkillUpdates, } from './skill-updates.js';
|
|
26
|
+
// Skill Diff tool (SMI-skill-version-tracking Wave 2)
|
|
27
|
+
export { skillDiffToolSchema, skillDiffInputSchema, executeSkillDiff, formatSkillDiffResults, } from './skill-diff.js';
|
|
28
|
+
// Skill Audit tool (SMI-skill-version-tracking Wave 3)
|
|
29
|
+
export { skillAuditToolSchema, skillAuditInputSchema, executeSkillAudit } from './skill-audit.js';
|
|
30
|
+
// Skill Outdated tool (SMI-3138 Wave 5)
|
|
31
|
+
export { outdatedToolSchema, outdatedInputSchema, executeOutdated } from './outdated.js';
|
|
24
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGlF,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAG5E,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAGvB,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGpE,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AAGvB,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,eAAe,CAAA;AAGtB,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,cAAc,CAAA;AAGrB,kCAAkC;AAClC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAA;AAQrB,qCAAqC;AACrC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AAGzB,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGlF,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAG5E,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAGvB,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGpE,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AAGvB,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,eAAe,CAAA;AAGtB,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,cAAc,CAAA;AAGrB,kCAAkC;AAClC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAA;AAQrB,qCAAqC;AACrC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AAGzB,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,cAAc,CAAA;AAGrB,yDAAyD;AACzD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;AAG3B,sDAAsD;AACtD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AAGxB,uDAAuD;AACvD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAQjG,wCAAwC;AACxC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1,73 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview MCP Install Skill Tool for downloading and installing skills
|
|
3
3
|
* @module @skillsmith/mcp-server/tools/install
|
|
4
|
-
* @see
|
|
5
|
-
*
|
|
6
|
-
* Provides skill installation functionality with:
|
|
7
|
-
* - GitHub repository fetching (supports owner/repo and full URLs)
|
|
8
|
-
* - Automatic security scanning before installation
|
|
9
|
-
* - SKILL.md validation
|
|
10
|
-
* - Manifest tracking of installed skills
|
|
11
|
-
* - Optional file fetching (README.md, examples.md, config.json)
|
|
4
|
+
* @see SMI-2741: Split to meet 500-line standard
|
|
5
|
+
* @see SMI-3137: Wave 4 — Dependency intelligence persistence
|
|
12
6
|
*
|
|
13
7
|
* Skills are installed to ~/.claude/skills/ and tracked in ~/.skillsmith/manifest.json
|
|
14
8
|
*/
|
|
15
9
|
import type { ToolContext } from '../context.js';
|
|
16
10
|
import { type InstallInput, type InstallResult } from './install.types.js';
|
|
11
|
+
export { installTool } from './install.tool.js';
|
|
12
|
+
export { default } from './install.tool.js';
|
|
17
13
|
export { installInputSchema, type InstallInput, type InstallResult } from './install.types.js';
|
|
18
14
|
/**
|
|
19
15
|
* Install a skill from GitHub to the local Claude Code skills directory.
|
|
20
16
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* 3. Fetches SKILL.md from GitHub (required)
|
|
25
|
-
* 4. Validates SKILL.md content
|
|
26
|
-
* 5. Runs security scan (unless skipScan=true)
|
|
27
|
-
* 6. Creates installation directory at ~/.claude/skills/{skillName}
|
|
28
|
-
* 7. Writes skill files
|
|
29
|
-
* 8. Updates manifest at ~/.skillsmith/manifest.json
|
|
30
|
-
*
|
|
31
|
-
* @param input - Installation parameters
|
|
32
|
-
* @param input.skillId - Skill ID (owner/repo) or full GitHub URL
|
|
33
|
-
* @param input.force - Force reinstall if skill already exists (default: false)
|
|
34
|
-
* @param input.skipScan - Skip security scan (default: false, not recommended)
|
|
35
|
-
* @returns Promise resolving to installation result with success status
|
|
17
|
+
* @param input - Installation parameters (skillId, force, skipScan)
|
|
18
|
+
* @param _context - Optional tool context (falls back to singleton)
|
|
19
|
+
* @returns Installation result with success status, security report, and dep intel
|
|
36
20
|
*/
|
|
37
21
|
export declare function installSkill(input: InstallInput, _context?: ToolContext): Promise<InstallResult>;
|
|
38
|
-
/**
|
|
39
|
-
* MCP tool definition
|
|
40
|
-
*/
|
|
41
|
-
export declare const installTool: {
|
|
42
|
-
name: string;
|
|
43
|
-
description: string;
|
|
44
|
-
inputSchema: {
|
|
45
|
-
type: "object";
|
|
46
|
-
properties: {
|
|
47
|
-
skillId: {
|
|
48
|
-
type: string;
|
|
49
|
-
description: string;
|
|
50
|
-
};
|
|
51
|
-
force: {
|
|
52
|
-
type: string;
|
|
53
|
-
description: string;
|
|
54
|
-
};
|
|
55
|
-
skipScan: {
|
|
56
|
-
type: string;
|
|
57
|
-
description: string;
|
|
58
|
-
};
|
|
59
|
-
skipOptimize: {
|
|
60
|
-
type: string;
|
|
61
|
-
description: string;
|
|
62
|
-
};
|
|
63
|
-
conflictAction: {
|
|
64
|
-
type: string;
|
|
65
|
-
enum: string[];
|
|
66
|
-
description: string;
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
required: string[];
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
export default installTool;
|
|
73
22
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AAuB3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG3C,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE9F;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,aAAa,CAAC,CA+axB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Dependency intelligence helpers for install tool
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/install.dep-helpers
|
|
4
|
+
* @see SMI-3137: Wave 4 — Surface dependency intelligence in MCP responses
|
|
5
|
+
*
|
|
6
|
+
* Extracts and persists dependency data after successful skill installation.
|
|
7
|
+
* Kept in a companion file to avoid pushing install.ts over the 500-line limit.
|
|
8
|
+
*/
|
|
9
|
+
import { type SkillDependencyRepository, type DependencyDeclaration } from '@skillsmith/core';
|
|
10
|
+
/**
|
|
11
|
+
* Dependency intelligence result included in the install response.
|
|
12
|
+
*/
|
|
13
|
+
export interface DepIntelResult {
|
|
14
|
+
/** Inferred MCP server names from skill content */
|
|
15
|
+
dep_inferred_servers: string[];
|
|
16
|
+
/** Declared dependency block from frontmatter (if present) */
|
|
17
|
+
dep_declared: DependencyDeclaration | undefined;
|
|
18
|
+
/** Warnings about MCP servers referenced but not configured */
|
|
19
|
+
dep_warnings: string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Extract dependency intelligence from skill content after successful install.
|
|
23
|
+
*
|
|
24
|
+
* @param skillMdContent - Raw SKILL.md content
|
|
25
|
+
* @param metadata - Parsed frontmatter metadata (null if parsing failed)
|
|
26
|
+
* @returns Dependency intelligence data to include in install response
|
|
27
|
+
*/
|
|
28
|
+
export declare function extractDepIntel(skillMdContent: string, metadata: Record<string, unknown> | null): DepIntelResult;
|
|
29
|
+
/**
|
|
30
|
+
* Persist merged dependencies (declared + inferred) to the database.
|
|
31
|
+
*
|
|
32
|
+
* Best-effort: silently returns if the skill_dependencies table does not
|
|
33
|
+
* exist (pre-migration databases).
|
|
34
|
+
*
|
|
35
|
+
* @param repo - SkillDependencyRepository instance
|
|
36
|
+
* @param skillId - Skill ID to associate dependencies with
|
|
37
|
+
* @param content - Raw SKILL.md content for MCP reference extraction
|
|
38
|
+
* @param declared - Parsed dependency declaration from frontmatter
|
|
39
|
+
*/
|
|
40
|
+
export declare function persistDependencies(repo: SkillDependencyRepository, skillId: string, content: string, declared: DependencyDeclaration | undefined): void;
|
|
41
|
+
//# sourceMappingURL=install.dep-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.dep-helpers.d.ts","sourceRoot":"","sources":["../../../src/tools/install.dep-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAE3B,MAAM,kBAAkB,CAAA;AAEzB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,8DAA8D;IAC9D,YAAY,EAAE,qBAAqB,GAAG,SAAS,CAAA;IAC/C,+DAA+D;IAC/D,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACvC,cAAc,CAgBhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,qBAAqB,GAAG,SAAS,GAC1C,IAAI,CA4BN"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Dependency intelligence helpers for install tool
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/install.dep-helpers
|
|
4
|
+
* @see SMI-3137: Wave 4 — Surface dependency intelligence in MCP responses
|
|
5
|
+
*
|
|
6
|
+
* Extracts and persists dependency data after successful skill installation.
|
|
7
|
+
* Kept in a companion file to avoid pushing install.ts over the 500-line limit.
|
|
8
|
+
*/
|
|
9
|
+
import { extractMcpReferences, mergeDependencies, } from '@skillsmith/core';
|
|
10
|
+
/**
|
|
11
|
+
* Extract dependency intelligence from skill content after successful install.
|
|
12
|
+
*
|
|
13
|
+
* @param skillMdContent - Raw SKILL.md content
|
|
14
|
+
* @param metadata - Parsed frontmatter metadata (null if parsing failed)
|
|
15
|
+
* @returns Dependency intelligence data to include in install response
|
|
16
|
+
*/
|
|
17
|
+
export function extractDepIntel(skillMdContent, metadata) {
|
|
18
|
+
const mcpResult = extractMcpReferences(skillMdContent);
|
|
19
|
+
// Parse declared deps from metadata if present
|
|
20
|
+
const declared = metadata?.dependencies ?? undefined;
|
|
21
|
+
const warnings = [];
|
|
22
|
+
for (const server of mcpResult.highConfidenceServers) {
|
|
23
|
+
warnings.push(`MCP server '${server}' is referenced but may not be configured`);
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
dep_inferred_servers: mcpResult.servers,
|
|
27
|
+
dep_declared: declared,
|
|
28
|
+
dep_warnings: warnings,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Persist merged dependencies (declared + inferred) to the database.
|
|
33
|
+
*
|
|
34
|
+
* Best-effort: silently returns if the skill_dependencies table does not
|
|
35
|
+
* exist (pre-migration databases).
|
|
36
|
+
*
|
|
37
|
+
* @param repo - SkillDependencyRepository instance
|
|
38
|
+
* @param skillId - Skill ID to associate dependencies with
|
|
39
|
+
* @param content - Raw SKILL.md content for MCP reference extraction
|
|
40
|
+
* @param declared - Parsed dependency declaration from frontmatter
|
|
41
|
+
*/
|
|
42
|
+
export function persistDependencies(repo, skillId, content, declared) {
|
|
43
|
+
const mcpResult = extractMcpReferences(content);
|
|
44
|
+
const merged = mergeDependencies(declared, mcpResult);
|
|
45
|
+
if (merged.length === 0)
|
|
46
|
+
return;
|
|
47
|
+
// Convert MergedDependency[] to SkillDependencyRow[] for the repository
|
|
48
|
+
const rows = merged.map((dep) => ({
|
|
49
|
+
skill_id: skillId,
|
|
50
|
+
dep_type: dep.depType,
|
|
51
|
+
dep_target: dep.depTarget,
|
|
52
|
+
dep_version: dep.depVersion,
|
|
53
|
+
dep_source: dep.depSource,
|
|
54
|
+
confidence: dep.confidence,
|
|
55
|
+
metadata: dep.metadata,
|
|
56
|
+
}));
|
|
57
|
+
// Group by source for setDependencies calls (each call stamps a single source)
|
|
58
|
+
const bySource = new Map();
|
|
59
|
+
for (const row of rows) {
|
|
60
|
+
const existing = bySource.get(row.dep_source) ?? [];
|
|
61
|
+
existing.push(row);
|
|
62
|
+
bySource.set(row.dep_source, existing);
|
|
63
|
+
}
|
|
64
|
+
for (const [source, sourceRows] of bySource) {
|
|
65
|
+
repo.setDependencies(skillId, sourceRows, source);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=install.dep-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.dep-helpers.js","sourceRoot":"","sources":["../../../src/tools/install.dep-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAIlB,MAAM,kBAAkB,CAAA;AAczB;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,cAAsB,EACtB,QAAwC;IAExC,MAAM,SAAS,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;IAEtD,+CAA+C;IAC/C,MAAM,QAAQ,GAAI,QAAQ,EAAE,YAAsC,IAAI,SAAS,CAAA;IAE/E,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,eAAe,MAAM,2CAA2C,CAAC,CAAA;IACjF,CAAC;IAED,OAAO;QACL,oBAAoB,EAAE,SAAS,CAAC,OAAO;QACvC,YAAY,EAAE,QAAQ;QACtB,YAAY,EAAE,QAAQ;KACvB,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAA+B,EAC/B,OAAe,EACf,OAAe,EACf,QAA2C;IAE3C,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAErD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAE/B,wEAAwE;IACxE,MAAM,IAAI,GAAyB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,GAAG,CAAC,OAAO;QACrB,UAAU,EAAE,GAAG,CAAC,SAAS;QACzB,WAAW,EAAE,GAAG,CAAC,UAAU;QAC3B,UAAU,EAAE,GAAG,CAAC,SAAS;QACzB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC,CAAC,CAAA;IAEH,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAA;IACxD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,MAA0C,CAAC,CAAA;IACvF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.dep-helpers.test.d.ts","sourceRoot":"","sources":["../../../src/tools/install.dep-helpers.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Unit tests for install dependency intelligence helpers
|
|
3
|
+
* @see SMI-3137: Wave 4 — Surface dependency intelligence
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
6
|
+
import { extractDepIntel, persistDependencies } from './install.dep-helpers.js';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// extractDepIntel tests
|
|
9
|
+
// ============================================================================
|
|
10
|
+
describe('extractDepIntel', () => {
|
|
11
|
+
it('returns empty arrays when no MCP refs exist', () => {
|
|
12
|
+
const result = extractDepIntel('# Simple skill\n\nNo MCP references here.', null);
|
|
13
|
+
expect(result.dep_inferred_servers).toEqual([]);
|
|
14
|
+
expect(result.dep_declared).toBeUndefined();
|
|
15
|
+
expect(result.dep_warnings).toEqual([]);
|
|
16
|
+
});
|
|
17
|
+
it('detects inferred MCP servers from content', () => {
|
|
18
|
+
const content = `
|
|
19
|
+
# My Skill
|
|
20
|
+
|
|
21
|
+
Use mcp__linear__save_issue to create issues.
|
|
22
|
+
Use mcp__slack__send_message for notifications.
|
|
23
|
+
`;
|
|
24
|
+
const result = extractDepIntel(content, null);
|
|
25
|
+
expect(result.dep_inferred_servers).toContain('linear');
|
|
26
|
+
expect(result.dep_inferred_servers).toContain('slack');
|
|
27
|
+
expect(result.dep_warnings).toHaveLength(2);
|
|
28
|
+
expect(result.dep_warnings[0]).toContain('linear');
|
|
29
|
+
expect(result.dep_warnings[1]).toContain('slack');
|
|
30
|
+
});
|
|
31
|
+
it('passes through declared dependencies from metadata', () => {
|
|
32
|
+
const metadata = {
|
|
33
|
+
dependencies: {
|
|
34
|
+
skills: [{ name: 'other/skill', type: 'hard', version: '^1.0.0' }],
|
|
35
|
+
platform: {
|
|
36
|
+
mcp_servers: [{ name: 'linear', package: '@anthropic/linear-mcp', required: true }],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
const result = extractDepIntel('# Skill\n\nContent.', metadata);
|
|
41
|
+
expect(result.dep_declared).toBeDefined();
|
|
42
|
+
expect(result.dep_declared?.skills).toHaveLength(1);
|
|
43
|
+
expect(result.dep_declared?.platform?.mcp_servers).toHaveLength(1);
|
|
44
|
+
});
|
|
45
|
+
it('returns undefined dep_declared when metadata has no dependencies', () => {
|
|
46
|
+
const metadata = { name: 'test-skill' };
|
|
47
|
+
const result = extractDepIntel('# Skill\n\nContent.', metadata);
|
|
48
|
+
expect(result.dep_declared).toBeUndefined();
|
|
49
|
+
});
|
|
50
|
+
it('handles null metadata gracefully', () => {
|
|
51
|
+
const result = extractDepIntel('# Skill with mcp__github__create_issue ref', null);
|
|
52
|
+
expect(result.dep_declared).toBeUndefined();
|
|
53
|
+
expect(result.dep_inferred_servers).toContain('github');
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// persistDependencies tests
|
|
58
|
+
// ============================================================================
|
|
59
|
+
describe('persistDependencies', () => {
|
|
60
|
+
let mockRepo;
|
|
61
|
+
beforeEach(() => {
|
|
62
|
+
mockRepo = {
|
|
63
|
+
setDependencies: vi.fn(),
|
|
64
|
+
getDependencies: vi.fn().mockReturnValue([]),
|
|
65
|
+
getDependenciesBySource: vi.fn().mockReturnValue([]),
|
|
66
|
+
getDependents: vi.fn().mockReturnValue([]),
|
|
67
|
+
clearInferred: vi.fn(),
|
|
68
|
+
clearAll: vi.fn(),
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
it('does nothing when no dependencies are found', () => {
|
|
72
|
+
persistDependencies(mockRepo, 'test/skill', '# Simple skill\n\nNo deps.', undefined);
|
|
73
|
+
expect(mockRepo.setDependencies).not.toHaveBeenCalled();
|
|
74
|
+
});
|
|
75
|
+
it('persists inferred MCP dependencies', () => {
|
|
76
|
+
const content = '# Skill\n\nUse mcp__linear__save_issue for issues.';
|
|
77
|
+
persistDependencies(mockRepo, 'test/skill', content, undefined);
|
|
78
|
+
expect(mockRepo.setDependencies).toHaveBeenCalled();
|
|
79
|
+
const callArgs = vi.mocked(mockRepo.setDependencies).mock.calls[0];
|
|
80
|
+
expect(callArgs[0]).toBe('test/skill');
|
|
81
|
+
expect(callArgs[1]).toHaveLength(1);
|
|
82
|
+
expect(callArgs[1][0].dep_target).toBe('linear');
|
|
83
|
+
expect(callArgs[1][0].dep_type).toBe('mcp_server');
|
|
84
|
+
expect(callArgs[2]).toBe('inferred_static');
|
|
85
|
+
});
|
|
86
|
+
it('persists declared dependencies alongside inferred ones', () => {
|
|
87
|
+
const content = '# Skill\n\nUse mcp__slack__send_message for notifs.';
|
|
88
|
+
const declared = {
|
|
89
|
+
skills: [{ name: 'other/skill', type: 'hard', version: '^1.0.0' }],
|
|
90
|
+
};
|
|
91
|
+
persistDependencies(mockRepo, 'test/skill', content, declared);
|
|
92
|
+
// Should be called once for 'declared' source, once for 'inferred_static' source
|
|
93
|
+
expect(mockRepo.setDependencies).toHaveBeenCalledTimes(2);
|
|
94
|
+
});
|
|
95
|
+
it('deduplicates declared MCP servers over inferred', () => {
|
|
96
|
+
const content = '# Skill\n\nUse mcp__linear__save_issue for issues.';
|
|
97
|
+
const declared = {
|
|
98
|
+
platform: {
|
|
99
|
+
mcp_servers: [{ name: 'linear', package: '@a/b', required: true }],
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
persistDependencies(mockRepo, 'test/skill', content, declared);
|
|
103
|
+
// Only declared source should be called (linear is deduplicated)
|
|
104
|
+
expect(mockRepo.setDependencies).toHaveBeenCalledTimes(1);
|
|
105
|
+
const callArgs = vi.mocked(mockRepo.setDependencies).mock.calls[0];
|
|
106
|
+
expect(callArgs[2]).toBe('declared');
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=install.dep-helpers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.dep-helpers.test.js","sourceRoot":"","sources":["../../../src/tools/install.dep-helpers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview MCP Install Skill Tool for downloading and installing skills
|
|
3
3
|
* @module @skillsmith/mcp-server/tools/install
|
|
4
|
-
* @see
|
|
5
|
-
*
|
|
6
|
-
* Provides skill installation functionality with:
|
|
7
|
-
* - GitHub repository fetching (supports owner/repo and full URLs)
|
|
8
|
-
* - Automatic security scanning before installation
|
|
9
|
-
* - SKILL.md validation
|
|
10
|
-
* - Manifest tracking of installed skills
|
|
11
|
-
* - Optional file fetching (README.md, examples.md, config.json)
|
|
4
|
+
* @see SMI-2741: Split to meet 500-line standard
|
|
5
|
+
* @see SMI-3137: Wave 4 — Dependency intelligence persistence
|
|
12
6
|
*
|
|
13
7
|
* Skills are installed to ~/.claude/skills/ and tracked in ~/.skillsmith/manifest.json
|
|
14
8
|
*/
|
|
15
|
-
import { SecurityScanner,
|
|
9
|
+
import { SecurityScanner, safeWriteFile } from '@skillsmith/core';
|
|
16
10
|
import * as fs from 'fs/promises';
|
|
17
11
|
import * as path from 'path';
|
|
18
12
|
import * as os from 'os';
|
|
19
13
|
import { getToolContext } from '../context.js';
|
|
20
|
-
// Import types
|
|
21
14
|
import { TRUST_TIER_SCANNER_OPTIONS, CLAUDE_SKILLS_DIR, } from './install.types.js';
|
|
22
|
-
// Import helpers
|
|
23
15
|
import { loadManifest, updateManifestSafely, parseSkillId, parseRepoUrl, lookupSkillFromRegistry, fetchFromGitHub, validateSkillMd, generateOptimizedTips, hashContent, storeOriginal, } from './install.helpers.js';
|
|
24
16
|
// SMI-1867: Conflict resolution logic (extracted per governance review)
|
|
25
17
|
import { checkForConflicts, handleMergeAction } from './install.conflict.js';
|
|
18
|
+
// SMI-1788/SMI-2741: Optimization layer extracted to companion file
|
|
19
|
+
import { applySkillOptimization } from './install.optimize.js';
|
|
20
|
+
// SMI-3137: Dependency intelligence persistence
|
|
21
|
+
import { extractDepIntel, persistDependencies } from './install.dep-helpers.js';
|
|
22
|
+
// SMI-2741: MCP tool definition extracted to companion file
|
|
23
|
+
export { installTool } from './install.tool.js';
|
|
24
|
+
export { default } from './install.tool.js';
|
|
26
25
|
// Re-export only public API types (SMI-1718: trimmed internal exports)
|
|
27
26
|
export { installInputSchema } from './install.types.js';
|
|
28
27
|
/**
|
|
29
28
|
* Install a skill from GitHub to the local Claude Code skills directory.
|
|
30
29
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* 3. Fetches SKILL.md from GitHub (required)
|
|
35
|
-
* 4. Validates SKILL.md content
|
|
36
|
-
* 5. Runs security scan (unless skipScan=true)
|
|
37
|
-
* 6. Creates installation directory at ~/.claude/skills/{skillName}
|
|
38
|
-
* 7. Writes skill files
|
|
39
|
-
* 8. Updates manifest at ~/.skillsmith/manifest.json
|
|
40
|
-
*
|
|
41
|
-
* @param input - Installation parameters
|
|
42
|
-
* @param input.skillId - Skill ID (owner/repo) or full GitHub URL
|
|
43
|
-
* @param input.force - Force reinstall if skill already exists (default: false)
|
|
44
|
-
* @param input.skipScan - Skip security scan (default: false, not recommended)
|
|
45
|
-
* @returns Promise resolving to installation result with success status
|
|
30
|
+
* @param input - Installation parameters (skillId, force, skipScan)
|
|
31
|
+
* @param _context - Optional tool context (falls back to singleton)
|
|
32
|
+
* @returns Installation result with success status, security report, and dep intel
|
|
46
33
|
*/
|
|
47
34
|
export async function installSkill(input, _context) {
|
|
48
35
|
// SMI-1491: Get context for registry lookup (use provided or fallback to singleton)
|
|
@@ -253,45 +240,16 @@ export async function installSkill(input, _context) {
|
|
|
253
240
|
}
|
|
254
241
|
}
|
|
255
242
|
// SMI-1788: Apply Skillsmith Optimization Layer (unless skipped)
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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
|
-
}
|
|
243
|
+
const optimizeResult = input.skipOptimize
|
|
244
|
+
? {
|
|
245
|
+
finalSkillContent: skillMdContent,
|
|
246
|
+
subSkillFiles: [],
|
|
247
|
+
subagentContent: undefined,
|
|
248
|
+
claudeMdSnippet: undefined,
|
|
249
|
+
optimizationInfo: { optimized: false },
|
|
287
250
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
console.warn('[install] Optimization failed, using original content:', transformError);
|
|
291
|
-
finalSkillContent = skillMdContent;
|
|
292
|
-
optimizationInfo = { optimized: false };
|
|
293
|
-
}
|
|
294
|
-
}
|
|
251
|
+
: await applySkillOptimization(input.skillId, skillName, skillMdContent, context.db);
|
|
252
|
+
const { finalSkillContent, subSkillFiles, subagentContent, claudeMdSnippet, optimizationInfo } = optimizeResult;
|
|
295
253
|
// SMI-1867: Compute hash before file operations (needed in manifest update)
|
|
296
254
|
const contentHash = hashContent(finalSkillContent);
|
|
297
255
|
// SMI-1792, SMI-1797: Atomic file installation with transaction pattern
|
|
@@ -385,6 +343,20 @@ export async function installSkill(input, _context) {
|
|
|
385
343
|
},
|
|
386
344
|
},
|
|
387
345
|
}));
|
|
346
|
+
// SMI-2761: Record session co-install pairs for "also installed" recommendations
|
|
347
|
+
context.coInstallRepository.recordSessionCoInstalls([
|
|
348
|
+
...context.sessionInstalledSkillIds,
|
|
349
|
+
input.skillId,
|
|
350
|
+
]);
|
|
351
|
+
context.sessionInstalledSkillIds.push(input.skillId);
|
|
352
|
+
// SMI-3137: Extract and persist dependency intelligence
|
|
353
|
+
const depIntel = extractDepIntel(skillMdContent, null);
|
|
354
|
+
try {
|
|
355
|
+
persistDependencies(context.skillDependencyRepository, input.skillId, skillMdContent, depIntel.dep_declared);
|
|
356
|
+
}
|
|
357
|
+
catch {
|
|
358
|
+
// Dependency persistence is best-effort
|
|
359
|
+
}
|
|
388
360
|
return {
|
|
389
361
|
success: true,
|
|
390
362
|
skillId: input.skillId,
|
|
@@ -393,6 +365,7 @@ export async function installSkill(input, _context) {
|
|
|
393
365
|
trustTier, // SMI-1533: Include trust tier in result
|
|
394
366
|
optimization: optimizationInfo,
|
|
395
367
|
backupPath, // SMI-1895: Include backup path if created during conflict resolution
|
|
368
|
+
depIntel, // SMI-3137: Dependency intelligence
|
|
396
369
|
tips: generateOptimizedTips(skillName, optimizationInfo, claudeMdSnippet),
|
|
397
370
|
};
|
|
398
371
|
}
|
|
@@ -401,19 +374,21 @@ export async function installSkill(input, _context) {
|
|
|
401
374
|
let safeErrorMessage = 'Installation failed';
|
|
402
375
|
if (error instanceof Error) {
|
|
403
376
|
// Allow specific known error types through
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
377
|
+
const knownPrefixes = [
|
|
378
|
+
'already installed',
|
|
379
|
+
'Could not find SKILL.md',
|
|
380
|
+
'registry data quality issue',
|
|
381
|
+
'Invalid SKILL.md',
|
|
382
|
+
'Security scan failed',
|
|
383
|
+
'exceeds maximum length',
|
|
384
|
+
'Refusing to write to symlink',
|
|
385
|
+
'Refusing to write to hardlinked file',
|
|
386
|
+
'Install path escapes skills directory',
|
|
387
|
+
];
|
|
388
|
+
if (knownPrefixes.some((p) => error.message.includes(p))) {
|
|
413
389
|
safeErrorMessage = error.message;
|
|
414
390
|
}
|
|
415
391
|
else {
|
|
416
|
-
// Log the full error for debugging, return sanitized message
|
|
417
392
|
console.error('[install] Error during installation:', error);
|
|
418
393
|
safeErrorMessage = 'Installation failed due to an internal error';
|
|
419
394
|
}
|
|
@@ -426,39 +401,4 @@ export async function installSkill(input, _context) {
|
|
|
426
401
|
};
|
|
427
402
|
}
|
|
428
403
|
}
|
|
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
404
|
//# 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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"}
|