@codemcp/agentskills-cli 0.0.5

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 (46) hide show
  1. package/LICENSE +19 -0
  2. package/dist/__tests__/cli.test.d.ts +2 -0
  3. package/dist/__tests__/cli.test.d.ts.map +1 -0
  4. package/dist/__tests__/cli.test.js +210 -0
  5. package/dist/__tests__/cli.test.js.map +1 -0
  6. package/dist/cli.d.ts +6 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +66 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/__tests__/add.test.d.ts +2 -0
  11. package/dist/commands/__tests__/add.test.d.ts.map +1 -0
  12. package/dist/commands/__tests__/add.test.js +363 -0
  13. package/dist/commands/__tests__/add.test.js.map +1 -0
  14. package/dist/commands/__tests__/install.test.d.ts +2 -0
  15. package/dist/commands/__tests__/install.test.d.ts.map +1 -0
  16. package/dist/commands/__tests__/install.test.js +587 -0
  17. package/dist/commands/__tests__/install.test.js.map +1 -0
  18. package/dist/commands/__tests__/list.test.d.ts +2 -0
  19. package/dist/commands/__tests__/list.test.d.ts.map +1 -0
  20. package/dist/commands/__tests__/list.test.js +69 -0
  21. package/dist/commands/__tests__/list.test.js.map +1 -0
  22. package/dist/commands/__tests__/validate.test.d.ts +2 -0
  23. package/dist/commands/__tests__/validate.test.d.ts.map +1 -0
  24. package/dist/commands/__tests__/validate.test.js +858 -0
  25. package/dist/commands/__tests__/validate.test.js.map +1 -0
  26. package/dist/commands/add.d.ts +28 -0
  27. package/dist/commands/add.d.ts.map +1 -0
  28. package/dist/commands/add.js +65 -0
  29. package/dist/commands/add.js.map +1 -0
  30. package/dist/commands/install.d.ts +16 -0
  31. package/dist/commands/install.d.ts.map +1 -0
  32. package/dist/commands/install.js +125 -0
  33. package/dist/commands/install.js.map +1 -0
  34. package/dist/commands/list.d.ts +4 -0
  35. package/dist/commands/list.d.ts.map +1 -0
  36. package/dist/commands/list.js +41 -0
  37. package/dist/commands/list.js.map +1 -0
  38. package/dist/commands/validate.d.ts +26 -0
  39. package/dist/commands/validate.d.ts.map +1 -0
  40. package/dist/commands/validate.js +244 -0
  41. package/dist/commands/validate.js.map +1 -0
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +10 -0
  45. package/dist/index.js.map +1 -0
  46. package/package.json +57 -0
@@ -0,0 +1,363 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
+ import { promises as fs } from "fs";
3
+ import { join } from "path";
4
+ import { tmpdir } from "os";
5
+ import { addCommand } from "../add.js";
6
+ import { SkillInstaller } from "@codemcp/agentskills-core";
7
+ /**
8
+ * Comprehensive test suite for add command
9
+ *
10
+ * Following TDD RED phase:
11
+ * - Write tests first to define the command interface and behavior
12
+ * - Tests define expected user experience before implementation
13
+ * - Clear test structure with arrange-act-assert
14
+ * - Mock SkillInstaller to avoid real downloads
15
+ * - Use real file system with temp directories
16
+ *
17
+ * Coverage (~14 tests):
18
+ * 1. Basic Operation (4 tests): add & install, create field, create package.json, success message
19
+ * 2. Error Handling (4 tests): empty name, empty spec, invalid spec, installation fails
20
+ * 3. Options (2 tests): skip-install flag, custom cwd
21
+ * 4. Update Existing (2 tests): replace spec, preserve other skills
22
+ * 5. Output (2 tests): spinner during install, success checkmark
23
+ */
24
+ describe("add command", () => {
25
+ let testDir;
26
+ let consoleLogSpy;
27
+ let consoleErrorSpy;
28
+ let processExitSpy;
29
+ let skillInstallerInstallSpy;
30
+ beforeEach(async () => {
31
+ // Create unique temp directory for each test
32
+ testDir = join(tmpdir(), `agentskills-test-${Date.now()}-${Math.random()}`);
33
+ await fs.mkdir(testDir, { recursive: true });
34
+ // Mock console and process.exit
35
+ consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => { });
36
+ consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => { });
37
+ processExitSpy = vi
38
+ .spyOn(process, "exit")
39
+ .mockImplementation((() => { }));
40
+ // Mock SkillInstaller.install method
41
+ skillInstallerInstallSpy = vi.spyOn(SkillInstaller.prototype, "install");
42
+ });
43
+ afterEach(async () => {
44
+ // Clean up temp directory
45
+ try {
46
+ await fs.rm(testDir, { recursive: true, force: true });
47
+ }
48
+ catch (error) {
49
+ // Ignore cleanup errors
50
+ }
51
+ // Restore mocks
52
+ consoleLogSpy.mockRestore();
53
+ consoleErrorSpy.mockRestore();
54
+ processExitSpy.mockRestore();
55
+ skillInstallerInstallSpy.mockRestore();
56
+ });
57
+ // Helper function to create package.json
58
+ async function createPackageJson(content) {
59
+ await fs.writeFile(join(testDir, "package.json"), JSON.stringify(content, null, 2), "utf-8");
60
+ }
61
+ // Helper function to read package.json
62
+ async function readPackageJson() {
63
+ const content = await fs.readFile(join(testDir, "package.json"), "utf-8");
64
+ return JSON.parse(content);
65
+ }
66
+ // Helper function to create successful install result
67
+ function createSuccessResult(name, spec) {
68
+ return {
69
+ success: true,
70
+ name,
71
+ spec,
72
+ resolvedVersion: "1.0.0",
73
+ integrity: "sha512-test",
74
+ installPath: join(testDir, ".agentskills/skills", name),
75
+ manifest: {
76
+ name,
77
+ description: "Test skill"
78
+ }
79
+ };
80
+ }
81
+ describe("Basic Operation", () => {
82
+ it("should add skill to package.json and install it", async () => {
83
+ // Arrange
84
+ await createPackageJson({
85
+ name: "test-project",
86
+ version: "1.0.0",
87
+ agentskills: {}
88
+ });
89
+ skillInstallerInstallSpy.mockResolvedValue(createSuccessResult("api-integration", "github:anthropic/api-integration#v1.0.0"));
90
+ // Act
91
+ await addCommand("api-integration", "github:anthropic/api-integration#v1.0.0", {
92
+ cwd: testDir
93
+ });
94
+ // Assert - package.json updated
95
+ const packageJson = await readPackageJson();
96
+ expect(packageJson.agentskills).toEqual({
97
+ "api-integration": "github:anthropic/api-integration#v1.0.0"
98
+ });
99
+ // Assert - installer called
100
+ expect(skillInstallerInstallSpy).toHaveBeenCalledWith("api-integration", "github:anthropic/api-integration#v1.0.0");
101
+ expect(skillInstallerInstallSpy).toHaveBeenCalledTimes(1);
102
+ });
103
+ it("should create agentskills field if it does not exist", async () => {
104
+ // Arrange
105
+ await createPackageJson({
106
+ name: "test-project",
107
+ version: "1.0.0"
108
+ });
109
+ skillInstallerInstallSpy.mockResolvedValue(createSuccessResult("local-skill", "file:./skills/my-skill"));
110
+ // Act
111
+ await addCommand("local-skill", "file:./skills/my-skill", {
112
+ cwd: testDir
113
+ });
114
+ // Assert
115
+ const packageJson = await readPackageJson();
116
+ expect(packageJson.agentskills).toEqual({
117
+ "local-skill": "file:./skills/my-skill"
118
+ });
119
+ });
120
+ it("should create package.json if it does not exist", async () => {
121
+ // Arrange
122
+ // No package.json exists
123
+ skillInstallerInstallSpy.mockResolvedValue(createSuccessResult("new-skill", "git+https://example.com/skill.git"));
124
+ // Act
125
+ await addCommand("new-skill", "git+https://example.com/skill.git", {
126
+ cwd: testDir
127
+ });
128
+ // Assert
129
+ const packageJson = await readPackageJson();
130
+ expect(packageJson).toMatchObject({
131
+ name: "agentskills-project",
132
+ agentskills: {
133
+ "new-skill": "git+https://example.com/skill.git"
134
+ }
135
+ });
136
+ });
137
+ it("should display success message with skill name and spec", async () => {
138
+ // Arrange
139
+ await createPackageJson({
140
+ name: "test-project",
141
+ version: "1.0.0",
142
+ agentskills: {}
143
+ });
144
+ skillInstallerInstallSpy.mockResolvedValue(createSuccessResult("success-skill", "github:user/skill#v2.0.0"));
145
+ // Act
146
+ await addCommand("success-skill", "github:user/skill#v2.0.0", {
147
+ cwd: testDir
148
+ });
149
+ // Assert
150
+ expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringMatching(/✓.*success-skill/));
151
+ expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringMatching(/github:user\/skill#v2\.0\.0/));
152
+ });
153
+ });
154
+ describe("Error Handling", () => {
155
+ it("should throw error when skill name is empty", async () => {
156
+ // Arrange
157
+ await createPackageJson({
158
+ name: "test-project",
159
+ version: "1.0.0",
160
+ agentskills: {}
161
+ });
162
+ // Act & Assert
163
+ await expect(addCommand("", "github:user/skill#v1.0.0", { cwd: testDir })).rejects.toThrow("Skill name cannot be empty");
164
+ // Verify installer was not called
165
+ expect(skillInstallerInstallSpy).not.toHaveBeenCalled();
166
+ });
167
+ it("should throw error when spec is empty", async () => {
168
+ // Arrange
169
+ await createPackageJson({
170
+ name: "test-project",
171
+ version: "1.0.0",
172
+ agentskills: {}
173
+ });
174
+ // Act & Assert
175
+ await expect(addCommand("test-skill", "", { cwd: testDir })).rejects.toThrow("Skill spec cannot be empty");
176
+ // Verify installer was not called
177
+ expect(skillInstallerInstallSpy).not.toHaveBeenCalled();
178
+ });
179
+ it("should handle invalid spec format during installation", async () => {
180
+ // Arrange
181
+ await createPackageJson({
182
+ name: "test-project",
183
+ version: "1.0.0",
184
+ agentskills: {}
185
+ });
186
+ skillInstallerInstallSpy.mockResolvedValue({
187
+ success: false,
188
+ name: "invalid-skill",
189
+ spec: "invalid:::spec",
190
+ error: "Invalid spec format"
191
+ });
192
+ // Act & Assert
193
+ await expect(addCommand("invalid-skill", "invalid:::spec", { cwd: testDir })).rejects.toThrow("Invalid spec format");
194
+ // Verify package.json was updated despite failure
195
+ const packageJson = await readPackageJson();
196
+ expect(packageJson.agentskills).toEqual({
197
+ "invalid-skill": "invalid:::spec"
198
+ });
199
+ });
200
+ it("should throw error when installation fails but update package.json", async () => {
201
+ // Arrange
202
+ await createPackageJson({
203
+ name: "test-project",
204
+ version: "1.0.0",
205
+ agentskills: {}
206
+ });
207
+ skillInstallerInstallSpy.mockResolvedValue({
208
+ success: false,
209
+ name: "fail-skill",
210
+ spec: "github:user/nonexistent#v1.0.0",
211
+ error: "Repository not found"
212
+ });
213
+ // Act & Assert
214
+ await expect(addCommand("fail-skill", "github:user/nonexistent#v1.0.0", {
215
+ cwd: testDir
216
+ })).rejects.toThrow("Repository not found");
217
+ // Verify package.json was still updated
218
+ const packageJson = await readPackageJson();
219
+ expect(packageJson.agentskills).toEqual({
220
+ "fail-skill": "github:user/nonexistent#v1.0.0"
221
+ });
222
+ });
223
+ });
224
+ describe("Options", () => {
225
+ it("should skip installation when skipInstall flag is true", async () => {
226
+ // Arrange
227
+ await createPackageJson({
228
+ name: "test-project",
229
+ version: "1.0.0",
230
+ agentskills: {}
231
+ });
232
+ // Act
233
+ await addCommand("skip-skill", "github:user/skill#v1.0.0", {
234
+ cwd: testDir,
235
+ skipInstall: true
236
+ });
237
+ // Assert - package.json updated
238
+ const packageJson = await readPackageJson();
239
+ expect(packageJson.agentskills).toEqual({
240
+ "skip-skill": "github:user/skill#v1.0.0"
241
+ });
242
+ // Assert - installer NOT called
243
+ expect(skillInstallerInstallSpy).not.toHaveBeenCalled();
244
+ // Assert - success message shown
245
+ expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringMatching(/✓.*skip-skill/));
246
+ });
247
+ it("should use custom cwd option", async () => {
248
+ // Arrange
249
+ const customDir = join(testDir, "custom");
250
+ await fs.mkdir(customDir, { recursive: true });
251
+ await createPackageJson({
252
+ name: "custom-project",
253
+ version: "1.0.0",
254
+ agentskills: {}
255
+ });
256
+ // Move package.json to custom directory
257
+ await fs.rename(join(testDir, "package.json"), join(customDir, "package.json"));
258
+ skillInstallerInstallSpy.mockResolvedValue(createSuccessResult("custom-skill", "file:./skill"));
259
+ // Act
260
+ await addCommand("custom-skill", "file:./skill", {
261
+ cwd: customDir
262
+ });
263
+ // Assert
264
+ const packageJson = JSON.parse(await fs.readFile(join(customDir, "package.json"), "utf-8"));
265
+ expect(packageJson.agentskills).toEqual({
266
+ "custom-skill": "file:./skill"
267
+ });
268
+ });
269
+ });
270
+ describe("Update Existing", () => {
271
+ it("should update existing skill with new spec", async () => {
272
+ // Arrange
273
+ await createPackageJson({
274
+ name: "test-project",
275
+ version: "1.0.0",
276
+ agentskills: {
277
+ "existing-skill": "github:user/skill#v1.0.0"
278
+ }
279
+ });
280
+ skillInstallerInstallSpy.mockResolvedValue(createSuccessResult("existing-skill", "github:user/skill#v2.0.0"));
281
+ // Act
282
+ await addCommand("existing-skill", "github:user/skill#v2.0.0", {
283
+ cwd: testDir
284
+ });
285
+ // Assert
286
+ const packageJson = await readPackageJson();
287
+ expect(packageJson.agentskills).toEqual({
288
+ "existing-skill": "github:user/skill#v2.0.0"
289
+ });
290
+ });
291
+ it("should preserve other skills when adding new skill", async () => {
292
+ // Arrange
293
+ await createPackageJson({
294
+ name: "test-project",
295
+ version: "1.0.0",
296
+ agentskills: {
297
+ "skill-one": "github:user/skill-one#v1.0.0",
298
+ "skill-two": "github:user/skill-two#v1.0.0"
299
+ }
300
+ });
301
+ skillInstallerInstallSpy.mockResolvedValue(createSuccessResult("skill-three", "github:user/skill-three#v1.0.0"));
302
+ // Act
303
+ await addCommand("skill-three", "github:user/skill-three#v1.0.0", {
304
+ cwd: testDir
305
+ });
306
+ // Assert
307
+ const packageJson = await readPackageJson();
308
+ expect(packageJson.agentskills).toEqual({
309
+ "skill-one": "github:user/skill-one#v1.0.0",
310
+ "skill-two": "github:user/skill-two#v1.0.0",
311
+ "skill-three": "github:user/skill-three#v1.0.0"
312
+ });
313
+ });
314
+ });
315
+ describe("Output", () => {
316
+ it("should show spinner during installation", async () => {
317
+ // Arrange
318
+ await createPackageJson({
319
+ name: "test-project",
320
+ version: "1.0.0",
321
+ agentskills: {}
322
+ });
323
+ let spinnerStarted = false;
324
+ skillInstallerInstallSpy.mockImplementation(async () => {
325
+ // Check that spinner message was shown before install completes
326
+ const calls = consoleLogSpy.mock.calls.flat().join(" ");
327
+ if (calls.includes("Installing") ||
328
+ calls.includes("⠋") ||
329
+ calls.includes("⠙")) {
330
+ spinnerStarted = true;
331
+ }
332
+ return createSuccessResult("spinner-skill", "github:user/skill#v1.0.0");
333
+ });
334
+ // Act
335
+ await addCommand("spinner-skill", "github:user/skill#v1.0.0", {
336
+ cwd: testDir
337
+ });
338
+ // Assert - check that spinner-related output was shown
339
+ // Note: ora spinner output may not show in tests, but we can verify the pattern
340
+ const allOutput = consoleLogSpy.mock.calls.flat().join(" ");
341
+ expect(allOutput.includes("spinner-skill") || spinnerStarted).toBe(true);
342
+ });
343
+ it("should show success checkmark and summary after installation", async () => {
344
+ // Arrange
345
+ await createPackageJson({
346
+ name: "test-project",
347
+ version: "1.0.0",
348
+ agentskills: {}
349
+ });
350
+ skillInstallerInstallSpy.mockResolvedValue(createSuccessResult("summary-skill", "github:user/skill#v1.0.0"));
351
+ // Act
352
+ await addCommand("summary-skill", "github:user/skill#v1.0.0", {
353
+ cwd: testDir
354
+ });
355
+ // Assert - checkmark and skill info shown
356
+ const allOutput = consoleLogSpy.mock.calls.flat().join("\n");
357
+ expect(allOutput).toMatch(/✓/);
358
+ expect(allOutput).toMatch(/summary-skill/);
359
+ expect(allOutput).toMatch(/github:user\/skill#v1\.0\.0/);
360
+ });
361
+ });
362
+ });
363
+ //# sourceMappingURL=add.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/add.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=install.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/install.test.ts"],"names":[],"mappings":""}