vskill 0.5.36 → 0.5.37
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.
- package/dist/commands/eval/serve.js +3 -34
- package/dist/commands/eval/serve.js.map +1 -1
- package/dist/installer/canonical.js +13 -6
- package/dist/installer/canonical.js.map +1 -1
- package/dist/installer/frontmatter.d.ts +6 -0
- package/dist/installer/frontmatter.js +32 -0
- package/dist/installer/frontmatter.js.map +1 -1
- package/dist/utils/skill-creator-detection.d.ts +10 -0
- package/dist/utils/skill-creator-detection.js +50 -0
- package/dist/utils/skill-creator-detection.js.map +1 -0
- package/package.json +1 -1
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
// vskill eval serve -- start the eval UI web server
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
import { resolve, basename } from "node:path";
|
|
5
|
-
import { existsSync
|
|
5
|
+
import { existsSync } from "node:fs";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
7
|
import { execSync } from "node:child_process";
|
|
8
8
|
import * as net from "node:net";
|
|
9
|
-
import { homedir } from "node:os";
|
|
10
|
-
import { join } from "node:path";
|
|
11
9
|
import { startEvalServer } from "../../eval-server/eval-server.js";
|
|
12
10
|
import { yellow, dim, red, cyan, bold } from "../../utils/output.js";
|
|
13
11
|
import { createPrompter } from "../../utils/prompts.js";
|
|
14
|
-
import {
|
|
12
|
+
import { isSkillCreatorInstalled } from "../../utils/skill-creator-detection.js";
|
|
15
13
|
/**
|
|
16
14
|
* Deterministic port for a project path.
|
|
17
15
|
* Maps the absolute path to a port in range 3077-3177 using a hash.
|
|
@@ -23,36 +21,7 @@ export function projectPort(rootPath) {
|
|
|
23
21
|
return 3077 + offset;
|
|
24
22
|
}
|
|
25
23
|
function checkSkillCreator() {
|
|
26
|
-
|
|
27
|
-
// Check canonical vskill path first
|
|
28
|
-
let found = existsSync(join(home, ".agents", "skills", "skill-creator"));
|
|
29
|
-
// Check every registered agent's global skills directory and plugin cache
|
|
30
|
-
if (!found) {
|
|
31
|
-
found = AGENTS_REGISTRY.some((agent) => {
|
|
32
|
-
const resolved = agent.globalSkillsDir.replace("~", home);
|
|
33
|
-
if (existsSync(join(resolved, "skill-creator")))
|
|
34
|
-
return true;
|
|
35
|
-
// Check plugin cache: cache/<marketplace>/<plugin-name>/<version>/
|
|
36
|
-
if (agent.pluginCacheDir) {
|
|
37
|
-
const cacheDir = agent.pluginCacheDir.replace("~", home);
|
|
38
|
-
try {
|
|
39
|
-
if (existsSync(cacheDir)) {
|
|
40
|
-
for (const mkt of readdirSync(cacheDir, { withFileTypes: true })) {
|
|
41
|
-
if (!mkt.isDirectory())
|
|
42
|
-
continue;
|
|
43
|
-
for (const plugin of readdirSync(join(cacheDir, mkt.name), { withFileTypes: true })) {
|
|
44
|
-
if (plugin.isDirectory() && plugin.name.includes("skill-creator"))
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
catch { /* ignore */ }
|
|
51
|
-
}
|
|
52
|
-
return false;
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
if (!found) {
|
|
24
|
+
if (!isSkillCreatorInstalled()) {
|
|
56
25
|
console.log(yellow("\n Skill-Creator not detected.") +
|
|
57
26
|
"\n\n" +
|
|
58
27
|
dim(" The Skill-Creator skill provides the gold-standard evaluation\n") +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/commands/eval/serve.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAE9E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/commands/eval/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mkdirSync, writeFileSync, symlinkSync, lstatSync, rmSync } from "node:fs";
|
|
2
2
|
import { join, relative, dirname } from "node:path";
|
|
3
3
|
import os from "node:os";
|
|
4
|
-
import { ensureFrontmatter } from "./frontmatter.js";
|
|
4
|
+
import { ensureFrontmatter, stripClaudeFields } from "./frontmatter.js";
|
|
5
5
|
/**
|
|
6
6
|
* Resolve tilde in a path to the user's home directory.
|
|
7
7
|
*/
|
|
@@ -93,9 +93,11 @@ function writeAgentFiles(targetDir, agentFiles) {
|
|
|
93
93
|
*/
|
|
94
94
|
export function installSymlink(skillName, content, agents, opts, agentFiles) {
|
|
95
95
|
content = ensureFrontmatter(content, skillName);
|
|
96
|
+
const strippedContent = stripClaudeFields(content, skillName);
|
|
97
|
+
// Canonical gets stripped content — non-Claude agents symlink here
|
|
96
98
|
const canonicalSkillDir = join(ensureCanonicalDir(opts.projectRoot, opts.global), skillName);
|
|
97
99
|
mkdirSync(canonicalSkillDir, { recursive: true });
|
|
98
|
-
writeFileSync(join(canonicalSkillDir, "SKILL.md"),
|
|
100
|
+
writeFileSync(join(canonicalSkillDir, "SKILL.md"), strippedContent);
|
|
99
101
|
if (agentFiles)
|
|
100
102
|
writeAgentFiles(canonicalSkillDir, agentFiles);
|
|
101
103
|
const installed = [];
|
|
@@ -105,8 +107,10 @@ export function installSymlink(skillName, content, agents, opts, agentFiles) {
|
|
|
105
107
|
const linkPath = join(agentSkillsDir, skillName);
|
|
106
108
|
// Agents with known symlink issues get direct copy
|
|
107
109
|
if (COPY_FALLBACK_AGENTS.has(agent.id)) {
|
|
110
|
+
// Claude Code gets full content with all fields
|
|
111
|
+
const agentContent = agent.id === "claude-code" ? content : strippedContent;
|
|
108
112
|
mkdirSync(linkPath, { recursive: true });
|
|
109
|
-
writeFileSync(join(linkPath, "SKILL.md"),
|
|
113
|
+
writeFileSync(join(linkPath, "SKILL.md"), agentContent);
|
|
110
114
|
if (agentFiles)
|
|
111
115
|
writeAgentFiles(linkPath, agentFiles);
|
|
112
116
|
installed.push(linkPath);
|
|
@@ -117,9 +121,9 @@ export function installSymlink(skillName, content, agents, opts, agentFiles) {
|
|
|
117
121
|
installed.push(linkPath);
|
|
118
122
|
}
|
|
119
123
|
else {
|
|
120
|
-
// Fallback to copy on symlink failure
|
|
124
|
+
// Fallback to copy on symlink failure — use stripped content for non-Claude
|
|
121
125
|
mkdirSync(linkPath, { recursive: true });
|
|
122
|
-
writeFileSync(join(linkPath, "SKILL.md"),
|
|
126
|
+
writeFileSync(join(linkPath, "SKILL.md"), strippedContent);
|
|
123
127
|
if (agentFiles)
|
|
124
128
|
writeAgentFiles(linkPath, agentFiles);
|
|
125
129
|
installed.push(linkPath);
|
|
@@ -134,12 +138,15 @@ export function installSymlink(skillName, content, agents, opts, agentFiles) {
|
|
|
134
138
|
*/
|
|
135
139
|
export function installCopy(skillName, content, agents, opts, agentFiles) {
|
|
136
140
|
content = ensureFrontmatter(content, skillName);
|
|
141
|
+
const strippedContent = stripClaudeFields(content, skillName);
|
|
137
142
|
const installed = [];
|
|
138
143
|
for (const agent of agents) {
|
|
144
|
+
// Claude Code gets full content; all others get stripped
|
|
145
|
+
const agentContent = agent.id === "claude-code" ? content : strippedContent;
|
|
139
146
|
const agentSkillsDir = resolveAgentSkillsDir(agent, opts);
|
|
140
147
|
const skillDir = join(agentSkillsDir, skillName);
|
|
141
148
|
mkdirSync(skillDir, { recursive: true });
|
|
142
|
-
writeFileSync(join(skillDir, "SKILL.md"),
|
|
149
|
+
writeFileSync(join(skillDir, "SKILL.md"), agentContent);
|
|
143
150
|
if (agentFiles)
|
|
144
151
|
writeAgentFiles(skillDir, agentFiles);
|
|
145
152
|
installed.push(skillDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/installer/canonical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/installer/canonical.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,3 +19,9 @@ export declare function extractDescription(body: string, skillName: string): str
|
|
|
19
19
|
* Pure function — normalizes CRLF, preserves existing fields, injects missing ones.
|
|
20
20
|
*/
|
|
21
21
|
export declare function ensureFrontmatter(content: string, skillName: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Strip Claude Code-specific frontmatter fields for non-Claude agents.
|
|
24
|
+
* Removes: user-invocable, allowed-tools, model, argument-hint, context.
|
|
25
|
+
* Ensures `name:` is present (required by all agents).
|
|
26
|
+
*/
|
|
27
|
+
export declare function stripClaudeFields(content: string, skillName: string): string;
|
|
@@ -4,6 +4,14 @@ const FRONTMATTER_RE = /^---\n([\s\S]*?)\n---/;
|
|
|
4
4
|
const SKILL_NAME_RE = /^[a-z0-9]([a-z0-9-]{0,62}[a-z0-9])?$/;
|
|
5
5
|
/** Single lowercase alphanumeric character (valid 1-char skill name) */
|
|
6
6
|
const SINGLE_CHAR_RE = /^[a-z0-9]$/;
|
|
7
|
+
/** Claude Code-specific frontmatter fields that non-Claude agents don't support */
|
|
8
|
+
const CLAUDE_FIELD_PATTERNS = [
|
|
9
|
+
/^user-invoc?k?able\s*:.*\n?/gm,
|
|
10
|
+
/^allowed-tools\s*:.*\n?/gm,
|
|
11
|
+
/^model\s*:.*\n?/gm,
|
|
12
|
+
/^argument-hint\s*:.*\n?/gm,
|
|
13
|
+
/^context\s*:.*\n?/gm,
|
|
14
|
+
];
|
|
7
15
|
/** Detects `name:` field at the start of a line in frontmatter */
|
|
8
16
|
const HAS_NAME_RE = /^name:/m;
|
|
9
17
|
/** Detects `description:` field at the start of a line in frontmatter */
|
|
@@ -81,4 +89,28 @@ export function ensureFrontmatter(content, skillName) {
|
|
|
81
89
|
}
|
|
82
90
|
return normalized.replace(FRONTMATTER_RE, `---\n${updatedBlock}\n---`);
|
|
83
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Strip Claude Code-specific frontmatter fields for non-Claude agents.
|
|
94
|
+
* Removes: user-invocable, allowed-tools, model, argument-hint, context.
|
|
95
|
+
* Ensures `name:` is present (required by all agents).
|
|
96
|
+
*/
|
|
97
|
+
export function stripClaudeFields(content, skillName) {
|
|
98
|
+
const normalized = content.replace(/^\uFEFF/, "").replace(/\r\n/g, "\n");
|
|
99
|
+
if (!normalized.startsWith("---")) {
|
|
100
|
+
const desc = extractDescription(normalized, skillName);
|
|
101
|
+
return `---\nname: ${skillName}\ndescription: ${quoteYAMLValue(desc)}\n---\n\n${normalized}`;
|
|
102
|
+
}
|
|
103
|
+
const endIdx = normalized.indexOf("---", 3);
|
|
104
|
+
if (endIdx === -1)
|
|
105
|
+
return normalized;
|
|
106
|
+
let fmBlock = normalized.substring(3, endIdx);
|
|
107
|
+
const body = normalized.substring(endIdx + 3);
|
|
108
|
+
for (const pattern of CLAUDE_FIELD_PATTERNS) {
|
|
109
|
+
fmBlock = fmBlock.replace(new RegExp(pattern.source, pattern.flags), "");
|
|
110
|
+
}
|
|
111
|
+
if (!HAS_NAME_RE.test(fmBlock)) {
|
|
112
|
+
fmBlock = `name: ${skillName}\n${fmBlock}`;
|
|
113
|
+
}
|
|
114
|
+
return `---${fmBlock}---${body}`;
|
|
115
|
+
}
|
|
84
116
|
//# sourceMappingURL=frontmatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/installer/frontmatter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/installer/frontmatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if the skill-creator skill is installed in any known location.
|
|
3
|
+
*
|
|
4
|
+
* Detection order:
|
|
5
|
+
* 1. Global canonical: ~/.agents/skills/skill-creator
|
|
6
|
+
* 2. Project-local canonical: {projectRoot}/.agents/skills/skill-creator
|
|
7
|
+
* 3. Any registered agent's global skills directory
|
|
8
|
+
* 4. Any agent's plugin cache (e.g. Claude Code plugin cache)
|
|
9
|
+
*/
|
|
10
|
+
export declare function isSkillCreatorInstalled(projectRoot?: string): boolean;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Shared skill-creator detection — used by eval serve + eval server API
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { homedir } from "node:os";
|
|
7
|
+
import { AGENTS_REGISTRY } from "../agents/agents-registry.js";
|
|
8
|
+
/**
|
|
9
|
+
* Check if the skill-creator skill is installed in any known location.
|
|
10
|
+
*
|
|
11
|
+
* Detection order:
|
|
12
|
+
* 1. Global canonical: ~/.agents/skills/skill-creator
|
|
13
|
+
* 2. Project-local canonical: {projectRoot}/.agents/skills/skill-creator
|
|
14
|
+
* 3. Any registered agent's global skills directory
|
|
15
|
+
* 4. Any agent's plugin cache (e.g. Claude Code plugin cache)
|
|
16
|
+
*/
|
|
17
|
+
export function isSkillCreatorInstalled(projectRoot) {
|
|
18
|
+
const home = homedir();
|
|
19
|
+
// 1. Global canonical path (source of truth for vskill install --global)
|
|
20
|
+
if (existsSync(join(home, ".agents", "skills", "skill-creator")))
|
|
21
|
+
return true;
|
|
22
|
+
// 2. Project-local canonical path (source of truth for vskill install)
|
|
23
|
+
if (projectRoot && existsSync(join(projectRoot, ".agents", "skills", "skill-creator"))) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
// 3 + 4. Check every registered agent's global skills dir and plugin cache
|
|
27
|
+
for (const agent of AGENTS_REGISTRY) {
|
|
28
|
+
const resolved = agent.globalSkillsDir.replace("~", home);
|
|
29
|
+
if (existsSync(join(resolved, "skill-creator")))
|
|
30
|
+
return true;
|
|
31
|
+
if (agent.pluginCacheDir) {
|
|
32
|
+
const cacheDir = agent.pluginCacheDir.replace("~", home);
|
|
33
|
+
try {
|
|
34
|
+
if (existsSync(cacheDir)) {
|
|
35
|
+
for (const mkt of readdirSync(cacheDir, { withFileTypes: true })) {
|
|
36
|
+
if (!mkt.isDirectory())
|
|
37
|
+
continue;
|
|
38
|
+
for (const plugin of readdirSync(join(cacheDir, mkt.name), { withFileTypes: true })) {
|
|
39
|
+
if (plugin.isDirectory() && plugin.name.includes("skill-creator"))
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch { /* ignore permission errors */ }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=skill-creator-detection.js.map
|
|
@@ -0,0 +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"}
|