@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
@@ -0,0 +1,229 @@
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 { SkillInstaller } from "../installer.js";
6
+ import * as pacote from "pacote";
7
+ vi.mock("pacote", () => ({
8
+ extract: vi.fn(),
9
+ manifest: vi.fn()
10
+ }));
11
+ describe("SkillInstaller", () => {
12
+ let tempDir;
13
+ let skillsDir;
14
+ let cacheDir;
15
+ let installer;
16
+ beforeEach(async () => {
17
+ tempDir = join(tmpdir(), `skill-installer-test-${Date.now()}`);
18
+ skillsDir = join(tempDir, "skills");
19
+ cacheDir = join(tempDir, "cache");
20
+ await fs.mkdir(tempDir, { recursive: true });
21
+ await fs.mkdir(skillsDir, { recursive: true });
22
+ await fs.mkdir(cacheDir, { recursive: true });
23
+ installer = new SkillInstaller(skillsDir, cacheDir);
24
+ vi.mocked(pacote.extract).mockImplementation(async (spec, dest, opts) => {
25
+ if (!dest)
26
+ return {};
27
+ if (spec.includes("nonexistent"))
28
+ throw new Error("Repository not found");
29
+ await fs.mkdir(dest, { recursive: true });
30
+ const skillName = spec.match(/skill-\w+|test-skill|cached-skill|existing-skill|nested-skill/)?.[0] || "test-skill";
31
+ await fs.writeFile(join(dest, "SKILL.md"), `---\nname: ${skillName}\ndescription: Test skill\n---\n\n# ${skillName}`, "utf-8");
32
+ if (opts?.cache) {
33
+ await fs.mkdir(opts.cache, { recursive: true });
34
+ await fs.writeFile(join(opts.cache, `${skillName}-cached.txt`), "cached", "utf-8");
35
+ }
36
+ return {};
37
+ });
38
+ vi.mocked(pacote.manifest).mockResolvedValue({
39
+ name: "test-skill",
40
+ version: "1.0.0",
41
+ _integrity: "sha512-abc123",
42
+ dist: { integrity: "sha512-abc123" }
43
+ });
44
+ });
45
+ afterEach(async () => {
46
+ try {
47
+ await fs.rm(tempDir, { recursive: true, force: true });
48
+ }
49
+ catch {
50
+ // Ignore cleanup errors
51
+ }
52
+ });
53
+ describe("Constructor", () => {
54
+ it("should throw error if skills directory is not provided", () => {
55
+ expect(() => new SkillInstaller("")).toThrow();
56
+ });
57
+ });
58
+ describe("install - Various sources", () => {
59
+ it.each([
60
+ ["github:user/test-skill#v1.0.0"],
61
+ ["git+https://github.com/user/test-skill.git#v1.0.0"],
62
+ ["git+ssh://git@github.com/user/test-skill.git#v1.0.0"],
63
+ ["https://example.com/skills/test-skill.tgz"]
64
+ ])("should install skill from spec %s", async (spec) => {
65
+ const result = await installer.install("test-skill", spec);
66
+ expect(result.success).toBe(true);
67
+ if (result.success) {
68
+ expect(result.name).toBe("test-skill");
69
+ expect(result.spec).toBe(spec);
70
+ expect(result.installPath).toBe(join(skillsDir, "test-skill"));
71
+ expect(await fs
72
+ .access(join(skillsDir, "test-skill", "SKILL.md"))
73
+ .then(() => true)
74
+ .catch(() => false)).toBe(true);
75
+ }
76
+ });
77
+ it("should install from local directory", async () => {
78
+ const localDir = join(tempDir, "local-skill");
79
+ await fs.mkdir(localDir, { recursive: true });
80
+ await fs.writeFile(join(localDir, "SKILL.md"), "---\nname: local-skill\ndescription: Local\n---", "utf-8");
81
+ const result = await installer.install("local-skill", `file:${localDir}`);
82
+ expect(result.success).toBe(true);
83
+ });
84
+ });
85
+ describe("install - Error handling", () => {
86
+ it.each([
87
+ ["invalid-spec", "test-skill", "INVALID_SPEC"],
88
+ ["", "test-skill", "INVALID_SPEC"]
89
+ ])("should fail for invalid spec: %s", async (spec, name, expectedCode) => {
90
+ const result = await installer.install(name, spec);
91
+ expect(result.success).toBe(false);
92
+ if (!result.success) {
93
+ expect(result.error?.code).toBe(expectedCode);
94
+ }
95
+ });
96
+ it("should fail when repository does not exist", async () => {
97
+ const result = await installer.install("nonexistent-skill", "github:nonexistent/repo");
98
+ expect(result.success).toBe(false);
99
+ if (!result.success) {
100
+ expect(result.error?.code).toBe("INSTALL_FAILED");
101
+ }
102
+ });
103
+ it("should fail when SKILL.md is missing", async () => {
104
+ const localDir = join(tempDir, "no-skill-md");
105
+ await fs.mkdir(localDir, { recursive: true });
106
+ await fs.writeFile(join(localDir, "README.md"), "No SKILL.md", "utf-8");
107
+ const result = await installer.install("no-skill-md", `file:${localDir}`);
108
+ expect(result.success).toBe(false);
109
+ if (!result.success) {
110
+ expect(result.error?.code).toBe("MISSING_SKILL_MD");
111
+ }
112
+ });
113
+ it("should handle network errors", async () => {
114
+ vi.mocked(pacote.extract).mockRejectedValueOnce(Object.assign(new Error("ENOTFOUND"), { code: "ENOTFOUND" }));
115
+ const result = await installer.install("test-skill", "github:user/test-skill");
116
+ expect(result.success).toBe(false);
117
+ if (!result.success) {
118
+ expect(result.error?.code).toBe("NETWORK_ERROR");
119
+ }
120
+ });
121
+ });
122
+ describe("installAll - Multiple skills", () => {
123
+ it("should install multiple skills in parallel", async () => {
124
+ const skills = {
125
+ "skill-one": "github:user/skill-one#v1.0.0",
126
+ "skill-two": "github:user/skill-two#v1.0.0",
127
+ "skill-three": "github:user/skill-three#v1.0.0"
128
+ };
129
+ const result = await installer.installAll(skills);
130
+ expect(result.success).toBe(true);
131
+ expect(result.installed.size).toBe(3);
132
+ expect(result.failed.size).toBe(0);
133
+ });
134
+ it("should handle partial failures", async () => {
135
+ const skills = {
136
+ "valid-skill": "github:user/valid-skill",
137
+ "invalid-skill": "invalid-spec",
138
+ "another-valid": "github:user/another-valid"
139
+ };
140
+ const result = await installer.installAll(skills);
141
+ expect(result.success).toBe(false);
142
+ expect(result.installed.size).toBe(2);
143
+ expect(result.failed.size).toBe(1);
144
+ expect(result.failed.has("invalid-skill")).toBe(true);
145
+ });
146
+ });
147
+ describe("Lock file operations", () => {
148
+ it("should generate and read lock file", async () => {
149
+ const installed = {
150
+ "test-skill": {
151
+ success: true,
152
+ name: "test-skill",
153
+ spec: "github:user/test-skill#v1.0.0",
154
+ resolvedVersion: "v1.0.0",
155
+ integrity: "sha512-abc",
156
+ installPath: join(skillsDir, "test-skill"),
157
+ manifest: { name: "test-skill", description: "Test" }
158
+ }
159
+ };
160
+ await installer.generateLockFile(installed);
161
+ const lockFilePath = join(skillsDir, "..", "skills-lock.json");
162
+ const lockFile = JSON.parse(await fs.readFile(lockFilePath, "utf-8"));
163
+ expect(lockFile.version).toBe("1.0");
164
+ expect(lockFile.skills["test-skill"]).toBeDefined();
165
+ expect(lockFile.skills["test-skill"].spec).toBe("github:user/test-skill#v1.0.0");
166
+ const read = await installer.readLockFile();
167
+ expect(read).not.toBeNull();
168
+ expect(read?.skills).toHaveProperty("test-skill");
169
+ });
170
+ it("should return null when lock file does not exist or is invalid", async () => {
171
+ expect(await installer.readLockFile()).toBeNull();
172
+ const lockFilePath = join(skillsDir, "..", "skills-lock.json");
173
+ await fs.writeFile(lockFilePath, "invalid json", "utf-8");
174
+ expect(await installer.readLockFile()).toBeNull();
175
+ });
176
+ });
177
+ describe("Cache behavior", () => {
178
+ it("should use cache directory and reuse cached content", async () => {
179
+ const spec = "github:user/test-skill#v1.0.0";
180
+ await installer.install("cached-skill", spec);
181
+ const cacheContents = await fs.readdir(cacheDir);
182
+ expect(cacheContents.length).toBeGreaterThan(0);
183
+ await fs.rm(join(skillsDir, "cached-skill"), {
184
+ recursive: true,
185
+ force: true
186
+ });
187
+ const secondResult = await installer.install("cached-skill", spec);
188
+ expect(secondResult.success).toBe(true);
189
+ });
190
+ });
191
+ describe("Clean installation", () => {
192
+ it("should clean existing directory before install", async () => {
193
+ const existingDir = join(skillsDir, "existing-skill");
194
+ await fs.mkdir(existingDir, { recursive: true });
195
+ await fs.writeFile(join(existingDir, "old-file.txt"), "old", "utf-8");
196
+ const result = await installer.install("existing-skill", "github:user/test-skill");
197
+ expect(result.success).toBe(true);
198
+ expect(await fs
199
+ .access(join(existingDir, "old-file.txt"))
200
+ .then(() => true)
201
+ .catch(() => false)).toBe(false);
202
+ expect(await fs
203
+ .access(join(existingDir, "SKILL.md"))
204
+ .then(() => true)
205
+ .catch(() => false)).toBe(true);
206
+ });
207
+ });
208
+ describe("Integration - Full workflow", () => {
209
+ it("should support complete install, lock, and reinstall workflow", async () => {
210
+ const skills = {
211
+ "skill-one": "github:user/skill-one#v1.0.0",
212
+ "skill-two": "github:user/skill-two#v2.0.0"
213
+ };
214
+ const installResult = await installer.installAll(skills);
215
+ expect(installResult.success).toBe(true);
216
+ const installedResults = {};
217
+ for (const [name, result] of Object.entries(installResult.results)) {
218
+ if (result.success)
219
+ installedResults[name] = result;
220
+ }
221
+ await installer.generateLockFile(installedResults);
222
+ const lockFile = await installer.readLockFile();
223
+ expect(lockFile).not.toBeNull();
224
+ expect(lockFile?.skills["skill-one"]).toBeDefined();
225
+ expect(lockFile?.skills["skill-two"]).toBeDefined();
226
+ });
227
+ });
228
+ });
229
+ //# sourceMappingURL=skill-installer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-installer.test.js","sourceRoot":"","sources":["../../src/__tests__/skill-installer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/validator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,284 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { validateSkill } from "../validator.js";
3
+ describe("SkillValidator", () => {
4
+ describe("Valid Skills", () => {
5
+ it("should validate skills with required and optional fields", () => {
6
+ const basicSkill = {
7
+ metadata: { name: "test-skill", description: "A test skill" },
8
+ body: "# Test"
9
+ };
10
+ expect(validateSkill(basicSkill).valid).toBe(true);
11
+ const fullSkill = {
12
+ metadata: {
13
+ name: "full-skill",
14
+ description: "Full skill",
15
+ license: "MIT",
16
+ compatibility: "claude-3.5-sonnet",
17
+ metadata: { author: "Test", version: "1.0.0", tags: ["test"] },
18
+ allowedTools: ["bash"]
19
+ },
20
+ body: "# Full"
21
+ };
22
+ expect(validateSkill(fullSkill).valid).toBe(true);
23
+ });
24
+ it("should validate boundary lengths", () => {
25
+ expect(validateSkill({
26
+ metadata: { name: "a".repeat(64), description: "test" },
27
+ body: ""
28
+ }).valid).toBe(true);
29
+ expect(validateSkill({
30
+ metadata: { name: "test", description: "a".repeat(1024) },
31
+ body: ""
32
+ }).valid).toBe(true);
33
+ expect(validateSkill({
34
+ metadata: {
35
+ name: "test",
36
+ description: "test",
37
+ compatibility: "a".repeat(500)
38
+ },
39
+ body: ""
40
+ }).valid).toBe(true);
41
+ });
42
+ });
43
+ describe("Name Validation", () => {
44
+ it.each([
45
+ [
46
+ "missing",
47
+ { name: undefined, description: "test" },
48
+ "MISSING_FIELD"
49
+ ],
50
+ ["empty", { name: "", description: "test" }, "INVALID_NAME_LENGTH"],
51
+ [
52
+ "null",
53
+ { name: null, description: "test" },
54
+ "MISSING_FIELD"
55
+ ],
56
+ [
57
+ "too long",
58
+ { name: "a".repeat(65), description: "test" },
59
+ "INVALID_NAME_LENGTH"
60
+ ]
61
+ ])("should fail for %s name", (_, metadata, code) => {
62
+ const result = validateSkill({ metadata: metadata, body: "" });
63
+ expect(result.valid).toBe(false);
64
+ expect(result.errors.some((e) => e.code === code)).toBe(true);
65
+ });
66
+ it.each([
67
+ ["Test-Skill", "uppercase"],
68
+ ["test skill", "spaces"],
69
+ ["test_skill", "underscores"],
70
+ ["test.skill", "dots"],
71
+ ["test@skill", "special chars"],
72
+ ["test-skill-日本語", "unicode"],
73
+ ["test-skill-🚀", "emojis"],
74
+ ["-test", "leading hyphen"],
75
+ ["test-", "trailing hyphen"],
76
+ ["test--skill", "consecutive hyphens"]
77
+ ])("should fail for name with %s", (name, _) => {
78
+ const result = validateSkill({
79
+ metadata: { name, description: "test" },
80
+ body: ""
81
+ });
82
+ expect(result.valid).toBe(false);
83
+ expect(result.errors.some((e) => e.code === "INVALID_NAME_FORMAT")).toBe(true);
84
+ });
85
+ });
86
+ describe("Description Validation", () => {
87
+ it.each([
88
+ [
89
+ "missing",
90
+ { name: "test", description: undefined },
91
+ "MISSING_FIELD"
92
+ ],
93
+ [
94
+ "empty",
95
+ { name: "test", description: "" },
96
+ "INVALID_DESCRIPTION_LENGTH"
97
+ ],
98
+ [
99
+ "null",
100
+ { name: "test", description: null },
101
+ "MISSING_FIELD"
102
+ ],
103
+ [
104
+ "too long",
105
+ { name: "test", description: "a".repeat(1025) },
106
+ "INVALID_DESCRIPTION_LENGTH"
107
+ ]
108
+ ])("should fail for %s description", (_, metadata, code) => {
109
+ const result = validateSkill({ metadata: metadata, body: "" });
110
+ expect(result.valid).toBe(false);
111
+ expect(result.errors.some((e) => e.code === code)).toBe(true);
112
+ });
113
+ it("should allow special characters and newlines", () => {
114
+ expect(validateSkill({
115
+ metadata: {
116
+ name: "test",
117
+ description: 'émojis 🚀, quotes "nested", <>&'
118
+ },
119
+ body: ""
120
+ }).valid).toBe(true);
121
+ expect(validateSkill({
122
+ metadata: { name: "test", description: "Line 1\nLine 2" },
123
+ body: ""
124
+ }).valid).toBe(true);
125
+ });
126
+ });
127
+ describe("Optional Field Validation", () => {
128
+ it("should validate compatibility length", () => {
129
+ expect(validateSkill({
130
+ metadata: {
131
+ name: "test",
132
+ description: "test",
133
+ compatibility: "a".repeat(501)
134
+ },
135
+ body: ""
136
+ }).valid).toBe(false);
137
+ expect(validateSkill({
138
+ metadata: { name: "test", description: "test", compatibility: "" },
139
+ body: ""
140
+ }).valid).toBe(true);
141
+ });
142
+ it.each([
143
+ [
144
+ "metadata as string",
145
+ { metadata: "string" },
146
+ "INVALID_FIELD_TYPE"
147
+ ],
148
+ [
149
+ "metadata as array",
150
+ { metadata: ["array"] },
151
+ "INVALID_FIELD_TYPE"
152
+ ],
153
+ ["metadata as null", { metadata: null }, "INVALID_FIELD_TYPE"],
154
+ [
155
+ "allowedTools as string",
156
+ { allowedTools: "string" },
157
+ "INVALID_FIELD_TYPE"
158
+ ],
159
+ [
160
+ "allowedTools as object",
161
+ { allowedTools: {} },
162
+ "INVALID_FIELD_TYPE"
163
+ ],
164
+ [
165
+ "allowedTools as null",
166
+ { allowedTools: null },
167
+ "INVALID_FIELD_TYPE"
168
+ ]
169
+ ])("should fail for %s", (_, extraFields, code) => {
170
+ const result = validateSkill({
171
+ metadata: { name: "test", description: "test", ...extraFields },
172
+ body: ""
173
+ });
174
+ expect(result.valid).toBe(false);
175
+ expect(result.errors.some((e) => e.code === code)).toBe(true);
176
+ });
177
+ it("should allow valid optional fields", () => {
178
+ expect(validateSkill({
179
+ metadata: {
180
+ name: "test",
181
+ description: "test",
182
+ metadata: { author: "Test" }
183
+ },
184
+ body: ""
185
+ }).valid).toBe(true);
186
+ expect(validateSkill({
187
+ metadata: {
188
+ name: "test",
189
+ description: "test",
190
+ allowedTools: ["bash"]
191
+ },
192
+ body: ""
193
+ }).valid).toBe(true);
194
+ expect(validateSkill({
195
+ metadata: { name: "test", description: "test", license: "MIT" },
196
+ body: ""
197
+ }).valid).toBe(true);
198
+ });
199
+ });
200
+ describe("Multiple Errors and Warnings", () => {
201
+ it("should accumulate all validation errors", () => {
202
+ const skill = {
203
+ metadata: {
204
+ name: "Test-INVALID",
205
+ description: "",
206
+ compatibility: "a".repeat(600),
207
+ metadata: "invalid",
208
+ allowedTools: "invalid"
209
+ },
210
+ body: ""
211
+ };
212
+ const result = validateSkill(skill);
213
+ expect(result.valid).toBe(false);
214
+ expect(result.errors.length).toBeGreaterThanOrEqual(5);
215
+ });
216
+ it("should generate warnings for recommended fields and content length", () => {
217
+ const result = validateSkill({
218
+ metadata: { name: "test", description: "Short" },
219
+ body: "word ".repeat(5000)
220
+ });
221
+ expect(result.valid).toBe(true);
222
+ expect(result.warnings.some((w) => w.code === "MISSING_RECOMMENDED_FIELD")).toBe(true);
223
+ expect(result.warnings.some((w) => w.code === "SHORT_DESCRIPTION")).toBe(true);
224
+ expect(result.warnings.some((w) => w.code === "LONG_CONTENT")).toBe(true);
225
+ });
226
+ });
227
+ describe("Edge Cases", () => {
228
+ it("should handle whitespace and trimming", () => {
229
+ expect(validateSkill({
230
+ metadata: { name: " ", description: "test" },
231
+ body: ""
232
+ }).valid).toBe(false);
233
+ expect(validateSkill({
234
+ metadata: { name: "test", description: " " },
235
+ body: ""
236
+ }).valid).toBe(false);
237
+ expect(validateSkill({
238
+ metadata: { name: " test ", description: " desc " },
239
+ body: ""
240
+ }).valid).toBe(true);
241
+ });
242
+ it("should handle undefined/empty body", () => {
243
+ expect(validateSkill({
244
+ metadata: { name: "test", description: "test" },
245
+ body: undefined
246
+ }).valid).toBe(true);
247
+ expect(validateSkill({
248
+ metadata: { name: "test", description: "test" },
249
+ body: ""
250
+ }).valid).toBe(true);
251
+ });
252
+ it("should handle deeply nested metadata", () => {
253
+ const skill = {
254
+ metadata: {
255
+ name: "test",
256
+ description: "test",
257
+ metadata: { level1: { level2: { level3: "deep" } } }
258
+ },
259
+ body: ""
260
+ };
261
+ expect(validateSkill(skill).valid).toBe(true);
262
+ });
263
+ });
264
+ describe("ValidationResult Structure", () => {
265
+ it("should return properly structured result", () => {
266
+ const result = validateSkill({
267
+ metadata: { name: "INVALID", description: "" },
268
+ body: ""
269
+ });
270
+ expect(result).toHaveProperty("valid");
271
+ expect(result).toHaveProperty("errors");
272
+ expect(result).toHaveProperty("warnings");
273
+ expect(Array.isArray(result.errors)).toBe(true);
274
+ expect(Array.isArray(result.warnings)).toBe(true);
275
+ result.errors.forEach((e) => {
276
+ expect(e).toHaveProperty("code");
277
+ expect(e).toHaveProperty("message");
278
+ expect(typeof e.code).toBe("string");
279
+ expect(typeof e.message).toBe("string");
280
+ });
281
+ });
282
+ });
283
+ });
284
+ //# sourceMappingURL=validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../../src/__tests__/validator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type { Skill, SkillMetadata, ParseResult, ParseSuccess, ParseFailure, ParseError, ParseErrorCode, ValidationResult, ValidationError, ValidationWarning, ValidationErrorCode, ValidationWarningCode, LoadResult, RegistryState, InstallResult, InstallSuccess, InstallFailure, InstallAllResult, InstallError, InstallErrorCode, SkillManifest, SkillLockFile, SkillLockEntry, PackageConfig } from "./types.js";
2
+ export { parseSkill, parseSkillContent } from "./parser.js";
3
+ export { validateSkill } from "./validator.js";
4
+ export { SkillRegistry } from "./registry.js";
5
+ export { SkillInstaller } from "./installer.js";
6
+ export { PackageConfigManager } from "./package-config.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,KAAK,EACL,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { parseSkill, parseSkillContent } from "./parser.js";
2
+ export { validateSkill } from "./validator.js";
3
+ export { SkillRegistry } from "./registry.js";
4
+ export { SkillInstaller } from "./installer.js";
5
+ export { PackageConfigManager } from "./package-config.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}