@skillsmith/mcp-server 0.4.4 → 0.4.6

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 (56) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +69 -31
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/src/index.js +4 -2
  5. package/dist/src/index.js.map +1 -1
  6. package/dist/src/tool-dispatch.d.ts.map +1 -1
  7. package/dist/src/tool-dispatch.js +3 -0
  8. package/dist/src/tool-dispatch.js.map +1 -1
  9. package/dist/src/tools/index.d.ts +2 -0
  10. package/dist/src/tools/index.d.ts.map +1 -1
  11. package/dist/src/tools/index.js +2 -0
  12. package/dist/src/tools/index.js.map +1 -1
  13. package/dist/src/tools/install.d.ts +10 -0
  14. package/dist/src/tools/install.d.ts.map +1 -1
  15. package/dist/src/tools/install.helpers.d.ts +6 -0
  16. package/dist/src/tools/install.helpers.d.ts.map +1 -1
  17. package/dist/src/tools/install.helpers.js +23 -2
  18. package/dist/src/tools/install.helpers.js.map +1 -1
  19. package/dist/src/tools/install.js +64 -370
  20. package/dist/src/tools/install.js.map +1 -1
  21. package/dist/src/tools/install.types.d.ts +3 -1
  22. package/dist/src/tools/install.types.d.ts.map +1 -1
  23. package/dist/src/tools/merge.test.d.ts +9 -0
  24. package/dist/src/tools/merge.test.d.ts.map +1 -0
  25. package/dist/src/tools/merge.test.js +161 -0
  26. package/dist/src/tools/merge.test.js.map +1 -0
  27. package/dist/src/tools/outdated.test.js +1 -1
  28. package/dist/src/tools/outdated.test.js.map +1 -1
  29. package/dist/src/tools/recommend.types.d.ts +2 -2
  30. package/dist/src/tools/skill-audit.test.js +1 -1
  31. package/dist/src/tools/skill-audit.test.js.map +1 -1
  32. package/dist/src/tools/skill-diff.d.ts +2 -2
  33. package/dist/src/tools/skill-rescan.d.ts +107 -0
  34. package/dist/src/tools/skill-rescan.d.ts.map +1 -0
  35. package/dist/src/tools/skill-rescan.js +194 -0
  36. package/dist/src/tools/skill-rescan.js.map +1 -0
  37. package/dist/src/tools/skill-rescan.test.d.ts +6 -0
  38. package/dist/src/tools/skill-rescan.test.d.ts.map +1 -0
  39. package/dist/src/tools/skill-rescan.test.js +238 -0
  40. package/dist/src/tools/skill-rescan.test.js.map +1 -0
  41. package/dist/src/tools/uninstall.d.ts +8 -58
  42. package/dist/src/tools/uninstall.d.ts.map +1 -1
  43. package/dist/src/tools/uninstall.js +29 -199
  44. package/dist/src/tools/uninstall.js.map +1 -1
  45. package/dist/tests/integration/install.integration.test.js +16 -1
  46. package/dist/tests/integration/install.integration.test.js.map +1 -1
  47. package/dist/tests/unit/install-helpers.test.js +41 -1
  48. package/dist/tests/unit/install-helpers.test.js.map +1 -1
  49. package/dist/tests/unit/skill-pack-audit.test.js +2 -1
  50. package/dist/tests/unit/skill-pack-audit.test.js.map +1 -1
  51. package/package.json +7 -4
  52. package/server.json +3 -3
  53. package/dist/vitest.config.d.ts +0 -6
  54. package/dist/vitest.config.d.ts.map +0 -1
  55. package/dist/vitest.config.js +0 -13
  56. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1,161 @@
1
+ /**
2
+ * SMI-3416: Three-Way Merge Algorithm Tests
3
+ *
4
+ * Tests for LCS-based diff3 merge in merge.ts:
5
+ * - computeDiff: line-level diff between two texts
6
+ * - threeWayMerge: three-way merge with conflict detection
7
+ */
8
+ import { describe, it, expect } from 'vitest';
9
+ import { computeDiff, threeWayMerge } from './merge.js';
10
+ // ============================================================================
11
+ // computeDiff
12
+ // ============================================================================
13
+ describe('computeDiff', () => {
14
+ it('should return empty diff for identical content', () => {
15
+ const result = computeDiff('a\nb\nc', 'a\nb\nc');
16
+ expect(result.additions).toEqual([]);
17
+ expect(result.deletions).toEqual([]);
18
+ expect(result.unchanged).toEqual([1, 2, 3]);
19
+ });
20
+ it('should detect additions', () => {
21
+ const result = computeDiff('a\nc', 'a\nb\nc');
22
+ expect(result.additions.length).toBeGreaterThan(0);
23
+ expect(result.deletions).toEqual([]);
24
+ });
25
+ it('should detect deletions', () => {
26
+ const result = computeDiff('a\nb\nc', 'a\nc');
27
+ expect(result.deletions.length).toBeGreaterThan(0);
28
+ expect(result.additions).toEqual([]);
29
+ });
30
+ it('should detect modifications', () => {
31
+ const result = computeDiff('a\nb\nc', 'a\nB\nc');
32
+ expect(result.additions.length).toBeGreaterThan(0);
33
+ expect(result.deletions.length).toBeGreaterThan(0);
34
+ expect(result.unchanged).toContain(1); // 'a' unchanged
35
+ expect(result.unchanged).toContain(3); // 'c' unchanged
36
+ });
37
+ it('should handle empty base', () => {
38
+ const result = computeDiff('', 'a\nb');
39
+ expect(result.additions.length).toBeGreaterThan(0);
40
+ // Empty string splits to [''], so there's 1 base "line" that may count as deleted
41
+ expect(result.deletions.length).toBeLessThanOrEqual(1);
42
+ });
43
+ it('should handle empty target', () => {
44
+ const result = computeDiff('a\nb', '');
45
+ expect(result.deletions.length).toBeGreaterThan(0);
46
+ // Empty string splits to [''], so there's 1 "line" in the target
47
+ // which counts as an addition if it doesn't match any base line
48
+ expect(result.additions.length).toBeLessThanOrEqual(1);
49
+ });
50
+ it('should handle single-line content', () => {
51
+ const result = computeDiff('hello', 'world');
52
+ expect(result.deletions).toEqual([1]);
53
+ expect(result.additions).toEqual([1]);
54
+ });
55
+ });
56
+ // ============================================================================
57
+ // threeWayMerge — edge cases
58
+ // ============================================================================
59
+ describe('threeWayMerge', () => {
60
+ describe('edge cases', () => {
61
+ it('should return empty for three empty inputs', () => {
62
+ const result = threeWayMerge('', '', '');
63
+ expect(result.success).toBe(true);
64
+ expect(result.merged).toBe('');
65
+ });
66
+ it('should return upstream when local is empty and base is empty', () => {
67
+ const result = threeWayMerge('', '', 'new content');
68
+ expect(result.success).toBe(true);
69
+ expect(result.merged).toBe('new content');
70
+ });
71
+ it('should return local when upstream is empty and base is empty', () => {
72
+ const result = threeWayMerge('', 'local content', '');
73
+ expect(result.success).toBe(true);
74
+ expect(result.merged).toBe('local content');
75
+ });
76
+ it('should conflict when both have content but base is empty', () => {
77
+ const result = threeWayMerge('', 'local', 'upstream');
78
+ expect(result.success).toBe(false);
79
+ expect(result.conflicts).toHaveLength(1);
80
+ expect(result.merged).toContain('<<<<<<< LOCAL');
81
+ expect(result.merged).toContain('>>>>>>> UPSTREAM');
82
+ });
83
+ });
84
+ describe('no-conflict cases', () => {
85
+ it('should return upstream when local is unchanged from base', () => {
86
+ const result = threeWayMerge('base', 'base', 'upstream');
87
+ expect(result.success).toBe(true);
88
+ expect(result.merged).toBe('upstream');
89
+ });
90
+ it('should return local when upstream is unchanged from base', () => {
91
+ const result = threeWayMerge('base', 'local', 'base');
92
+ expect(result.success).toBe(true);
93
+ expect(result.merged).toBe('local');
94
+ });
95
+ it('should return local when both made same change', () => {
96
+ const result = threeWayMerge('base', 'same', 'same');
97
+ expect(result.success).toBe(true);
98
+ expect(result.merged).toBe('same');
99
+ });
100
+ it('should merge non-overlapping changes', () => {
101
+ const base = 'line1\nline2\nline3\nline4\nline5';
102
+ const local = 'LINE1\nline2\nline3\nline4\nline5'; // changed line 1
103
+ const upstream = 'line1\nline2\nline3\nline4\nLINE5'; // changed line 5
104
+ const result = threeWayMerge(base, local, upstream);
105
+ expect(result.success).toBe(true);
106
+ expect(result.merged).toContain('LINE1');
107
+ expect(result.merged).toContain('LINE5');
108
+ });
109
+ });
110
+ describe('conflict cases', () => {
111
+ it('should detect conflict when both modify same region', () => {
112
+ const base = 'line1\nline2\nline3';
113
+ const local = 'line1\nLOCAL\nline3';
114
+ const upstream = 'line1\nUPSTREAM\nline3';
115
+ const result = threeWayMerge(base, local, upstream);
116
+ expect(result.success).toBe(false);
117
+ expect(result.conflicts).toBeDefined();
118
+ expect(result.conflicts.length).toBeGreaterThan(0);
119
+ expect(result.merged).toContain('<<<<<<< LOCAL');
120
+ expect(result.merged).toContain('=======');
121
+ expect(result.merged).toContain('>>>>>>> UPSTREAM');
122
+ });
123
+ it('should preserve unchanged lines around conflicts', () => {
124
+ const base = 'a\nb\nc';
125
+ const local = 'a\nB-local\nc';
126
+ const upstream = 'a\nB-upstream\nc';
127
+ const result = threeWayMerge(base, local, upstream);
128
+ expect(result.merged).toContain('a');
129
+ expect(result.merged).toContain('c');
130
+ });
131
+ it('conflict should include line number', () => {
132
+ const base = 'a\nb\nc';
133
+ const local = 'a\nX\nc';
134
+ const upstream = 'a\nY\nc';
135
+ const result = threeWayMerge(base, local, upstream);
136
+ expect(result.conflicts).toBeDefined();
137
+ expect(result.conflicts[0].lineNumber).toBeGreaterThan(0);
138
+ expect(result.conflicts[0].local).toBe('X');
139
+ expect(result.conflicts[0].upstream).toBe('Y');
140
+ });
141
+ });
142
+ describe('multiline changes', () => {
143
+ it('should handle additions by one side', () => {
144
+ const base = 'a\nc';
145
+ const local = 'a\nb\nc'; // inserted 'b'
146
+ const upstream = 'a\nc'; // unchanged
147
+ const result = threeWayMerge(base, local, upstream);
148
+ expect(result.success).toBe(true);
149
+ expect(result.merged).toContain('b');
150
+ });
151
+ it('should handle deletions by one side', () => {
152
+ const base = 'a\nb\nc';
153
+ const local = 'a\nc'; // deleted 'b'
154
+ const upstream = 'a\nb\nc'; // unchanged
155
+ const result = threeWayMerge(base, local, upstream);
156
+ expect(result.success).toBe(true);
157
+ expect(result.merged).not.toContain('\nb\n');
158
+ });
159
+ });
160
+ });
161
+ //# sourceMappingURL=merge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.test.js","sourceRoot":"","sources":["../../../src/tools/merge.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
6
6
  import { SkillVersionRepository, SkillDependencyRepository } from '@skillsmith/core';
7
- import { createTestDatabase, closeDatabase } from '../../../core/tests/helpers/database.js';
7
+ import { createTestDatabase, closeDatabase } from '@skillsmith/core/testkit';
8
8
  import { executeOutdated } from './outdated.js';
9
9
  // ============================================================================
10
10
  // Mocks
@@ -1 +1 @@
1
- {"version":3,"file":"outdated.test.js","sourceRoot":"","sources":["../../../src/tools/outdated.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outdated.test.js","sourceRoot":"","sources":["../../../src/tools/outdated.test.ts"],"names":[],"mappings":"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"}
@@ -30,14 +30,14 @@ export declare const recommendInputSchema: z.ZodObject<{
30
30
  detect_overlap: boolean;
31
31
  min_similarity: number;
32
32
  project_context?: string | undefined;
33
- role?: "testing" | "code-quality" | "documentation" | "workflow" | "security" | "development-partner" | undefined;
33
+ role?: "testing" | "documentation" | "security" | "workflow" | "code-quality" | "development-partner" | undefined;
34
34
  }, {
35
35
  installed_skills?: string[] | undefined;
36
36
  project_context?: string | undefined;
37
37
  limit?: number | undefined;
38
38
  detect_overlap?: boolean | undefined;
39
39
  min_similarity?: number | undefined;
40
- role?: "testing" | "code-quality" | "documentation" | "workflow" | "security" | "development-partner" | undefined;
40
+ role?: "testing" | "documentation" | "security" | "workflow" | "code-quality" | "development-partner" | undefined;
41
41
  }>;
42
42
  /**
43
43
  * Input type (before parsing, allows optional fields)
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { describe, it, expect, beforeEach, afterEach } from 'vitest';
6
6
  import { AdvisoryRepository } from '@skillsmith/core';
7
- import { createTestDatabase, closeDatabase } from '../../../core/tests/helpers/database.js';
7
+ import { createTestDatabase, closeDatabase } from '@skillsmith/core/testkit';
8
8
  import { executeSkillAudit } from './skill-audit.js';
9
9
  // ============================================================================
10
10
  // Helpers
@@ -1 +1 @@
1
- {"version":3,"file":"skill-audit.test.js","sourceRoot":"","sources":["../../../src/tools/skill-audit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-audit.test.js","sourceRoot":"","sources":["../../../src/tools/skill-audit.test.ts"],"names":[],"mappings":"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"}
@@ -22,21 +22,21 @@ export declare const skillDiffInputSchema: z.ZodObject<{
22
22
  hasLocalModifications: z.ZodDefault<z.ZodBoolean>;
23
23
  trustTier: z.ZodDefault<z.ZodEnum<["verified", "community", "experimental"]>>;
24
24
  }, "strip", z.ZodTypeAny, {
25
+ trustTier: "verified" | "community" | "experimental";
25
26
  skillId: string;
26
27
  oldContent: string;
27
28
  newContent: string;
28
29
  hasLocalModifications: boolean;
29
- trustTier: "community" | "verified" | "experimental";
30
30
  oldRiskScore?: number | undefined;
31
31
  newRiskScore?: number | undefined;
32
32
  }, {
33
33
  skillId: string;
34
34
  oldContent: string;
35
35
  newContent: string;
36
+ trustTier?: "verified" | "community" | "experimental" | undefined;
36
37
  oldRiskScore?: number | undefined;
37
38
  newRiskScore?: number | undefined;
38
39
  hasLocalModifications?: boolean | undefined;
39
- trustTier?: "community" | "verified" | "experimental" | undefined;
40
40
  }>;
41
41
  export type SkillDiffInput = z.infer<typeof skillDiffInputSchema>;
42
42
  /** Structured section-level diff response */
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @fileoverview skill_rescan MCP tool -- re-scan installed skills with current
3
+ * SecurityScanner patterns.
4
+ * @module @skillsmith/mcp-server/tools/skill-rescan
5
+ * @see SMI-3511: GAP-08 No re-scanning of installed skills
6
+ *
7
+ * When new detection patterns are added (SSRF, split-word, homoglyph, etc.),
8
+ * already-installed skills are never re-evaluated. This tool fills that gap
9
+ * by reading installed SKILL.md files and running SecurityScanner against each.
10
+ */
11
+ import { z } from 'zod';
12
+ /**
13
+ * Input schema for skill_rescan tool
14
+ */
15
+ export declare const skillRescanInputSchema: z.ZodObject<{
16
+ /** Optional skill name filter -- rescan only the named skill */
17
+ skillName: z.ZodOptional<z.ZodString>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ skillName?: string | undefined;
20
+ }, {
21
+ skillName?: string | undefined;
22
+ }>;
23
+ export type SkillRescanInput = z.infer<typeof skillRescanInputSchema>;
24
+ /**
25
+ * Per-skill rescan result
26
+ */
27
+ export interface SkillRescanEntry {
28
+ /** Skill directory name (e.g. "author/skill-name" or "skill-name") */
29
+ skill: string;
30
+ /** Whether the scan passed (no high/critical findings, risk below threshold) */
31
+ passed: boolean;
32
+ /** Number of findings */
33
+ findingCount: number;
34
+ /** Risk score from 0-100 */
35
+ riskScore: number;
36
+ /** Summary of findings by severity */
37
+ severityCounts: {
38
+ critical: number;
39
+ high: number;
40
+ medium: number;
41
+ low: number;
42
+ };
43
+ /** Top findings (max 5 per skill to keep output manageable) */
44
+ topFindings: Array<{
45
+ type: string;
46
+ severity: string;
47
+ message: string;
48
+ lineNumber?: number;
49
+ }>;
50
+ /** Error message if skill could not be read */
51
+ error?: string;
52
+ }
53
+ /**
54
+ * Response from skill_rescan tool
55
+ */
56
+ export interface SkillRescanResponse {
57
+ /** Number of skills scanned */
58
+ scannedCount: number;
59
+ /** Number of skills that failed the scan */
60
+ failedCount: number;
61
+ /** Per-skill results */
62
+ results: SkillRescanEntry[];
63
+ /** Error message when a specific skill is not found */
64
+ error?: string;
65
+ }
66
+ /**
67
+ * MCP tool definition for skill_rescan
68
+ */
69
+ export declare const skillRescanToolSchema: {
70
+ name: "skill_rescan";
71
+ description: string;
72
+ inputSchema: {
73
+ type: "object";
74
+ properties: {
75
+ skillName: {
76
+ type: string;
77
+ description: string;
78
+ };
79
+ };
80
+ required: never[];
81
+ };
82
+ };
83
+ /**
84
+ * Discover installed skill directories under ~/.claude/skills/.
85
+ *
86
+ * Skills are installed as either:
87
+ * - ~/.claude/skills/{skillName}/SKILL.md
88
+ * - ~/.claude/skills/{author}/{skillName}/SKILL.md
89
+ *
90
+ * Returns an array of { name, skillMdPath } objects.
91
+ */
92
+ export declare function discoverInstalledSkills(skillsDir: string): Promise<Array<{
93
+ name: string;
94
+ skillMdPath: string;
95
+ }>>;
96
+ /**
97
+ * Execute the skill_rescan tool.
98
+ *
99
+ * Reads installed SKILL.md files from ~/.claude/skills/ and runs
100
+ * SecurityScanner with current patterns against each.
101
+ *
102
+ * @param input Validated tool input
103
+ * @param overrideDir Optional skills directory override (for testing)
104
+ * @returns SkillRescanResponse with per-skill scan results
105
+ */
106
+ export declare function executeSkillRescan(input: SkillRescanInput, overrideDir?: string): Promise<SkillRescanResponse>;
107
+ //# sourceMappingURL=skill-rescan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-rescan.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-rescan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB;;GAEG;AACH,eAAO,MAAM,sBAAsB;IACjC,gEAAgE;;;;;;EAMhE,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAErE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAA;IACb,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAA;IACf,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,sCAAsC;IACtC,cAAc,EAAE;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,+DAA+D;IAC/D,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAA;IACnB,wBAAwB;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAMD;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAkBjC,CAAA;AASD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkDvD;AAMD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,gBAAgB,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAiF9B"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * @fileoverview skill_rescan MCP tool -- re-scan installed skills with current
3
+ * SecurityScanner patterns.
4
+ * @module @skillsmith/mcp-server/tools/skill-rescan
5
+ * @see SMI-3511: GAP-08 No re-scanning of installed skills
6
+ *
7
+ * When new detection patterns are added (SSRF, split-word, homoglyph, etc.),
8
+ * already-installed skills are never re-evaluated. This tool fills that gap
9
+ * by reading installed SKILL.md files and running SecurityScanner against each.
10
+ */
11
+ import { z } from 'zod';
12
+ import { promises as fs } from 'fs';
13
+ import { join } from 'path';
14
+ import { homedir } from 'os';
15
+ import { SecurityScanner } from '@skillsmith/core';
16
+ // ============================================================================
17
+ // Input / Output types
18
+ // ============================================================================
19
+ /**
20
+ * Input schema for skill_rescan tool
21
+ */
22
+ export const skillRescanInputSchema = z.object({
23
+ /** Optional skill name filter -- rescan only the named skill */
24
+ skillName: z
25
+ .string()
26
+ .min(1)
27
+ .optional()
28
+ .describe('Specific skill directory name to rescan (omit to rescan all installed skills)'),
29
+ });
30
+ // ============================================================================
31
+ // Tool schema (MCP tool definition)
32
+ // ============================================================================
33
+ /**
34
+ * MCP tool definition for skill_rescan
35
+ */
36
+ export const skillRescanToolSchema = {
37
+ name: 'skill_rescan',
38
+ description: 'Re-scan installed skills with the latest security patterns. ' +
39
+ 'Detects issues like SSRF instructions, prompt injection, data exfiltration, ' +
40
+ 'and other threats that may not have been caught when the skill was originally installed. ' +
41
+ 'Run without arguments to scan all installed skills, or specify a skill name to scan one.',
42
+ inputSchema: {
43
+ type: 'object',
44
+ properties: {
45
+ skillName: {
46
+ type: 'string',
47
+ description: 'Specific skill directory name to rescan (omit to rescan all installed skills).',
48
+ },
49
+ },
50
+ required: [],
51
+ },
52
+ };
53
+ // ============================================================================
54
+ // Helpers
55
+ // ============================================================================
56
+ /** Maximum number of top findings to include per skill */
57
+ const MAX_FINDINGS_PER_SKILL = 5;
58
+ /**
59
+ * Discover installed skill directories under ~/.claude/skills/.
60
+ *
61
+ * Skills are installed as either:
62
+ * - ~/.claude/skills/{skillName}/SKILL.md
63
+ * - ~/.claude/skills/{author}/{skillName}/SKILL.md
64
+ *
65
+ * Returns an array of { name, skillMdPath } objects.
66
+ */
67
+ export async function discoverInstalledSkills(skillsDir) {
68
+ const results = [];
69
+ let entries;
70
+ try {
71
+ entries = await fs.readdir(skillsDir);
72
+ }
73
+ catch {
74
+ return results;
75
+ }
76
+ for (const entry of entries) {
77
+ const entryPath = join(skillsDir, entry);
78
+ const stat = await fs.stat(entryPath).catch(() => null);
79
+ if (!stat?.isDirectory())
80
+ continue;
81
+ // Check for SKILL.md directly in this directory
82
+ const directSkillMd = join(entryPath, 'SKILL.md');
83
+ const directExists = await fs
84
+ .access(directSkillMd)
85
+ .then(() => true)
86
+ .catch(() => false);
87
+ if (directExists) {
88
+ results.push({ name: entry, skillMdPath: directSkillMd });
89
+ continue;
90
+ }
91
+ // Check for author/skill-name subdirectories
92
+ const subEntries = await fs.readdir(entryPath).catch(() => []);
93
+ for (const subEntry of subEntries) {
94
+ const subPath = join(entryPath, subEntry);
95
+ const subStat = await fs.stat(subPath).catch(() => null);
96
+ if (!subStat?.isDirectory())
97
+ continue;
98
+ const nestedSkillMd = join(subPath, 'SKILL.md');
99
+ const nestedExists = await fs
100
+ .access(nestedSkillMd)
101
+ .then(() => true)
102
+ .catch(() => false);
103
+ if (nestedExists) {
104
+ results.push({
105
+ name: `${entry}/${subEntry}`,
106
+ skillMdPath: nestedSkillMd,
107
+ });
108
+ }
109
+ }
110
+ }
111
+ return results;
112
+ }
113
+ // ============================================================================
114
+ // Execution
115
+ // ============================================================================
116
+ /**
117
+ * Execute the skill_rescan tool.
118
+ *
119
+ * Reads installed SKILL.md files from ~/.claude/skills/ and runs
120
+ * SecurityScanner with current patterns against each.
121
+ *
122
+ * @param input Validated tool input
123
+ * @param overrideDir Optional skills directory override (for testing)
124
+ * @returns SkillRescanResponse with per-skill scan results
125
+ */
126
+ export async function executeSkillRescan(input, overrideDir) {
127
+ const skillsDir = overrideDir ?? join(homedir(), '.claude', 'skills');
128
+ const scanner = new SecurityScanner();
129
+ // Discover installed skills
130
+ const installedSkills = await discoverInstalledSkills(skillsDir);
131
+ // Filter to specific skill if requested
132
+ let targetSkills = installedSkills;
133
+ if (input.skillName) {
134
+ targetSkills = installedSkills.filter((s) => s.name === input.skillName || s.name.endsWith(`/${input.skillName}`));
135
+ if (targetSkills.length === 0) {
136
+ return {
137
+ scannedCount: 0,
138
+ failedCount: 0,
139
+ results: [],
140
+ error: `Skill "${input.skillName}" not found in ${skillsDir}. ` +
141
+ `Found ${installedSkills.length} installed skill(s): ` +
142
+ `${installedSkills.map((s) => s.name).join(', ') || '(none)'}`,
143
+ };
144
+ }
145
+ }
146
+ // Scan each skill
147
+ const results = [];
148
+ for (const skill of targetSkills) {
149
+ let content;
150
+ try {
151
+ content = await fs.readFile(skill.skillMdPath, 'utf-8');
152
+ }
153
+ catch {
154
+ results.push({
155
+ skill: skill.name,
156
+ passed: false,
157
+ findingCount: 0,
158
+ riskScore: 0,
159
+ severityCounts: { critical: 0, high: 0, medium: 0, low: 0 },
160
+ topFindings: [],
161
+ error: `Could not read ${skill.skillMdPath}`,
162
+ });
163
+ continue;
164
+ }
165
+ const report = scanner.scan(skill.name, content);
166
+ const severityCounts = { critical: 0, high: 0, medium: 0, low: 0 };
167
+ for (const finding of report.findings) {
168
+ severityCounts[finding.severity]++;
169
+ }
170
+ // Take top findings sorted by severity (critical > high > medium > low)
171
+ const severityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
172
+ const sortedFindings = [...report.findings].sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]);
173
+ results.push({
174
+ skill: skill.name,
175
+ passed: report.passed,
176
+ findingCount: report.findings.length,
177
+ riskScore: report.riskScore,
178
+ severityCounts,
179
+ topFindings: sortedFindings.slice(0, MAX_FINDINGS_PER_SKILL).map((f) => ({
180
+ type: f.type,
181
+ severity: f.severity,
182
+ message: f.message,
183
+ lineNumber: f.lineNumber,
184
+ })),
185
+ });
186
+ }
187
+ const failedCount = results.filter((r) => !r.passed).length;
188
+ return {
189
+ scannedCount: results.length,
190
+ failedCount,
191
+ results,
192
+ };
193
+ }
194
+ //# sourceMappingURL=skill-rescan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-rescan.js","sourceRoot":"","sources":["../../../src/tools/skill-rescan.ts"],"names":[],"mappings":"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"}