vskill 0.2.8 → 0.2.10
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/api/client.d.ts +4 -1
- package/dist/api/client.js +11 -2
- package/dist/api/client.js.map +1 -1
- package/dist/api/client.test.js +9 -0
- package/dist/api/client.test.js.map +1 -1
- package/dist/commands/add.d.ts +12 -0
- package/dist/commands/add.js +281 -12
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/add.test.js +253 -8
- package/dist/commands/add.test.js.map +1 -1
- package/dist/commands/find.js +121 -41
- package/dist/commands/find.js.map +1 -1
- package/dist/discovery/github-tree.d.ts +7 -0
- package/dist/discovery/github-tree.js +26 -1
- package/dist/discovery/github-tree.js.map +1 -1
- package/dist/discovery/github-tree.test.js +101 -1
- package/dist/discovery/github-tree.test.js.map +1 -1
- package/dist/marketplace/index.d.ts +1 -1
- package/dist/marketplace/index.js +1 -1
- package/dist/marketplace/index.js.map +1 -1
- package/dist/marketplace/marketplace.d.ts +8 -0
- package/dist/marketplace/marketplace.js +10 -0
- package/dist/marketplace/marketplace.js.map +1 -1
- package/dist/marketplace/marketplace.test.js +17 -1
- package/dist/marketplace/marketplace.test.js.map +1 -1
- package/package.json +1 -1
package/dist/api/client.d.ts
CHANGED
|
@@ -71,5 +71,8 @@ export declare function getSubmission(id: string): Promise<{
|
|
|
71
71
|
* Report a skill install to the platform (fire-and-forget).
|
|
72
72
|
* Respects VSKILL_NO_TELEMETRY=1 env var for opt-out.
|
|
73
73
|
* Never throws — all errors are silently swallowed.
|
|
74
|
+
*
|
|
75
|
+
* @param skillName - The skill name to report (e.g., "architect")
|
|
76
|
+
* @param repoUrl - Optional repo URL for fallback matching on the server
|
|
74
77
|
*/
|
|
75
|
-
export declare function reportInstall(skillName: string): Promise<void>;
|
|
78
|
+
export declare function reportInstall(skillName: string, repoUrl?: string): Promise<void>;
|
package/dist/api/client.js
CHANGED
|
@@ -87,8 +87,11 @@ export async function getSubmission(id) {
|
|
|
87
87
|
* Report a skill install to the platform (fire-and-forget).
|
|
88
88
|
* Respects VSKILL_NO_TELEMETRY=1 env var for opt-out.
|
|
89
89
|
* Never throws — all errors are silently swallowed.
|
|
90
|
+
*
|
|
91
|
+
* @param skillName - The skill name to report (e.g., "architect")
|
|
92
|
+
* @param repoUrl - Optional repo URL for fallback matching on the server
|
|
90
93
|
*/
|
|
91
|
-
export async function reportInstall(skillName) {
|
|
94
|
+
export async function reportInstall(skillName, repoUrl) {
|
|
92
95
|
try {
|
|
93
96
|
if (process.env.VSKILL_NO_TELEMETRY === "1")
|
|
94
97
|
return;
|
|
@@ -97,7 +100,13 @@ export async function reportInstall(skillName) {
|
|
|
97
100
|
try {
|
|
98
101
|
await fetch(`${BASE_URL}/api/v1/skills/${encodeURIComponent(skillName)}/installs`, {
|
|
99
102
|
method: "POST",
|
|
100
|
-
headers: {
|
|
103
|
+
headers: {
|
|
104
|
+
"User-Agent": "vskill-cli",
|
|
105
|
+
"Content-Type": "application/json",
|
|
106
|
+
},
|
|
107
|
+
body: JSON.stringify({
|
|
108
|
+
...(repoUrl ? { repoUrl } : {}),
|
|
109
|
+
}),
|
|
101
110
|
signal: controller.signal,
|
|
102
111
|
});
|
|
103
112
|
}
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/api/client.test.js
CHANGED
|
@@ -261,9 +261,18 @@ describe("reportInstall", () => {
|
|
|
261
261
|
method: "POST",
|
|
262
262
|
headers: expect.objectContaining({
|
|
263
263
|
"User-Agent": "vskill-cli",
|
|
264
|
+
"Content-Type": "application/json",
|
|
264
265
|
}),
|
|
266
|
+
body: JSON.stringify({}),
|
|
265
267
|
}));
|
|
266
268
|
});
|
|
269
|
+
it("sends repoUrl in body when provided", async () => {
|
|
270
|
+
mockFetch.mockResolvedValue(jsonResponse({ ok: true }));
|
|
271
|
+
await reportInstall("architect", "anton-abyzov/specweave");
|
|
272
|
+
const callArgs = mockFetch.mock.calls[0];
|
|
273
|
+
const body = JSON.parse(callArgs[1].body);
|
|
274
|
+
expect(body.repoUrl).toBe("anton-abyzov/specweave");
|
|
275
|
+
});
|
|
267
276
|
it("encodes special characters in skill name", async () => {
|
|
268
277
|
mockFetch.mockResolvedValue(jsonResponse({ ok: true }));
|
|
269
278
|
await reportInstall("@org/my-skill");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/api/client.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/api/client.test.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/add.d.ts
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
interface MarketplaceDetectionResult {
|
|
2
|
+
isMarketplace: boolean;
|
|
3
|
+
manifestContent?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Check if a GitHub repo contains `.claude-plugin/marketplace.json`.
|
|
7
|
+
*
|
|
8
|
+
* Strategy: Contents API → retry once (1s) → raw fallback → give up.
|
|
9
|
+
* On 404, returns immediately (not a marketplace repo — no retry needed).
|
|
10
|
+
* On 403 rate limit, warns once and falls through to raw fallback.
|
|
11
|
+
*/
|
|
12
|
+
export declare function detectMarketplaceRepo(owner: string, repo: string): Promise<MarketplaceDetectionResult>;
|
|
1
13
|
interface AddOptions {
|
|
2
14
|
skill?: string;
|
|
3
15
|
plugin?: string;
|
package/dist/commands/add.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ---------------------------------------------------------------------------
|
|
2
2
|
// vskill install -- install a skill from GitHub or local plugin directory
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
|
-
import { mkdirSync, writeFileSync, readFileSync, existsSync, copyFileSync, statSync, chmodSync, readdirSync, rmSync, } from "node:fs";
|
|
4
|
+
import { mkdirSync, mkdtempSync, writeFileSync, readFileSync, existsSync, copyFileSync, statSync, chmodSync, readdirSync, rmSync, } from "node:fs";
|
|
5
5
|
import { join, resolve, basename } from "node:path";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
7
|
import { execSync } from "node:child_process";
|
|
@@ -10,13 +10,13 @@ import { resolveTilde } from "../utils/paths.js";
|
|
|
10
10
|
import { reportInstall } from "../api/client.js";
|
|
11
11
|
import { filterAgents } from "../utils/agent-filter.js";
|
|
12
12
|
import { detectInstalledAgents, AGENTS_REGISTRY } from "../agents/agents-registry.js";
|
|
13
|
-
import { ensureLockfile, writeLockfile } from "../lockfile/index.js";
|
|
13
|
+
import { ensureLockfile, writeLockfile, readLockfile } from "../lockfile/index.js";
|
|
14
14
|
import { runTier1Scan } from "../scanner/index.js";
|
|
15
|
-
import { getAvailablePlugins, getPluginSource, getPluginVersion } from "../marketplace/index.js";
|
|
15
|
+
import { getAvailablePlugins, getPluginSource, getPluginVersion, hasPlugin } from "../marketplace/index.js";
|
|
16
16
|
import { checkInstallSafety } from "../blocklist/blocklist.js";
|
|
17
17
|
import { getSkill } from "../api/client.js";
|
|
18
18
|
import { checkPlatformSecurity } from "../security/index.js";
|
|
19
|
-
import { discoverSkills, getDefaultBranch } from "../discovery/github-tree.js";
|
|
19
|
+
import { discoverSkills, getDefaultBranch, warnRateLimitOnce } from "../discovery/github-tree.js";
|
|
20
20
|
import { parseGitHubSource } from "../utils/validation.js";
|
|
21
21
|
import { parseSkillsShUrl, isCompleteParsed, isIncompleteParsed, } from "../resolvers/url-resolver.js";
|
|
22
22
|
import { bold, green, red, yellow, dim, cyan, spinner, } from "../utils/output.js";
|
|
@@ -24,6 +24,255 @@ import { isTTY, createPrompter } from "../utils/prompts.js";
|
|
|
24
24
|
import { installSymlink, installCopy } from "../installer/canonical.js";
|
|
25
25
|
import { isClaudeCliAvailable, registerMarketplace, installNativePlugin, } from "../utils/claude-cli.js";
|
|
26
26
|
import { getMarketplaceName } from "../marketplace/index.js";
|
|
27
|
+
async function parseManifestFromContentsApi(data) {
|
|
28
|
+
// Prefer download_url for raw content
|
|
29
|
+
if (data.download_url) {
|
|
30
|
+
const rawRes = await fetch(data.download_url);
|
|
31
|
+
if (rawRes.ok) {
|
|
32
|
+
const content = await rawRes.text();
|
|
33
|
+
if (getAvailablePlugins(content).length > 0)
|
|
34
|
+
return content;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Fallback: decode base64 content from API response
|
|
38
|
+
if (data.content && data.encoding === "base64") {
|
|
39
|
+
const content = Buffer.from(data.content, "base64").toString("utf-8");
|
|
40
|
+
if (getAvailablePlugins(content).length > 0)
|
|
41
|
+
return content;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check if a GitHub repo contains `.claude-plugin/marketplace.json`.
|
|
47
|
+
*
|
|
48
|
+
* Strategy: Contents API → retry once (1s) → raw fallback → give up.
|
|
49
|
+
* On 404, returns immediately (not a marketplace repo — no retry needed).
|
|
50
|
+
* On 403 rate limit, warns once and falls through to raw fallback.
|
|
51
|
+
*/
|
|
52
|
+
export async function detectMarketplaceRepo(owner, repo) {
|
|
53
|
+
const contentsUrl = `https://api.github.com/repos/${owner}/${repo}/contents/.claude-plugin/marketplace.json`;
|
|
54
|
+
const headers = { Accept: "application/vnd.github.v3+json", "User-Agent": "vskill-cli" };
|
|
55
|
+
// Attempt 1: Contents API
|
|
56
|
+
try {
|
|
57
|
+
const res = await fetch(contentsUrl, { headers });
|
|
58
|
+
if (res.status === 404)
|
|
59
|
+
return { isMarketplace: false };
|
|
60
|
+
if (res.status === 403)
|
|
61
|
+
warnRateLimitOnce(res);
|
|
62
|
+
if (res.ok) {
|
|
63
|
+
const data = (await res.json());
|
|
64
|
+
const content = await parseManifestFromContentsApi(data);
|
|
65
|
+
if (content)
|
|
66
|
+
return { isMarketplace: true, manifestContent: content };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// network error — continue to retry
|
|
71
|
+
}
|
|
72
|
+
// Attempt 2: Retry Contents API after 1s delay
|
|
73
|
+
try {
|
|
74
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
75
|
+
const res = await fetch(contentsUrl, { headers });
|
|
76
|
+
if (res.status === 404)
|
|
77
|
+
return { isMarketplace: false };
|
|
78
|
+
if (res.status === 403)
|
|
79
|
+
warnRateLimitOnce(res);
|
|
80
|
+
if (res.ok) {
|
|
81
|
+
const data = (await res.json());
|
|
82
|
+
const content = await parseManifestFromContentsApi(data);
|
|
83
|
+
if (content)
|
|
84
|
+
return { isMarketplace: true, manifestContent: content };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// network error — continue to raw fallback
|
|
89
|
+
}
|
|
90
|
+
// Attempt 3: Raw fallback (bypasses API rate limits)
|
|
91
|
+
try {
|
|
92
|
+
const branch = await getDefaultBranch(owner, repo);
|
|
93
|
+
const rawUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/.claude-plugin/marketplace.json`;
|
|
94
|
+
const res = await fetch(rawUrl);
|
|
95
|
+
if (res.ok) {
|
|
96
|
+
const content = await res.text();
|
|
97
|
+
if (getAvailablePlugins(content).length > 0) {
|
|
98
|
+
return { isMarketplace: true, manifestContent: content };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// all attempts exhausted
|
|
104
|
+
}
|
|
105
|
+
return { isMarketplace: false };
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Install plugins from a Claude Code plugin marketplace repo.
|
|
109
|
+
*
|
|
110
|
+
* Shows a checkbox list of available plugins (all unchecked by default),
|
|
111
|
+
* then installs each selected plugin via native `claude plugin` CLI.
|
|
112
|
+
* Falls back to extraction-based install if Claude CLI is unavailable.
|
|
113
|
+
*/
|
|
114
|
+
async function installMarketplaceRepo(owner, repo, manifestContent, opts, preSelected) {
|
|
115
|
+
const plugins = getAvailablePlugins(manifestContent);
|
|
116
|
+
const marketplaceName = getMarketplaceName(manifestContent);
|
|
117
|
+
if (plugins.length === 0) {
|
|
118
|
+
console.error(red("No plugins found in marketplace.json"));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
console.log(`\n${bold("Claude Code Plugin Marketplace")} detected: ${cyan(`${owner}/${repo}`)}\n` +
|
|
122
|
+
dim(`Marketplace: ${marketplaceName || "unknown"} — ${plugins.length} plugin${plugins.length === 1 ? "" : "s"} available\n`));
|
|
123
|
+
// Check lockfile for already-installed plugins
|
|
124
|
+
const lockDir = lockfileRoot(opts);
|
|
125
|
+
const lock = readLockfile(lockDir);
|
|
126
|
+
const installedSet = new Set();
|
|
127
|
+
if (lock) {
|
|
128
|
+
for (const [name, entry] of Object.entries(lock.skills)) {
|
|
129
|
+
if (entry.source?.includes(`${owner}/${repo}`)) {
|
|
130
|
+
installedSet.add(name);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Select plugins
|
|
135
|
+
let selectedPlugins;
|
|
136
|
+
if (!isTTY() && !opts.yes && !opts.all) {
|
|
137
|
+
// Non-TTY: list plugins and exit with guidance
|
|
138
|
+
console.log("Available plugins:\n");
|
|
139
|
+
for (const p of plugins) {
|
|
140
|
+
const installed = installedSet.has(p.name) ? dim(" (installed)") : "";
|
|
141
|
+
console.log(` ${bold(p.name)}${installed}${p.description ? dim(` — ${p.description}`) : ""}`);
|
|
142
|
+
}
|
|
143
|
+
console.error(red("\nNon-interactive mode. Use --plugin <name> or --yes to select all."));
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
else if (opts.yes || opts.all) {
|
|
147
|
+
if (preSelected && preSelected.length > 0) {
|
|
148
|
+
const matched = plugins.filter((p) => preSelected.includes(p.name));
|
|
149
|
+
selectedPlugins = matched.length > 0 ? matched : plugins;
|
|
150
|
+
if (matched.length > 0) {
|
|
151
|
+
console.log(dim(`Auto-selecting ${matched.length} plugin${matched.length === 1 ? "" : "s"}: ${matched.map((p) => p.name).join(", ")}`));
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
console.log(dim(`Auto-selecting all ${plugins.length} plugins (--yes/--all)`));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
selectedPlugins = plugins;
|
|
159
|
+
console.log(dim(`Auto-selecting all ${plugins.length} plugins (--yes/--all)`));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
const prompter = createPrompter();
|
|
164
|
+
const indices = await prompter.promptCheckboxList(plugins.map((p) => ({
|
|
165
|
+
label: p.name + (installedSet.has(p.name) ? dim(" (installed)") : ""),
|
|
166
|
+
description: p.description,
|
|
167
|
+
checked: preSelected ? preSelected.includes(p.name) : false,
|
|
168
|
+
})), { title: "Select plugins to install" });
|
|
169
|
+
if (indices.length === 0) {
|
|
170
|
+
console.log(dim("No plugins selected. Aborting."));
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
selectedPlugins = indices.map((i) => plugins[i]);
|
|
174
|
+
}
|
|
175
|
+
// Attempt native Claude Code install
|
|
176
|
+
const hasClaude = !opts.copy && isClaudeCliAvailable();
|
|
177
|
+
let tmpDir = null;
|
|
178
|
+
let marketplaceRegistered = false;
|
|
179
|
+
if (hasClaude) {
|
|
180
|
+
// Shallow clone for native install
|
|
181
|
+
const cloneSpin = spinner(`Cloning ${owner}/${repo}`);
|
|
182
|
+
try {
|
|
183
|
+
tmpDir = mkdtempSync(join(os.tmpdir(), "vskill-marketplace-"));
|
|
184
|
+
execSync(`git clone --depth 1 https://github.com/${owner}/${repo}.git "${tmpDir}"`, { stdio: "ignore", timeout: 60_000 });
|
|
185
|
+
cloneSpin.stop();
|
|
186
|
+
// Register marketplace
|
|
187
|
+
const regSpin = spinner("Registering marketplace with Claude Code");
|
|
188
|
+
marketplaceRegistered = registerMarketplace(tmpDir);
|
|
189
|
+
regSpin.stop();
|
|
190
|
+
if (!marketplaceRegistered) {
|
|
191
|
+
console.log(yellow(" Failed to register marketplace — will use extraction fallback."));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
cloneSpin.stop();
|
|
196
|
+
console.log(yellow(" Clone failed — will use extraction fallback."));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Install each plugin
|
|
200
|
+
const results = [];
|
|
201
|
+
for (const plugin of selectedPlugins) {
|
|
202
|
+
if (hasClaude && marketplaceRegistered && marketplaceName) {
|
|
203
|
+
// Native install
|
|
204
|
+
const installSpin = spinner(`Installing ${bold(plugin.name)} via Claude Code plugin system`);
|
|
205
|
+
const ok = installNativePlugin(plugin.name, marketplaceName);
|
|
206
|
+
installSpin.stop();
|
|
207
|
+
if (ok) {
|
|
208
|
+
console.log(green(` ✓ ${bold(plugin.name)}`) + dim(` (${marketplaceName}:${plugin.name})`));
|
|
209
|
+
results.push({ name: plugin.name, installed: true, method: "native" });
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
console.log(red(` ✗ ${bold(plugin.name)}`) + dim(" — native install failed, trying extraction..."));
|
|
213
|
+
// Fallback to extraction
|
|
214
|
+
try {
|
|
215
|
+
await installRepoPlugin(`${owner}/${repo}`, plugin.name, opts);
|
|
216
|
+
results.push({ name: plugin.name, installed: true, method: "extraction" });
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
results.push({ name: plugin.name, installed: false, method: "failed" });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
// No Claude CLI — extraction fallback
|
|
225
|
+
try {
|
|
226
|
+
await installRepoPlugin(`${owner}/${repo}`, plugin.name, opts);
|
|
227
|
+
results.push({ name: plugin.name, installed: true, method: "extraction" });
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
console.error(red(` ✗ ${plugin.name}: ${err.message}`));
|
|
231
|
+
results.push({ name: plugin.name, installed: false, method: "failed" });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Cleanup temp directory
|
|
236
|
+
if (tmpDir) {
|
|
237
|
+
try {
|
|
238
|
+
rmSync(tmpDir, { recursive: true, force: true });
|
|
239
|
+
}
|
|
240
|
+
catch { /* ignore */ }
|
|
241
|
+
}
|
|
242
|
+
// Update lockfile
|
|
243
|
+
const lockForWrite = ensureLockfile(lockDir);
|
|
244
|
+
for (const r of results) {
|
|
245
|
+
if (r.installed) {
|
|
246
|
+
const pluginVersion = getPluginVersion(r.name, manifestContent) || "0.0.0";
|
|
247
|
+
lockForWrite.skills[r.name] = {
|
|
248
|
+
version: pluginVersion,
|
|
249
|
+
sha: "",
|
|
250
|
+
tier: "VERIFIED",
|
|
251
|
+
installedAt: new Date().toISOString(),
|
|
252
|
+
source: `marketplace:${owner}/${repo}#${r.name}`,
|
|
253
|
+
marketplace: marketplaceName || undefined,
|
|
254
|
+
pluginDir: true,
|
|
255
|
+
scope: opts.global ? "user" : "project",
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
writeLockfile(lockForWrite, lockDir);
|
|
260
|
+
// Telemetry (fire-and-forget) — pass repoUrl for server-side fallback matching
|
|
261
|
+
const repoUrl = `${owner}/${repo}`;
|
|
262
|
+
for (const r of results) {
|
|
263
|
+
if (r.installed)
|
|
264
|
+
reportInstall(r.name, repoUrl).catch(() => { });
|
|
265
|
+
}
|
|
266
|
+
// Summary
|
|
267
|
+
const installed = results.filter((r) => r.installed);
|
|
268
|
+
const failed = results.filter((r) => !r.installed);
|
|
269
|
+
console.log(`\n${green(bold(`${installed.length} installed`))}` +
|
|
270
|
+
(failed.length > 0 ? `, ${red(bold(`${failed.length} failed`))}` : "") +
|
|
271
|
+
` of ${results.length} plugins`);
|
|
272
|
+
if (hasClaude && marketplaceRegistered && marketplaceName) {
|
|
273
|
+
console.log(dim(`\nManage: claude plugin list | claude plugin uninstall "<plugin>@${marketplaceName}"`));
|
|
274
|
+
}
|
|
275
|
+
}
|
|
27
276
|
// ---------------------------------------------------------------------------
|
|
28
277
|
// Command file filter (prevents plugin internals leaking as slash commands)
|
|
29
278
|
// ---------------------------------------------------------------------------
|
|
@@ -535,6 +784,7 @@ async function installPluginDir(basePath, pluginName, opts) {
|
|
|
535
784
|
}
|
|
536
785
|
console.log(dim(`\nSHA: ${sha} | Version: ${version}`));
|
|
537
786
|
// Report individual skill installs (fire-and-forget)
|
|
787
|
+
// Note: no repoUrl for local plugin installs — server uses name-only matching
|
|
538
788
|
try {
|
|
539
789
|
const skillDirs = readdirSync(pluginDir, { withFileTypes: true })
|
|
540
790
|
.filter((d) => d.isDirectory() && existsSync(join(pluginDir, d.name, "SKILL.md")));
|
|
@@ -877,7 +1127,7 @@ async function installRepoPlugin(ownerRepo, pluginName, opts) {
|
|
|
877
1127
|
}
|
|
878
1128
|
// Report individual skill installs (fire-and-forget)
|
|
879
1129
|
for (const skill of skills)
|
|
880
|
-
reportInstall(skill.name).catch(() => { });
|
|
1130
|
+
reportInstall(skill.name, ownerRepo).catch(() => { });
|
|
881
1131
|
}
|
|
882
1132
|
// ---------------------------------------------------------------------------
|
|
883
1133
|
// Main entry point
|
|
@@ -942,21 +1192,37 @@ export async function addCommand(source, opts) {
|
|
|
942
1192
|
}
|
|
943
1193
|
// GitHub mode: owner/repo or owner/repo/skill
|
|
944
1194
|
const parts = source.split("/");
|
|
945
|
-
// 3-part format: owner/repo/skill-name →
|
|
1195
|
+
// 3-part format: owner/repo/skill-name → check marketplace first, then legacy
|
|
946
1196
|
if (parts.length === 3) {
|
|
947
1197
|
const [threeOwner, threeRepo, threeSkill] = parts;
|
|
1198
|
+
const detection = await detectMarketplaceRepo(threeOwner, threeRepo);
|
|
1199
|
+
if (detection.isMarketplace && detection.manifestContent && hasPlugin(threeSkill, detection.manifestContent)) {
|
|
1200
|
+
return installMarketplaceRepo(threeOwner, threeRepo, detection.manifestContent, opts, [threeSkill]);
|
|
1201
|
+
}
|
|
948
1202
|
return installSingleSkillLegacy(threeOwner, threeRepo, threeSkill, opts);
|
|
949
1203
|
}
|
|
950
1204
|
if (parts.length !== 2) {
|
|
951
1205
|
// No slash → try registry lookup by skill name
|
|
952
|
-
console.log(yellow("Tip: Prefer owner/repo
|
|
1206
|
+
console.log(yellow("Tip: Prefer owner/repo format for direct GitHub installs."));
|
|
953
1207
|
return installFromRegistry(source, opts);
|
|
954
1208
|
}
|
|
955
1209
|
const [owner, repo] = parts;
|
|
956
|
-
// --skill flag: single-skill mode
|
|
1210
|
+
// --skill flag: check marketplace first, then legacy single-skill mode
|
|
957
1211
|
if (opts.skill) {
|
|
1212
|
+
const detection = await detectMarketplaceRepo(owner, repo);
|
|
1213
|
+
if (detection.isMarketplace && detection.manifestContent && hasPlugin(opts.skill, detection.manifestContent)) {
|
|
1214
|
+
return installMarketplaceRepo(owner, repo, detection.manifestContent, opts, [opts.skill]);
|
|
1215
|
+
}
|
|
958
1216
|
return installSingleSkillLegacy(owner, repo, opts.skill, opts);
|
|
959
1217
|
}
|
|
1218
|
+
// Marketplace detection: check for .claude-plugin/marketplace.json
|
|
1219
|
+
// before running skill discovery (avoids unnecessary API calls)
|
|
1220
|
+
if (!opts.plugin) {
|
|
1221
|
+
const detection = await detectMarketplaceRepo(owner, repo);
|
|
1222
|
+
if (detection.isMarketplace && detection.manifestContent) {
|
|
1223
|
+
return installMarketplaceRepo(owner, repo, detection.manifestContent, opts);
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
960
1226
|
// Discovery mode: find all skills in the repo
|
|
961
1227
|
const discovered = (await discoverSkills(owner, repo)) || [];
|
|
962
1228
|
if (discovered.length === 0) {
|
|
@@ -1056,7 +1322,7 @@ export async function addCommand(source, opts) {
|
|
|
1056
1322
|
: red(`(${r.verdict}${scoreTag})`);
|
|
1057
1323
|
console.log(` ${icon} ${r.skillName} ${detail}`);
|
|
1058
1324
|
if (r.installed)
|
|
1059
|
-
reportInstall(r.skillName).catch(() => { });
|
|
1325
|
+
reportInstall(r.skillName, `${owner}/${repo}`).catch(() => { });
|
|
1060
1326
|
}
|
|
1061
1327
|
const forceRecoverable = results.some((r) => !r.installed && ["FAIL", "CONCERNS", "BLOCKED", "REJECTED", "SECURITY_FAIL"].includes(r.verdict));
|
|
1062
1328
|
if (forceRecoverable) {
|
|
@@ -1148,7 +1414,10 @@ async function installFromRegistry(skillName, opts) {
|
|
|
1148
1414
|
}
|
|
1149
1415
|
}
|
|
1150
1416
|
console.log(dim(`Registry has no inline content — installing from GitHub (${ownerRepo})...`));
|
|
1151
|
-
|
|
1417
|
+
const tipCmd = detail.pluginName
|
|
1418
|
+
? `vskill install ${ownerRepo} --plugin ${detail.pluginName}`
|
|
1419
|
+
: `vskill install ${ownerRepo}`;
|
|
1420
|
+
console.log(yellow(`Tip: Next time use: ${tipCmd}`));
|
|
1152
1421
|
return addCommand(ownerRepo, { ...opts, _targetSkill: detail.name });
|
|
1153
1422
|
}
|
|
1154
1423
|
const content = detail.content;
|
|
@@ -1237,7 +1506,7 @@ async function installFromRegistry(skillName, opts) {
|
|
|
1237
1506
|
console.log(` ${dim(">")} ${loc}`);
|
|
1238
1507
|
}
|
|
1239
1508
|
console.log(dim(`\nSHA: ${sha} | Version: ${detail.version || "0.0.0"}`));
|
|
1240
|
-
reportInstall(detail.name || skillName).catch(() => { });
|
|
1509
|
+
reportInstall(detail.name || skillName, detail.repoUrl).catch(() => { });
|
|
1241
1510
|
}
|
|
1242
1511
|
// ---------------------------------------------------------------------------
|
|
1243
1512
|
// Legacy single-skill install (preserves original behavior exactly)
|
|
@@ -1363,7 +1632,7 @@ async function installSingleSkillLegacy(owner, repo, skill, opts) {
|
|
|
1363
1632
|
lock.agents = [...new Set([...(lock.agents || []), ...selectedAgents.map((a) => a.id)])];
|
|
1364
1633
|
writeLockfile(lock, lockDir);
|
|
1365
1634
|
// Phone home (fire-and-forget)
|
|
1366
|
-
reportInstall(skillName).catch(() => { });
|
|
1635
|
+
reportInstall(skillName, `${owner}/${repo}`).catch(() => { });
|
|
1367
1636
|
// Print summary
|
|
1368
1637
|
const method = opts.copy ? "copied" : "symlinked";
|
|
1369
1638
|
console.log(green(`\nInstalled ${bold(skillName)} (${method}) to ${locations.length} agent${locations.length === 1 ? "" : "s"}:\n`));
|