@codemcp/agentskills-core 0.0.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 (50) hide show
  1. package/LICENSE +19 -0
  2. package/dist/__tests__/package-config.test.d.ts +2 -0
  3. package/dist/__tests__/package-config.test.d.ts.map +1 -0
  4. package/dist/__tests__/package-config.test.js +251 -0
  5. package/dist/__tests__/package-config.test.js.map +1 -0
  6. package/dist/__tests__/parser.test.d.ts +2 -0
  7. package/dist/__tests__/parser.test.d.ts.map +1 -0
  8. package/dist/__tests__/parser.test.js +613 -0
  9. package/dist/__tests__/parser.test.js.map +1 -0
  10. package/dist/__tests__/registry.test.d.ts +2 -0
  11. package/dist/__tests__/registry.test.d.ts.map +1 -0
  12. package/dist/__tests__/registry.test.js +415 -0
  13. package/dist/__tests__/registry.test.js.map +1 -0
  14. package/dist/__tests__/skill-installer.test.d.ts +2 -0
  15. package/dist/__tests__/skill-installer.test.d.ts.map +1 -0
  16. package/dist/__tests__/skill-installer.test.js +229 -0
  17. package/dist/__tests__/skill-installer.test.js.map +1 -0
  18. package/dist/__tests__/validator.test.d.ts +2 -0
  19. package/dist/__tests__/validator.test.d.ts.map +1 -0
  20. package/dist/__tests__/validator.test.js +284 -0
  21. package/dist/__tests__/validator.test.js.map +1 -0
  22. package/dist/index.d.ts +7 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +6 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/installer.d.ts +89 -0
  27. package/dist/installer.d.ts.map +1 -0
  28. package/dist/installer.js +469 -0
  29. package/dist/installer.js.map +1 -0
  30. package/dist/package-config.d.ts +52 -0
  31. package/dist/package-config.d.ts.map +1 -0
  32. package/dist/package-config.js +267 -0
  33. package/dist/package-config.js.map +1 -0
  34. package/dist/parser.d.ts +59 -0
  35. package/dist/parser.d.ts.map +1 -0
  36. package/dist/parser.js +154 -0
  37. package/dist/parser.js.map +1 -0
  38. package/dist/registry.d.ts +72 -0
  39. package/dist/registry.d.ts.map +1 -0
  40. package/dist/registry.js +180 -0
  41. package/dist/registry.js.map +1 -0
  42. package/dist/types.d.ts +202 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +8 -0
  45. package/dist/types.js.map +1 -0
  46. package/dist/validator.d.ts +27 -0
  47. package/dist/validator.d.ts.map +1 -0
  48. package/dist/validator.js +165 -0
  49. package/dist/validator.js.map +1 -0
  50. package/package.json +56 -0
package/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ MIT License
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=package-config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-config.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/package-config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,251 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
+ import { promises as fs } from "fs";
3
+ import { join } from "path";
4
+ import { tmpdir } from "os";
5
+ import { PackageConfigManager } from "../package-config.js";
6
+ describe("PackageConfigManager", () => {
7
+ let tempDir;
8
+ let projectRoot;
9
+ let packageJsonPath;
10
+ beforeEach(async () => {
11
+ tempDir = join(tmpdir(), `package-config-test-${Date.now()}`);
12
+ projectRoot = join(tempDir, "project");
13
+ packageJsonPath = join(projectRoot, "package.json");
14
+ await fs.mkdir(projectRoot, { recursive: true });
15
+ });
16
+ afterEach(async () => {
17
+ try {
18
+ await fs.rm(tempDir, { recursive: true, force: true });
19
+ }
20
+ catch {
21
+ // Ignore cleanup errors
22
+ }
23
+ });
24
+ describe("Constructor and defaults", () => {
25
+ it("should throw error for invalid project root", () => {
26
+ expect(() => new PackageConfigManager("")).toThrow("Project root directory is required");
27
+ expect(() => new PackageConfigManager(null)).toThrow();
28
+ });
29
+ it("should return default configuration", () => {
30
+ const manager = new PackageConfigManager(projectRoot);
31
+ const config = manager.getDefaultConfig();
32
+ expect(config).toEqual({
33
+ skills: {},
34
+ config: {
35
+ skillsDirectory: ".agentskills/skills",
36
+ autoDiscover: [".claude/skills"],
37
+ maxSkillSize: 5000,
38
+ logLevel: "info"
39
+ },
40
+ source: { type: "defaults" }
41
+ });
42
+ });
43
+ });
44
+ describe("loadConfig - Various scenarios", () => {
45
+ it("should return defaults when package.json does not exist", async () => {
46
+ const manager = new PackageConfigManager(projectRoot);
47
+ const config = await manager.loadConfig();
48
+ expect(config.source.type).toBe("defaults");
49
+ expect(config.skills).toEqual({});
50
+ });
51
+ it("should load complete config with both fields", async () => {
52
+ await fs.writeFile(packageJsonPath, JSON.stringify({
53
+ name: "project",
54
+ agentskills: {
55
+ "api-integration": "github:user/api#v1.0.0",
56
+ "database-query": "git+https://github.com/org/db.git"
57
+ },
58
+ agentskillsConfig: {
59
+ skillsDirectory: ".agentskills/skills",
60
+ autoDiscover: [".claude/skills", "~/custom"],
61
+ maxSkillSize: 5000,
62
+ logLevel: "info"
63
+ }
64
+ }), "utf-8");
65
+ const config = await new PackageConfigManager(projectRoot).loadConfig();
66
+ expect(config.source.type).toBe("file");
67
+ expect(config.skills).toEqual({
68
+ "api-integration": "github:user/api#v1.0.0",
69
+ "database-query": "git+https://github.com/org/db.git"
70
+ });
71
+ expect(config.config.skillsDirectory).toBe(".agentskills/skills");
72
+ });
73
+ it("should load skills only and use default config", async () => {
74
+ await fs.writeFile(packageJsonPath, JSON.stringify({
75
+ name: "project",
76
+ agentskills: { "skill-one": "github:user/skill-one" }
77
+ }), "utf-8");
78
+ const config = await new PackageConfigManager(projectRoot).loadConfig();
79
+ expect(config.skills).toEqual({ "skill-one": "github:user/skill-one" });
80
+ expect(config.config.logLevel).toBe("info");
81
+ });
82
+ it("should merge partial config with defaults", async () => {
83
+ await fs.writeFile(packageJsonPath, JSON.stringify({
84
+ agentskillsConfig: {
85
+ skillsDirectory: "custom/path",
86
+ logLevel: "debug"
87
+ }
88
+ }), "utf-8");
89
+ const config = await new PackageConfigManager(projectRoot).loadConfig();
90
+ expect(config.config.skillsDirectory).toBe("custom/path");
91
+ expect(config.config.logLevel).toBe("debug");
92
+ expect(config.config.autoDiscover).toEqual([".claude/skills"]);
93
+ });
94
+ });
95
+ describe("loadConfig - Validation errors", () => {
96
+ it("should throw for invalid JSON", async () => {
97
+ await fs.writeFile(packageJsonPath, "{ invalid json", "utf-8");
98
+ await expect(new PackageConfigManager(projectRoot).loadConfig()).rejects.toThrow(/Failed to parse/);
99
+ });
100
+ it.each([
101
+ ["invalid logLevel", { logLevel: "invalid" }, /Invalid logLevel/i],
102
+ [
103
+ "non-array autoDiscover",
104
+ { autoDiscover: "string" },
105
+ /autoDiscover must be an array/i
106
+ ],
107
+ [
108
+ "non-number maxSkillSize",
109
+ { maxSkillSize: "5000" },
110
+ /maxSkillSize must be a number/i
111
+ ],
112
+ [
113
+ "negative maxSkillSize",
114
+ { maxSkillSize: -100 },
115
+ /maxSkillSize must be a positive/i
116
+ ],
117
+ [
118
+ "empty skillsDirectory",
119
+ { skillsDirectory: "" },
120
+ /skillsDirectory cannot be empty/i
121
+ ]
122
+ ])("should throw for %s", async (_, config, expectedError) => {
123
+ await fs.writeFile(packageJsonPath, JSON.stringify({ agentskillsConfig: config }), "utf-8");
124
+ await expect(new PackageConfigManager(projectRoot).loadConfig()).rejects.toThrow(expectedError);
125
+ });
126
+ it("should throw for non-object agentskills", async () => {
127
+ await fs.writeFile(packageJsonPath, JSON.stringify({ agentskills: "not-object" }), "utf-8");
128
+ await expect(new PackageConfigManager(projectRoot).loadConfig()).rejects.toThrow(/agentskills must be an object/i);
129
+ });
130
+ it("should throw for agentskills with non-string values", async () => {
131
+ await fs.writeFile(packageJsonPath, JSON.stringify({ agentskills: { skill: 123 } }), "utf-8");
132
+ await expect(new PackageConfigManager(projectRoot).loadConfig()).rejects.toThrow(/values must be strings/i);
133
+ });
134
+ });
135
+ describe("saveSkills", () => {
136
+ it("should create package.json with skills when file does not exist", async () => {
137
+ const manager = new PackageConfigManager(projectRoot);
138
+ await manager.saveSkills({ "skill-one": "github:user/skill-one" });
139
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
140
+ expect(packageJson.agentskills).toEqual({
141
+ "skill-one": "github:user/skill-one"
142
+ });
143
+ });
144
+ it("should update existing package.json and preserve other fields", async () => {
145
+ await fs.writeFile(packageJsonPath, JSON.stringify({
146
+ name: "project",
147
+ version: "1.0.0",
148
+ dependencies: { express: "^4.0.0" },
149
+ agentskillsConfig: { logLevel: "debug" }
150
+ }), "utf-8");
151
+ await new PackageConfigManager(projectRoot).saveSkills({
152
+ "new-skill": "github:user/new"
153
+ });
154
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
155
+ expect(packageJson.agentskills).toEqual({
156
+ "new-skill": "github:user/new"
157
+ });
158
+ expect(packageJson.name).toBe("project");
159
+ expect(packageJson.dependencies).toEqual({ express: "^4.0.0" });
160
+ expect(packageJson.agentskillsConfig).toEqual({ logLevel: "debug" });
161
+ });
162
+ });
163
+ describe("addSkill", () => {
164
+ it("should add skill to existing agentskills", async () => {
165
+ await fs.writeFile(packageJsonPath, JSON.stringify({
166
+ agentskills: { existing: "github:user/existing" }
167
+ }), "utf-8");
168
+ await new PackageConfigManager(projectRoot).addSkill("new-skill", "github:user/new");
169
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
170
+ expect(packageJson.agentskills).toEqual({
171
+ existing: "github:user/existing",
172
+ "new-skill": "github:user/new"
173
+ });
174
+ });
175
+ it("should create package.json if it does not exist", async () => {
176
+ await new PackageConfigManager(projectRoot).addSkill("first", "github:user/first");
177
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
178
+ expect(packageJson.agentskills).toEqual({ first: "github:user/first" });
179
+ });
180
+ it("should update existing skill with new spec", async () => {
181
+ await fs.writeFile(packageJsonPath, JSON.stringify({
182
+ agentskills: { skill: "github:user/skill#v1.0.0" }
183
+ }), "utf-8");
184
+ await new PackageConfigManager(projectRoot).addSkill("skill", "github:user/skill#v2.0.0");
185
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
186
+ expect(packageJson.agentskills["skill"]).toBe("github:user/skill#v2.0.0");
187
+ });
188
+ it("should throw for empty name or spec", async () => {
189
+ const manager = new PackageConfigManager(projectRoot);
190
+ await expect(manager.addSkill("", "github:user/skill")).rejects.toThrow(/name cannot be empty/i);
191
+ await expect(manager.addSkill("skill", "")).rejects.toThrow(/spec cannot be empty/i);
192
+ });
193
+ });
194
+ describe("removeSkill", () => {
195
+ it("should remove skill from agentskills", async () => {
196
+ await fs.writeFile(packageJsonPath, JSON.stringify({
197
+ agentskills: {
198
+ "skill-one": "github:user/one",
199
+ "skill-two": "github:user/two"
200
+ }
201
+ }), "utf-8");
202
+ await new PackageConfigManager(projectRoot).removeSkill("skill-one");
203
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
204
+ expect(packageJson.agentskills).toEqual({
205
+ "skill-two": "github:user/two"
206
+ });
207
+ });
208
+ it("should not error when removing non-existent skill or when file does not exist", async () => {
209
+ const manager = new PackageConfigManager(projectRoot);
210
+ await expect(manager.removeSkill("non-existent")).resolves.not.toThrow();
211
+ });
212
+ it("should throw for empty skill name", async () => {
213
+ await expect(new PackageConfigManager(projectRoot).removeSkill("")).rejects.toThrow(/name cannot be empty/i);
214
+ });
215
+ });
216
+ describe("Integration - Complete workflow", () => {
217
+ it("should support add/load/remove/save workflow", async () => {
218
+ const manager = new PackageConfigManager(projectRoot);
219
+ await manager.addSkill("skill-one", "github:user/one#v1.0.0");
220
+ let config = await manager.loadConfig();
221
+ expect(config.skills).toEqual({ "skill-one": "github:user/one#v1.0.0" });
222
+ await manager.addSkill("skill-two", "github:user/two#v2.0.0");
223
+ config = await manager.loadConfig();
224
+ expect(Object.keys(config.skills)).toHaveLength(2);
225
+ await manager.removeSkill("skill-one");
226
+ config = await manager.loadConfig();
227
+ expect(config.skills).toEqual({ "skill-two": "github:user/two#v2.0.0" });
228
+ await manager.saveSkills({ "skill-three": "github:user/three" });
229
+ config = await manager.loadConfig();
230
+ expect(config.skills).toEqual({ "skill-three": "github:user/three" });
231
+ });
232
+ it("should preserve config settings throughout operations", async () => {
233
+ await fs.writeFile(packageJsonPath, JSON.stringify({
234
+ agentskills: { initial: "github:user/initial" },
235
+ agentskillsConfig: {
236
+ skillsDirectory: "custom",
237
+ maxSkillSize: 8000,
238
+ logLevel: "debug"
239
+ }
240
+ }), "utf-8");
241
+ const manager = new PackageConfigManager(projectRoot);
242
+ await manager.addSkill("new", "github:user/new");
243
+ await manager.removeSkill("initial");
244
+ const config = await manager.loadConfig();
245
+ expect(config.config.skillsDirectory).toBe("custom");
246
+ expect(config.config.maxSkillSize).toBe(8000);
247
+ expect(config.config.logLevel).toBe("debug");
248
+ });
249
+ });
250
+ });
251
+ //# sourceMappingURL=package-config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-config.test.js","sourceRoot":"","sources":["../../src/__tests__/package-config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/parser.test.ts"],"names":[],"mappings":""}