@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.
- package/LICENSE +19 -0
- package/dist/__tests__/cli.test.d.ts +2 -0
- package/dist/__tests__/cli.test.d.ts.map +1 -0
- package/dist/__tests__/cli.test.js +210 -0
- package/dist/__tests__/cli.test.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +66 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/__tests__/add.test.d.ts +2 -0
- package/dist/commands/__tests__/add.test.d.ts.map +1 -0
- package/dist/commands/__tests__/add.test.js +363 -0
- package/dist/commands/__tests__/add.test.js.map +1 -0
- package/dist/commands/__tests__/install.test.d.ts +2 -0
- package/dist/commands/__tests__/install.test.d.ts.map +1 -0
- package/dist/commands/__tests__/install.test.js +587 -0
- package/dist/commands/__tests__/install.test.js.map +1 -0
- package/dist/commands/__tests__/list.test.d.ts +2 -0
- package/dist/commands/__tests__/list.test.d.ts.map +1 -0
- package/dist/commands/__tests__/list.test.js +69 -0
- package/dist/commands/__tests__/list.test.js.map +1 -0
- package/dist/commands/__tests__/validate.test.d.ts +2 -0
- package/dist/commands/__tests__/validate.test.d.ts.map +1 -0
- package/dist/commands/__tests__/validate.test.js +858 -0
- package/dist/commands/__tests__/validate.test.js.map +1 -0
- package/dist/commands/add.d.ts +28 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +65 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/install.d.ts +16 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +125 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +4 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +41 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/validate.d.ts +26 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +244 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"install.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/install.test.ts"],"names":[],"mappings":""}
|