vskill 1.1.1 → 1.2.1
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/README.md +12 -3
- package/agents.json +1 -1
- package/dist/api/client.d.ts +1 -1
- package/dist/api/client.js +14 -7
- package/dist/api/client.js.map +1 -1
- package/dist/blocklist/blocklist.d.ts +12 -0
- package/dist/blocklist/blocklist.js +19 -0
- package/dist/blocklist/blocklist.js.map +1 -1
- package/dist/commands/add.js +98 -49
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/auth.d.ts +2 -0
- package/dist/commands/auth.js +38 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/diff.js +8 -0
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/info.js +7 -0
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/outdated.js +29 -4
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/pin.js +7 -2
- package/dist/commands/pin.js.map +1 -1
- package/dist/commands/submit.js +8 -0
- package/dist/commands/submit.js.map +1 -1
- package/dist/commands/update.js +14 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/versions.js +11 -0
- package/dist/commands/versions.js.map +1 -1
- package/dist/discovery/github-tree.js +20 -1
- package/dist/discovery/github-tree.js.map +1 -1
- package/dist/eval-server/api-routes.js +33 -2
- package/dist/eval-server/api-routes.js.map +1 -1
- package/dist/eval-server/install-skill-routes.d.ts +2 -0
- package/dist/eval-server/install-skill-routes.js +7 -0
- package/dist/eval-server/install-skill-routes.js.map +1 -1
- package/dist/eval-server/oauth-github-routes.js +25 -0
- package/dist/eval-server/oauth-github-routes.js.map +1 -1
- package/dist/eval-server/origin-resolver.d.ts +6 -0
- package/dist/eval-server/origin-resolver.js +35 -5
- package/dist/eval-server/origin-resolver.js.map +1 -1
- package/dist/eval-server/platform-proxy.d.ts +3 -3
- package/dist/eval-server/platform-proxy.js +10 -25
- package/dist/eval-server/platform-proxy.js.map +1 -1
- package/dist/eval-server/studio-privacy.d.ts +26 -0
- package/dist/eval-server/studio-privacy.js +129 -0
- package/dist/eval-server/studio-privacy.js.map +1 -0
- package/dist/eval-ui/assets/{CreateSkillPage-ENMve2K8.js → CreateSkillPage-DXOVLzCp.js} +1 -1
- package/dist/eval-ui/assets/{FindSkillsPalette-BMVKCk6E.js → FindSkillsPalette-D_qkIke-.js} +2 -2
- package/dist/eval-ui/assets/{SearchPaletteCore-C9G-ySXc.js → SearchPaletteCore-BbJxHT_o.js} +1 -1
- package/dist/eval-ui/assets/{SkillDetailPanel-BCJj8p79.js → SkillDetailPanel-DMkcBtBv.js} +1 -1
- package/dist/eval-ui/assets/{UpdateDropdown-C4BH7W_M.js → UpdateDropdown-CH05KQXq.js} +1 -1
- package/dist/eval-ui/assets/{main-tzMA8J07.js → main-DpG_H4H8.js} +5 -5
- package/dist/eval-ui/index.html +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/github-fetch.d.ts +30 -0
- package/dist/lib/github-fetch.js +146 -5
- package/dist/lib/github-fetch.js.map +1 -1
- package/dist/lib/private-source.d.ts +77 -0
- package/dist/lib/private-source.js +392 -0
- package/dist/lib/private-source.js.map +1 -0
- package/dist/lib/repo-visibility.d.ts +25 -0
- package/dist/lib/repo-visibility.js +80 -0
- package/dist/lib/repo-visibility.js.map +1 -0
- package/dist/lockfile/lockfile.d.ts +2 -0
- package/dist/lockfile/lockfile.js +13 -0
- package/dist/lockfile/lockfile.js.map +1 -1
- package/dist/lockfile/types.d.ts +5 -0
- package/dist/marketplace/marketplace.js +8 -1
- package/dist/marketplace/marketplace.js.map +1 -1
- package/dist/updater/source-fetcher.js +15 -11
- package/dist/updater/source-fetcher.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<a href="https://github.com/anton-abyzov/vskill/actions/workflows/desktop-release.yml"><img src="https://img.shields.io/github/actions/workflow/status/anton-abyzov/vskill/desktop-release.yml?branch=main&label=desktop%20build&logo=githubactions" alt="desktop build" /></a>
|
|
13
13
|
<img src="https://img.shields.io/badge/agents-54_platforms-0969DA" alt="54 agents" />
|
|
14
14
|
<img src="https://img.shields.io/badge/plugins-9-8B5CF6" alt="9 plugins" />
|
|
15
|
-
<img src="https://img.shields.io/badge/skills-
|
|
15
|
+
<img src="https://img.shields.io/badge/skills-19-10B981" alt="19 skills" />
|
|
16
16
|
<a href="https://verified-skill.com"><img src="https://img.shields.io/badge/registry-verified--skill.com-F59E0B" alt="registry" /></a>
|
|
17
17
|
<a href="https://github.com/anton-abyzov/vskill/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT" /></a>
|
|
18
18
|
</p>
|
|
@@ -157,7 +157,7 @@ npx vskill@latest skill new # create a new skill (AI-assisted)
|
|
|
157
157
|
npx vskill@latest eval sweep <skill> # benchmark across models
|
|
158
158
|
npx vskill@latest audit --ci # SARIF v2.1.0 for CI
|
|
159
159
|
npx vskill@latest keys set anthropic # store API keys in ~/.vskill/keys.env
|
|
160
|
-
npx vskill@latest auth login
|
|
160
|
+
npx vskill@latest auth login --repos # sign in to GitHub for private skills repos
|
|
161
161
|
```
|
|
162
162
|
|
|
163
163
|
Full reference → [verified-skill.com/docs/cli-reference](https://verified-skill.com/docs/cli-reference)
|
|
@@ -261,7 +261,16 @@ npx vskill@latest add private-skill # private skill inst
|
|
|
261
261
|
|
|
262
262
|
The local skill bundle on disk **never contains** your GitHub token — the token is used only at fetch time. Your project's `vskill.lock` records `source: "private"` and the org name so future updates re-authenticate correctly.
|
|
263
263
|
|
|
264
|
-
|
|
264
|
+
### Private skills repo on GitHub
|
|
265
|
+
|
|
266
|
+
A team can keep its skills in a private GitHub repo and install them like public ones. Sign in with `vskill auth login --repos` (or `gh auth login`, or `GITHUB_TOKEN`), then:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
npx vskill@latest install acme/team-skills/onboarding # one skill
|
|
270
|
+
npx vskill@latest install --repo acme/team-skills --all # everything in marketplace.json
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Skills from a private repo are never reported to verified-skill.com, and `vskill update` only ever reads them from that repo. Walkthrough: [docs/private-skills-repo.md](docs/private-skills-repo.md).
|
|
265
274
|
|
|
266
275
|
## Security & Compliance
|
|
267
276
|
|
package/agents.json
CHANGED
package/dist/api/client.d.ts
CHANGED
|
@@ -234,7 +234,7 @@ export type CompareVersionsResult = {
|
|
|
234
234
|
* or an LCS fallback on SKILL.md alone (source:"local-content").
|
|
235
235
|
*/
|
|
236
236
|
export declare function compareVersions(skill: string, from: string, to: string): Promise<CompareVersionsResult>;
|
|
237
|
-
export declare function reportInstallBatch(
|
|
237
|
+
export declare function reportInstallBatch(allSkills: Array<{
|
|
238
238
|
skillName: string;
|
|
239
239
|
repoUrl?: string;
|
|
240
240
|
version?: string;
|
package/dist/api/client.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { getDefaultKeychain, } from "../lib/keychain.js";
|
|
6
6
|
import { getActiveTenant } from "../lib/active-tenant.js";
|
|
7
|
+
import { isKnownPrivateRepo } from "../lib/repo-visibility.js";
|
|
7
8
|
// Base URL is overridable via `VSKILL_API_BASE` so tests (and hermetic CI runs)
|
|
8
9
|
// can point the CLI at a mock server without touching the production host.
|
|
9
10
|
// Resolved lazily so test env mutation is always picked up.
|
|
@@ -55,8 +56,10 @@ export function invalidateAuthCache() {
|
|
|
55
56
|
_authCache.loaded = false;
|
|
56
57
|
}
|
|
57
58
|
/**
|
|
58
|
-
* Resolve the Authorization token to send
|
|
59
|
-
*
|
|
59
|
+
* Resolve the Authorization token to send: the verified-skill `vsk_*` token
|
|
60
|
+
* only. A raw GitHub token is never sent to the platform — after
|
|
61
|
+
* `vskill auth login --repos` it can read the user's private repositories.
|
|
62
|
+
* Returns null when no `vsk_*` is stored (anonymous mode).
|
|
60
63
|
*
|
|
61
64
|
* Cached for the lifetime of the process so a single command invocation
|
|
62
65
|
* hits the keychain at most once (AC-US1-06).
|
|
@@ -67,8 +70,8 @@ function resolveAuthToken() {
|
|
|
67
70
|
let token = null;
|
|
68
71
|
try {
|
|
69
72
|
const kc = _keychainOverride ?? getDefaultKeychain();
|
|
70
|
-
//
|
|
71
|
-
token = kc.getVskillToken()
|
|
73
|
+
// vsk_* only (ADR-001 / AC-US5-04). The GitHub token stays with GitHub.
|
|
74
|
+
token = kc.getVskillToken();
|
|
72
75
|
}
|
|
73
76
|
catch {
|
|
74
77
|
token = null;
|
|
@@ -112,8 +115,7 @@ export function buildRequestHeaders(extra, opts = {}) {
|
|
|
112
115
|
if (token) {
|
|
113
116
|
headers["Authorization"] = `Bearer ${token}`;
|
|
114
117
|
if (process.env.VSKILL_DEBUG === "1") {
|
|
115
|
-
|
|
116
|
-
process.stderr.write(`[auth] using ${kind} token (cached)\n`);
|
|
118
|
+
process.stderr.write(`[auth] using vsk_ token (cached)\n`);
|
|
117
119
|
}
|
|
118
120
|
}
|
|
119
121
|
else if (process.env.VSKILL_DEBUG === "1") {
|
|
@@ -296,6 +298,9 @@ export async function reportInstall(skillName, repoUrl, version) {
|
|
|
296
298
|
try {
|
|
297
299
|
if (process.env.VSKILL_NO_TELEMETRY === "1")
|
|
298
300
|
return;
|
|
301
|
+
// Private repos stay private: never report them to the public registry.
|
|
302
|
+
if (isKnownPrivateRepo(repoUrl))
|
|
303
|
+
return;
|
|
299
304
|
for (let attempt = 0; attempt < 2; attempt++) {
|
|
300
305
|
try {
|
|
301
306
|
const controller = new AbortController();
|
|
@@ -396,11 +401,13 @@ export async function compareVersions(skill, from, to) {
|
|
|
396
401
|
}
|
|
397
402
|
return (await res.json());
|
|
398
403
|
}
|
|
399
|
-
export async function reportInstallBatch(
|
|
404
|
+
export async function reportInstallBatch(allSkills) {
|
|
400
405
|
const verbose = process.env.VSKILL_DEBUG === "1";
|
|
401
406
|
try {
|
|
402
407
|
if (process.env.VSKILL_NO_TELEMETRY === "1")
|
|
403
408
|
return;
|
|
409
|
+
// Private repos stay private: never report them to the public registry.
|
|
410
|
+
const skills = allSkills.filter((s) => !isKnownPrivateRepo(s.repoUrl));
|
|
404
411
|
if (skills.length === 0)
|
|
405
412
|
return;
|
|
406
413
|
for (let attempt = 0; attempt < 2; attempt++) {
|
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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"}
|
|
@@ -21,6 +21,13 @@ export declare function syncBlocklist(): Promise<BlocklistCache>;
|
|
|
21
21
|
* 4. Returns the matching BlocklistEntry or null if not blocked.
|
|
22
22
|
*/
|
|
23
23
|
export declare function checkBlocklist(skillName: string, contentHash?: string): Promise<BlocklistEntry | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Install safety from the local blocklist cache only. The skill name never
|
|
26
|
+
* leaves the machine (a stale cache is refreshed with the anonymous full
|
|
27
|
+
* `GET /api/v1/blocklist`). Used for skills from private or unconfirmed
|
|
28
|
+
* sources.
|
|
29
|
+
*/
|
|
30
|
+
export declare function checkLocalInstallSafety(skillName: string, contentHash?: string): Promise<InstallSafetyResult>;
|
|
24
31
|
/**
|
|
25
32
|
* Check install safety via the platform API (blocklist + rejection status).
|
|
26
33
|
*
|
|
@@ -31,5 +38,10 @@ export declare function checkBlocklist(skillName: string, contentHash?: string):
|
|
|
31
38
|
* When repoUrl is provided and the API returns a rejection from a different
|
|
32
39
|
* repo, the rejection is ignored (name-only matching can produce false
|
|
33
40
|
* positives across unrelated repos).
|
|
41
|
+
*
|
|
42
|
+
* A repo already seen as private is never sent to the platform: the check
|
|
43
|
+
* uses the local blocklist cache only, so neither the skill name nor the
|
|
44
|
+
* repo URL leaves the machine. Callers resolve visibility first (see
|
|
45
|
+
* checkRepoInstallSafety in commands/add.ts).
|
|
34
46
|
*/
|
|
35
47
|
export declare function checkInstallSafety(skillName: string, contentHash?: string, repoUrl?: string): Promise<InstallSafetyResult>;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
|
+
import { isKnownPrivateRepo } from "../lib/repo-visibility.js";
|
|
7
8
|
// ---------------------------------------------------------------------------
|
|
8
9
|
// Constants
|
|
9
10
|
// ---------------------------------------------------------------------------
|
|
@@ -113,6 +114,16 @@ export async function checkBlocklist(skillName, contentHash) {
|
|
|
113
114
|
}
|
|
114
115
|
return findEntry(cache.entries, skillName, contentHash);
|
|
115
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Install safety from the local blocklist cache only. The skill name never
|
|
119
|
+
* leaves the machine (a stale cache is refreshed with the anonymous full
|
|
120
|
+
* `GET /api/v1/blocklist`). Used for skills from private or unconfirmed
|
|
121
|
+
* sources.
|
|
122
|
+
*/
|
|
123
|
+
export async function checkLocalInstallSafety(skillName, contentHash) {
|
|
124
|
+
const entry = await checkBlocklist(skillName, contentHash);
|
|
125
|
+
return { blocked: !!entry, entry: entry ?? undefined, rejected: false };
|
|
126
|
+
}
|
|
116
127
|
/**
|
|
117
128
|
* Check install safety via the platform API (blocklist + rejection status).
|
|
118
129
|
*
|
|
@@ -123,8 +134,16 @@ export async function checkBlocklist(skillName, contentHash) {
|
|
|
123
134
|
* When repoUrl is provided and the API returns a rejection from a different
|
|
124
135
|
* repo, the rejection is ignored (name-only matching can produce false
|
|
125
136
|
* positives across unrelated repos).
|
|
137
|
+
*
|
|
138
|
+
* A repo already seen as private is never sent to the platform: the check
|
|
139
|
+
* uses the local blocklist cache only, so neither the skill name nor the
|
|
140
|
+
* repo URL leaves the machine. Callers resolve visibility first (see
|
|
141
|
+
* checkRepoInstallSafety in commands/add.ts).
|
|
126
142
|
*/
|
|
127
143
|
export async function checkInstallSafety(skillName, contentHash, repoUrl) {
|
|
144
|
+
if (repoUrl && isKnownPrivateRepo(repoUrl)) {
|
|
145
|
+
return checkLocalInstallSafety(skillName, contentHash);
|
|
146
|
+
}
|
|
128
147
|
try {
|
|
129
148
|
let url = `${getApiBaseUrl()}/api/v1/blocklist/check?name=${encodeURIComponent(skillName)}`;
|
|
130
149
|
if (repoUrl) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocklist.js","sourceRoot":"","sources":["../../src/blocklist/blocklist.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E;AAE9E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"blocklist.js","sourceRoot":"","sources":["../../src/blocklist/blocklist.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/add.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
import { mkdirSync, writeFileSync, readFileSync, existsSync, statSync, chmodSync, readdirSync, rmSync, } from "node:fs";
|
|
5
5
|
import { join, resolve, basename } from "node:path";
|
|
6
|
-
import { execSync } from "node:child_process";
|
|
7
6
|
import os from "node:os";
|
|
8
7
|
import { resolveTilde } from "../utils/paths.js";
|
|
9
8
|
import { reportInstall, reportInstallBatch, submitSkill } from "../api/client.js";
|
|
@@ -13,11 +12,12 @@ import { ensureLockfile, writeLockfile, readLockfile, removeSkillFromLock } from
|
|
|
13
12
|
import { buildGitHubInstallLockEntry } from "./add-lockfile.js";
|
|
14
13
|
import { runTier1Scan } from "../scanner/index.js";
|
|
15
14
|
import { getAvailablePlugins, getPluginSource, getPluginVersion, hasPlugin, discoverUnregisteredPlugins } from "../marketplace/index.js";
|
|
16
|
-
import { checkInstallSafety } from "../blocklist/blocklist.js";
|
|
15
|
+
import { checkInstallSafety, checkLocalInstallSafety } from "../blocklist/blocklist.js";
|
|
17
16
|
import { getSkill, searchSkills } from "../api/client.js";
|
|
18
17
|
import { checkPlatformSecurity } from "../security/index.js";
|
|
19
18
|
import { discoverSkills, getDefaultBranch, getBranchHeadSha, checkRepoExists, warnRateLimitOnce } from "../discovery/github-tree.js";
|
|
20
|
-
import { githubFetch } from "../lib/github-fetch.js";
|
|
19
|
+
import { githubFetch, privateRepoHint } from "../lib/github-fetch.js";
|
|
20
|
+
import { isPrivateOrUnknownRepo, localDirGitHubRepo, parseGitHubRepoRef } from "../lib/private-source.js";
|
|
21
21
|
import { parseGitHubSource } from "../utils/validation.js";
|
|
22
22
|
import { parseSkillsShUrl, isCompleteParsed, isIncompleteParsed, } from "../resolvers/url-resolver.js";
|
|
23
23
|
import { bold, green, red, yellow, dim, cyan, spinner, link, formatInstalls, } from "../utils/output.js";
|
|
@@ -376,7 +376,15 @@ async function installMarketplaceRepo(owner, repo, manifestContent, opts, preSel
|
|
|
376
376
|
let verifiedCount = 0;
|
|
377
377
|
let unverifiedCount = 0;
|
|
378
378
|
let blockedCount = 0;
|
|
379
|
-
|
|
379
|
+
// A private repo — or one GitHub does not confirm is public — is never
|
|
380
|
+
// sent to the public registry; its unregistered plugins go straight to
|
|
381
|
+
// the unverified-install confirmation below.
|
|
382
|
+
const repoIsPrivate = await isPrivateOrUnknownRepo(owner, repo);
|
|
383
|
+
if (repoIsPrivate) {
|
|
384
|
+
unverifiedCount = selectedUnregistered.length;
|
|
385
|
+
console.log(dim(" Private repository: not submitted to verified-skill.com."));
|
|
386
|
+
}
|
|
387
|
+
for (const unreg of repoIsPrivate ? [] : selectedUnregistered) {
|
|
380
388
|
const pluginPath = unreg.source.replace(/^\.\//, "");
|
|
381
389
|
try {
|
|
382
390
|
// Discover skills: try nested {pluginPath}/skills/ first, fall back to flat {pluginPath}/SKILL.md
|
|
@@ -668,12 +676,13 @@ async function installMarketplaceRepo(owner, repo, manifestContent, opts, preSel
|
|
|
668
676
|
}
|
|
669
677
|
}
|
|
670
678
|
}
|
|
671
|
-
// Telemetry — batch report for all installed plugins (awaited to prevent
|
|
679
|
+
// Telemetry — batch report for all installed plugins (awaited to prevent
|
|
680
|
+
// process exit race). Only for repos GitHub confirmed are public.
|
|
672
681
|
const repoUrl = `${owner}/${repo}`;
|
|
673
682
|
const installedSkills = results
|
|
674
683
|
.filter((r) => r.installed)
|
|
675
684
|
.map((r) => ({ skillName: r.name, repoUrl }));
|
|
676
|
-
if (installedSkills.length > 0) {
|
|
685
|
+
if (installedSkills.length > 0 && !(await isPrivateOrUnknownRepo(owner, repo))) {
|
|
677
686
|
await reportInstallBatch(installedSkills).catch(() => { });
|
|
678
687
|
}
|
|
679
688
|
// Summary
|
|
@@ -970,7 +979,7 @@ async function fetchSkillContent(url) {
|
|
|
970
979
|
spin.stop();
|
|
971
980
|
if (res.status === 404) {
|
|
972
981
|
console.error(red(`SKILL.md not found at ${url}\n`) +
|
|
973
|
-
dim("Make sure the repo exists and has a SKILL.md on the default branch."));
|
|
982
|
+
dim("Make sure the repo exists and has a SKILL.md on the default branch." + privateRepoHint()));
|
|
974
983
|
}
|
|
975
984
|
else {
|
|
976
985
|
console.error(red(`Failed to fetch: ${res.status} ${res.statusText}`));
|
|
@@ -1125,8 +1134,14 @@ async function installPluginDir(basePath, pluginName, opts, repoUrl) {
|
|
|
1125
1134
|
available);
|
|
1126
1135
|
process.exit(1);
|
|
1127
1136
|
}
|
|
1137
|
+
// The plugin dir's origin: a GitHub repo GitHub confirms is public, or
|
|
1138
|
+
// nothing. A private, unconfirmed or non-GitHub remote (or no remote at
|
|
1139
|
+
// all) is never mentioned to verified-skill.com.
|
|
1140
|
+
const publicRemote = await resolvePublicGitHubRemote(basePath, repoUrl);
|
|
1128
1141
|
// Blocklist + rejection check (before scanning)
|
|
1129
|
-
const safety =
|
|
1142
|
+
const safety = publicRemote
|
|
1143
|
+
? await checkInstallSafety(pluginName, undefined, `https://github.com/${publicRemote}`)
|
|
1144
|
+
: await checkLocalInstallSafety(pluginName);
|
|
1130
1145
|
if (safety.blocked && !opts.force) {
|
|
1131
1146
|
printBlockedError(safety.entry);
|
|
1132
1147
|
process.exit(1);
|
|
@@ -1205,13 +1220,6 @@ async function installPluginDir(basePath, pluginName, opts, repoUrl) {
|
|
|
1205
1220
|
const version = existsSync(mktPath)
|
|
1206
1221
|
? getPluginVersion(pluginName, readFileSync(mktPath, "utf-8")) || "0.0.0"
|
|
1207
1222
|
: "0.0.0";
|
|
1208
|
-
// Extract git remote URL for install tracking
|
|
1209
|
-
let gitUrl;
|
|
1210
|
-
try {
|
|
1211
|
-
gitUrl = execSync("git remote get-url origin", { cwd: resolve(basePath), stdio: ["pipe", "pipe", "ignore"], timeout: 5_000 })
|
|
1212
|
-
.toString().trim() || undefined;
|
|
1213
|
-
}
|
|
1214
|
-
catch { /* not a git repo or no remote — use local path */ }
|
|
1215
1223
|
// Install: recursively copy plugin directory to each agent
|
|
1216
1224
|
const sha = computeSha(content);
|
|
1217
1225
|
const locations = [];
|
|
@@ -1241,7 +1249,8 @@ async function installPluginDir(basePath, pluginName, opts, repoUrl) {
|
|
|
1241
1249
|
sha,
|
|
1242
1250
|
tier: "VERIFIED",
|
|
1243
1251
|
installedAt: new Date().toISOString(),
|
|
1244
|
-
|
|
1252
|
+
// Absolute, so later commands resolve the same checkout from any folder.
|
|
1253
|
+
source: `local:${resolve(basePath)}`,
|
|
1245
1254
|
scope: opts.global ? "user" : "project",
|
|
1246
1255
|
files: ["SKILL.md"],
|
|
1247
1256
|
};
|
|
@@ -1253,22 +1262,31 @@ async function installPluginDir(basePath, pluginName, opts, repoUrl) {
|
|
|
1253
1262
|
console.log(` ${dim(">")} ${loc}`);
|
|
1254
1263
|
}
|
|
1255
1264
|
console.log(dim(`\nSHA: ${sha} | Version: ${version}`));
|
|
1256
|
-
// Report skill installs in a single batch
|
|
1257
|
-
//
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
}));
|
|
1268
|
-
if (batch.length > 0)
|
|
1269
|
-
await reportInstallBatch(batch).catch(() => { });
|
|
1265
|
+
// Report skill installs in a single batch — only for a plugin dir whose
|
|
1266
|
+
// origin is a GitHub repo confirmed public (see resolvePublicGitHubRemote).
|
|
1267
|
+
if (publicRemote) {
|
|
1268
|
+
try {
|
|
1269
|
+
const skillDirs = readdirSync(pluginDir, { withFileTypes: true })
|
|
1270
|
+
.filter((d) => d.isDirectory() && existsSync(join(pluginDir, d.name, "SKILL.md")));
|
|
1271
|
+
const batch = skillDirs.map((d) => ({ skillName: d.name, repoUrl: publicRemote }));
|
|
1272
|
+
if (batch.length > 0)
|
|
1273
|
+
await reportInstallBatch(batch).catch(() => { });
|
|
1274
|
+
}
|
|
1275
|
+
catch { /* best-effort */ }
|
|
1270
1276
|
}
|
|
1271
|
-
|
|
1277
|
+
}
|
|
1278
|
+
/**
|
|
1279
|
+
* "owner/repo" of a local plugin dir's origin when it is a GitHub repo that
|
|
1280
|
+
* GitHub confirms is public; null otherwise (private, visibility unknown,
|
|
1281
|
+
* non-GitHub remote, no remote, not a git checkout).
|
|
1282
|
+
*/
|
|
1283
|
+
async function resolvePublicGitHubRemote(basePath, explicitRepoUrl) {
|
|
1284
|
+
const gh = explicitRepoUrl ? parseGitHubRepoRef(explicitRepoUrl) : localDirGitHubRepo(basePath);
|
|
1285
|
+
if (!gh)
|
|
1286
|
+
return null;
|
|
1287
|
+
if (await isPrivateOrUnknownRepo(gh.owner, gh.repo))
|
|
1288
|
+
return null;
|
|
1289
|
+
return `${gh.owner}/${gh.repo}`;
|
|
1272
1290
|
}
|
|
1273
1291
|
async function installOneGitHubSkill(owner, repo, skillName, rawUrl, opts, agents, projectRoot, agentRawUrls,
|
|
1274
1292
|
/**
|
|
@@ -1279,7 +1297,7 @@ async function installOneGitHubSkill(owner, repo, skillName, rawUrl, opts, agent
|
|
|
1279
1297
|
sourceSkillPath) {
|
|
1280
1298
|
// Blocklist + rejection check BEFORE fetching (prevents misleading 404)
|
|
1281
1299
|
const repoUrl = `https://github.com/${owner}/${repo}`;
|
|
1282
|
-
const safety = await
|
|
1300
|
+
const safety = await checkRepoInstallSafety(skillName, owner, repo);
|
|
1283
1301
|
if (safety.blocked && !opts.force) {
|
|
1284
1302
|
printBlockedError(safety.entry);
|
|
1285
1303
|
return { skillName, installed: false, verdict: "BLOCKED" };
|
|
@@ -1305,9 +1323,13 @@ sourceSkillPath) {
|
|
|
1305
1323
|
catch {
|
|
1306
1324
|
return { skillName, installed: false, verdict: "FETCH_FAILED" };
|
|
1307
1325
|
}
|
|
1308
|
-
// Platform security check
|
|
1309
|
-
const
|
|
1310
|
-
|
|
1326
|
+
// Platform security check (skipped for private repos, see installSingleSkillLegacy)
|
|
1327
|
+
const privateRepo = await isPrivateOrUnknownRepo(owner, repo);
|
|
1328
|
+
const platformSecurity = privateRepo ? null : await checkPlatformSecurity(skillName);
|
|
1329
|
+
if (privateRepo) {
|
|
1330
|
+
console.log(dim(" Private repository: local security scan only."));
|
|
1331
|
+
}
|
|
1332
|
+
else if (!platformSecurity) {
|
|
1311
1333
|
console.log(yellow(" Platform security check unavailable -- proceeding with local scan only."));
|
|
1312
1334
|
}
|
|
1313
1335
|
if (platformSecurity && platformSecurity.hasCritical && !opts.force) {
|
|
@@ -1396,7 +1418,7 @@ async function installAllRepoPlugins(ownerRepo, opts) {
|
|
|
1396
1418
|
if (!res.ok) {
|
|
1397
1419
|
manifestSpin.stop();
|
|
1398
1420
|
console.error(red(`marketplace.json not found at ${owner}/${repo}\n`) +
|
|
1399
|
-
dim("Ensure the repo has .claude-plugin/marketplace.json on the default branch."));
|
|
1421
|
+
dim("Ensure the repo has .claude-plugin/marketplace.json on the default branch." + privateRepoHint()));
|
|
1400
1422
|
process.exit(1);
|
|
1401
1423
|
}
|
|
1402
1424
|
manifestContent = await res.text();
|
|
@@ -1489,7 +1511,8 @@ async function installRepoPlugin(ownerRepo, pluginName, opts, overrideSource) {
|
|
|
1489
1511
|
probeSpin.stop();
|
|
1490
1512
|
if (!manifestContent) {
|
|
1491
1513
|
throw new Error(`"${pluginName}" not found at ${owner}/${repo}: the repo has no ` +
|
|
1492
|
-
`.claude-plugin/marketplace.json and no plugins/${pluginName}/ folder.`
|
|
1514
|
+
`.claude-plugin/marketplace.json and no plugins/${pluginName}/ folder.` +
|
|
1515
|
+
privateRepoHint());
|
|
1493
1516
|
}
|
|
1494
1517
|
const available = getAvailablePlugins(manifestContent).map((p) => p.name);
|
|
1495
1518
|
throw new Error(`"${pluginName}" not found in marketplace.json or as a folder in the repo.\n` +
|
|
@@ -1502,7 +1525,7 @@ async function installRepoPlugin(ownerRepo, pluginName, opts, overrideSource) {
|
|
|
1502
1525
|
const pluginPath = pluginSource.replace(/^\.\//, "");
|
|
1503
1526
|
// Blocklist + rejection check BEFORE fetching content
|
|
1504
1527
|
const repoUrl = `https://github.com/${ownerRepo}`;
|
|
1505
|
-
const safety = await
|
|
1528
|
+
const safety = await checkRepoInstallSafety(pluginName, owner, repo);
|
|
1506
1529
|
if (safety.blocked && !opts.force) {
|
|
1507
1530
|
printBlockedError(safety.entry);
|
|
1508
1531
|
throw new Error(`Plugin "${pluginName}" is on the blocklist`);
|
|
@@ -1704,10 +1727,12 @@ async function installRepoPlugin(ownerRepo, pluginName, opts, overrideSource) {
|
|
|
1704
1727
|
if (skills.length > 0) {
|
|
1705
1728
|
console.log(dim(`Skills: ${skills.map((s) => `${pluginName}:${s.name}`).join(", ")}`));
|
|
1706
1729
|
}
|
|
1707
|
-
// Report skill installs in a single batch (awaited to prevent process exit
|
|
1730
|
+
// Report skill installs in a single batch (awaited to prevent process exit
|
|
1731
|
+
// race) — only for repos GitHub confirmed are public.
|
|
1708
1732
|
const batch = skills.map((s) => ({ skillName: s.name, repoUrl: ownerRepo }));
|
|
1709
|
-
if (batch.length > 0)
|
|
1733
|
+
if (batch.length > 0 && !(await isPrivateOrUnknownRepo(owner, repo))) {
|
|
1710
1734
|
await reportInstallBatch(batch).catch(() => { });
|
|
1735
|
+
}
|
|
1711
1736
|
}
|
|
1712
1737
|
// ---------------------------------------------------------------------------
|
|
1713
1738
|
// Main entry point
|
|
@@ -1866,8 +1891,9 @@ async function addCommandInner(source, opts) {
|
|
|
1866
1891
|
const branch = await getDefaultBranch(threeOwner, threeRepo);
|
|
1867
1892
|
const mktPlugins = getAvailablePlugins(detection.manifestContent);
|
|
1868
1893
|
for (const plugin of mktPlugins) {
|
|
1869
|
-
|
|
1870
|
-
const
|
|
1894
|
+
// "./" (repo root) normalizes to "" — no leading slash in the subpath.
|
|
1895
|
+
const pluginPath = plugin.source.replace(/^\.\//, "").replace(/\/+$/, "");
|
|
1896
|
+
const subpath = `${pluginPath ? `${pluginPath}/` : ""}skills/${threeSkill}/SKILL.md`;
|
|
1871
1897
|
const probeUrl = `https://raw.githubusercontent.com/${threeOwner}/${threeRepo}/${branch}/${subpath}`;
|
|
1872
1898
|
const probeRes = await githubFetch(probeUrl);
|
|
1873
1899
|
if (probeRes.ok) {
|
|
@@ -2015,8 +2041,9 @@ async function addCommandInner(source, opts) {
|
|
|
2015
2041
|
const discoveredBatch = results
|
|
2016
2042
|
.filter((r) => r.installed)
|
|
2017
2043
|
.map((r) => ({ skillName: r.skillName, repoUrl: `${owner}/${repo}` }));
|
|
2018
|
-
if (discoveredBatch.length > 0)
|
|
2044
|
+
if (discoveredBatch.length > 0 && !(await isPrivateOrUnknownRepo(owner, repo))) {
|
|
2019
2045
|
await reportInstallBatch(discoveredBatch).catch(() => { });
|
|
2046
|
+
}
|
|
2020
2047
|
const forceRecoverable = results.some((r) => !r.installed && ["FAIL", "CONCERNS", "BLOCKED", "REJECTED", "SECURITY_FAIL"].includes(r.verdict));
|
|
2021
2048
|
if (forceRecoverable) {
|
|
2022
2049
|
console.log(dim("\nUse --force to install skills that failed security checks."));
|
|
@@ -2394,6 +2421,20 @@ async function installFromRegistry(skillName, opts) {
|
|
|
2394
2421
|
console.log(dim(`\nSHA: ${sha} | Version: ${detail.version || "0.0.0"}`));
|
|
2395
2422
|
await reportInstall(detail.name || skillName, detail.repoUrl).catch(() => { });
|
|
2396
2423
|
}
|
|
2424
|
+
/**
|
|
2425
|
+
* Blocklist + rejection check for a GitHub repo that never sends a private
|
|
2426
|
+
* repo to verified-skill.com. Resolves visibility first through the cached
|
|
2427
|
+
* `GET /repos/{owner}/{repo}` call the install makes anyway, so
|
|
2428
|
+
* checkInstallSafety can fall back to the local blocklist for private repos
|
|
2429
|
+
* instead of querying the platform with the skill name and repo URL.
|
|
2430
|
+
*/
|
|
2431
|
+
async function checkRepoInstallSafety(skillName, owner, repo) {
|
|
2432
|
+
// Fail closed: a repo GitHub does not confirm is public gets the local
|
|
2433
|
+
// blocklist only, so neither the skill name nor the repo leaves the machine.
|
|
2434
|
+
if (await isPrivateOrUnknownRepo(owner, repo))
|
|
2435
|
+
return checkLocalInstallSafety(skillName);
|
|
2436
|
+
return checkInstallSafety(skillName, undefined, `https://github.com/${owner}/${repo}`);
|
|
2437
|
+
}
|
|
2397
2438
|
// ---------------------------------------------------------------------------
|
|
2398
2439
|
// Legacy single-skill install (preserves original behavior exactly)
|
|
2399
2440
|
// ---------------------------------------------------------------------------
|
|
@@ -2401,7 +2442,7 @@ async function installSingleSkillLegacy(owner, repo, skill, opts, skillSubpathOv
|
|
|
2401
2442
|
// Blocklist + rejection check BEFORE fetching (prevents misleading 404)
|
|
2402
2443
|
const skillName = skill || repo;
|
|
2403
2444
|
const repoUrl = `https://github.com/${owner}/${repo}`;
|
|
2404
|
-
const safety = await
|
|
2445
|
+
const safety = await checkRepoInstallSafety(skillName, owner, repo);
|
|
2405
2446
|
if (safety.blocked && !opts.force) {
|
|
2406
2447
|
printBlockedError(safety.entry);
|
|
2407
2448
|
process.exit(1);
|
|
@@ -2499,9 +2540,15 @@ async function installSingleSkillLegacy(owner, repo, skill, opts, skillSubpathOv
|
|
|
2499
2540
|
if (legacyAgentFiles && Object.keys(legacyAgentFiles).length === 0)
|
|
2500
2541
|
legacyAgentFiles = undefined;
|
|
2501
2542
|
}
|
|
2502
|
-
// Platform security check (best-effort, non-blocking on network error)
|
|
2503
|
-
|
|
2504
|
-
|
|
2543
|
+
// Platform security check (best-effort, non-blocking on network error).
|
|
2544
|
+
// Skipped for private repos: the registry looks skills up by name, so it
|
|
2545
|
+
// would leak the name and could match an unrelated public skill.
|
|
2546
|
+
const privateRepo = await isPrivateOrUnknownRepo(owner, repo);
|
|
2547
|
+
const platformSecurity = privateRepo ? null : await checkPlatformSecurity(skillName);
|
|
2548
|
+
if (privateRepo) {
|
|
2549
|
+
console.log(dim(" Private repository: local security scan only."));
|
|
2550
|
+
}
|
|
2551
|
+
else if (!platformSecurity) {
|
|
2505
2552
|
console.log(yellow(" Platform security check unavailable -- proceeding with local scan only."));
|
|
2506
2553
|
}
|
|
2507
2554
|
if (platformSecurity && platformSecurity.hasCritical && !opts.force) {
|
|
@@ -2623,8 +2670,10 @@ async function installSingleSkillLegacy(owner, repo, skill, opts, skillSubpathOv
|
|
|
2623
2670
|
});
|
|
2624
2671
|
lock.agents = [...new Set([...(lock.agents || []), ...selectedAgents.map((a) => a.id)])];
|
|
2625
2672
|
writeLockfile(lock, lockDir);
|
|
2626
|
-
// Phone home (awaited to prevent process exit race)
|
|
2627
|
-
await
|
|
2673
|
+
// Phone home (awaited to prevent process exit race) — public repos only.
|
|
2674
|
+
if (!(await isPrivateOrUnknownRepo(owner, repo))) {
|
|
2675
|
+
await reportInstall(skillName, `${owner}/${repo}`).catch(() => { });
|
|
2676
|
+
}
|
|
2628
2677
|
// Print summary
|
|
2629
2678
|
const method = opts.copy ? "copied" : "symlinked";
|
|
2630
2679
|
console.log(green(`\nInstalled ${bold(skillName)} (${method}) to ${locations.length} agent${locations.length === 1 ? "" : "s"}:\n`));
|