vskill 0.5.127 → 0.5.129

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 (232) hide show
  1. package/agents.json +1 -1
  2. package/dist/bin.js +0 -0
  3. package/dist/eval-server/api-routes.js +32 -0
  4. package/dist/eval-server/api-routes.js.map +1 -1
  5. package/dist/eval-server/eval-server.js +2 -0
  6. package/dist/eval-server/eval-server.js.map +1 -1
  7. package/dist/eval-server/git-routes.d.ts +5 -0
  8. package/dist/eval-server/git-routes.js +172 -0
  9. package/dist/eval-server/git-routes.js.map +1 -0
  10. package/dist/eval-server/router.d.ts +2 -0
  11. package/dist/eval-server/router.js +3 -1
  12. package/dist/eval-server/router.js.map +1 -1
  13. package/dist/eval-server/skill-name-resolver.d.ts +13 -0
  14. package/dist/eval-server/skill-name-resolver.js +42 -0
  15. package/dist/eval-server/skill-name-resolver.js.map +1 -1
  16. package/dist/eval-ui/assets/{CommandPalette-LtejhB76.js → CommandPalette-BIjKkHCC.js} +1 -1
  17. package/dist/eval-ui/assets/{CreateSkillPage-3RuqLQnm.js → CreateSkillPage-CmV0WZOn.js} +1 -1
  18. package/dist/eval-ui/assets/{FindSkillsPalette-Dbl2_IC4.js → FindSkillsPalette-BtYgEsVD.js} +2 -2
  19. package/dist/eval-ui/assets/{SearchPaletteCore-CLZmxDat.js → SearchPaletteCore-CAEO357X.js} +1 -1
  20. package/dist/eval-ui/assets/{SkillDetailPanel-RQc5u4nm.js → SkillDetailPanel-AH9wV3VU.js} +1 -1
  21. package/dist/eval-ui/assets/{UpdateDropdown-O8YGQyMH.js → UpdateDropdown-BwMxB2Ub.js} +1 -1
  22. package/dist/eval-ui/assets/index-ZByf-wxl.js +102 -0
  23. package/dist/eval-ui/assets/skill-url-C4ekwoGs.js +1 -0
  24. package/dist/eval-ui/index.html +1 -1
  25. package/dist/index.js +0 -0
  26. package/package.json +1 -1
  27. package/dist/agents/agents-registry.test.d.ts +0 -1
  28. package/dist/agents/agents-registry.test.js +0 -248
  29. package/dist/agents/agents-registry.test.js.map +0 -1
  30. package/dist/api/client.test.d.ts +0 -1
  31. package/dist/api/client.test.js +0 -428
  32. package/dist/api/client.test.js.map +0 -1
  33. package/dist/audit/audit-integration.test.d.ts +0 -1
  34. package/dist/audit/audit-integration.test.js +0 -92
  35. package/dist/audit/audit-integration.test.js.map +0 -1
  36. package/dist/audit/audit-llm.test.d.ts +0 -1
  37. package/dist/audit/audit-llm.test.js +0 -110
  38. package/dist/audit/audit-llm.test.js.map +0 -1
  39. package/dist/audit/audit-patterns.test.d.ts +0 -1
  40. package/dist/audit/audit-patterns.test.js +0 -91
  41. package/dist/audit/audit-patterns.test.js.map +0 -1
  42. package/dist/audit/audit-scanner.test.d.ts +0 -1
  43. package/dist/audit/audit-scanner.test.js +0 -112
  44. package/dist/audit/audit-scanner.test.js.map +0 -1
  45. package/dist/audit/audit-types.test.d.ts +0 -1
  46. package/dist/audit/audit-types.test.js +0 -140
  47. package/dist/audit/audit-types.test.js.map +0 -1
  48. package/dist/audit/config.test.d.ts +0 -1
  49. package/dist/audit/config.test.js +0 -44
  50. package/dist/audit/config.test.js.map +0 -1
  51. package/dist/audit/file-discovery.test.d.ts +0 -1
  52. package/dist/audit/file-discovery.test.js +0 -120
  53. package/dist/audit/file-discovery.test.js.map +0 -1
  54. package/dist/audit/fix-suggestions.test.d.ts +0 -1
  55. package/dist/audit/fix-suggestions.test.js +0 -35
  56. package/dist/audit/fix-suggestions.test.js.map +0 -1
  57. package/dist/audit/formatters/json-formatter.test.d.ts +0 -1
  58. package/dist/audit/formatters/json-formatter.test.js +0 -49
  59. package/dist/audit/formatters/json-formatter.test.js.map +0 -1
  60. package/dist/audit/formatters/report-formatter.test.d.ts +0 -1
  61. package/dist/audit/formatters/report-formatter.test.js +0 -51
  62. package/dist/audit/formatters/report-formatter.test.js.map +0 -1
  63. package/dist/audit/formatters/sarif-formatter.test.d.ts +0 -1
  64. package/dist/audit/formatters/sarif-formatter.test.js +0 -71
  65. package/dist/audit/formatters/sarif-formatter.test.js.map +0 -1
  66. package/dist/audit/formatters/terminal-formatter.test.d.ts +0 -1
  67. package/dist/audit/formatters/terminal-formatter.test.js +0 -51
  68. package/dist/audit/formatters/terminal-formatter.test.js.map +0 -1
  69. package/dist/blocklist/blocklist-e2e.test.d.ts +0 -1
  70. package/dist/blocklist/blocklist-e2e.test.js +0 -346
  71. package/dist/blocklist/blocklist-e2e.test.js.map +0 -1
  72. package/dist/blocklist/blocklist.test.d.ts +0 -1
  73. package/dist/blocklist/blocklist.test.js +0 -259
  74. package/dist/blocklist/blocklist.test.js.map +0 -1
  75. package/dist/commands/__tests__/eval-router.test.d.ts +0 -1
  76. package/dist/commands/__tests__/eval-router.test.js +0 -60
  77. package/dist/commands/__tests__/eval-router.test.js.map +0 -1
  78. package/dist/commands/__tests__/eval-serve.test.d.ts +0 -1
  79. package/dist/commands/__tests__/eval-serve.test.js +0 -23
  80. package/dist/commands/__tests__/eval-serve.test.js.map +0 -1
  81. package/dist/commands/add-blocklist-e2e.test.d.ts +0 -1
  82. package/dist/commands/add-blocklist-e2e.test.js +0 -397
  83. package/dist/commands/add-blocklist-e2e.test.js.map +0 -1
  84. package/dist/commands/add-wizard.test.d.ts +0 -1
  85. package/dist/commands/add-wizard.test.js +0 -392
  86. package/dist/commands/add-wizard.test.js.map +0 -1
  87. package/dist/commands/add.test.d.ts +0 -1
  88. package/dist/commands/add.test.js +0 -2365
  89. package/dist/commands/add.test.js.map +0 -1
  90. package/dist/commands/audit.test.d.ts +0 -1
  91. package/dist/commands/audit.test.js +0 -79
  92. package/dist/commands/audit.test.js.map +0 -1
  93. package/dist/commands/blocklist.test.d.ts +0 -1
  94. package/dist/commands/blocklist.test.js +0 -158
  95. package/dist/commands/blocklist.test.js.map +0 -1
  96. package/dist/commands/eval/__tests__/coverage.test.d.ts +0 -1
  97. package/dist/commands/eval/__tests__/coverage.test.js +0 -122
  98. package/dist/commands/eval/__tests__/coverage.test.js.map +0 -1
  99. package/dist/commands/eval/__tests__/generate-all.test.d.ts +0 -1
  100. package/dist/commands/eval/__tests__/generate-all.test.js +0 -133
  101. package/dist/commands/eval/__tests__/generate-all.test.js.map +0 -1
  102. package/dist/commands/eval/__tests__/init.test.d.ts +0 -1
  103. package/dist/commands/eval/__tests__/init.test.js +0 -116
  104. package/dist/commands/eval/__tests__/init.test.js.map +0 -1
  105. package/dist/commands/eval/__tests__/run.test.d.ts +0 -1
  106. package/dist/commands/eval/__tests__/run.test.js +0 -186
  107. package/dist/commands/eval/__tests__/run.test.js.map +0 -1
  108. package/dist/commands/find.test.d.ts +0 -1
  109. package/dist/commands/find.test.js +0 -481
  110. package/dist/commands/find.test.js.map +0 -1
  111. package/dist/commands/marketplace.test.d.ts +0 -1
  112. package/dist/commands/marketplace.test.js +0 -129
  113. package/dist/commands/marketplace.test.js.map +0 -1
  114. package/dist/commands/remove.test.d.ts +0 -1
  115. package/dist/commands/remove.test.js +0 -164
  116. package/dist/commands/remove.test.js.map +0 -1
  117. package/dist/commands/should-skip.test.d.ts +0 -1
  118. package/dist/commands/should-skip.test.js +0 -56
  119. package/dist/commands/should-skip.test.js.map +0 -1
  120. package/dist/commands/submit.test.d.ts +0 -1
  121. package/dist/commands/submit.test.js +0 -83
  122. package/dist/commands/submit.test.js.map +0 -1
  123. package/dist/commands/update.test.d.ts +0 -1
  124. package/dist/commands/update.test.js +0 -250
  125. package/dist/commands/update.test.js.map +0 -1
  126. package/dist/discovery/github-tree.test.d.ts +0 -1
  127. package/dist/discovery/github-tree.test.js +0 -372
  128. package/dist/discovery/github-tree.test.js.map +0 -1
  129. package/dist/eval/__tests__/activation-tester.test.d.ts +0 -1
  130. package/dist/eval/__tests__/activation-tester.test.js +0 -203
  131. package/dist/eval/__tests__/activation-tester.test.js.map +0 -1
  132. package/dist/eval/__tests__/benchmark-history.test.d.ts +0 -1
  133. package/dist/eval/__tests__/benchmark-history.test.js +0 -422
  134. package/dist/eval/__tests__/benchmark-history.test.js.map +0 -1
  135. package/dist/eval/__tests__/benchmark.test.d.ts +0 -1
  136. package/dist/eval/__tests__/benchmark.test.js +0 -94
  137. package/dist/eval/__tests__/benchmark.test.js.map +0 -1
  138. package/dist/eval/__tests__/comparator.test.d.ts +0 -1
  139. package/dist/eval/__tests__/comparator.test.js +0 -282
  140. package/dist/eval/__tests__/comparator.test.js.map +0 -1
  141. package/dist/eval/__tests__/judge.test.d.ts +0 -1
  142. package/dist/eval/__tests__/judge.test.js +0 -122
  143. package/dist/eval/__tests__/judge.test.js.map +0 -1
  144. package/dist/eval/__tests__/llm.test.d.ts +0 -1
  145. package/dist/eval/__tests__/llm.test.js +0 -543
  146. package/dist/eval/__tests__/llm.test.js.map +0 -1
  147. package/dist/eval/__tests__/mcp-detector.test.d.ts +0 -1
  148. package/dist/eval/__tests__/mcp-detector.test.js +0 -180
  149. package/dist/eval/__tests__/mcp-detector.test.js.map +0 -1
  150. package/dist/eval/__tests__/prompt-builder.test.d.ts +0 -1
  151. package/dist/eval/__tests__/prompt-builder.test.js +0 -142
  152. package/dist/eval/__tests__/prompt-builder.test.js.map +0 -1
  153. package/dist/eval/__tests__/schema.test.d.ts +0 -1
  154. package/dist/eval/__tests__/schema.test.js +0 -247
  155. package/dist/eval/__tests__/schema.test.js.map +0 -1
  156. package/dist/eval/__tests__/skill-scanner.test.d.ts +0 -1
  157. package/dist/eval/__tests__/skill-scanner.test.js +0 -228
  158. package/dist/eval/__tests__/skill-scanner.test.js.map +0 -1
  159. package/dist/eval/__tests__/verdict.test.d.ts +0 -1
  160. package/dist/eval/__tests__/verdict.test.js +0 -47
  161. package/dist/eval/__tests__/verdict.test.js.map +0 -1
  162. package/dist/eval-server/__tests__/benchmark-runner.test.d.ts +0 -1
  163. package/dist/eval-server/__tests__/benchmark-runner.test.js +0 -301
  164. package/dist/eval-server/__tests__/benchmark-runner.test.js.map +0 -1
  165. package/dist/eval-server/__tests__/comparison-sse-events.test.d.ts +0 -1
  166. package/dist/eval-server/__tests__/comparison-sse-events.test.js +0 -278
  167. package/dist/eval-server/__tests__/comparison-sse-events.test.js.map +0 -1
  168. package/dist/eval-server/__tests__/sse-helpers.test.d.ts +0 -1
  169. package/dist/eval-server/__tests__/sse-helpers.test.js +0 -128
  170. package/dist/eval-server/__tests__/sse-helpers.test.js.map +0 -1
  171. package/dist/eval-ui/assets/index-DlZduKAT.js +0 -102
  172. package/dist/eval-ui/assets/skill-url-BpZjDR8A.js +0 -1
  173. package/dist/installer/canonical.test.d.ts +0 -1
  174. package/dist/installer/canonical.test.js +0 -264
  175. package/dist/installer/canonical.test.js.map +0 -1
  176. package/dist/lockfile/lockfile.test.d.ts +0 -1
  177. package/dist/lockfile/lockfile.test.js +0 -204
  178. package/dist/lockfile/lockfile.test.js.map +0 -1
  179. package/dist/lockfile/project-root.test.d.ts +0 -1
  180. package/dist/lockfile/project-root.test.js +0 -49
  181. package/dist/lockfile/project-root.test.js.map +0 -1
  182. package/dist/marketplace/marketplace.test.d.ts +0 -1
  183. package/dist/marketplace/marketplace.test.js +0 -312
  184. package/dist/marketplace/marketplace.test.js.map +0 -1
  185. package/dist/resolvers/source-resolver.test.d.ts +0 -1
  186. package/dist/resolvers/source-resolver.test.js +0 -104
  187. package/dist/resolvers/source-resolver.test.js.map +0 -1
  188. package/dist/resolvers/url-resolver.test.d.ts +0 -1
  189. package/dist/resolvers/url-resolver.test.js +0 -49
  190. package/dist/resolvers/url-resolver.test.js.map +0 -1
  191. package/dist/scanner/dci-integration.test.d.ts +0 -1
  192. package/dist/scanner/dci-integration.test.js +0 -83
  193. package/dist/scanner/dci-integration.test.js.map +0 -1
  194. package/dist/scanner/patterns.test.d.ts +0 -1
  195. package/dist/scanner/patterns.test.js +0 -832
  196. package/dist/scanner/patterns.test.js.map +0 -1
  197. package/dist/scanner/tier1.test.d.ts +0 -1
  198. package/dist/scanner/tier1.test.js +0 -305
  199. package/dist/scanner/tier1.test.js.map +0 -1
  200. package/dist/security/platform-security.test.d.ts +0 -1
  201. package/dist/security/platform-security.test.js +0 -92
  202. package/dist/security/platform-security.test.js.map +0 -1
  203. package/dist/settings/settings.test.d.ts +0 -1
  204. package/dist/settings/settings.test.js +0 -103
  205. package/dist/settings/settings.test.js.map +0 -1
  206. package/dist/updater/source-fetcher.test.d.ts +0 -1
  207. package/dist/updater/source-fetcher.test.js +0 -192
  208. package/dist/updater/source-fetcher.test.js.map +0 -1
  209. package/dist/utils/__tests__/paths.test.d.ts +0 -1
  210. package/dist/utils/__tests__/paths.test.js +0 -22
  211. package/dist/utils/__tests__/paths.test.js.map +0 -1
  212. package/dist/utils/__tests__/resolve-binary.integration.test.d.ts +0 -1
  213. package/dist/utils/__tests__/resolve-binary.integration.test.js +0 -138
  214. package/dist/utils/__tests__/resolve-binary.integration.test.js.map +0 -1
  215. package/dist/utils/__tests__/resolve-binary.test.d.ts +0 -1
  216. package/dist/utils/__tests__/resolve-binary.test.js +0 -175
  217. package/dist/utils/__tests__/resolve-binary.test.js.map +0 -1
  218. package/dist/utils/__tests__/validation.test.d.ts +0 -1
  219. package/dist/utils/__tests__/validation.test.js +0 -107
  220. package/dist/utils/__tests__/validation.test.js.map +0 -1
  221. package/dist/utils/agent-filter.test.d.ts +0 -1
  222. package/dist/utils/agent-filter.test.js +0 -75
  223. package/dist/utils/agent-filter.test.js.map +0 -1
  224. package/dist/utils/output.test.d.ts +0 -1
  225. package/dist/utils/output.test.js +0 -28
  226. package/dist/utils/output.test.js.map +0 -1
  227. package/dist/utils/project-root.test.d.ts +0 -1
  228. package/dist/utils/project-root.test.js +0 -74
  229. package/dist/utils/project-root.test.js.map +0 -1
  230. package/dist/utils/prompts.test.d.ts +0 -1
  231. package/dist/utils/prompts.test.js +0 -285
  232. package/dist/utils/prompts.test.js.map +0 -1
@@ -1,129 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- // ---------------------------------------------------------------------------
3
- // Mocks — vi.hoisted for ESM compatibility
4
- // ---------------------------------------------------------------------------
5
- const mocks = vi.hoisted(() => ({
6
- existsSync: vi.fn(),
7
- readFileSync: vi.fn(),
8
- writeFileSync: vi.fn(),
9
- readdirSync: vi.fn(),
10
- findProjectRoot: vi.fn(),
11
- processExit: vi.fn(),
12
- }));
13
- vi.mock("node:fs", () => ({
14
- existsSync: (...args) => mocks.existsSync(...args),
15
- readFileSync: (...args) => mocks.readFileSync(...args),
16
- writeFileSync: (...args) => mocks.writeFileSync(...args),
17
- readdirSync: (...args) => mocks.readdirSync(...args),
18
- }));
19
- vi.mock("../utils/project-root.js", () => ({
20
- findProjectRoot: (...args) => mocks.findProjectRoot(...args),
21
- }));
22
- vi.mock("../utils/output.js", () => ({
23
- bold: (s) => s,
24
- green: (s) => s,
25
- red: (s) => s,
26
- yellow: (s) => s,
27
- dim: (s) => s,
28
- cyan: (s) => s,
29
- spinner: (_msg) => ({ stop: (_final) => { } }),
30
- table: (headers, rows) => {
31
- return [headers.join(" "), ...rows.map((r) => r.join(" "))].join("\n");
32
- },
33
- }));
34
- // Capture process.exit calls without terminating the test runner
35
- const originalExit = process.exit;
36
- beforeEach(() => {
37
- process.exit = mocks.processExit;
38
- });
39
- // ---------------------------------------------------------------------------
40
- // Import module under test AFTER mocks
41
- // ---------------------------------------------------------------------------
42
- const { marketplaceCommand } = await import("./marketplace.js");
43
- // ---------------------------------------------------------------------------
44
- // Helpers
45
- // ---------------------------------------------------------------------------
46
- function makeMarketplaceJson(plugins = []) {
47
- return JSON.stringify({
48
- name: "vskill",
49
- owner: { name: "Test Author" },
50
- plugins: [
51
- { name: "mobile", source: "./plugins/mobile", version: "2.3.0" },
52
- ...plugins,
53
- ],
54
- });
55
- }
56
- function makeDirEntry(name, isDir = true) {
57
- return { name, isDirectory: () => isDir };
58
- }
59
- // ---------------------------------------------------------------------------
60
- // Tests
61
- // ---------------------------------------------------------------------------
62
- describe("marketplaceCommand", () => {
63
- beforeEach(() => {
64
- vi.clearAllMocks();
65
- mocks.findProjectRoot.mockReturnValue("/fake/root");
66
- process.exit = mocks.processExit;
67
- });
68
- it("writes updated marketplace.json when a new plugin is found", async () => {
69
- mocks.existsSync.mockImplementation((p) => {
70
- if (p.endsWith("marketplace.json"))
71
- return true;
72
- if (p.endsWith("plugins"))
73
- return true;
74
- if (p.endsWith("plugin.json"))
75
- return true;
76
- return false;
77
- });
78
- mocks.readdirSync.mockReturnValue([makeDirEntry("newplugin")]);
79
- mocks.readFileSync.mockImplementation((p) => {
80
- if (String(p).endsWith("marketplace.json"))
81
- return makeMarketplaceJson();
82
- // plugin.json for newplugin
83
- return JSON.stringify({ name: "newplugin", description: "New one", version: "1.0.0" });
84
- });
85
- await marketplaceCommand("sync", {});
86
- expect(mocks.writeFileSync).toHaveBeenCalledOnce();
87
- const written = JSON.parse(mocks.writeFileSync.mock.calls[0][1]);
88
- expect(written.plugins.map((p) => p.name)).toContain("newplugin");
89
- });
90
- it("does NOT write marketplace.json in --dry-run mode", async () => {
91
- mocks.existsSync.mockReturnValue(true);
92
- mocks.readdirSync.mockReturnValue([makeDirEntry("newplugin")]);
93
- mocks.readFileSync.mockImplementation((p) => {
94
- if (String(p).endsWith("marketplace.json"))
95
- return makeMarketplaceJson();
96
- return JSON.stringify({ name: "newplugin", version: "1.0.0" });
97
- });
98
- await marketplaceCommand("sync", { dryRun: true });
99
- expect(mocks.writeFileSync).not.toHaveBeenCalled();
100
- });
101
- it("skips a plugin dir that has no plugin.json and continues", async () => {
102
- mocks.existsSync.mockImplementation((p) => {
103
- if (p.endsWith("marketplace.json"))
104
- return true;
105
- if (p.endsWith("plugins"))
106
- return true;
107
- // plugin.json does not exist
108
- if (p.endsWith("plugin.json"))
109
- return false;
110
- return false;
111
- });
112
- mocks.readdirSync.mockReturnValue([makeDirEntry("orphan")]);
113
- mocks.readFileSync.mockReturnValue(makeMarketplaceJson());
114
- // Should not throw
115
- await marketplaceCommand("sync", {});
116
- // writeFileSync should NOT be called since nothing changed
117
- expect(mocks.writeFileSync).not.toHaveBeenCalled();
118
- });
119
- it("exits 1 when marketplace.json is not found", async () => {
120
- mocks.existsSync.mockReturnValue(false);
121
- await marketplaceCommand("sync", {});
122
- expect(mocks.processExit).toHaveBeenCalledWith(1);
123
- });
124
- it("exits 1 for unknown subcommand", async () => {
125
- await marketplaceCommand("unknown-cmd", {});
126
- expect(mocks.processExit).toHaveBeenCalledWith(1);
127
- });
128
- });
129
- //# sourceMappingURL=marketplace.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marketplace.test.js","sourceRoot":"","sources":["../../src/commands/marketplace.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,164 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- // ---------------------------------------------------------------------------
3
- // Mock node:fs
4
- // ---------------------------------------------------------------------------
5
- const mockExistsSync = vi.fn();
6
- const mockRmSync = vi.fn();
7
- vi.mock("node:fs", () => ({
8
- existsSync: (...args) => mockExistsSync(...args),
9
- rmSync: (...args) => mockRmSync(...args),
10
- readFileSync: vi.fn(),
11
- writeFileSync: vi.fn(),
12
- }));
13
- // ---------------------------------------------------------------------------
14
- // Mock agents registry
15
- // ---------------------------------------------------------------------------
16
- const mockDetectInstalledAgents = vi.fn();
17
- vi.mock("../agents/agents-registry.js", () => ({
18
- detectInstalledAgents: (...args) => mockDetectInstalledAgents(...args),
19
- }));
20
- // ---------------------------------------------------------------------------
21
- // Mock lockfile
22
- // ---------------------------------------------------------------------------
23
- const mockReadLockfile = vi.fn();
24
- const mockRemoveSkillFromLock = vi.fn();
25
- vi.mock("../lockfile/index.js", () => ({
26
- readLockfile: (...args) => mockReadLockfile(...args),
27
- removeSkillFromLock: (...args) => mockRemoveSkillFromLock(...args),
28
- }));
29
- // ---------------------------------------------------------------------------
30
- // Mock paths
31
- // ---------------------------------------------------------------------------
32
- vi.mock("../utils/paths.js", () => ({
33
- resolveTilde: (p) => p.startsWith("~/") ? `/home/testuser${p.slice(1)}` : p,
34
- }));
35
- // Import after mocks
36
- const { removeCommand } = await import("./remove.js");
37
- // ---------------------------------------------------------------------------
38
- // Helpers
39
- // ---------------------------------------------------------------------------
40
- const MOCK_AGENTS = [
41
- {
42
- id: "claude-code",
43
- displayName: "Claude Code",
44
- localSkillsDir: ".claude/commands",
45
- globalSkillsDir: "~/.claude/commands",
46
- },
47
- {
48
- id: "cursor",
49
- displayName: "Cursor",
50
- localSkillsDir: ".cursor/skills",
51
- globalSkillsDir: "~/.cursor/skills",
52
- },
53
- ];
54
- function makeLockfile(skills = {}) {
55
- return {
56
- version: 1,
57
- agents: ["claude-code", "cursor"],
58
- skills,
59
- createdAt: "2026-01-01T00:00:00.000Z",
60
- updatedAt: "2026-01-01T00:00:00.000Z",
61
- };
62
- }
63
- // ---------------------------------------------------------------------------
64
- // Tests
65
- // ---------------------------------------------------------------------------
66
- beforeEach(() => {
67
- vi.clearAllMocks();
68
- mockDetectInstalledAgents.mockResolvedValue(MOCK_AGENTS);
69
- });
70
- describe("removeCommand", () => {
71
- it("removes skill from all detected agent directories", async () => {
72
- mockReadLockfile.mockReturnValue(makeLockfile({
73
- sw: {
74
- version: "1.0.0",
75
- sha: "abc123",
76
- tier: "VERIFIED",
77
- installedAt: "2026-01-01T00:00:00.000Z",
78
- source: "local:/path",
79
- },
80
- }));
81
- // All dirs exist
82
- mockExistsSync.mockReturnValue(true);
83
- await removeCommand("sw", { force: true });
84
- // Should attempt to remove from both agents (local + global = 4 paths)
85
- expect(mockRmSync).toHaveBeenCalled();
86
- expect(mockRemoveSkillFromLock).toHaveBeenCalledWith("sw");
87
- });
88
- it("errors when skill not in lockfile and no --force", async () => {
89
- mockReadLockfile.mockReturnValue(makeLockfile({}));
90
- const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => { });
91
- const exitSpy = vi
92
- .spyOn(process, "exit")
93
- .mockImplementation(() => undefined);
94
- await removeCommand("unknown-skill", {});
95
- expect(consoleSpy).toHaveBeenCalled();
96
- expect(exitSpy).toHaveBeenCalledWith(1);
97
- consoleSpy.mockRestore();
98
- exitSpy.mockRestore();
99
- });
100
- it("proceeds with --force even when skill not in lockfile", async () => {
101
- mockReadLockfile.mockReturnValue(makeLockfile({}));
102
- mockExistsSync.mockReturnValue(false);
103
- // Should not throw or exit
104
- await removeCommand("unknown-skill", { force: true });
105
- // Still tries detection, just nothing to remove
106
- expect(mockDetectInstalledAgents).toHaveBeenCalled();
107
- });
108
- it("only removes global dirs when --global flag set", async () => {
109
- mockReadLockfile.mockReturnValue(makeLockfile({
110
- sw: {
111
- version: "1.0.0",
112
- sha: "abc123",
113
- tier: "VERIFIED",
114
- installedAt: "2026-01-01T00:00:00.000Z",
115
- source: "local:/path",
116
- },
117
- }));
118
- mockExistsSync.mockReturnValue(true);
119
- await removeCommand("sw", { force: true, global: true });
120
- // Should only remove from global dirs (tilde-resolved paths)
121
- const removedPaths = mockRmSync.mock.calls.map((c) => c[0]);
122
- for (const p of removedPaths) {
123
- expect(p).toMatch(/^\/home\/testuser/);
124
- }
125
- });
126
- it("only removes local dirs when --local flag set", async () => {
127
- mockReadLockfile.mockReturnValue(makeLockfile({
128
- sw: {
129
- version: "1.0.0",
130
- sha: "abc123",
131
- tier: "VERIFIED",
132
- installedAt: "2026-01-01T00:00:00.000Z",
133
- source: "local:/path",
134
- },
135
- }));
136
- mockExistsSync.mockReturnValue(true);
137
- await removeCommand("sw", { force: true, local: true });
138
- // Should only remove from local dirs (relative paths resolved with cwd)
139
- const removedPaths = mockRmSync.mock.calls.map((c) => c[0]);
140
- for (const p of removedPaths) {
141
- expect(p).not.toMatch(/^\/home\/testuser/);
142
- }
143
- });
144
- it("handles missing directories gracefully", async () => {
145
- mockReadLockfile.mockReturnValue(makeLockfile({
146
- sw: {
147
- version: "1.0.0",
148
- sha: "abc123",
149
- tier: "VERIFIED",
150
- installedAt: "2026-01-01T00:00:00.000Z",
151
- source: "local:/path",
152
- },
153
- }));
154
- // No dirs exist
155
- mockExistsSync.mockReturnValue(false);
156
- // Should not throw
157
- await removeCommand("sw", { force: true });
158
- // rmSync should not be called since dirs don't exist
159
- expect(mockRmSync).not.toHaveBeenCalled();
160
- // But lockfile should still be updated
161
- expect(mockRemoveSkillFromLock).toHaveBeenCalledWith("sw");
162
- });
163
- });
164
- //# sourceMappingURL=remove.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove.test.js","sourceRoot":"","sources":["../../src/commands/remove.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,56 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { shouldSkipFromCommands } from "./add.js";
3
- describe("shouldSkipFromCommands", () => {
4
- describe("files that SHOULD be skipped", () => {
5
- it("skips root PLUGIN.md", () => {
6
- expect(shouldSkipFromCommands("PLUGIN.md")).toBe(true);
7
- });
8
- it("skips README.md at any level", () => {
9
- expect(shouldSkipFromCommands("README.md")).toBe(true);
10
- expect(shouldSkipFromCommands("skills/team-lead/README.md")).toBe(true);
11
- });
12
- it("skips FRESHNESS.md", () => {
13
- expect(shouldSkipFromCommands("FRESHNESS.md")).toBe(true);
14
- });
15
- it("skips files in hidden directories", () => {
16
- expect(shouldSkipFromCommands(".github/workflows/ci.md")).toBe(true);
17
- expect(shouldSkipFromCommands(".internal/notes.md")).toBe(true);
18
- });
19
- it("skips files in internal root directories", () => {
20
- expect(shouldSkipFromCommands("knowledge-base/guide.md")).toBe(true);
21
- expect(shouldSkipFromCommands("lib/utils.md")).toBe(true);
22
- expect(shouldSkipFromCommands("templates/default.md")).toBe(true);
23
- expect(shouldSkipFromCommands("scripts/setup.md")).toBe(true);
24
- expect(shouldSkipFromCommands("hooks/post-install.md")).toBe(true);
25
- });
26
- it("skips non-SKILL.md files inside skills/ subdirectories", () => {
27
- expect(shouldSkipFromCommands("skills/team-lead/CHANGELOG.md")).toBe(true);
28
- expect(shouldSkipFromCommands("skills/team-lead/docs/guide.md")).toBe(true);
29
- });
30
- });
31
- describe("files that should NOT be skipped (allowed through)", () => {
32
- it("allows agents/*.md files inside skill directories", () => {
33
- expect(shouldSkipFromCommands("skills/team-lead/agents/frontend.md")).toBe(false);
34
- expect(shouldSkipFromCommands("skills/team-lead/agents/backend.md")).toBe(false);
35
- expect(shouldSkipFromCommands("skills/team-lead/agents/database.md")).toBe(false);
36
- expect(shouldSkipFromCommands("skills/team-lead/agents/testing.md")).toBe(false);
37
- expect(shouldSkipFromCommands("skills/team-lead/agents/security.md")).toBe(false);
38
- });
39
- it("allows SKILL.md inside skills/ subdirectories", () => {
40
- expect(shouldSkipFromCommands("skills/team-lead/SKILL.md")).toBe(false);
41
- expect(shouldSkipFromCommands("skills/architect/SKILL.md")).toBe(false);
42
- });
43
- it("allows root-level command .md files", () => {
44
- expect(shouldSkipFromCommands("commands/commit/SKILL.md")).toBe(false);
45
- });
46
- it("allows non-.md files (returns false, not filtered)", () => {
47
- expect(shouldSkipFromCommands("skills/team-lead/config.json")).toBe(false);
48
- expect(shouldSkipFromCommands("lib/utils.ts")).toBe(false);
49
- });
50
- it("handles backslash paths (Windows normalization)", () => {
51
- expect(shouldSkipFromCommands("skills\\team-lead\\agents\\frontend.md")).toBe(false);
52
- expect(shouldSkipFromCommands("skills\\team-lead\\CHANGELOG.md")).toBe(true);
53
- });
54
- });
55
- });
56
- //# sourceMappingURL=should-skip.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"should-skip.test.js","sourceRoot":"","sources":["../../src/commands/should-skip.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,83 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- // ---------------------------------------------------------------------------
3
- // Mock the browser opener module (will be created in submit.ts)
4
- // ---------------------------------------------------------------------------
5
- const mockOpenBrowser = vi.fn().mockResolvedValue(undefined);
6
- vi.mock("../utils/browser.js", () => ({
7
- openBrowser: (...args) => mockOpenBrowser(...args),
8
- }));
9
- // ---------------------------------------------------------------------------
10
- // Mock utils/output (suppress console output in tests)
11
- // ---------------------------------------------------------------------------
12
- vi.mock("../utils/output.js", () => ({
13
- bold: (s) => s,
14
- green: (s) => s,
15
- red: (s) => s,
16
- yellow: (s) => s,
17
- dim: (s) => s,
18
- cyan: (s) => s,
19
- }));
20
- // ---------------------------------------------------------------------------
21
- // Import module under test AFTER mocks
22
- // ---------------------------------------------------------------------------
23
- const { submitCommand } = await import("./submit.js");
24
- // ---------------------------------------------------------------------------
25
- // Tests
26
- // ---------------------------------------------------------------------------
27
- beforeEach(() => {
28
- vi.clearAllMocks();
29
- vi.spyOn(console, "log").mockImplementation(() => { });
30
- vi.spyOn(console, "error").mockImplementation(() => { });
31
- });
32
- describe("submitCommand", () => {
33
- // TC-001: Given owner/repo arg, constructs correct URL with repo query param
34
- describe("TC-001: constructs URL with repo query param", () => {
35
- it("opens browser with https://verified-skill.com/submit?repo=owner/repo", async () => {
36
- await submitCommand("myorg/myskill", {});
37
- expect(mockOpenBrowser).toHaveBeenCalledOnce();
38
- const url = mockOpenBrowser.mock.calls[0][0];
39
- expect(url).toBe("https://verified-skill.com/submit?repo=myorg%2Fmyskill");
40
- });
41
- });
42
- // TC-002: Given --skill flag, URL includes skill query param
43
- describe("TC-002: URL includes skill query param when --skill provided", () => {
44
- it("appends &skill=skillName to the URL", async () => {
45
- await submitCommand("myorg/myskill", { skill: "my-awesome-skill" });
46
- expect(mockOpenBrowser).toHaveBeenCalledOnce();
47
- const url = mockOpenBrowser.mock.calls[0][0];
48
- expect(url).toBe("https://verified-skill.com/submit?repo=myorg%2Fmyskill&skill=my-awesome-skill");
49
- });
50
- });
51
- // TC-003: Invalid source format still rejected
52
- describe("TC-003: rejects invalid source format", () => {
53
- it("exits with error for source without slash", async () => {
54
- const exitError = new Error("process.exit");
55
- const mockExit = vi
56
- .spyOn(process, "exit")
57
- .mockImplementation(() => { throw exitError; });
58
- await expect(submitCommand("invalid-source", {})).rejects.toThrow("process.exit");
59
- expect(mockExit).toHaveBeenCalledWith(1);
60
- expect(mockOpenBrowser).not.toHaveBeenCalled();
61
- mockExit.mockRestore();
62
- });
63
- });
64
- // TC-014: Accepts full GitHub URL
65
- describe("TC-014: accepts full GitHub URL", () => {
66
- it("opens browser with correct URL when given https://github.com/owner/repo", async () => {
67
- await submitCommand("https://github.com/myorg/myskill", {});
68
- expect(mockOpenBrowser).toHaveBeenCalledOnce();
69
- const url = mockOpenBrowser.mock.calls[0][0];
70
- expect(url).toBe("https://verified-skill.com/submit?repo=myorg%2Fmyskill");
71
- });
72
- });
73
- // TC-004: Prints message telling user to complete in browser
74
- describe("TC-004: prints browser instructions", () => {
75
- it("logs a message about completing submission in browser", async () => {
76
- const consoleSpy = vi.spyOn(console, "log");
77
- await submitCommand("myorg/myskill", {});
78
- const allOutput = consoleSpy.mock.calls.map((c) => c.join(" ")).join("\n");
79
- expect(allOutput).toContain("browser");
80
- });
81
- });
82
- });
83
- //# sourceMappingURL=submit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"submit.test.js","sourceRoot":"","sources":["../../src/commands/submit.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};