@codemcp/agentskills-core 0.0.7 → 1.0.0

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 (43) hide show
  1. package/dist/__tests__/mcp-config-manager.test.d.ts +2 -0
  2. package/dist/__tests__/mcp-config-manager.test.d.ts.map +1 -0
  3. package/dist/__tests__/mcp-config-manager.test.js +417 -0
  4. package/dist/__tests__/mcp-config-manager.test.js.map +1 -0
  5. package/dist/__tests__/mcp-dependency-checker.test.d.ts +2 -0
  6. package/dist/__tests__/mcp-dependency-checker.test.d.ts.map +1 -0
  7. package/dist/__tests__/mcp-dependency-checker.test.js +555 -0
  8. package/dist/__tests__/mcp-dependency-checker.test.js.map +1 -0
  9. package/dist/__tests__/parameter-substitution.test.d.ts +2 -0
  10. package/dist/__tests__/parameter-substitution.test.d.ts.map +1 -0
  11. package/dist/__tests__/parameter-substitution.test.js +383 -0
  12. package/dist/__tests__/parameter-substitution.test.js.map +1 -0
  13. package/dist/__tests__/validator.test.js +383 -7
  14. package/dist/__tests__/validator.test.js.map +1 -1
  15. package/dist/index.d.ts +4 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +3 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/installer.d.ts +8 -1
  20. package/dist/installer.d.ts.map +1 -1
  21. package/dist/installer.js +42 -1
  22. package/dist/installer.js.map +1 -1
  23. package/dist/mcp-config-manager.d.ts +62 -0
  24. package/dist/mcp-config-manager.d.ts.map +1 -0
  25. package/dist/mcp-config-manager.js +140 -0
  26. package/dist/mcp-config-manager.js.map +1 -0
  27. package/dist/mcp-dependency-checker.d.ts +26 -0
  28. package/dist/mcp-dependency-checker.d.ts.map +1 -0
  29. package/dist/mcp-dependency-checker.js +68 -0
  30. package/dist/mcp-dependency-checker.js.map +1 -0
  31. package/dist/parameter-substitution.d.ts +20 -0
  32. package/dist/parameter-substitution.d.ts.map +1 -0
  33. package/dist/parameter-substitution.js +82 -0
  34. package/dist/parameter-substitution.js.map +1 -0
  35. package/dist/parser.d.ts.map +1 -1
  36. package/dist/parser.js +2 -1
  37. package/dist/parser.js.map +1 -1
  38. package/dist/types.d.ts +64 -0
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/validator.d.ts.map +1 -1
  41. package/dist/validator.js +194 -0
  42. package/dist/validator.js.map +1 -1
  43. package/package.json +4 -1
@@ -0,0 +1,555 @@
1
+ import { describe, it, expect, beforeEach, vi } from "vitest";
2
+ import { MCPDependencyChecker } from "../mcp-dependency-checker.js";
3
+ import { MCPConfigManager } from "../mcp-config-manager.js";
4
+ // Mock MCPConfigManager
5
+ vi.mock("../mcp-config-manager.js", () => {
6
+ return {
7
+ MCPConfigManager: vi.fn().mockImplementation(() => ({
8
+ isServerConfigured: vi.fn()
9
+ }))
10
+ };
11
+ });
12
+ describe("MCPDependencyChecker", () => {
13
+ let checker;
14
+ let mockConfigManager;
15
+ beforeEach(() => {
16
+ vi.clearAllMocks();
17
+ checker = new MCPDependencyChecker();
18
+ mockConfigManager = new MCPConfigManager();
19
+ });
20
+ describe("collectDependencies", () => {
21
+ it("should return empty array when given 0 skills", () => {
22
+ const result = checker.collectDependencies([]);
23
+ expect(result).toEqual([]);
24
+ });
25
+ it("should return empty array when skills have no MCP dependencies", () => {
26
+ const skills = [
27
+ {
28
+ metadata: {
29
+ name: "skill1",
30
+ description: "Test skill 1"
31
+ },
32
+ body: "Skill content"
33
+ },
34
+ {
35
+ metadata: {
36
+ name: "skill2",
37
+ description: "Test skill 2"
38
+ },
39
+ body: "Skill content"
40
+ }
41
+ ];
42
+ const result = checker.collectDependencies(skills);
43
+ expect(result).toEqual([]);
44
+ });
45
+ it("should collect MCP dependencies from a single skill", () => {
46
+ const mcpDep = {
47
+ name: "filesystem",
48
+ description: "File system access",
49
+ command: "npx",
50
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
51
+ };
52
+ const skills = [
53
+ {
54
+ metadata: {
55
+ name: "file-manager",
56
+ description: "Manages files",
57
+ requiresMcpServers: [mcpDep]
58
+ },
59
+ body: "Skill content"
60
+ }
61
+ ];
62
+ const result = checker.collectDependencies(skills);
63
+ expect(result).toHaveLength(1);
64
+ expect(result[0]).toEqual({
65
+ serverName: "filesystem",
66
+ neededBy: ["file-manager"],
67
+ spec: mcpDep
68
+ });
69
+ });
70
+ it("should collect MCP dependencies from multiple skills", () => {
71
+ const filesystemDep = {
72
+ name: "filesystem",
73
+ description: "File system access",
74
+ command: "npx",
75
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
76
+ };
77
+ const githubDep = {
78
+ name: "github",
79
+ description: "GitHub API access",
80
+ command: "npx",
81
+ args: ["-y", "@modelcontextprotocol/server-github"],
82
+ env: {
83
+ GITHUB_TOKEN: "${GITHUB_TOKEN}"
84
+ }
85
+ };
86
+ const skills = [
87
+ {
88
+ metadata: {
89
+ name: "file-manager",
90
+ description: "Manages files",
91
+ requiresMcpServers: [filesystemDep]
92
+ },
93
+ body: "Skill content"
94
+ },
95
+ {
96
+ metadata: {
97
+ name: "github-helper",
98
+ description: "GitHub operations",
99
+ requiresMcpServers: [githubDep]
100
+ },
101
+ body: "Skill content"
102
+ }
103
+ ];
104
+ const result = checker.collectDependencies(skills);
105
+ expect(result).toHaveLength(2);
106
+ expect(result[0]).toEqual({
107
+ serverName: "filesystem",
108
+ neededBy: ["file-manager"],
109
+ spec: filesystemDep
110
+ });
111
+ expect(result[1]).toEqual({
112
+ serverName: "github",
113
+ neededBy: ["github-helper"],
114
+ spec: githubDep
115
+ });
116
+ });
117
+ it("should merge neededBy when multiple skills require the same server", () => {
118
+ const filesystemDep = {
119
+ name: "filesystem",
120
+ description: "File system access",
121
+ command: "npx",
122
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
123
+ };
124
+ const skills = [
125
+ {
126
+ metadata: {
127
+ name: "file-manager",
128
+ description: "Manages files",
129
+ requiresMcpServers: [filesystemDep]
130
+ },
131
+ body: "Skill content"
132
+ },
133
+ {
134
+ metadata: {
135
+ name: "file-reader",
136
+ description: "Reads files",
137
+ requiresMcpServers: [filesystemDep]
138
+ },
139
+ body: "Skill content"
140
+ },
141
+ {
142
+ metadata: {
143
+ name: "file-writer",
144
+ description: "Writes files",
145
+ requiresMcpServers: [filesystemDep]
146
+ },
147
+ body: "Skill content"
148
+ }
149
+ ];
150
+ const result = checker.collectDependencies(skills);
151
+ expect(result).toHaveLength(1);
152
+ expect(result[0]).toEqual({
153
+ serverName: "filesystem",
154
+ neededBy: ["file-manager", "file-reader", "file-writer"],
155
+ spec: filesystemDep
156
+ });
157
+ });
158
+ it("should handle skills with multiple MCP dependencies", () => {
159
+ const filesystemDep = {
160
+ name: "filesystem",
161
+ description: "File system access",
162
+ command: "npx",
163
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
164
+ };
165
+ const githubDep = {
166
+ name: "github",
167
+ description: "GitHub API access",
168
+ command: "npx",
169
+ args: ["-y", "@modelcontextprotocol/server-github"]
170
+ };
171
+ const skills = [
172
+ {
173
+ metadata: {
174
+ name: "devops-helper",
175
+ description: "DevOps operations",
176
+ requiresMcpServers: [filesystemDep, githubDep]
177
+ },
178
+ body: "Skill content"
179
+ }
180
+ ];
181
+ const result = checker.collectDependencies(skills);
182
+ expect(result).toHaveLength(2);
183
+ expect(result[0]).toEqual({
184
+ serverName: "filesystem",
185
+ neededBy: ["devops-helper"],
186
+ spec: filesystemDep
187
+ });
188
+ expect(result[1]).toEqual({
189
+ serverName: "github",
190
+ neededBy: ["devops-helper"],
191
+ spec: githubDep
192
+ });
193
+ });
194
+ it("should handle duplicate server names with different specs by merging neededBy", () => {
195
+ // Different specs for the same server name (edge case)
196
+ const filesystemDep1 = {
197
+ name: "filesystem",
198
+ description: "File system access",
199
+ command: "npx",
200
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
201
+ };
202
+ const filesystemDep2 = {
203
+ name: "filesystem",
204
+ description: "File system access (different config)",
205
+ command: "npx",
206
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/home"]
207
+ };
208
+ const skills = [
209
+ {
210
+ metadata: {
211
+ name: "skill1",
212
+ description: "Skill 1",
213
+ requiresMcpServers: [filesystemDep1]
214
+ },
215
+ body: "Skill content"
216
+ },
217
+ {
218
+ metadata: {
219
+ name: "skill2",
220
+ description: "Skill 2",
221
+ requiresMcpServers: [filesystemDep2]
222
+ },
223
+ body: "Skill content"
224
+ }
225
+ ];
226
+ const result = checker.collectDependencies(skills);
227
+ expect(result).toHaveLength(1);
228
+ expect(result[0].serverName).toBe("filesystem");
229
+ expect(result[0].neededBy).toEqual(["skill1", "skill2"]);
230
+ // Should use the first spec encountered
231
+ expect(result[0].spec).toEqual(filesystemDep1);
232
+ });
233
+ it("should handle mix of skills with and without MCP dependencies", () => {
234
+ const filesystemDep = {
235
+ name: "filesystem",
236
+ description: "File system access",
237
+ command: "npx",
238
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
239
+ };
240
+ const skills = [
241
+ {
242
+ metadata: {
243
+ name: "skill1",
244
+ description: "No dependencies"
245
+ },
246
+ body: "Skill content"
247
+ },
248
+ {
249
+ metadata: {
250
+ name: "skill2",
251
+ description: "Has dependencies",
252
+ requiresMcpServers: [filesystemDep]
253
+ },
254
+ body: "Skill content"
255
+ },
256
+ {
257
+ metadata: {
258
+ name: "skill3",
259
+ description: "No dependencies"
260
+ },
261
+ body: "Skill content"
262
+ }
263
+ ];
264
+ const result = checker.collectDependencies(skills);
265
+ expect(result).toHaveLength(1);
266
+ expect(result[0]).toEqual({
267
+ serverName: "filesystem",
268
+ neededBy: ["skill2"],
269
+ spec: filesystemDep
270
+ });
271
+ });
272
+ });
273
+ describe("checkDependencies", () => {
274
+ it("should return all configured when all servers are configured", async () => {
275
+ const dependencies = [
276
+ {
277
+ serverName: "filesystem",
278
+ neededBy: ["skill1"],
279
+ spec: {
280
+ name: "filesystem",
281
+ description: "File system access",
282
+ command: "npx",
283
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
284
+ }
285
+ },
286
+ {
287
+ serverName: "github",
288
+ neededBy: ["skill2"],
289
+ spec: {
290
+ name: "github",
291
+ description: "GitHub API access",
292
+ command: "npx",
293
+ args: ["-y", "@modelcontextprotocol/server-github"]
294
+ }
295
+ }
296
+ ];
297
+ const clientType = "claude-desktop";
298
+ // Mock all servers as configured
299
+ vi.mocked(mockConfigManager.isServerConfigured)
300
+ .mockResolvedValueOnce(true) // filesystem
301
+ .mockResolvedValueOnce(true); // github
302
+ const result = await checker.checkDependencies(clientType, dependencies, mockConfigManager);
303
+ expect(result.allConfigured).toBe(true);
304
+ expect(result.missing).toEqual([]);
305
+ expect(result.configured).toEqual(["filesystem", "github"]);
306
+ });
307
+ it("should return missing servers when some are not configured", async () => {
308
+ const dependencies = [
309
+ {
310
+ serverName: "filesystem",
311
+ neededBy: ["skill1"],
312
+ spec: {
313
+ name: "filesystem",
314
+ description: "File system access",
315
+ command: "npx",
316
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
317
+ }
318
+ },
319
+ {
320
+ serverName: "github",
321
+ neededBy: ["skill2"],
322
+ spec: {
323
+ name: "github",
324
+ description: "GitHub API access",
325
+ command: "npx",
326
+ args: ["-y", "@modelcontextprotocol/server-github"]
327
+ }
328
+ }
329
+ ];
330
+ const clientType = "claude-desktop";
331
+ // Mock filesystem configured, github not configured
332
+ vi.mocked(mockConfigManager.isServerConfigured)
333
+ .mockResolvedValueOnce(true) // filesystem
334
+ .mockResolvedValueOnce(false); // github
335
+ const result = await checker.checkDependencies(clientType, dependencies, mockConfigManager);
336
+ expect(result.allConfigured).toBe(false);
337
+ expect(result.missing).toEqual([dependencies[1]]);
338
+ expect(result.configured).toEqual(["filesystem"]);
339
+ });
340
+ it("should return all missing when no servers are configured", async () => {
341
+ const dependencies = [
342
+ {
343
+ serverName: "filesystem",
344
+ neededBy: ["skill1"],
345
+ spec: {
346
+ name: "filesystem",
347
+ description: "File system access",
348
+ command: "npx",
349
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
350
+ }
351
+ },
352
+ {
353
+ serverName: "github",
354
+ neededBy: ["skill2"],
355
+ spec: {
356
+ name: "github",
357
+ description: "GitHub API access",
358
+ command: "npx",
359
+ args: ["-y", "@modelcontextprotocol/server-github"]
360
+ }
361
+ }
362
+ ];
363
+ const clientType = "claude-desktop";
364
+ // Mock all servers as not configured
365
+ vi.mocked(mockConfigManager.isServerConfigured)
366
+ .mockResolvedValueOnce(false) // filesystem
367
+ .mockResolvedValueOnce(false); // github
368
+ const result = await checker.checkDependencies(clientType, dependencies, mockConfigManager);
369
+ expect(result.allConfigured).toBe(false);
370
+ expect(result.missing).toEqual(dependencies);
371
+ expect(result.configured).toEqual([]);
372
+ });
373
+ it("should return empty result when checking empty dependencies", async () => {
374
+ const clientType = "claude-desktop";
375
+ const result = await checker.checkDependencies(clientType, [], mockConfigManager);
376
+ expect(result.allConfigured).toBe(true);
377
+ expect(result.missing).toEqual([]);
378
+ expect(result.configured).toEqual([]);
379
+ });
380
+ it("should handle config file that does not exist", async () => {
381
+ const dependencies = [
382
+ {
383
+ serverName: "filesystem",
384
+ neededBy: ["skill1"],
385
+ spec: {
386
+ name: "filesystem",
387
+ description: "File system access",
388
+ command: "npx",
389
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
390
+ }
391
+ }
392
+ ];
393
+ const clientType = "claude-desktop";
394
+ // Mock isServerConfigured to return false (config doesn't exist)
395
+ vi.mocked(mockConfigManager.isServerConfigured).mockResolvedValueOnce(false);
396
+ const result = await checker.checkDependencies(clientType, dependencies, mockConfigManager);
397
+ expect(result.allConfigured).toBe(false);
398
+ expect(result.missing).toEqual(dependencies);
399
+ expect(result.configured).toEqual([]);
400
+ });
401
+ it("should work with different MCP client types", async () => {
402
+ const dependencies = [
403
+ {
404
+ serverName: "filesystem",
405
+ neededBy: ["skill1"],
406
+ spec: {
407
+ name: "filesystem",
408
+ description: "File system access",
409
+ command: "npx",
410
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
411
+ }
412
+ }
413
+ ];
414
+ const clientTypes = [
415
+ "claude-desktop",
416
+ "cline",
417
+ "continue",
418
+ "cursor",
419
+ "junie"
420
+ ];
421
+ for (const clientType of clientTypes) {
422
+ vi.mocked(mockConfigManager.isServerConfigured).mockResolvedValueOnce(true);
423
+ const result = await checker.checkDependencies(clientType, dependencies, mockConfigManager);
424
+ expect(result.allConfigured).toBe(true);
425
+ expect(result.configured).toEqual(["filesystem"]);
426
+ expect(mockConfigManager.isServerConfigured).toHaveBeenCalledWith(clientType, "filesystem", undefined);
427
+ }
428
+ });
429
+ });
430
+ describe("Integration: Full flow", () => {
431
+ it("should collect and check dependencies from skills to result", async () => {
432
+ // Step 1: Create skills with various dependencies
433
+ const filesystemDep = {
434
+ name: "filesystem",
435
+ description: "File system access",
436
+ command: "npx",
437
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
438
+ };
439
+ const githubDep = {
440
+ name: "github",
441
+ description: "GitHub API access",
442
+ command: "npx",
443
+ args: ["-y", "@modelcontextprotocol/server-github"],
444
+ env: {
445
+ GITHUB_TOKEN: "${GITHUB_TOKEN}"
446
+ }
447
+ };
448
+ const slackDep = {
449
+ name: "slack",
450
+ description: "Slack API access",
451
+ command: "npx",
452
+ args: ["-y", "@modelcontextprotocol/server-slack"],
453
+ env: {
454
+ SLACK_TOKEN: "${SLACK_TOKEN}"
455
+ }
456
+ };
457
+ const skills = [
458
+ {
459
+ metadata: {
460
+ name: "file-manager",
461
+ description: "Manages files",
462
+ requiresMcpServers: [filesystemDep]
463
+ },
464
+ body: "Skill content"
465
+ },
466
+ {
467
+ metadata: {
468
+ name: "github-helper",
469
+ description: "GitHub operations",
470
+ requiresMcpServers: [githubDep]
471
+ },
472
+ body: "Skill content"
473
+ },
474
+ {
475
+ metadata: {
476
+ name: "devops-tool",
477
+ description: "DevOps operations",
478
+ requiresMcpServers: [filesystemDep, slackDep] // Uses filesystem AND slack
479
+ },
480
+ body: "Skill content"
481
+ },
482
+ {
483
+ metadata: {
484
+ name: "simple-skill",
485
+ description: "No dependencies"
486
+ },
487
+ body: "Skill content"
488
+ }
489
+ ];
490
+ // Step 2: Collect dependencies
491
+ const dependencies = checker.collectDependencies(skills);
492
+ expect(dependencies).toHaveLength(3);
493
+ expect(dependencies[0].serverName).toBe("filesystem");
494
+ expect(dependencies[0].neededBy).toEqual(["file-manager", "devops-tool"]);
495
+ expect(dependencies[1].serverName).toBe("github");
496
+ expect(dependencies[1].neededBy).toEqual(["github-helper"]);
497
+ expect(dependencies[2].serverName).toBe("slack");
498
+ expect(dependencies[2].neededBy).toEqual(["devops-tool"]);
499
+ // Step 3: Check dependencies
500
+ // Simulate: filesystem configured, github not configured, slack configured
501
+ const clientType = "claude-desktop";
502
+ vi.mocked(mockConfigManager.isServerConfigured)
503
+ .mockResolvedValueOnce(true) // filesystem
504
+ .mockResolvedValueOnce(false) // github
505
+ .mockResolvedValueOnce(true); // slack
506
+ const result = await checker.checkDependencies(clientType, dependencies, mockConfigManager);
507
+ // Step 4: Verify result
508
+ expect(result.allConfigured).toBe(false);
509
+ expect(result.configured).toEqual(["filesystem", "slack"]);
510
+ expect(result.missing).toHaveLength(1);
511
+ expect(result.missing[0].serverName).toBe("github");
512
+ expect(result.missing[0].neededBy).toEqual(["github-helper"]);
513
+ });
514
+ it("should handle empty skills list through full flow", async () => {
515
+ const skills = [];
516
+ // Collect dependencies
517
+ const dependencies = checker.collectDependencies(skills);
518
+ expect(dependencies).toEqual([]);
519
+ // Check dependencies
520
+ const clientType = "claude-desktop";
521
+ const result = await checker.checkDependencies(clientType, dependencies, mockConfigManager);
522
+ expect(result.allConfigured).toBe(true);
523
+ expect(result.configured).toEqual([]);
524
+ expect(result.missing).toEqual([]);
525
+ });
526
+ it("should handle all skills having no dependencies through full flow", async () => {
527
+ const skills = [
528
+ {
529
+ metadata: {
530
+ name: "skill1",
531
+ description: "Simple skill"
532
+ },
533
+ body: "Skill content"
534
+ },
535
+ {
536
+ metadata: {
537
+ name: "skill2",
538
+ description: "Another simple skill"
539
+ },
540
+ body: "Skill content"
541
+ }
542
+ ];
543
+ // Collect dependencies
544
+ const dependencies = checker.collectDependencies(skills);
545
+ expect(dependencies).toEqual([]);
546
+ // Check dependencies
547
+ const clientType = "claude-desktop";
548
+ const result = await checker.checkDependencies(clientType, dependencies, mockConfigManager);
549
+ expect(result.allConfigured).toBe(true);
550
+ expect(result.configured).toEqual([]);
551
+ expect(result.missing).toEqual([]);
552
+ });
553
+ });
554
+ });
555
+ //# sourceMappingURL=mcp-dependency-checker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-dependency-checker.test.js","sourceRoot":"","sources":["../../src/__tests__/mcp-dependency-checker.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parameter-substitution.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-substitution.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/parameter-substitution.test.ts"],"names":[],"mappings":""}