vskill 0.5.82 → 0.5.83

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 (40) hide show
  1. package/dist/agents/agents-registry.d.ts +4 -0
  2. package/dist/agents/agents-registry.js +1 -0
  3. package/dist/agents/agents-registry.js.map +1 -1
  4. package/dist/bin.d.ts +2 -0
  5. package/dist/bin.js +30 -0
  6. package/dist/bin.js.map +1 -0
  7. package/dist/commands/eval/serve.js +3 -3
  8. package/dist/commands/eval/serve.js.map +1 -1
  9. package/dist/eval-server/api-routes.d.ts +33 -0
  10. package/dist/eval-server/api-routes.js +202 -0
  11. package/dist/eval-server/api-routes.js.map +1 -1
  12. package/dist/eval-ui/assets/CommandPalette-Zop9jgyY.js +1 -0
  13. package/dist/eval-ui/assets/fonts-i7Lkz2zN.css +1 -0
  14. package/dist/eval-ui/assets/index-DS30At-e.css +1 -0
  15. package/dist/eval-ui/assets/index-PsfutY7X.js +65 -0
  16. package/dist/eval-ui/assets/inter-tight-cyrillic-ext-wght-normal-okcGN4Nq.woff2 +0 -0
  17. package/dist/eval-ui/assets/inter-tight-cyrillic-wght-normal-BS41q_Tv.woff2 +0 -0
  18. package/dist/eval-ui/assets/inter-tight-greek-ext-wght-normal-DQgQPNk4.woff2 +0 -0
  19. package/dist/eval-ui/assets/inter-tight-greek-wght-normal-sS1B39LI.woff2 +0 -0
  20. package/dist/eval-ui/assets/inter-tight-latin-ext-wght-normal-B4u9PlvR.woff2 +0 -0
  21. package/dist/eval-ui/assets/inter-tight-latin-wght-normal-DX-nOvPD.woff2 +0 -0
  22. package/dist/eval-ui/assets/inter-tight-vietnamese-wght-normal-TKKdAiBA.woff2 +0 -0
  23. package/dist/eval-ui/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  24. package/dist/eval-ui/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  25. package/dist/eval-ui/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  26. package/dist/eval-ui/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  27. package/dist/eval-ui/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  28. package/dist/eval-ui/assets/source-serif-4-cyrillic-ext-wght-normal-cHuGMAiY.woff2 +0 -0
  29. package/dist/eval-ui/assets/source-serif-4-cyrillic-wght-normal-DwHjdM4S.woff2 +0 -0
  30. package/dist/eval-ui/assets/source-serif-4-greek-wght-normal-ece1310W.woff2 +0 -0
  31. package/dist/eval-ui/assets/source-serif-4-latin-ext-wght-normal-CxNHBx-q.woff2 +0 -0
  32. package/dist/eval-ui/assets/source-serif-4-latin-wght-normal-D9elroTD.woff2 +0 -0
  33. package/dist/eval-ui/assets/source-serif-4-vietnamese-wght-normal-D-yuW59g.woff2 +0 -0
  34. package/dist/eval-ui/index.html +45 -2
  35. package/dist/utils/skill-creator-detection.d.ts +5 -1
  36. package/dist/utils/skill-creator-detection.js +33 -2
  37. package/dist/utils/skill-creator-detection.js.map +1 -1
  38. package/package.json +17 -4
  39. package/dist/eval-ui/assets/index-D2OKy2AG.js +0 -74
  40. package/dist/eval-ui/assets/index-tEmr_c8l.css +0 -1
@@ -4,8 +4,51 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Skill Studio</title>
7
- <script type="module" crossorigin src="/assets/index-D2OKy2AG.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-tEmr_c8l.css">
7
+ <script>
8
+ // FOUC-prevention: resolve theme + contrast BEFORE React mounts.
9
+ // Reads localStorage "vskill-theme" (values: "auto" | "light" | "dark").
10
+ // Falls back to prefers-color-scheme. Also sets data-contrast when
11
+ // prefers-contrast: more matches. try/catch wraps everything for
12
+ // private-browsing environments where localStorage throws.
13
+ (function () {
14
+ try {
15
+ var stored = null;
16
+ try {
17
+ stored = localStorage.getItem("vskill-theme");
18
+ } catch (e) {
19
+ stored = null;
20
+ }
21
+ var mode = stored === "light" || stored === "dark" || stored === "auto"
22
+ ? stored
23
+ : "auto";
24
+ var systemDark = false;
25
+ try {
26
+ systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
27
+ } catch (e) {
28
+ systemDark = false;
29
+ }
30
+ var resolved = mode === "auto" ? (systemDark ? "dark" : "light") : mode;
31
+ document.documentElement.dataset.theme = resolved;
32
+ document.documentElement.dataset.themeMode = mode;
33
+
34
+ var highContrast = false;
35
+ try {
36
+ highContrast = window.matchMedia("(prefers-contrast: more)").matches;
37
+ } catch (e) {
38
+ highContrast = false;
39
+ }
40
+ if (highContrast) {
41
+ document.documentElement.dataset.contrast = "more";
42
+ }
43
+ } catch (e) {
44
+ // Defensive: never block render on theme detection failure.
45
+ document.documentElement.dataset.theme = "light";
46
+ }
47
+ })();
48
+ </script>
49
+ <script type="module" crossorigin src="/assets/index-PsfutY7X.js"></script>
50
+ <link rel="stylesheet" crossorigin href="/assets/index-DS30At-e.css">
51
+ <link rel="stylesheet" crossorigin href="/assets/fonts-i7Lkz2zN.css">
9
52
  </head>
10
53
  <body>
11
54
  <div id="root"></div>
@@ -4,7 +4,11 @@
4
4
  * Detection order:
5
5
  * 1. Global canonical: ~/.agents/skills/skill-creator
6
6
  * 2. Project-local canonical: {projectRoot}/.agents/skills/skill-creator
7
+ * 2b. Project-local agent-native: {projectRoot}/{agent.localSkillsDir}/skill-creator
8
+ * for every agent in AGENTS_REGISTRY (covers .claude/skills, .cursor/skills, etc.)
7
9
  * 3. Any registered agent's global skills directory
8
- * 4. Any agent's plugin cache (e.g. Claude Code plugin cache)
10
+ * 4. Any agent's plugin cache (e.g. Claude Code plugin cache at ~/.claude/plugins/cache/)
11
+ * 4b. Any agent's plugin marketplace dir (e.g. ~/.claude/plugins/marketplaces/ — marketplace
12
+ * sources have an extra /plugins/ segment compared to the cache tree).
9
13
  */
10
14
  export declare function isSkillCreatorInstalled(projectRoot?: string): boolean;
@@ -11,8 +11,12 @@ import { AGENTS_REGISTRY } from "../agents/agents-registry.js";
11
11
  * Detection order:
12
12
  * 1. Global canonical: ~/.agents/skills/skill-creator
13
13
  * 2. Project-local canonical: {projectRoot}/.agents/skills/skill-creator
14
+ * 2b. Project-local agent-native: {projectRoot}/{agent.localSkillsDir}/skill-creator
15
+ * for every agent in AGENTS_REGISTRY (covers .claude/skills, .cursor/skills, etc.)
14
16
  * 3. Any registered agent's global skills directory
15
- * 4. Any agent's plugin cache (e.g. Claude Code plugin cache)
17
+ * 4. Any agent's plugin cache (e.g. Claude Code plugin cache at ~/.claude/plugins/cache/)
18
+ * 4b. Any agent's plugin marketplace dir (e.g. ~/.claude/plugins/marketplaces/ — marketplace
19
+ * sources have an extra /plugins/ segment compared to the cache tree).
16
20
  */
17
21
  export function isSkillCreatorInstalled(projectRoot) {
18
22
  const home = homedir();
@@ -23,7 +27,15 @@ export function isSkillCreatorInstalled(projectRoot) {
23
27
  if (projectRoot && existsSync(join(projectRoot, ".agents", "skills", "skill-creator"))) {
24
28
  return true;
25
29
  }
26
- // 3 + 4. Check every registered agent's global skills dir and plugin cache
30
+ // 2b. Project-local agent-native install dirs (.claude/skills, .cursor/skills, …)
31
+ if (projectRoot) {
32
+ for (const agent of AGENTS_REGISTRY) {
33
+ if (existsSync(join(projectRoot, agent.localSkillsDir, "skill-creator")))
34
+ return true;
35
+ }
36
+ }
37
+ // 3 + 4 + 4b. Check every registered agent's global skills dir, plugin cache,
38
+ // and marketplace source dir.
27
39
  for (const agent of AGENTS_REGISTRY) {
28
40
  const resolved = agent.globalSkillsDir.replace("~", home);
29
41
  if (existsSync(join(resolved, "skill-creator")))
@@ -44,6 +56,25 @@ export function isSkillCreatorInstalled(projectRoot) {
44
56
  }
45
57
  catch { /* ignore permission errors */ }
46
58
  }
59
+ if (agent.pluginMarketplaceDir) {
60
+ const mktRoot = agent.pluginMarketplaceDir.replace("~", home);
61
+ try {
62
+ if (existsSync(mktRoot)) {
63
+ for (const mkt of readdirSync(mktRoot, { withFileTypes: true })) {
64
+ if (!mkt.isDirectory())
65
+ continue;
66
+ const pluginsDir = join(mktRoot, mkt.name, "plugins");
67
+ if (!existsSync(pluginsDir))
68
+ continue;
69
+ for (const plugin of readdirSync(pluginsDir, { withFileTypes: true })) {
70
+ if (plugin.isDirectory() && plugin.name.includes("skill-creator"))
71
+ return true;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ catch { /* ignore permission errors */ }
77
+ }
47
78
  }
48
79
  return false;
49
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skill-creator-detection.js","sourceRoot":"","sources":["../../src/utils/skill-creator-detection.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAoB;IAC1D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,yEAAyE;IACzE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9E,uEAAuE;IACvE,IAAI,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2EAA2E;IAC3E,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAE7D,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC;gBACH,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;wBACjE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;4BAAE,SAAS;wBACjC,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;4BACpF,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;gCAAE,OAAO,IAAI,CAAC;wBACjF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"skill-creator-detection.js","sourceRoot":"","sources":["../../src/utils/skill-creator-detection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "vskill",
3
- "version": "0.5.82",
3
+ "version": "0.5.83",
4
4
  "type": "module",
5
5
  "description": "Secure multi-platform AI skill installer — scan before you install",
6
6
  "bin": {
7
- "vskill": "./dist/index.js"
7
+ "vskill": "./dist/bin.js"
8
8
  },
9
9
  "main": "./dist/index.js",
10
10
  "types": "./dist/index.d.ts",
@@ -15,6 +15,12 @@
15
15
  "dev:eval-ui": "vite dev --config src/eval-ui/vite.config.ts",
16
16
  "test": "vitest run",
17
17
  "test:e2e": "playwright test",
18
+ "test:bundle-size": "npx tsx scripts/check-bundle-size.ts",
19
+ "test:lhci": "lhci autorun --config=./lighthouse.config.js",
20
+ "lint:shimmer": "npx tsx scripts/check-no-shimmer.ts",
21
+ "lint:serif-scope": "npx tsx scripts/check-serif-scope.ts",
22
+ "lint:voice": "npx tsx scripts/check-strings-voice.ts",
23
+ "lint:bundle-size": "npx tsx scripts/check-bundle-size.ts",
18
24
  "clean": "rm -rf dist",
19
25
  "preuninstall": "node scripts/preuninstall.cjs",
20
26
  "prepublishOnly": "npm run build && npm run build:eval-ui"
@@ -43,17 +49,24 @@
43
49
  "README.md"
44
50
  ],
45
51
  "devDependencies": {
52
+ "@axe-core/playwright": "^4.11.2",
46
53
  "@figma/code-connect": "^1.4.2",
54
+ "@fontsource-variable/inter-tight": "^5.1.0",
55
+ "@fontsource-variable/jetbrains-mono": "^5.1.0",
56
+ "@fontsource-variable/source-serif-4": "^5.1.0",
57
+ "@lhci/cli": "^0.15.1",
47
58
  "@playwright/test": "^1.58.2",
48
- "@tailwindcss/vite": "^4.2.1",
59
+ "@tailwindcss/vite": "~4.2.1",
49
60
  "@types/node": "^25.2.3",
50
61
  "@types/react": "^19.2.14",
51
62
  "@types/react-dom": "^19.2.3",
52
63
  "@vitejs/plugin-react": "^4.7.0",
64
+ "axe-core": "^4.11.3",
53
65
  "react": "^19.2.4",
54
66
  "react-dom": "^19.2.4",
55
67
  "react-router-dom": "^7.13.1",
56
- "tailwindcss": "^4.2.1",
68
+ "react-virtuoso": "^4.18.5",
69
+ "tailwindcss": "~4.2.1",
57
70
  "typescript": "^5.7.0",
58
71
  "vite": "^6.4.1",
59
72
  "vitest": "^3.0.0"