@skillsmith/mcp-server 0.3.3 → 0.3.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.
Files changed (130) hide show
  1. package/README.md +5 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/__tests__/context.test.d.ts +10 -0
  4. package/dist/src/__tests__/context.test.d.ts.map +1 -0
  5. package/dist/src/__tests__/context.test.js +345 -0
  6. package/dist/src/__tests__/context.test.js.map +1 -0
  7. package/dist/src/__tests__/get-skill.test.d.ts +1 -0
  8. package/dist/src/__tests__/get-skill.test.d.ts.map +1 -1
  9. package/dist/src/__tests__/get-skill.test.js +84 -0
  10. package/dist/src/__tests__/get-skill.test.js.map +1 -1
  11. package/dist/src/__tests__/middleware/license.test.js +180 -78
  12. package/dist/src/__tests__/middleware/license.test.js.map +1 -1
  13. package/dist/src/__tests__/search.test.js +2 -1
  14. package/dist/src/__tests__/search.test.js.map +1 -1
  15. package/dist/src/__tests__/utils/validation.test.d.ts +7 -0
  16. package/dist/src/__tests__/utils/validation.test.d.ts.map +1 -0
  17. package/dist/src/__tests__/utils/validation.test.js +82 -0
  18. package/dist/src/__tests__/utils/validation.test.js.map +1 -0
  19. package/dist/src/context.d.ts +16 -0
  20. package/dist/src/context.d.ts.map +1 -1
  21. package/dist/src/context.js +57 -9
  22. package/dist/src/context.js.map +1 -1
  23. package/dist/src/index.js +1 -1
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/llm/failover.d.ts +200 -0
  26. package/dist/src/llm/failover.d.ts.map +1 -0
  27. package/dist/src/llm/failover.js +329 -0
  28. package/dist/src/llm/failover.js.map +1 -0
  29. package/dist/src/middleware/license.d.ts +5 -0
  30. package/dist/src/middleware/license.d.ts.map +1 -1
  31. package/dist/src/middleware/license.js +2 -1
  32. package/dist/src/middleware/license.js.map +1 -1
  33. package/dist/src/tools/compare.d.ts +3 -102
  34. package/dist/src/tools/compare.d.ts.map +1 -1
  35. package/dist/src/tools/compare.helpers.d.ts +36 -0
  36. package/dist/src/tools/compare.helpers.d.ts.map +1 -0
  37. package/dist/src/tools/compare.helpers.js +252 -0
  38. package/dist/src/tools/compare.helpers.js.map +1 -0
  39. package/dist/src/tools/compare.js +6 -288
  40. package/dist/src/tools/compare.js.map +1 -1
  41. package/dist/src/tools/compare.types.d.ts +133 -0
  42. package/dist/src/tools/compare.types.d.ts.map +1 -0
  43. package/dist/src/tools/compare.types.js +45 -0
  44. package/dist/src/tools/compare.types.js.map +1 -0
  45. package/dist/src/tools/get-skill.d.ts.map +1 -1
  46. package/dist/src/tools/get-skill.js +35 -2
  47. package/dist/src/tools/get-skill.js.map +1 -1
  48. package/dist/src/tools/install.d.ts +6 -60
  49. package/dist/src/tools/install.d.ts.map +1 -1
  50. package/dist/src/tools/install.helpers.d.ts +82 -0
  51. package/dist/src/tools/install.helpers.d.ts.map +1 -0
  52. package/dist/src/tools/install.helpers.js +324 -0
  53. package/dist/src/tools/install.helpers.js.map +1 -0
  54. package/dist/src/tools/install.js +117 -252
  55. package/dist/src/tools/install.js.map +1 -1
  56. package/dist/src/tools/install.types.d.ts +114 -0
  57. package/dist/src/tools/install.types.d.ts.map +1 -0
  58. package/dist/src/tools/install.types.js +91 -0
  59. package/dist/src/tools/install.types.js.map +1 -0
  60. package/dist/src/tools/recommend.d.ts +2 -148
  61. package/dist/src/tools/recommend.d.ts.map +1 -1
  62. package/dist/src/tools/recommend.helpers.d.ts +42 -0
  63. package/dist/src/tools/recommend.helpers.d.ts.map +1 -0
  64. package/dist/src/tools/recommend.helpers.js +155 -0
  65. package/dist/src/tools/recommend.helpers.js.map +1 -0
  66. package/dist/src/tools/recommend.js +75 -140
  67. package/dist/src/tools/recommend.js.map +1 -1
  68. package/dist/src/tools/recommend.types.d.ts +164 -0
  69. package/dist/src/tools/recommend.types.d.ts.map +1 -0
  70. package/dist/src/tools/recommend.types.js +87 -0
  71. package/dist/src/tools/recommend.types.js.map +1 -0
  72. package/dist/src/tools/search.d.ts +18 -4
  73. package/dist/src/tools/search.d.ts.map +1 -1
  74. package/dist/src/tools/search.js +60 -12
  75. package/dist/src/tools/search.js.map +1 -1
  76. package/dist/src/tools/validate.d.ts +3 -70
  77. package/dist/src/tools/validate.d.ts.map +1 -1
  78. package/dist/src/tools/validate.helpers.d.ts +22 -0
  79. package/dist/src/tools/validate.helpers.d.ts.map +1 -0
  80. package/dist/src/tools/validate.helpers.js +276 -0
  81. package/dist/src/tools/validate.helpers.js.map +1 -0
  82. package/dist/src/tools/validate.js +4 -337
  83. package/dist/src/tools/validate.js.map +1 -1
  84. package/dist/src/tools/validate.types.d.ts +96 -0
  85. package/dist/src/tools/validate.types.d.ts.map +1 -0
  86. package/dist/src/tools/validate.types.js +71 -0
  87. package/dist/src/tools/validate.types.js.map +1 -0
  88. package/dist/src/webhooks/index.d.ts +1 -0
  89. package/dist/src/webhooks/index.d.ts.map +1 -1
  90. package/dist/src/webhooks/index.js +2 -0
  91. package/dist/src/webhooks/index.js.map +1 -1
  92. package/dist/src/webhooks/stripe-webhook-endpoint.d.ts +68 -0
  93. package/dist/src/webhooks/stripe-webhook-endpoint.d.ts.map +1 -0
  94. package/dist/src/webhooks/stripe-webhook-endpoint.js +213 -0
  95. package/dist/src/webhooks/stripe-webhook-endpoint.js.map +1 -0
  96. package/dist/tests/integration/install.integration.test.js +148 -1
  97. package/dist/tests/integration/install.integration.test.js.map +1 -1
  98. package/dist/tests/integration/recommend.integration.test.js +2 -1
  99. package/dist/tests/integration/recommend.integration.test.js.map +1 -1
  100. package/dist/tests/llm/failover.test.d.ts +13 -0
  101. package/dist/tests/llm/failover.test.d.ts.map +1 -0
  102. package/dist/tests/llm/failover.test.js +250 -0
  103. package/dist/tests/llm/failover.test.js.map +1 -0
  104. package/dist/tests/recommend.test.js +133 -1
  105. package/dist/tests/recommend.test.js.map +1 -1
  106. package/dist/tests/tools.test.d.ts +1 -0
  107. package/dist/tests/tools.test.d.ts.map +1 -1
  108. package/dist/tests/tools.test.js +59 -1
  109. package/dist/tests/tools.test.js.map +1 -1
  110. package/dist/tests/unit/compare-helpers.test.d.ts +8 -0
  111. package/dist/tests/unit/compare-helpers.test.d.ts.map +1 -0
  112. package/dist/tests/unit/compare-helpers.test.js +224 -0
  113. package/dist/tests/unit/compare-helpers.test.js.map +1 -0
  114. package/dist/tests/unit/install-helpers.test.d.ts +8 -0
  115. package/dist/tests/unit/install-helpers.test.d.ts.map +1 -0
  116. package/dist/tests/unit/install-helpers.test.js +460 -0
  117. package/dist/tests/unit/install-helpers.test.js.map +1 -0
  118. package/dist/tests/unit/recommend-helpers.test.d.ts +8 -0
  119. package/dist/tests/unit/recommend-helpers.test.d.ts.map +1 -0
  120. package/dist/tests/unit/recommend-helpers.test.js +117 -0
  121. package/dist/tests/unit/recommend-helpers.test.js.map +1 -0
  122. package/dist/tests/unit/validate-helpers.test.d.ts +8 -0
  123. package/dist/tests/unit/validate-helpers.test.d.ts.map +1 -0
  124. package/dist/tests/unit/validate-helpers.test.js +243 -0
  125. package/dist/tests/unit/validate-helpers.test.js.map +1 -0
  126. package/package.json +1 -1
  127. package/src/assets/docs/USER_GUIDE.md +0 -220
  128. package/src/assets/skills/skillsmith/docs/QUOTAS.md +0 -182
  129. package/src/assets/skills/skillsmith/docs/SECURITY.md +0 -174
  130. package/src/assets/skills/skillsmith/docs/TRUST_TIERS.md +0 -142
@@ -11,225 +11,18 @@
11
11
  * - Optional file fetching (README.md, examples.md, config.json)
12
12
  *
13
13
  * Skills are installed to ~/.claude/skills/ and tracked in ~/.skillsmith/manifest.json
14
- *
15
- * @example
16
- * // Install from owner/repo format
17
- * const result = await installSkill({ skillId: 'anthropic/commit' });
18
- *
19
- * @example
20
- * // Install from GitHub URL
21
- * const result = await installSkill({
22
- * skillId: 'https://github.com/user/repo/tree/main/skills/my-skill'
23
- * });
24
- *
25
- * @example
26
- * // Force reinstall with security scan skip
27
- * const result = await installSkill({
28
- * skillId: 'community/helper',
29
- * force: true,
30
- * skipScan: true // Not recommended
31
- * });
32
14
  */
33
- import { z } from 'zod';
34
- import { SecurityScanner } from '@skillsmith/core';
15
+ import { SecurityScanner, TransformationService } from '@skillsmith/core';
35
16
  import * as fs from 'fs/promises';
36
17
  import * as path from 'path';
37
18
  import * as os from 'os';
38
19
  import { getToolContext } from '../context.js';
39
- // Input schema
40
- export const installInputSchema = z.object({
41
- skillId: z.string().min(1).describe('Skill ID or GitHub URL'),
42
- force: z.boolean().default(false).describe('Force reinstall if exists'),
43
- skipScan: z.boolean().default(false).describe('Skip security scan (not recommended)'),
44
- });
45
- // Paths
46
- const CLAUDE_SKILLS_DIR = path.join(os.homedir(), '.claude', 'skills');
47
- const SKILLSMITH_DIR = path.join(os.homedir(), '.skillsmith');
48
- const MANIFEST_PATH = path.join(SKILLSMITH_DIR, 'manifest.json');
49
- /**
50
- * Load or create manifest
51
- */
52
- async function loadManifest() {
53
- try {
54
- const content = await fs.readFile(MANIFEST_PATH, 'utf-8');
55
- return JSON.parse(content);
56
- }
57
- catch {
58
- return {
59
- version: '1.0.0',
60
- installedSkills: {},
61
- };
62
- }
63
- }
64
- /**
65
- * Save manifest
66
- */
67
- async function saveManifest(manifest) {
68
- await fs.mkdir(path.dirname(MANIFEST_PATH), { recursive: true });
69
- await fs.writeFile(MANIFEST_PATH, JSON.stringify(manifest, null, 2));
70
- }
71
- /**
72
- * Parse skill ID or URL to get components
73
- * SMI-1491: Added isRegistryId flag to detect registry skill IDs vs direct GitHub URLs
74
- */
75
- function parseSkillId(input) {
76
- // Handle full GitHub URLs - not registry IDs
77
- if (input.startsWith('https://github.com/')) {
78
- const url = new URL(input);
79
- const parts = url.pathname.split('/').filter(Boolean);
80
- return {
81
- owner: parts[0],
82
- repo: parts[1],
83
- path: parts.slice(2).join('/') || '',
84
- isRegistryId: false,
85
- };
86
- }
87
- // Handle slash-separated IDs
88
- if (input.includes('/')) {
89
- const parts = input.split('/');
90
- // 2-part format: Could be registry ID (author/skill-name) - needs lookup
91
- if (parts.length === 2) {
92
- return {
93
- owner: parts[0],
94
- repo: parts[1],
95
- path: '',
96
- isRegistryId: true, // Mark as potential registry ID for lookup
97
- };
98
- }
99
- // 3+ parts: owner/repo/path format (direct GitHub reference)
100
- return {
101
- owner: parts[0],
102
- repo: parts[1],
103
- path: parts.slice(2).join('/'),
104
- isRegistryId: false,
105
- };
106
- }
107
- // Handle skill ID from registry
108
- throw new Error('Invalid skill ID format: ' + input + '. Use owner/repo or GitHub URL.');
109
- }
110
- /**
111
- * Parse repo_url from registry to extract GitHub components
112
- * SMI-1491: Handles various GitHub URL formats stored in registry
113
- *
114
- * @example
115
- * // Repo root
116
- * parseRepoUrl('https://github.com/owner/repo')
117
- * // => { owner: 'owner', repo: 'repo', path: '', branch: 'main' }
118
- *
119
- * @example
120
- * // Skill in subdirectory
121
- * parseRepoUrl('https://github.com/owner/repo/tree/main/skills/commit')
122
- * // => { owner: 'owner', repo: 'repo', path: 'skills/commit', branch: 'main' }
123
- */
124
- function parseRepoUrl(repoUrl) {
125
- const url = new URL(repoUrl);
126
- const parts = url.pathname.split('/').filter(Boolean);
127
- const owner = parts[0];
128
- const repo = parts[1];
129
- // /owner/repo (skill at repo root)
130
- if (parts.length === 2) {
131
- return { owner, repo, path: '', branch: 'main' };
132
- }
133
- // /owner/repo/tree/branch/path... or /owner/repo/blob/branch/path...
134
- if (parts[2] === 'tree' || parts[2] === 'blob') {
135
- return {
136
- owner,
137
- repo,
138
- branch: parts[3],
139
- path: parts.slice(4).join('/'),
140
- };
141
- }
142
- // Unknown format - assume path starts at index 2, default to main branch
143
- return { owner, repo, path: parts.slice(2).join('/'), branch: 'main' };
144
- }
145
- /**
146
- * Look up skill in registry to get repo_url
147
- * SMI-1491: Enables install to work with registry IDs like "author/skill-name"
148
- *
149
- * Follows API-first pattern: tries live API, falls back to local DB
150
- *
151
- * @param skillId - Skill ID in author/skill-name format
152
- * @param context - Tool context with apiClient and skillRepository
153
- * @returns Skill info with repoUrl, or null if not found/no repo_url
154
- */
155
- async function lookupSkillFromRegistry(skillId, context) {
156
- // Try API first (primary data source)
157
- if (!context.apiClient.isOffline()) {
158
- try {
159
- const response = await context.apiClient.getSkill(skillId);
160
- if (response.data.repo_url) {
161
- return {
162
- repoUrl: response.data.repo_url,
163
- name: response.data.name,
164
- };
165
- }
166
- // API found skill but no repo_url - it's seed data
167
- return null;
168
- }
169
- catch {
170
- // API failed, fall through to local DB
171
- }
172
- }
173
- // Fallback: Local database
174
- const dbSkill = context.skillRepository.findById(skillId);
175
- if (dbSkill?.repoUrl) {
176
- return {
177
- repoUrl: dbSkill.repoUrl,
178
- name: dbSkill.name,
179
- };
180
- }
181
- return null;
182
- }
183
- /**
184
- * Fetch file from GitHub
185
- * SMI-1491: Added optional branch parameter to use branch from repo_url
186
- */
187
- async function fetchFromGitHub(owner, repo, filePath, branch = 'main') {
188
- const url = 'https://raw.githubusercontent.com/' + owner + '/' + repo + '/' + branch + '/' + filePath;
189
- const response = await fetch(url);
190
- if (!response.ok) {
191
- // If specified branch fails and it was 'main', try 'master' as fallback
192
- if (branch === 'main') {
193
- const masterUrl = 'https://raw.githubusercontent.com/' + owner + '/' + repo + '/master/' + filePath;
194
- const masterResponse = await fetch(masterUrl);
195
- if (!masterResponse.ok) {
196
- throw new Error('Failed to fetch ' + filePath + ': ' + response.status);
197
- }
198
- return masterResponse.text();
199
- }
200
- throw new Error('Failed to fetch ' + filePath + ': ' + response.status);
201
- }
202
- return response.text();
203
- }
204
- /**
205
- * Validate SKILL.md content
206
- */
207
- function validateSkillMd(content) {
208
- const errors = [];
209
- // Check for required sections
210
- if (!content.includes('# ')) {
211
- errors.push('Missing title (# heading)');
212
- }
213
- // Check minimum length
214
- if (content.length < 100) {
215
- errors.push('SKILL.md is too short (minimum 100 characters)');
216
- }
217
- return {
218
- valid: errors.length === 0,
219
- errors,
220
- };
221
- }
222
- /**
223
- * Generate post-install tips
224
- */
225
- function generateTips(skillName) {
226
- return [
227
- 'Skill "' + skillName + '" installed successfully!',
228
- 'To use this skill, mention it in Claude Code: "Use the ' + skillName + ' skill to..."',
229
- 'View installed skills: ls ~/.claude/skills/',
230
- 'To uninstall: use the uninstall_skill tool',
231
- ];
232
- }
20
+ // Import types
21
+ import { TRUST_TIER_SCANNER_OPTIONS, CLAUDE_SKILLS_DIR, } from './install.types.js';
22
+ // Import helpers
23
+ import { loadManifest, updateManifestSafely, parseSkillId, parseRepoUrl, lookupSkillFromRegistry, fetchFromGitHub, validateSkillMd, generateOptimizedTips, } from './install.helpers.js';
24
+ // Re-export only public API types (SMI-1718: trimmed internal exports)
25
+ export { installInputSchema } from './install.types.js';
233
26
  /**
234
27
  * Install a skill from GitHub to the local Claude Code skills directory.
235
28
  *
@@ -248,29 +41,12 @@ function generateTips(skillName) {
248
41
  * @param input.force - Force reinstall if skill already exists (default: false)
249
42
  * @param input.skipScan - Skip security scan (default: false, not recommended)
250
43
  * @returns Promise resolving to installation result with success status
251
- *
252
- * @example
253
- * // Successful installation
254
- * const result = await installSkill({ skillId: 'anthropic/commit' });
255
- * if (result.success) {
256
- * console.log(`Installed to ${result.installPath}`);
257
- * result.tips?.forEach(tip => console.log(tip));
258
- * }
259
- *
260
- * @example
261
- * // Handle security scan failure
262
- * const result = await installSkill({ skillId: 'untrusted/skill' });
263
- * if (!result.success && result.securityReport) {
264
- * console.log('Security issues found:');
265
- * result.securityReport.findings.forEach(f =>
266
- * console.log(` ${f.severity}: ${f.message}`)
267
- * );
268
- * }
269
44
  */
270
45
  export async function installSkill(input, _context) {
271
- const scanner = new SecurityScanner();
272
46
  // SMI-1491: Get context for registry lookup (use provided or fallback to singleton)
273
47
  const context = _context ?? getToolContext();
48
+ // SMI-1533: Trust tier for security scan configuration (default to unknown for direct paths)
49
+ let trustTier = 'unknown';
274
50
  try {
275
51
  // Parse skill ID
276
52
  const parsed = parseSkillId(input.skillId);
@@ -309,6 +85,8 @@ export async function installSkill(input, _context) {
309
85
  basePath = repoInfo.path ? repoInfo.path + '/' : '';
310
86
  branch = repoInfo.branch;
311
87
  skillName = registrySkill.name;
88
+ // SMI-1533: Use trust tier from registry for security scan configuration
89
+ trustTier = registrySkill.trustTier;
312
90
  }
313
91
  else {
314
92
  // DIRECT PATH (existing behavior)
@@ -372,35 +150,111 @@ export async function installSkill(input, _context) {
372
150
  ],
373
151
  };
374
152
  }
375
- // Security scan
153
+ // SMI-1533: Security scan with trust-tier sensitive configuration
376
154
  let securityReport;
377
155
  if (!input.skipScan) {
156
+ // Get scanner options based on trust tier
157
+ const scannerOptions = TRUST_TIER_SCANNER_OPTIONS[trustTier];
158
+ const scanner = new SecurityScanner(scannerOptions);
378
159
  securityReport = scanner.scan(input.skillId, skillMdContent);
379
160
  if (!securityReport.passed) {
380
161
  const criticalFindings = securityReport.findings.filter((f) => f.severity === 'critical' || f.severity === 'high');
162
+ // SMI-1533: Include trust tier context in error message
163
+ const tierContext = trustTier === 'unknown'
164
+ ? ' (Direct GitHub install - strictest scanning applied)'
165
+ : trustTier === 'experimental'
166
+ ? ' (Experimental skill - aggressive scanning applied)'
167
+ : '';
381
168
  return {
382
169
  success: false,
383
170
  skillId: input.skillId,
384
171
  installPath,
385
172
  securityReport,
173
+ trustTier,
386
174
  error: 'Security scan failed with ' +
387
175
  criticalFindings.length +
388
- ' critical/high findings. Use skipScan=true to override (not recommended).',
176
+ ' critical/high findings' +
177
+ tierContext +
178
+ '. Use skipScan=true to override (not recommended).',
179
+ tips: [
180
+ 'Trust tier: ' + trustTier + ' (threshold: ' + scannerOptions.riskThreshold + ')',
181
+ 'Risk score: ' + securityReport.riskScore,
182
+ 'Consider reviewing the skill content for the flagged issues',
183
+ trustTier === 'unknown'
184
+ ? 'Skills from the registry have more lenient scanning thresholds'
185
+ : undefined,
186
+ ].filter(Boolean),
389
187
  };
390
188
  }
391
189
  }
190
+ // SMI-XXX: Apply Skillsmith Optimization Layer (unless skipped)
191
+ let optimizationInfo = { optimized: false };
192
+ let finalSkillContent = skillMdContent;
193
+ let subSkillFiles = [];
194
+ let subagentContent;
195
+ let claudeMdSnippet;
196
+ if (!input.skipOptimize) {
197
+ try {
198
+ const transformService = new TransformationService(context.db, {
199
+ cacheTtl: 3600, // 1 hour cache
200
+ version: '1.0.0',
201
+ });
202
+ // Extract skill name and description for transformation
203
+ const nameMatch = skillMdContent.match(/^name:\s*(.+)$/m);
204
+ const descMatch = skillMdContent.match(/^description:\s*(.+)$/m);
205
+ const extractedName = nameMatch ? nameMatch[1].trim() : skillName;
206
+ const extractedDesc = descMatch ? descMatch[1].trim() : '';
207
+ const transformResult = await transformService.transform(input.skillId, extractedName, extractedDesc, skillMdContent);
208
+ if (transformResult.transformed) {
209
+ finalSkillContent = transformResult.mainSkillContent;
210
+ subSkillFiles = transformResult.subSkills;
211
+ subagentContent = transformResult.subagent?.content;
212
+ claudeMdSnippet = transformResult.claudeMdSnippet;
213
+ optimizationInfo = {
214
+ optimized: true,
215
+ subSkills: subSkillFiles.map((s) => s.filename),
216
+ subagentGenerated: !!subagentContent,
217
+ tokenReductionPercent: transformResult.stats.tokenReductionPercent,
218
+ originalLines: transformResult.stats.originalLines,
219
+ optimizedLines: transformResult.stats.optimizedLines,
220
+ };
221
+ }
222
+ }
223
+ catch (transformError) {
224
+ // Transformation failed - continue with original content
225
+ console.warn('[install] Optimization failed, using original content:', transformError);
226
+ finalSkillContent = skillMdContent;
227
+ optimizationInfo = { optimized: false };
228
+ }
229
+ }
392
230
  // Create installation directory
393
231
  await fs.mkdir(installPath, { recursive: true });
394
- // Write SKILL.md
395
- await fs.writeFile(path.join(installPath, 'SKILL.md'), skillMdContent);
232
+ // Write SKILL.md (optimized or original)
233
+ await fs.writeFile(path.join(installPath, 'SKILL.md'), finalSkillContent);
234
+ // Write sub-skills if any
235
+ for (const subSkill of subSkillFiles) {
236
+ await fs.writeFile(path.join(installPath, subSkill.filename), subSkill.content);
237
+ }
238
+ // Write companion subagent if generated
239
+ if (subagentContent) {
240
+ const agentsDir = path.join(os.homedir(), '.claude', 'agents');
241
+ await fs.mkdir(agentsDir, { recursive: true });
242
+ const subagentPath = path.join(agentsDir, `${skillName}-specialist.md`);
243
+ await fs.writeFile(subagentPath, subagentContent);
244
+ optimizationInfo.subagentPath = subagentPath;
245
+ }
396
246
  // Try to fetch optional files
247
+ // SMI-1533: Use same trust-tier scanner for optional files
248
+ const optionalFileScanner = input.skipScan
249
+ ? null
250
+ : new SecurityScanner(TRUST_TIER_SCANNER_OPTIONS[trustTier]);
397
251
  const optionalFiles = ['README.md', 'examples.md', 'config.json'];
398
252
  for (const file of optionalFiles) {
399
253
  try {
400
254
  const content = await fetchFromGitHub(owner, repo, basePath + file, branch);
401
255
  // Scan optional files too
402
- if (!input.skipScan) {
403
- const fileScan = scanner.scan(input.skillId + '/' + file, content);
256
+ if (optionalFileScanner) {
257
+ const fileScan = optionalFileScanner.scan(input.skillId + '/' + file, content);
404
258
  if (!fileScan.passed) {
405
259
  console.warn('Skipping ' + file + ' due to security findings');
406
260
  continue;
@@ -412,23 +266,30 @@ export async function installSkill(input, _context) {
412
266
  // Optional files are fine to skip
413
267
  }
414
268
  }
415
- // Update manifest
416
- manifest.installedSkills[skillName] = {
417
- id: input.skillId,
418
- name: skillName,
419
- version: '1.0.0',
420
- source: 'github:' + owner + '/' + repo,
421
- installPath,
422
- installedAt: new Date().toISOString(),
423
- lastUpdated: new Date().toISOString(),
424
- };
425
- await saveManifest(manifest);
269
+ // Update manifest with locking to prevent race conditions
270
+ await updateManifestSafely((currentManifest) => ({
271
+ ...currentManifest,
272
+ installedSkills: {
273
+ ...currentManifest.installedSkills,
274
+ [skillName]: {
275
+ id: input.skillId,
276
+ name: skillName,
277
+ version: '1.0.0',
278
+ source: 'github:' + owner + '/' + repo,
279
+ installPath,
280
+ installedAt: new Date().toISOString(),
281
+ lastUpdated: new Date().toISOString(),
282
+ },
283
+ },
284
+ }));
426
285
  return {
427
286
  success: true,
428
287
  skillId: input.skillId,
429
288
  installPath,
430
289
  securityReport,
431
- tips: generateTips(skillName),
290
+ trustTier, // SMI-1533: Include trust tier in result
291
+ optimization: optimizationInfo,
292
+ tips: generateOptimizedTips(skillName, optimizationInfo, claudeMdSnippet),
432
293
  };
433
294
  }
434
295
  catch (error) {
@@ -445,7 +306,7 @@ export async function installSkill(input, _context) {
445
306
  */
446
307
  export const installTool = {
447
308
  name: 'install_skill',
448
- description: 'Install a Claude Code skill from GitHub. Performs security scan before installation.',
309
+ description: 'Install a Claude Code skill from GitHub. Performs security scan and Skillsmith optimization before installation.',
449
310
  inputSchema: {
450
311
  type: 'object',
451
312
  properties: {
@@ -461,6 +322,10 @@ export const installTool = {
461
322
  type: 'boolean',
462
323
  description: 'Skip security scan (not recommended)',
463
324
  },
325
+ skipOptimize: {
326
+ type: 'boolean',
327
+ description: 'Skip Skillsmith optimization (decomposition, subagent generation)',
328
+ },
464
329
  },
465
330
  required: ['skillId'],
466
331
  },
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAmB,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,eAAe;AACf,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACvE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACtF,CAAC,CAAA;AAcF,QAAQ;AACR,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AACtE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAA;AAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;AAkBhE;;GAEG;AACH,KAAK,UAAU,YAAY;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,eAAe,EAAE,EAAE;SACpB,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,QAAuB;IACjD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAChE,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACtE,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAa;IAMjC,6CAA6C;IAC7C,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACrD,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACpC,YAAY,EAAE,KAAK;SACpB,CAAA;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE9B,yEAAyE;QACzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,IAAI,EAAE,2CAA2C;aAChE,CAAA;QACH,CAAC;QAED,6DAA6D;QAC7D,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B,YAAY,EAAE,KAAK;SACpB,CAAA;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,KAAK,GAAG,iCAAiC,CAAC,CAAA;AAC1F,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,YAAY,CAAC,OAAe;IAMnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAErD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAErB,mCAAmC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IAClD,CAAC;IAED,qEAAqE;IACrE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/C,OAAO;YACL,KAAK;YACL,IAAI;YACJ,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC/B,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AACxE,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,uBAAuB,CACpC,OAAe,EACf,OAAoB;IAEpB,sCAAsC;IACtC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1D,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;oBAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;iBACzB,CAAA;YACH,CAAC;YACD,mDAAmD;YACnD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACzD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAC5B,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,SAAiB,MAAM;IAEvB,MAAM,GAAG,GACP,oCAAoC,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAA;IAC3F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAEjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,wEAAwE;QACxE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,SAAS,GACb,oCAAoC,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAA;YACnF,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAA;YAE7C,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;YACzE,CAAC;YAED,OAAO,cAAc,CAAC,IAAI,EAAE,CAAA;QAC9B,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,8BAA8B;IAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IAC1C,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,SAAiB;IACrC,OAAO;QACL,SAAS,GAAG,SAAS,GAAG,2BAA2B;QACnD,yDAAyD,GAAG,SAAS,GAAG,eAAe;QACvF,6CAA6C;QAC7C,4CAA4C;KAC7C,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAmB,EACnB,QAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAA;IACrC,oFAAoF;IACpF,MAAM,OAAO,GAAG,QAAQ,IAAI,cAAc,EAAE,CAAA;IAE5C,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE1C,oFAAoF;QACpF,IAAI,KAAa,CAAA;QACjB,IAAI,IAAY,CAAA;QAChB,IAAI,QAAgB,CAAA;QACpB,IAAI,SAAiB,CAAA;QACrB,IAAI,MAAM,GAAW,MAAM,CAAA;QAE3B,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,kCAAkC;YAClC,gFAAgF;YAChF,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAE3E,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,iDAAiD;gBACjD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,EAAE;oBACf,KAAK,EACH,SAAS;wBACT,KAAK,CAAC,OAAO;wBACb,mCAAmC;wBACnC,0DAA0D;wBAC1D,6DAA6D;oBAC/D,IAAI,EAAE;wBACJ,2FAA2F;wBAC3F,qDAAqD;wBACrD,wEAAwE;qBACzE;iBACF,CAAA;YACH,CAAC;YAED,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YACpD,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;YACtB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;YACpB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YACnD,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;YACxB,SAAS,GAAG,aAAa,CAAC,IAAI,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,6CAA6C;YAC7C,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;YACpB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;YAClB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/C,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC7D,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;QAE3D,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA;QACrC,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW;gBACX,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,sDAAsD;aACtF,CAAA;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAA;QAEzC,4BAA4B;QAC5B,IAAI,cAAsB,CAAA;QAC1B,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;YACnC,MAAM,OAAO,GAAG,qBAAqB,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,CAAA;YAC1D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW;gBACX,KAAK,EACH,6BAA6B;oBAC7B,CAAC,QAAQ,IAAI,iBAAiB,CAAC;oBAC/B,IAAI;oBACJ,gGAAgG;oBAChG,cAAc;oBACd,OAAO;gBACT,IAAI,EAAE;oBACJ,kEAAkE;oBAClE,gCAAgC,GAAG,OAAO;oBAC1C,oGAAoG;oBACpG,2EAA2E;iBAC5E;aACF,CAAA;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;QAClD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW;gBACX,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1D,IAAI,EAAE;oBACJ,sEAAsE;oBACtE,yCAAyC;oBACzC,mGAAmG;iBACpG;aACF,CAAA;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,cAAsC,CAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;YAE5D,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC1D,CAAA;gBACD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW;oBACX,cAAc;oBACd,KAAK,EACH,4BAA4B;wBAC5B,gBAAgB,CAAC,MAAM;wBACvB,2EAA2E;iBAC9E,CAAA;YACH,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAEhD,iBAAiB;QACjB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,cAAc,CAAC,CAAA;QAEtE,8BAA8B;QAC9B,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;QACjE,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;gBAE3E,0BAA0B;gBAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;oBAClE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,2BAA2B,CAAC,CAAA;wBAC9D,SAAQ;oBACV,CAAC;gBACH,CAAC;gBAED,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG;YACpC,EAAE,EAAE,KAAK,CAAC,OAAO;YACjB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI;YACtC,WAAW;YACX,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAA;QACD,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;QAE5B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW;YACX,cAAc;YACd,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC;SAC9B,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,sFAAsF;IACxF,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;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACF,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @fileoverview Install Tool Types and Constants
3
+ * @module @skillsmith/mcp-server/tools/install.types
4
+ */
5
+ import { z } from 'zod';
6
+ import type { ScanReport, ScannerOptions } from '@skillsmith/core';
7
+ import type { TrustTier } from '@skillsmith/core';
8
+ /**
9
+ * SMI-1533: Valid trust tier values
10
+ */
11
+ export declare const VALID_TRUST_TIERS: readonly TrustTier[];
12
+ /**
13
+ * SMI-1533: Validate and normalize trust tier value
14
+ * Returns 'unknown' for invalid or missing values to ensure strictest scanning
15
+ *
16
+ * NOTE: 'verified' tier currently relies on registry data without cryptographic
17
+ * verification. Future enhancement: implement signature verification for
18
+ * Anthropic-verified skills using PKI.
19
+ */
20
+ export declare function validateTrustTier(value: string | null | undefined): TrustTier;
21
+ /**
22
+ * SMI-1533: Security scan configuration per trust tier
23
+ *
24
+ * - verified: Minimal scanning (trust Anthropic-verified skills)
25
+ * - community: Standard scanning (balanced security)
26
+ * - experimental: Aggressive scanning (highest scrutiny for new/beta skills)
27
+ * - unknown: Most aggressive scanning
28
+ */
29
+ export declare const TRUST_TIER_SCANNER_OPTIONS: Record<TrustTier, ScannerOptions>;
30
+ /** Input schema for install tool */
31
+ export declare const installInputSchema: z.ZodObject<{
32
+ skillId: z.ZodString;
33
+ force: z.ZodDefault<z.ZodBoolean>;
34
+ skipScan: z.ZodDefault<z.ZodBoolean>;
35
+ /** SMI-XXX: Skip optimization transformation */
36
+ skipOptimize: z.ZodDefault<z.ZodBoolean>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ skillId: string;
39
+ force: boolean;
40
+ skipScan: boolean;
41
+ skipOptimize: boolean;
42
+ }, {
43
+ skillId: string;
44
+ force?: boolean | undefined;
45
+ skipScan?: boolean | undefined;
46
+ skipOptimize?: boolean | undefined;
47
+ }>;
48
+ export type InstallInput = z.infer<typeof installInputSchema>;
49
+ /** Output type for install tool */
50
+ export interface InstallResult {
51
+ success: boolean;
52
+ skillId: string;
53
+ installPath: string;
54
+ securityReport?: ScanReport;
55
+ tips?: string[];
56
+ error?: string;
57
+ /** SMI-1533: Trust tier used for security scanning */
58
+ trustTier?: TrustTier;
59
+ /** SMI-XXX: Optimization info (Skillsmith Optimization Layer) */
60
+ optimization?: OptimizationInfo;
61
+ }
62
+ /** Optimization info included in install result */
63
+ export interface OptimizationInfo {
64
+ /** Whether skill was optimized */
65
+ optimized: boolean;
66
+ /** Sub-skills created (filenames) */
67
+ subSkills?: string[];
68
+ /** Whether companion subagent was generated */
69
+ subagentGenerated?: boolean;
70
+ /** Path to generated subagent (if any) */
71
+ subagentPath?: string;
72
+ /** Estimated token reduction percentage */
73
+ tokenReductionPercent?: number;
74
+ /** Original line count */
75
+ originalLines?: number;
76
+ /** Optimized line count */
77
+ optimizedLines?: number;
78
+ }
79
+ export declare const CLAUDE_SKILLS_DIR: string;
80
+ export declare const SKILLSMITH_DIR: string;
81
+ export declare const MANIFEST_PATH: string;
82
+ export interface SkillManifest {
83
+ version: string;
84
+ installedSkills: Record<string, {
85
+ id: string;
86
+ name: string;
87
+ version: string;
88
+ source: string;
89
+ installPath: string;
90
+ installedAt: string;
91
+ lastUpdated: string;
92
+ }>;
93
+ }
94
+ /** Parsed skill ID components */
95
+ export interface ParsedSkillId {
96
+ owner: string;
97
+ repo: string;
98
+ path: string;
99
+ isRegistryId: boolean;
100
+ }
101
+ /** Parsed repository URL components */
102
+ export interface ParsedRepoUrl {
103
+ owner: string;
104
+ repo: string;
105
+ path: string;
106
+ branch: string;
107
+ }
108
+ /** Registry lookup result */
109
+ export interface RegistrySkillInfo {
110
+ repoUrl: string;
111
+ name: string;
112
+ trustTier: TrustTier;
113
+ }
114
+ //# sourceMappingURL=install.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.types.d.ts","sourceRoot":"","sources":["../../../src/tools/install.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAQjD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,SAAS,EAKjD,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAc7E;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CAqBxE,CAAA;AAMD,oCAAoC;AACpC,eAAO,MAAM,kBAAkB;;;;IAI7B,gDAAgD;;;;;;;;;;;;EAEhD,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,UAAU,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,iEAAiE;IACjE,YAAY,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAMD,eAAO,MAAM,iBAAiB,QAA+C,CAAA;AAC7E,eAAO,MAAM,cAAc,QAAyC,CAAA;AACpE,eAAO,MAAM,aAAa,QAA6C,CAAA;AAMvE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CACrB,MAAM,EACN;QACE,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;QACnB,WAAW,EAAE,MAAM,CAAA;QACnB,WAAW,EAAE,MAAM,CAAA;KACpB,CACF,CAAA;CACF;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,6BAA6B;AAC7B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;CACrB"}