superskill 0.2.0 → 0.2.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 (143) hide show
  1. package/.claude-plugin/marketplace.json +23 -0
  2. package/.claude-plugin/plugin.json +12 -0
  3. package/.mcp.json +9 -0
  4. package/CHANGELOG.md +24 -5
  5. package/LICENSE-COMMERCIAL.md +46 -0
  6. package/README.md +114 -151
  7. package/dist/setup/configure.js +21 -1
  8. package/dist/setup/configure.js.map +1 -1
  9. package/dist/setup/teardown.js +13 -5
  10. package/dist/setup/teardown.js.map +1 -1
  11. package/package.json +8 -2
  12. package/dist/commands/brainstorm.test.d.ts +0 -1
  13. package/dist/commands/brainstorm.test.js +0 -110
  14. package/dist/commands/brainstorm.test.js.map +0 -1
  15. package/dist/commands/context.test.d.ts +0 -1
  16. package/dist/commands/context.test.js +0 -230
  17. package/dist/commands/context.test.js.map +0 -1
  18. package/dist/commands/decide.test.d.ts +0 -1
  19. package/dist/commands/decide.test.js +0 -109
  20. package/dist/commands/decide.test.js.map +0 -1
  21. package/dist/commands/graph.test.d.ts +0 -1
  22. package/dist/commands/graph.test.js +0 -215
  23. package/dist/commands/graph.test.js.map +0 -1
  24. package/dist/commands/learn.test.d.ts +0 -1
  25. package/dist/commands/learn.test.js +0 -241
  26. package/dist/commands/learn.test.js.map +0 -1
  27. package/dist/commands/read.test.d.ts +0 -1
  28. package/dist/commands/read.test.js +0 -48
  29. package/dist/commands/read.test.js.map +0 -1
  30. package/dist/commands/resume.test.d.ts +0 -1
  31. package/dist/commands/resume.test.js +0 -243
  32. package/dist/commands/resume.test.js.map +0 -1
  33. package/dist/commands/search.test.d.ts +0 -1
  34. package/dist/commands/search.test.js +0 -61
  35. package/dist/commands/search.test.js.map +0 -1
  36. package/dist/commands/session.test.d.ts +0 -1
  37. package/dist/commands/session.test.js +0 -231
  38. package/dist/commands/session.test.js.map +0 -1
  39. package/dist/commands/skill/index.test.d.ts +0 -1
  40. package/dist/commands/skill/index.test.js +0 -137
  41. package/dist/commands/skill/index.test.js.map +0 -1
  42. package/dist/commands/skill/install.test.d.ts +0 -1
  43. package/dist/commands/skill/install.test.js +0 -225
  44. package/dist/commands/skill/install.test.js.map +0 -1
  45. package/dist/commands/skill/list.test.d.ts +0 -1
  46. package/dist/commands/skill/list.test.js +0 -101
  47. package/dist/commands/skill/list.test.js.map +0 -1
  48. package/dist/commands/skill/schema.test.d.ts +0 -1
  49. package/dist/commands/skill/schema.test.js +0 -142
  50. package/dist/commands/skill/schema.test.js.map +0 -1
  51. package/dist/commands/skill/validate.test.d.ts +0 -1
  52. package/dist/commands/skill/validate.test.js +0 -171
  53. package/dist/commands/skill/validate.test.js.map +0 -1
  54. package/dist/commands/task.test.d.ts +0 -1
  55. package/dist/commands/task.test.js +0 -395
  56. package/dist/commands/task.test.js.map +0 -1
  57. package/dist/commands/todo.test.d.ts +0 -1
  58. package/dist/commands/todo.test.js +0 -324
  59. package/dist/commands/todo.test.js.map +0 -1
  60. package/dist/commands/write.test.d.ts +0 -1
  61. package/dist/commands/write.test.js +0 -79
  62. package/dist/commands/write.test.js.map +0 -1
  63. package/dist/config.test.d.ts +0 -1
  64. package/dist/config.test.js +0 -147
  65. package/dist/config.test.js.map +0 -1
  66. package/dist/core/executor.test.d.ts +0 -1
  67. package/dist/core/executor.test.js +0 -206
  68. package/dist/core/executor.test.js.map +0 -1
  69. package/dist/core/registry.test.d.ts +0 -1
  70. package/dist/core/registry.test.js +0 -213
  71. package/dist/core/registry.test.js.map +0 -1
  72. package/dist/integration/coordination.test.d.ts +0 -1
  73. package/dist/integration/coordination.test.js +0 -286
  74. package/dist/integration/coordination.test.js.map +0 -1
  75. package/dist/integration/project-artifacts.test.d.ts +0 -1
  76. package/dist/integration/project-artifacts.test.js +0 -275
  77. package/dist/integration/project-artifacts.test.js.map +0 -1
  78. package/dist/integration/registry-graph.test.d.ts +0 -1
  79. package/dist/integration/registry-graph.test.js +0 -157
  80. package/dist/integration/registry-graph.test.js.map +0 -1
  81. package/dist/integration/vault-lifecycle.test.d.ts +0 -1
  82. package/dist/integration/vault-lifecycle.test.js +0 -183
  83. package/dist/integration/vault-lifecycle.test.js.map +0 -1
  84. package/dist/lib/auto-number.test.d.ts +0 -1
  85. package/dist/lib/auto-number.test.js +0 -88
  86. package/dist/lib/auto-number.test.js.map +0 -1
  87. package/dist/lib/auto-profile.test.d.ts +0 -1
  88. package/dist/lib/auto-profile.test.js +0 -227
  89. package/dist/lib/auto-profile.test.js.map +0 -1
  90. package/dist/lib/escape-regex.test.d.ts +0 -1
  91. package/dist/lib/escape-regex.test.js +0 -27
  92. package/dist/lib/escape-regex.test.js.map +0 -1
  93. package/dist/lib/frontmatter.test.d.ts +0 -1
  94. package/dist/lib/frontmatter.test.js +0 -192
  95. package/dist/lib/frontmatter.test.js.map +0 -1
  96. package/dist/lib/project-detector.test.d.ts +0 -1
  97. package/dist/lib/project-detector.test.js +0 -117
  98. package/dist/lib/project-detector.test.js.map +0 -1
  99. package/dist/lib/safe-external-path.test.d.ts +0 -1
  100. package/dist/lib/safe-external-path.test.js +0 -99
  101. package/dist/lib/safe-external-path.test.js.map +0 -1
  102. package/dist/lib/search-engine.test.d.ts +0 -1
  103. package/dist/lib/search-engine.test.js +0 -120
  104. package/dist/lib/search-engine.test.js.map +0 -1
  105. package/dist/lib/session-registry.test.d.ts +0 -1
  106. package/dist/lib/session-registry.test.js +0 -199
  107. package/dist/lib/session-registry.test.js.map +0 -1
  108. package/dist/lib/stack-detector.test.d.ts +0 -1
  109. package/dist/lib/stack-detector.test.js +0 -110
  110. package/dist/lib/stack-detector.test.js.map +0 -1
  111. package/dist/lib/token-estimator.test.d.ts +0 -1
  112. package/dist/lib/token-estimator.test.js +0 -65
  113. package/dist/lib/token-estimator.test.js.map +0 -1
  114. package/dist/lib/tool-detector.test.d.ts +0 -1
  115. package/dist/lib/tool-detector.test.js +0 -170
  116. package/dist/lib/tool-detector.test.js.map +0 -1
  117. package/dist/lib/vault-fs.test.d.ts +0 -1
  118. package/dist/lib/vault-fs.test.js +0 -210
  119. package/dist/lib/vault-fs.test.js.map +0 -1
  120. package/dist/setup/configure.test.d.ts +0 -1
  121. package/dist/setup/configure.test.js +0 -112
  122. package/dist/setup/configure.test.js.map +0 -1
  123. package/dist/setup/detect.test.d.ts +0 -1
  124. package/dist/setup/detect.test.js +0 -44
  125. package/dist/setup/detect.test.js.map +0 -1
  126. package/dist/setup/instructions.test.d.ts +0 -1
  127. package/dist/setup/instructions.test.js +0 -84
  128. package/dist/setup/instructions.test.js.map +0 -1
  129. package/dist/setup/json-config.test.d.ts +0 -1
  130. package/dist/setup/json-config.test.js +0 -92
  131. package/dist/setup/json-config.test.js.map +0 -1
  132. package/dist/setup/setup-integration.test.d.ts +0 -1
  133. package/dist/setup/setup-integration.test.js +0 -72
  134. package/dist/setup/setup-integration.test.js.map +0 -1
  135. package/dist/setup/teardown.test.d.ts +0 -1
  136. package/dist/setup/teardown.test.js +0 -105
  137. package/dist/setup/teardown.test.js.map +0 -1
  138. package/dist/setup/toml-config.test.d.ts +0 -1
  139. package/dist/setup/toml-config.test.js +0 -49
  140. package/dist/setup/toml-config.test.js.map +0 -1
  141. package/dist/test-helpers.test.d.ts +0 -1
  142. package/dist/test-helpers.test.js +0 -90
  143. package/dist/test-helpers.test.js.map +0 -1
@@ -1,137 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
- import { mkdir, writeFile, rm } from "fs/promises";
3
- import { homedir } from "os";
4
- import { join } from "path";
5
- import { skillCommand } from "./index.js";
6
- import { VaultFS } from "../../lib/vault-fs.js";
7
- const validSkillContent = `---
8
- name: test-skill
9
- description: A test skill
10
- version: "1.0.0"
11
- ---
12
-
13
- # Test Skill
14
- `;
15
- describe("skillCommand", () => {
16
- let vaultRoot;
17
- let vaultFs;
18
- beforeEach(async () => {
19
- vaultRoot = join(homedir(), `.vault-skill-cmd-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
20
- await mkdir(vaultRoot, { recursive: true });
21
- vaultFs = new VaultFS(vaultRoot);
22
- });
23
- afterEach(async () => {
24
- await rm(vaultRoot, { recursive: true, force: true });
25
- });
26
- describe("install action", () => {
27
- it("requires source option", async () => {
28
- const result = await skillCommand(vaultFs, vaultRoot, { action: "install" });
29
- expect(result.action).toBe("install");
30
- const r = result.result;
31
- expect(r.success).toBe(false);
32
- expect(r.error).toContain("Source is required");
33
- });
34
- it("installs from local file path", async () => {
35
- const skillPath = join(vaultRoot, "src", "skill.md");
36
- await mkdir(join(vaultRoot, "src"), { recursive: true });
37
- await writeFile(skillPath, validSkillContent);
38
- const result = await skillCommand(vaultFs, vaultRoot, {
39
- action: "install",
40
- source: skillPath,
41
- });
42
- expect(result.action).toBe("install");
43
- const r = result.result;
44
- expect(r.success).toBe(true);
45
- expect(r.skill?.name).toBe("test-skill");
46
- });
47
- it("passes force flag to install", async () => {
48
- const skillPath = join(vaultRoot, "src", "skill.md");
49
- await mkdir(join(vaultRoot, "src"), { recursive: true });
50
- await writeFile(skillPath, validSkillContent);
51
- const result1 = await skillCommand(vaultFs, vaultRoot, { action: "install", source: skillPath });
52
- expect(result1.result.success).toBe(true);
53
- const result2 = await skillCommand(vaultFs, vaultRoot, { action: "install", source: skillPath, force: true });
54
- expect(result2.result.success).toBe(true);
55
- });
56
- });
57
- describe("list action", () => {
58
- it("returns empty list when no skills installed", async () => {
59
- const result = await skillCommand(vaultFs, vaultRoot, { action: "list" });
60
- expect(result.action).toBe("list");
61
- expect(result.result.skills).toEqual([]);
62
- });
63
- it("returns installed skills", async () => {
64
- const skillPath = join(vaultRoot, "src", "skill.md");
65
- await mkdir(join(vaultRoot, "src"), { recursive: true });
66
- await writeFile(skillPath, validSkillContent);
67
- await skillCommand(vaultFs, vaultRoot, { action: "install", source: skillPath });
68
- const result = await skillCommand(vaultFs, vaultRoot, { action: "list" });
69
- expect(result.action).toBe("list");
70
- const r = result.result;
71
- expect(r.skills).toHaveLength(1);
72
- expect(r.skills[0].name).toBe("test-skill");
73
- });
74
- });
75
- describe("validate action", () => {
76
- it("requires skillPath option", async () => {
77
- const result = await skillCommand(vaultFs, vaultRoot, { action: "validate" });
78
- expect(result.action).toBe("validate");
79
- const r = result.result;
80
- expect(r.valid).toBe(false);
81
- expect(r.errors[0]).toContain("Skill path is required");
82
- });
83
- it("validates a valid local skill file", async () => {
84
- const skillPath = join(vaultRoot, "src", "valid.md");
85
- await mkdir(join(vaultRoot, "src"), { recursive: true });
86
- await writeFile(skillPath, validSkillContent);
87
- const result = await skillCommand(vaultFs, vaultRoot, { action: "validate", skillPath });
88
- expect(result.action).toBe("validate");
89
- const r = result.result;
90
- expect(r.valid).toBe(true);
91
- expect(r.frontmatter?.name).toBe("test-skill");
92
- });
93
- it("reports errors for invalid skill file", async () => {
94
- const skillPath = join(vaultRoot, "src", "invalid.md");
95
- await mkdir(join(vaultRoot, "src"), { recursive: true });
96
- await writeFile(skillPath, "---\n---\n\n# No frontmatter");
97
- const result = await skillCommand(vaultFs, vaultRoot, { action: "validate", skillPath });
98
- expect(result.action).toBe("validate");
99
- const r = result.result;
100
- expect(r.valid).toBe(false);
101
- expect(r.errors.length).toBeGreaterThan(0);
102
- });
103
- it("reports error for nonexistent file", async () => {
104
- const result = await skillCommand(vaultFs, vaultRoot, { action: "validate", skillPath: "/nonexistent/skill.md" });
105
- expect(result.action).toBe("validate");
106
- const r = result.result;
107
- expect(r.valid).toBe(false);
108
- expect(r.errors[0]).toContain("Failed to read file");
109
- });
110
- });
111
- describe("delete action", () => {
112
- it("requires skillName option", async () => {
113
- const result = await skillCommand(vaultFs, vaultRoot, { action: "delete" });
114
- expect(result.action).toBe("delete");
115
- const r = result.result;
116
- expect(r.success).toBe(false);
117
- expect(r.error).toContain("Skill name is required");
118
- });
119
- it("fails when skill not found", async () => {
120
- const result = await skillCommand(vaultFs, vaultRoot, { action: "delete", skillName: "nonexistent" });
121
- expect(result.action).toBe("delete");
122
- const r = result.result;
123
- expect(r.success).toBe(false);
124
- expect(r.error).toContain("not found");
125
- });
126
- it("deletes an installed skill", async () => {
127
- const skillPath = join(vaultRoot, "src", "skill.md");
128
- await mkdir(join(vaultRoot, "src"), { recursive: true });
129
- await writeFile(skillPath, validSkillContent);
130
- await skillCommand(vaultFs, vaultRoot, { action: "install", source: skillPath });
131
- const result = await skillCommand(vaultFs, vaultRoot, { action: "delete", skillName: "test-skill" });
132
- expect(result.action).toBe("delete");
133
- expect(result.result.success).toBe(true);
134
- });
135
- });
136
- });
137
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/commands/skill/index.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,225 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
- import { mkdir, writeFile, rm } from "fs/promises";
3
- import { homedir } from "os";
4
- import { join } from "path";
5
- import { VaultFS } from "../../lib/vault-fs.js";
6
- import { SkillRegistryManager } from "../../lib/skill-registry.js";
7
- import { installSkill, deleteSkill } from "./install.js";
8
- describe("installSkill", () => {
9
- let vaultRoot;
10
- let vaultFs;
11
- let registryManager;
12
- const validSkillContent = `---
13
- name: test-skill
14
- description: A test skill for unit tests
15
- version: "1.0.0"
16
- author: test-author
17
- tags:
18
- - test
19
- - example
20
- ---
21
-
22
- # Test Skill
23
-
24
- This is the body of the test skill.
25
- `;
26
- const missingNameContent = `---
27
- description: Missing name field
28
- ---
29
-
30
- # Skill without name
31
- `;
32
- const missingDescContent = `---
33
- name: no-desc-skill
34
- ---
35
-
36
- # Skill without description
37
- `;
38
- const emptyFrontmatter = `---
39
- ---
40
-
41
- # Empty frontmatter
42
- `;
43
- beforeEach(async () => {
44
- vaultRoot = join(homedir(), `.vault-skill-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
45
- await mkdir(vaultRoot, { recursive: true });
46
- vaultFs = new VaultFS(vaultRoot);
47
- registryManager = new SkillRegistryManager(vaultRoot);
48
- });
49
- afterEach(async () => {
50
- await rm(vaultRoot, { recursive: true, force: true });
51
- });
52
- describe("install from local file", () => {
53
- it("installs a valid skill from local file", async () => {
54
- const skillPath = join(vaultRoot, "source", "test-skill.md");
55
- await mkdir(join(vaultRoot, "source"), { recursive: true });
56
- await writeFile(skillPath, validSkillContent);
57
- const result = await installSkill(vaultFs, registryManager, {
58
- source: skillPath,
59
- });
60
- expect(result.success).toBe(true);
61
- expect(result.skill).toBeDefined();
62
- expect(result.skill?.name).toBe("test-skill");
63
- expect(result.skill?.source).toBe("local");
64
- expect(result.skill?.source_path).toBe(skillPath);
65
- expect(result.skill?.version).toBe("1.0.0");
66
- expect(result.skill?.status).toBe("active");
67
- expect(result.skill?.auto_update).toBe(false);
68
- });
69
- it("fails when source file does not exist", async () => {
70
- const result = await installSkill(vaultFs, registryManager, {
71
- source: "/nonexistent/path/skill.md",
72
- });
73
- expect(result.success).toBe(false);
74
- expect(result.error).toContain("Failed to read source");
75
- });
76
- it("fails when frontmatter is missing required name field", async () => {
77
- const skillPath = join(vaultRoot, "source", "invalid.md");
78
- await mkdir(join(vaultRoot, "source"), { recursive: true });
79
- await writeFile(skillPath, missingNameContent);
80
- const result = await installSkill(vaultFs, registryManager, {
81
- source: skillPath,
82
- });
83
- expect(result.success).toBe(false);
84
- expect(result.error).toContain("Invalid skill frontmatter");
85
- });
86
- it("fails when frontmatter is missing required description field", async () => {
87
- const skillPath = join(vaultRoot, "source", "no-desc.md");
88
- await mkdir(join(vaultRoot, "source"), { recursive: true });
89
- await writeFile(skillPath, missingDescContent);
90
- const result = await installSkill(vaultFs, registryManager, {
91
- source: skillPath,
92
- });
93
- expect(result.success).toBe(false);
94
- expect(result.error).toContain("Invalid skill frontmatter");
95
- });
96
- it("fails when frontmatter is empty", async () => {
97
- const skillPath = join(vaultRoot, "source", "empty.md");
98
- await mkdir(join(vaultRoot, "source"), { recursive: true });
99
- await writeFile(skillPath, emptyFrontmatter);
100
- const result = await installSkill(vaultFs, registryManager, {
101
- source: skillPath,
102
- });
103
- expect(result.success).toBe(false);
104
- expect(result.error).toContain("Invalid skill frontmatter");
105
- });
106
- it("fails when skill already installed without force", async () => {
107
- const skillPath = join(vaultRoot, "source", "test-skill.md");
108
- await mkdir(join(vaultRoot, "source"), { recursive: true });
109
- await writeFile(skillPath, validSkillContent);
110
- const result1 = await installSkill(vaultFs, registryManager, {
111
- source: skillPath,
112
- });
113
- expect(result1.success).toBe(true);
114
- const result2 = await installSkill(vaultFs, registryManager, {
115
- source: skillPath,
116
- });
117
- expect(result2.success).toBe(false);
118
- expect(result2.error).toContain("already installed");
119
- });
120
- it("overwrites existing skill with force flag", async () => {
121
- const skillPath = join(vaultRoot, "source", "test-skill.md");
122
- await mkdir(join(vaultRoot, "source"), { recursive: true });
123
- await writeFile(skillPath, validSkillContent);
124
- const result1 = await installSkill(vaultFs, registryManager, {
125
- source: skillPath,
126
- });
127
- expect(result1.success).toBe(true);
128
- const result2 = await installSkill(vaultFs, registryManager, {
129
- source: skillPath,
130
- force: true,
131
- });
132
- expect(result2.success).toBe(true);
133
- expect(result2.skill?.updated_at).not.toBe(result1.skill?.updated_at);
134
- });
135
- it("uses default version when not specified", async () => {
136
- const noVersionContent = `---
137
- name: no-version-skill
138
- description: Skill without version
139
- ---
140
- # Content
141
- `;
142
- const skillPath = join(vaultRoot, "source", "no-version.md");
143
- await mkdir(join(vaultRoot, "source"), { recursive: true });
144
- await writeFile(skillPath, noVersionContent);
145
- const result = await installSkill(vaultFs, registryManager, {
146
- source: skillPath,
147
- });
148
- expect(result.success).toBe(true);
149
- expect(result.skill?.version).toBe("0.0.0");
150
- });
151
- it("preserves depends_on from frontmatter", async () => {
152
- const withDepsContent = `---
153
- name: skill-with-deps
154
- description: Skill with dependencies
155
- depends_on:
156
- - base-skill
157
- - utils-skill
158
- ---
159
- # Content
160
- `;
161
- const skillPath = join(vaultRoot, "source", "with-deps.md");
162
- await mkdir(join(vaultRoot, "source"), { recursive: true });
163
- await writeFile(skillPath, withDepsContent);
164
- const result = await installSkill(vaultFs, registryManager, {
165
- source: skillPath,
166
- });
167
- expect(result.success).toBe(true);
168
- expect(result.skill?.depends_on).toEqual(["base-skill", "utils-skill"]);
169
- });
170
- });
171
- describe("deleteSkill", () => {
172
- it("deletes an installed skill", async () => {
173
- const skillPath = join(vaultRoot, "source", "test-skill.md");
174
- await mkdir(join(vaultRoot, "source"), { recursive: true });
175
- await writeFile(skillPath, validSkillContent);
176
- const installResult = await installSkill(vaultFs, registryManager, {
177
- source: skillPath,
178
- });
179
- expect(installResult.success).toBe(true);
180
- const deleteResult = await deleteSkill(vaultFs, registryManager, "test-skill");
181
- expect(deleteResult.success).toBe(true);
182
- expect(deleteResult.skill?.name).toBe("test-skill");
183
- const registry = await registryManager.read();
184
- expect(registry.skills.find(s => s.name === "test-skill")).toBeUndefined();
185
- });
186
- it("fails when skill not found", async () => {
187
- const result = await deleteSkill(vaultFs, registryManager, "nonexistent-skill");
188
- expect(result.success).toBe(false);
189
- expect(result.error).toContain("not found in registry");
190
- });
191
- it("returns the deleted skill info", async () => {
192
- const skillPath = join(vaultRoot, "source", "test-skill.md");
193
- await mkdir(join(vaultRoot, "source"), { recursive: true });
194
- await writeFile(skillPath, validSkillContent);
195
- await installSkill(vaultFs, registryManager, { source: skillPath });
196
- const result = await deleteSkill(vaultFs, registryManager, "test-skill");
197
- expect(result.success).toBe(true);
198
- expect(result.skill?.name).toBe("test-skill");
199
- expect(result.skill?.version).toBe("1.0.0");
200
- });
201
- });
202
- describe("registry operations", () => {
203
- it("lists installed skills", async () => {
204
- const skillPath = join(vaultRoot, "source", "test-skill.md");
205
- await mkdir(join(vaultRoot, "source"), { recursive: true });
206
- await writeFile(skillPath, validSkillContent);
207
- await installSkill(vaultFs, registryManager, { source: skillPath });
208
- const skills = await registryManager.list();
209
- expect(skills).toHaveLength(1);
210
- expect(skills[0].name).toBe("test-skill");
211
- });
212
- it("gets specific skill by name", async () => {
213
- const skillPath = join(vaultRoot, "source", "test-skill.md");
214
- await mkdir(join(vaultRoot, "source"), { recursive: true });
215
- await writeFile(skillPath, validSkillContent);
216
- await installSkill(vaultFs, registryManager, { source: skillPath });
217
- const skill = await registryManager.get("test-skill");
218
- expect(skill).toBeDefined();
219
- expect(skill?.name).toBe("test-skill");
220
- const missing = await registryManager.get("nonexistent");
221
- expect(missing).toBeUndefined();
222
- });
223
- });
224
- });
225
- //# sourceMappingURL=install.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.test.js","sourceRoot":"","sources":["../../../src/commands/skill/install.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,101 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
- import { mkdir, rm } from "fs/promises";
3
- import { homedir } from "os";
4
- import { join } from "path";
5
- import { listSkills } from "./list.js";
6
- import { SkillRegistryManager } from "../../lib/skill-registry.js";
7
- describe("listSkills", () => {
8
- let vaultRoot;
9
- let registryManager;
10
- beforeEach(async () => {
11
- vaultRoot = join(homedir(), `.vault-skill-list-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
12
- await mkdir(vaultRoot, { recursive: true });
13
- registryManager = new SkillRegistryManager(vaultRoot);
14
- });
15
- afterEach(async () => {
16
- await rm(vaultRoot, { recursive: true, force: true });
17
- });
18
- it("returns empty array when no skills are installed", async () => {
19
- const result = await listSkills(registryManager);
20
- expect(result.skills).toEqual([]);
21
- });
22
- it("returns all installed skills", async () => {
23
- await registryManager.add({
24
- name: "skill-a",
25
- source: "local",
26
- version: "1.0.0",
27
- installed_at: "2024-01-01T00:00:00.000Z",
28
- updated_at: "2024-01-01T00:00:00.000Z",
29
- status: "active",
30
- auto_update: false,
31
- });
32
- await registryManager.add({
33
- name: "skill-b",
34
- source: "git",
35
- version: "2.0.0",
36
- installed_at: "2024-01-02T00:00:00.000Z",
37
- updated_at: "2024-01-02T00:00:00.000Z",
38
- status: "active",
39
- auto_update: true,
40
- });
41
- const result = await listSkills(registryManager);
42
- expect(result.skills).toHaveLength(2);
43
- expect(result.skills[0].name).toBe("skill-a");
44
- expect(result.skills[1].name).toBe("skill-b");
45
- });
46
- it("returns skills with correct shape", async () => {
47
- await registryManager.add({
48
- name: "test-skill",
49
- source: "local",
50
- source_path: "/path/to/skill.md",
51
- version: "1.0.0",
52
- installed_at: "2024-01-01T00:00:00.000Z",
53
- updated_at: "2024-01-01T00:00:00.000Z",
54
- status: "active",
55
- auto_update: false,
56
- depends_on: ["base-skill"],
57
- });
58
- const result = await listSkills(registryManager);
59
- expect(result.skills).toHaveLength(1);
60
- const skill = result.skills[0];
61
- expect(skill.name).toBe("test-skill");
62
- expect(skill.source).toBe("local");
63
- expect(skill.source_path).toBe("/path/to/skill.md");
64
- expect(skill.version).toBe("1.0.0");
65
- expect(skill.status).toBe("active");
66
- expect(skill.auto_update).toBe(false);
67
- expect(skill.depends_on).toEqual(["base-skill"]);
68
- });
69
- it("returns empty array when registry file is missing", async () => {
70
- const altRoot = join(vaultRoot, "alt");
71
- await mkdir(altRoot, { recursive: true });
72
- const altManager = new SkillRegistryManager(altRoot);
73
- const result = await listSkills(altManager);
74
- expect(result.skills).toEqual([]);
75
- });
76
- it("filters out invalid entries in registry", async () => {
77
- const { writeFile: fsWriteFile, mkdir: fsMkdir } = await import("fs/promises");
78
- const skillsDir = join(vaultRoot, "skills");
79
- await fsMkdir(skillsDir, { recursive: true });
80
- await fsWriteFile(join(skillsDir, "registry.json"), JSON.stringify({
81
- skills: [
82
- {
83
- name: "valid-skill",
84
- source: "local",
85
- version: "1.0.0",
86
- installed_at: "2024-01-01T00:00:00.000Z",
87
- updated_at: "2024-01-01T00:00:00.000Z",
88
- status: "active",
89
- auto_update: false,
90
- },
91
- { name: "invalid", missing: "fields" },
92
- "not-an-object",
93
- null,
94
- ],
95
- }), "utf-8");
96
- const result = await listSkills(registryManager);
97
- expect(result.skills).toHaveLength(1);
98
- expect(result.skills[0].name).toBe("valid-skill");
99
- });
100
- });
101
- //# sourceMappingURL=list.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.test.js","sourceRoot":"","sources":["../../../src/commands/skill/list.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};