vskill 1.0.2 → 1.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.
- package/agents.json +1 -1
- package/dist/commands/outdated.d.ts +1 -0
- package/dist/commands/outdated.js +63 -25
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/plugin.js +39 -7
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/submit.js +61 -1
- package/dist/commands/submit.js.map +1 -1
- package/dist/eval-server/authoring-routes.js +90 -17
- package/dist/eval-server/authoring-routes.js.map +1 -1
- package/dist/eval-server/plugin-cli-routes.js +20 -13
- package/dist/eval-server/plugin-cli-routes.js.map +1 -1
- package/dist/eval-server/plugin-discovery.d.ts +17 -0
- package/dist/eval-server/plugin-discovery.js +183 -0
- package/dist/eval-server/plugin-discovery.js.map +1 -0
- package/dist/eval-ui/assets/{CreateSkillPage-Cvqa6K5i.js → CreateSkillPage-D9ZsmNub.js} +1 -1
- package/dist/eval-ui/assets/{FindSkillsPalette-CWHvEBnP.js → FindSkillsPalette-BBj-hoqE.js} +2 -2
- package/dist/eval-ui/assets/{SearchPaletteCore-CqA31vP2.js → SearchPaletteCore-Ddcfdn9a.js} +1 -1
- package/dist/eval-ui/assets/{SkillDetailPanel-u4KHBlUQ.js → SkillDetailPanel-Xymi4aZg.js} +1 -1
- package/dist/eval-ui/assets/{UpdateDropdown-DslQOd6_.js → UpdateDropdown-DTP2sv27.js} +1 -1
- package/dist/eval-ui/assets/index-BmriQsHr.js +122 -0
- package/dist/eval-ui/index.html +1 -1
- package/dist/lib/frontmatter.d.ts +33 -0
- package/dist/lib/frontmatter.js +85 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lockfile/authored.d.ts +35 -0
- package/dist/lockfile/authored.js +82 -0
- package/dist/lockfile/authored.js.map +1 -0
- package/package.json +1 -1
- package/dist/eval-ui/assets/index-DVbvMGAg.js +0 -122
package/agents.json
CHANGED
|
@@ -12,6 +12,7 @@ import type { VskillLock } from "../lockfile/types.js";
|
|
|
12
12
|
export declare function getOutdatedJson(): Promise<{
|
|
13
13
|
results: CheckUpdateResult[];
|
|
14
14
|
pinMap: Map<string, string>;
|
|
15
|
+
authoredNames: Set<string>;
|
|
15
16
|
} | null>;
|
|
16
17
|
export declare function outdatedCommand(opts: {
|
|
17
18
|
json?: boolean;
|
|
@@ -10,11 +10,14 @@
|
|
|
10
10
|
// the platform returns `latest`, we compare semver — if disk >= latest
|
|
11
11
|
// the entry is NOT outdated (don't tell the user to "update" backwards).
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
13
|
+
import { existsSync } from "node:fs";
|
|
14
|
+
import { isAbsolute, join } from "node:path";
|
|
13
15
|
import { checkUpdates } from "../api/client.js";
|
|
14
16
|
import { readLockfile, writeLockfile } from "../lockfile/lockfile.js";
|
|
15
17
|
import { getProjectRoot } from "../lockfile/project-root.js";
|
|
16
18
|
import { parseSource } from "../resolvers/source-resolver.js";
|
|
17
|
-
import { reconcileLockfileVersion, resolveInstallPath, compareSemver, } from "../eval/disk-version.js";
|
|
19
|
+
import { reconcileLockfileVersion, resolveInstallPath, compareSemver, readDiskVersion, } from "../eval/disk-version.js";
|
|
20
|
+
import { readAuthored, removeAuthoredSkill } from "../lockfile/authored.js";
|
|
18
21
|
import { bold, dim, green, red, yellow, cyan, table } from "../utils/output.js";
|
|
19
22
|
const TWENTY_FOUR_HOURS = 86_400_000;
|
|
20
23
|
/**
|
|
@@ -42,27 +45,60 @@ function resolveFullName(name, source) {
|
|
|
42
45
|
export async function getOutdatedJson() {
|
|
43
46
|
const lock = readLockfile();
|
|
44
47
|
const lockDir = getProjectRoot();
|
|
45
|
-
|
|
48
|
+
const authored = readAuthored(lockDir);
|
|
49
|
+
const lockSkillCount = lock ? Object.keys(lock.skills).length : 0;
|
|
50
|
+
if (lockSkillCount === 0 && authored.length === 0)
|
|
46
51
|
return null;
|
|
47
52
|
const diskVersions = new Map();
|
|
48
53
|
const reconcileWarnings = new Map();
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
const authoredNames = new Set();
|
|
55
|
+
const items = lock
|
|
56
|
+
? Object.entries(lock.skills).map(([name, entry]) => {
|
|
57
|
+
const resolvedName = resolveFullName(name, entry.source);
|
|
58
|
+
const skillMdPath = resolveInstallPath({ name, entry, lockDir });
|
|
59
|
+
const reconciled = reconcileLockfileVersion({
|
|
60
|
+
lockfileVersion: entry.version,
|
|
61
|
+
skillMdPath,
|
|
62
|
+
});
|
|
63
|
+
diskVersions.set(resolvedName, reconciled.version);
|
|
64
|
+
if (reconciled.warning) {
|
|
65
|
+
reconcileWarnings.set(resolvedName, reconciled.warning);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
name: resolvedName,
|
|
69
|
+
currentVersion: reconciled.version,
|
|
70
|
+
sha: entry.sha,
|
|
71
|
+
};
|
|
72
|
+
})
|
|
73
|
+
: [];
|
|
74
|
+
// 0794 / T-007 — append authored (source-origin) skills to the poll set.
|
|
75
|
+
// Skills the user has published themselves don't appear in vskill.lock
|
|
76
|
+
// (only installs do), so they were silently skipped before. Read disk
|
|
77
|
+
// version from the source SKILL.md and include them in the upstream
|
|
78
|
+
// check. Skip silently if the file disappeared (and clean up tracking)
|
|
79
|
+
// or if the local version cannot be read.
|
|
80
|
+
for (const a of authored) {
|
|
81
|
+
if (lock?.skills[a.name]) {
|
|
82
|
+
// Already tracked via lockfile — avoid duplicate poll entries.
|
|
83
|
+
continue;
|
|
59
84
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
85
|
+
const absSourcePath = isAbsolute(a.sourcePath)
|
|
86
|
+
? a.sourcePath
|
|
87
|
+
: join(lockDir, a.sourcePath);
|
|
88
|
+
if (!existsSync(absSourcePath)) {
|
|
89
|
+
removeAuthoredSkill(lockDir, a.name);
|
|
90
|
+
console.error(dim(`${a.name}: source path no longer exists, removed from authored tracking`));
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const v = readDiskVersion(absSourcePath);
|
|
94
|
+
if (!v)
|
|
95
|
+
continue; // never published or unreadable — skip silently (AC-US6-05)
|
|
96
|
+
diskVersions.set(a.name, v);
|
|
97
|
+
items.push({ name: a.name, currentVersion: v });
|
|
98
|
+
authoredNames.add(a.name);
|
|
99
|
+
}
|
|
100
|
+
if (items.length === 0)
|
|
101
|
+
return null;
|
|
66
102
|
const rawResults = await checkUpdates(items);
|
|
67
103
|
const results = rawResults.map((r) => {
|
|
68
104
|
const disk = diskVersions.get(r.name) ?? r.installed;
|
|
@@ -79,15 +115,17 @@ export async function getOutdatedJson() {
|
|
|
79
115
|
};
|
|
80
116
|
});
|
|
81
117
|
const pinMap = new Map();
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
118
|
+
if (lock) {
|
|
119
|
+
for (const [name, entry] of Object.entries(lock.skills)) {
|
|
120
|
+
if (entry.pinnedVersion) {
|
|
121
|
+
pinMap.set(name, entry.pinnedVersion);
|
|
122
|
+
const resolved = resolveFullName(name, entry.source);
|
|
123
|
+
if (resolved !== name)
|
|
124
|
+
pinMap.set(resolved, entry.pinnedVersion);
|
|
125
|
+
}
|
|
88
126
|
}
|
|
89
127
|
}
|
|
90
|
-
return { results, pinMap };
|
|
128
|
+
return { results, pinMap, authoredNames };
|
|
91
129
|
}
|
|
92
130
|
export async function outdatedCommand(opts) {
|
|
93
131
|
const programmatic = await getOutdatedJson().catch((err) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outdated.js","sourceRoot":"","sources":["../../src/commands/outdated.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kEAAkE;AAClE,8EAA8E;AAC9E,oEAAoE;AACpE,wEAAwE;AACxE,0EAA0E;AAC1E,2EAA2E;AAC3E,wEAAwE;AACxE,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,
|
|
1
|
+
{"version":3,"file":"outdated.js","sourceRoot":"","sources":["../../src/commands/outdated.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/plugin.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// This command exists because Claude Code's `claude plugin` CLI has no
|
|
11
11
|
// `new`/`create`/`init` subcommand — plugin authoring is otherwise unowned.
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
13
|
-
import { existsSync, mkdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
13
|
+
import { existsSync, mkdirSync, rmdirSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
|
|
14
14
|
import { resolve, join } from "node:path";
|
|
15
15
|
import { pluginJsonScaffold, skillMdScaffold, validateKebabName, } from "../eval-server/authoring-routes.js";
|
|
16
16
|
import { validateClaudePlugin } from "../core/plugin-validator.js";
|
|
@@ -52,10 +52,12 @@ export async function pluginNewCommand(pluginName, opts) {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
const description = (opts.description ?? "").trim() || `Plugin: ${pluginName}`;
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
55
|
+
// All-or-nothing scaffolding: track what we create so we can roll the whole
|
|
56
|
+
// tree back on validator failure. If we wrote both a manifest AND a first
|
|
57
|
+
// skill, leaving the skill behind on rollback creates a phantom skill that
|
|
58
|
+
// would surprise the user (they ran one command, saw an error, and now the
|
|
59
|
+
// workspace has files they didn't ask for).
|
|
60
|
+
const created = {};
|
|
59
61
|
try {
|
|
60
62
|
mkdirSync(manifestDir, { recursive: true });
|
|
61
63
|
writeFileSync(manifestPath, pluginJsonScaffold(pluginName, description), "utf8");
|
|
@@ -63,6 +65,7 @@ export async function pluginNewCommand(pluginName, opts) {
|
|
|
63
65
|
const skillDir = join(pluginDir, "skills", withSkill);
|
|
64
66
|
mkdirSync(skillDir, { recursive: true });
|
|
65
67
|
writeFileSync(join(skillDir, "SKILL.md"), skillMdScaffold(withSkill, description), "utf8");
|
|
68
|
+
created.skillDir = skillDir;
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
71
|
catch (err) {
|
|
@@ -74,15 +77,44 @@ export async function pluginNewCommand(pluginName, opts) {
|
|
|
74
77
|
// for the plugin schema.
|
|
75
78
|
const validation = validateClaudePlugin(pluginDir);
|
|
76
79
|
if (!validation.ok) {
|
|
80
|
+
// Roll back EVERYTHING this command created. The manifest first (cheap),
|
|
81
|
+
// then the skill folder if we wrote one. After the artifact removals,
|
|
82
|
+
// best-effort `rmdirSync` walks up the tree (skills/ → pluginDir/) and
|
|
83
|
+
// removes each level only if it became empty — so we never delete user
|
|
84
|
+
// files that were already there.
|
|
77
85
|
try {
|
|
78
86
|
unlinkSync(manifestPath);
|
|
87
|
+
rmSync(manifestDir, { recursive: true, force: true });
|
|
79
88
|
}
|
|
80
89
|
catch {
|
|
81
|
-
/* best-effort
|
|
90
|
+
/* best-effort */
|
|
91
|
+
}
|
|
92
|
+
if (created.skillDir) {
|
|
93
|
+
try {
|
|
94
|
+
rmSync(created.skillDir, { recursive: true, force: true });
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
/* best-effort */
|
|
98
|
+
}
|
|
99
|
+
// rmdirSync only removes empty dirs (vs rmSync without `recursive`,
|
|
100
|
+
// which throws ENOTEMPTY on non-empty AND on empty dirs in some Node
|
|
101
|
+
// versions). Wrapping in try/catch lets us safely walk up.
|
|
102
|
+
try {
|
|
103
|
+
rmdirSync(join(pluginDir, "skills"));
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
/* skills/ has other content the user owns — leave it */
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
rmdirSync(pluginDir);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
/* pluginDir not empty (other files we didn't create) — leave it */
|
|
82
114
|
}
|
|
83
115
|
console.error(red("Error: ") + dim("claude plugin validate rejected the generated manifest:"));
|
|
84
116
|
console.error(validation.stderr || "(no stderr captured)");
|
|
85
|
-
console.error(dim(" The
|
|
117
|
+
console.error(dim(" The plugin scaffold has been rolled back. Please file an issue if this is unexpected."));
|
|
86
118
|
exit(1);
|
|
87
119
|
}
|
|
88
120
|
if (validation.skipped) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8CAA8C;AAC9C,EAAE;AACF,oFAAoF;AACpF,wEAAwE;AACxE,2EAA2E;AAC3E,wEAAwE;AACxE,0DAA0D;AAC1D,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/submit.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
// ---------------------------------------------------------------------------
|
|
2
2
|
// vskill submit -- submit skill for verification via API or browser fallback
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
|
+
import * as fs from "node:fs/promises";
|
|
5
|
+
import { existsSync } from "node:fs";
|
|
6
|
+
import * as path from "node:path";
|
|
4
7
|
import { openBrowser } from "../utils/browser.js";
|
|
5
|
-
import { submitSkill } from "../api/client.js";
|
|
8
|
+
import { submitSkill, getVersions } from "../api/client.js";
|
|
6
9
|
import { bold, green, red, dim, cyan, yellow } from "../utils/output.js";
|
|
7
10
|
import { parseGitHubSource, validateSkillName } from "../utils/validation.js";
|
|
11
|
+
import { upsertFrontmatterVersion, validatesAsYamlFrontmatter } from "../lib/frontmatter.js";
|
|
12
|
+
import { addAuthoredSkill } from "../lockfile/authored.js";
|
|
13
|
+
import { getProjectRoot } from "../lockfile/project-root.js";
|
|
8
14
|
export async function submitCommand(source, opts) {
|
|
9
15
|
if (opts.skill && !validateSkillName(opts.skill)) {
|
|
10
16
|
console.error(red("Invalid skill name. ") + dim("Path traversal patterns are not allowed."));
|
|
@@ -58,6 +64,12 @@ export async function submitCommand(source, opts) {
|
|
|
58
64
|
console.log(green("Already verified! ") + dim("Skill is up-to-date in the registry."));
|
|
59
65
|
if (response.id)
|
|
60
66
|
console.log(dim(`Submission: ${response.id}`));
|
|
67
|
+
// 0794 / T-005 — write registry version back to local SKILL.md frontmatter.
|
|
68
|
+
// Only fires when the user has a local source path: prevents phantom
|
|
69
|
+
// "update available" right after submit (project_skill_version_publish_desync.md).
|
|
70
|
+
if (response.skillName && opts.path) {
|
|
71
|
+
await tryWriteBackVersion(response.skillName, opts.path);
|
|
72
|
+
}
|
|
61
73
|
return;
|
|
62
74
|
}
|
|
63
75
|
if (response.duplicate) {
|
|
@@ -70,6 +82,12 @@ export async function submitCommand(source, opts) {
|
|
|
70
82
|
console.log(dim(`State: ${response.state}`));
|
|
71
83
|
console.log(dim("\nThe skill will go through tier-1 and tier-2 scanning."));
|
|
72
84
|
console.log(dim(`Check status: vskill info ${opts.skill || repo}`));
|
|
85
|
+
// 0794 / T-005 — when state is already 'completed' (rare fast-path),
|
|
86
|
+
// attempt write-back. For pending state the user should re-run after
|
|
87
|
+
// scan completes (or use vskill outdated which will pick up the new version).
|
|
88
|
+
if (response.state === "completed" && response.skillName && opts.path) {
|
|
89
|
+
await tryWriteBackVersion(response.skillName, opts.path);
|
|
90
|
+
}
|
|
73
91
|
}
|
|
74
92
|
catch (err) {
|
|
75
93
|
const msg = err.message;
|
|
@@ -83,4 +101,46 @@ export async function submitCommand(source, opts) {
|
|
|
83
101
|
process.exit(1);
|
|
84
102
|
}
|
|
85
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* 0794 / T-005 — write the registry's latest version back to the user's
|
|
106
|
+
* local SKILL.md frontmatter. Looks up the latest published version via
|
|
107
|
+
* the registry's `/skills/<name>/versions` endpoint and uses
|
|
108
|
+
* upsertFrontmatterVersion to update only the top-level `version:` field.
|
|
109
|
+
*
|
|
110
|
+
* Best-effort: any failure is logged as dim text and never throws —
|
|
111
|
+
* write-back is a UX nicety, not a correctness requirement.
|
|
112
|
+
*/
|
|
113
|
+
async function tryWriteBackVersion(skillName, sourcePath) {
|
|
114
|
+
try {
|
|
115
|
+
const resolved = path.resolve(sourcePath);
|
|
116
|
+
if (!existsSync(resolved))
|
|
117
|
+
return;
|
|
118
|
+
const versions = await getVersions(skillName);
|
|
119
|
+
if (!versions || versions.length === 0)
|
|
120
|
+
return;
|
|
121
|
+
const latest = versions[0]; // API returns versions newest-first
|
|
122
|
+
if (!latest?.version)
|
|
123
|
+
return;
|
|
124
|
+
const before = await fs.readFile(resolved, "utf8");
|
|
125
|
+
const after = upsertFrontmatterVersion(before, latest.version);
|
|
126
|
+
if (after === before)
|
|
127
|
+
return; // already up to date
|
|
128
|
+
if (!validatesAsYamlFrontmatter(after)) {
|
|
129
|
+
console.log(dim(`(skipped writeback: result would not be valid YAML frontmatter)`));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
await fs.writeFile(resolved, after);
|
|
133
|
+
console.log(dim(`Wrote version ${latest.version} to ${path.relative(process.cwd(), resolved)}`));
|
|
134
|
+
// 0794 / T-006 — track this skill for source-origin update polling.
|
|
135
|
+
try {
|
|
136
|
+
addAuthoredSkill(getProjectRoot(), skillName, resolved);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
// Authored tracking is best-effort; never block writeback.
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
console.log(dim(`(version writeback skipped: ${err.message})`));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
86
146
|
//# sourceMappingURL=submit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
// Does NOT call the LLM — that's /api/skills/generate. This is the "empty
|
|
18
18
|
// scaffold" path. UI can chain to generate after create.
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
20
|
-
import { existsSync, mkdirSync, writeFileSync, statSync, readdirSync, unlinkSync, } from "node:fs";
|
|
21
|
-
import { join, resolve, sep } from "node:path";
|
|
20
|
+
import { existsSync, mkdirSync, writeFileSync, statSync, readdirSync, realpathSync, unlinkSync, } from "node:fs";
|
|
21
|
+
import { basename, dirname, join, resolve, sep } from "node:path";
|
|
22
22
|
import { sendJson, readBody } from "./router.js";
|
|
23
23
|
import { validateClaudePlugin } from "../core/plugin-validator.js";
|
|
24
24
|
const KEBAB = /^[a-z][a-z0-9-]{0,62}[a-z0-9]$/;
|
|
@@ -54,16 +54,21 @@ export function skillMdScaffold(skillName, description) {
|
|
|
54
54
|
// endpoint can reuse the single source of truth for plugin.json content.
|
|
55
55
|
// 0793 T-001.
|
|
56
56
|
export function pluginJsonScaffold(pluginName, description) {
|
|
57
|
-
// 0703 follow-up: align with
|
|
58
|
-
// `name` is the only
|
|
59
|
-
//
|
|
60
|
-
// `version: "0.1.0"`
|
|
61
|
-
//
|
|
62
|
-
//
|
|
57
|
+
// 0703 follow-up + 0793 T-001 fix: align with
|
|
58
|
+
// https://code.claude.com/docs/en/plugins-reference. `name` is the only
|
|
59
|
+
// required field. `version` is intentionally omitted so Claude Code falls
|
|
60
|
+
// back to the git SHA — docs explicitly warn that a fixed `version: "0.1.0"`
|
|
61
|
+
// is a footgun (users stop receiving updates unless the author remembers to
|
|
62
|
+
// bump it).
|
|
63
|
+
//
|
|
64
|
+
// `author` is OMITTED from the scaffold (was previously stubbed as
|
|
65
|
+
// `{ name: "" }`, but `claude plugin validate` rejects empty author.name
|
|
66
|
+
// with "Author name cannot be empty"). Claude Code falls back gracefully
|
|
67
|
+
// when `author` is absent. Authors can add the field manually when ready
|
|
68
|
+
// to publish.
|
|
63
69
|
return (JSON.stringify({
|
|
64
70
|
name: pluginName,
|
|
65
71
|
description,
|
|
66
|
-
author: { name: "" },
|
|
67
72
|
}, null, 2) + "\n");
|
|
68
73
|
}
|
|
69
74
|
export function makeCreateSkillHandler(root) {
|
|
@@ -203,14 +208,26 @@ function isInsideRoot(rootDir, absPath) {
|
|
|
203
208
|
return (resolvedPath === resolvedRoot ||
|
|
204
209
|
resolvedPath.startsWith(resolvedRoot + sep));
|
|
205
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* Returns true iff `<pluginDir>/skills/<x>/SKILL.md` exists for at least one
|
|
213
|
+
* `<x>`. Distinguishes a genuinely missing/empty `skills/` (return false) from
|
|
214
|
+
* an unreadable one (rethrow): a permission error must NOT silently masquerade
|
|
215
|
+
* as "no skills here" because the convert-to-plugin endpoint would surface
|
|
216
|
+
* that as a misleading 400 "no-skills-to-convert".
|
|
217
|
+
*
|
|
218
|
+
* Throws on any non-ENOENT readdir error so the caller can return a 500.
|
|
219
|
+
*/
|
|
206
220
|
function hasAnyAuthoredSkill(pluginDir) {
|
|
207
221
|
const skillsRoot = join(pluginDir, "skills");
|
|
208
222
|
let entries;
|
|
209
223
|
try {
|
|
210
224
|
entries = readdirSync(skillsRoot);
|
|
211
225
|
}
|
|
212
|
-
catch {
|
|
213
|
-
|
|
226
|
+
catch (err) {
|
|
227
|
+
const code = err?.code;
|
|
228
|
+
if (code === "ENOENT" || code === "ENOTDIR")
|
|
229
|
+
return false;
|
|
230
|
+
throw err;
|
|
214
231
|
}
|
|
215
232
|
for (const entry of entries) {
|
|
216
233
|
const skillMd = join(skillsRoot, entry, "SKILL.md");
|
|
@@ -218,8 +235,12 @@ function hasAnyAuthoredSkill(pluginDir) {
|
|
|
218
235
|
if (statSync(skillMd).isFile())
|
|
219
236
|
return true;
|
|
220
237
|
}
|
|
221
|
-
catch {
|
|
222
|
-
|
|
238
|
+
catch (err) {
|
|
239
|
+
const code = err?.code;
|
|
240
|
+
// ENOENT means this child doesn't have a SKILL.md (fine — keep scanning).
|
|
241
|
+
// Anything else (EACCES/EPERM/EIO) is unexpected — let it bubble up.
|
|
242
|
+
if (code !== "ENOENT" && code !== "ENOTDIR")
|
|
243
|
+
throw err;
|
|
223
244
|
}
|
|
224
245
|
}
|
|
225
246
|
return false;
|
|
@@ -240,10 +261,41 @@ export function makeConvertToPluginHandler(root) {
|
|
|
240
261
|
if (typeof body.anchorSkillDir !== "string" || body.anchorSkillDir.length === 0) {
|
|
241
262
|
return sendError(res, 400, "invalid-anchor", "anchorSkillDir must be an absolute path of an existing skill directory");
|
|
242
263
|
}
|
|
243
|
-
|
|
244
|
-
|
|
264
|
+
// First-pass: lexical check on the user-supplied path. This catches the
|
|
265
|
+
// common "outside-root" case (e.g. /tmp/elsewhere/skills/x) without an FS
|
|
266
|
+
// round-trip and before exposing realpath behavior to untrusted input.
|
|
267
|
+
const anchorLexical = resolve(body.anchorSkillDir);
|
|
268
|
+
if (!isInsideRoot(root, anchorLexical)) {
|
|
245
269
|
return sendError(res, 400, "anchor-outside-root", "anchorSkillDir must be inside the workspace root");
|
|
246
270
|
}
|
|
271
|
+
// F-004 (0793 review iteration 2): resolve symlinks and re-check the
|
|
272
|
+
// workspace-root invariant. `resolve()` only normalizes path strings — a
|
|
273
|
+
// symlink at <root>/inside/skills/<x> pointing to /etc/foo/skills/<x>
|
|
274
|
+
// passes the lexical check above but writeFileSync would then follow the
|
|
275
|
+
// link and write outside the workspace. realpathSync forces the anchor
|
|
276
|
+
// to its canonical on-disk path. We realpath both sides so platform-
|
|
277
|
+
// specific symlinks (macOS /tmp → /private/tmp, /var → /private/var) do
|
|
278
|
+
// not produce false-positive "outside root" rejections when the workspace
|
|
279
|
+
// root and anchor live on the same canonical mount.
|
|
280
|
+
let anchorSkillDir;
|
|
281
|
+
try {
|
|
282
|
+
anchorSkillDir = realpathSync(anchorLexical);
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
return sendError(res, 400, "anchor-not-found", `anchorSkillDir does not exist: ${anchorLexical}`);
|
|
286
|
+
}
|
|
287
|
+
let canonicalRoot;
|
|
288
|
+
try {
|
|
289
|
+
canonicalRoot = realpathSync(root);
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
// Fall back to the lexical root — if the workspace root itself doesn't
|
|
293
|
+
// exist on disk, downstream operations will fail anyway.
|
|
294
|
+
canonicalRoot = resolve(root);
|
|
295
|
+
}
|
|
296
|
+
if (!isInsideRoot(canonicalRoot, anchorSkillDir)) {
|
|
297
|
+
return sendError(res, 400, "anchor-outside-root", "anchorSkillDir resolves (via symlink) to a path outside the workspace root");
|
|
298
|
+
}
|
|
247
299
|
try {
|
|
248
300
|
if (!statSync(anchorSkillDir).isDirectory()) {
|
|
249
301
|
return sendError(res, 400, "anchor-not-found", `anchorSkillDir is not a directory: ${anchorSkillDir}`);
|
|
@@ -255,11 +307,32 @@ export function makeConvertToPluginHandler(root) {
|
|
|
255
307
|
// Plugin root = parent of `skills/<skill>` ⇒ dirname(dirname(anchor)).
|
|
256
308
|
// Works for both top-level layout (<root>/skills/<s>/) where pluginDir == root,
|
|
257
309
|
// and nested (<root>/<X>/skills/<s>/) where pluginDir == <root>/<X>.
|
|
310
|
+
//
|
|
311
|
+
// 0793 follow-up F-002: guard against a misbehaving client sending an
|
|
312
|
+
// anchorSkillDir whose parent is NOT named `skills/`. Without this guard,
|
|
313
|
+
// `<root>/foo/bar/baz` would resolve to pluginDir=<root>/foo and we would
|
|
314
|
+
// either 400 with the wrong reason ("no skills here") or — worse — succeed
|
|
315
|
+
// against an unrelated `<root>/foo/skills/...` that happens to exist.
|
|
316
|
+
const anchorParent = basename(dirname(anchorSkillDir));
|
|
317
|
+
if (anchorParent !== "skills") {
|
|
318
|
+
return sendError(res, 400, "invalid-anchor-shape", `anchorSkillDir must live under a 'skills/' directory (parent is '${anchorParent}')`);
|
|
319
|
+
}
|
|
258
320
|
const pluginDir = resolve(anchorSkillDir, "..", "..");
|
|
259
|
-
if (!isInsideRoot(
|
|
321
|
+
if (!isInsideRoot(canonicalRoot, pluginDir)) {
|
|
260
322
|
return sendError(res, 400, "plugin-dir-outside-root", "Resolved pluginDir is outside the workspace root");
|
|
261
323
|
}
|
|
262
|
-
|
|
324
|
+
let hasSkill;
|
|
325
|
+
try {
|
|
326
|
+
hasSkill = hasAnyAuthoredSkill(pluginDir);
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
// 0793 follow-up: hasAnyAuthoredSkill now rethrows on non-ENOENT
|
|
330
|
+
// readdir/stat errors (EACCES, EPERM, EIO, …) so the user sees a real
|
|
331
|
+
// 500 instead of a misleading 400 "no-skills-to-convert".
|
|
332
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
333
|
+
return sendError(res, 500, "skills-scan-failed", `Failed to scan ${pluginDir}/skills/: ${message}`);
|
|
334
|
+
}
|
|
335
|
+
if (!hasSkill) {
|
|
263
336
|
return sendError(res, 400, "no-skills-to-convert", `pluginDir has no skills/*/SKILL.md to associate with the new plugin: ${pluginDir}`);
|
|
264
337
|
}
|
|
265
338
|
const manifestDir = join(pluginDir, ".claude-plugin");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-routes.js","sourceRoot":"","sources":["../../src/eval-server/authoring-routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"authoring-routes.js","sourceRoot":"","sources":["../../src/eval-server/authoring-routes.ts"],"names":[],"mappings":"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"}
|