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.
Files changed (72) hide show
  1. package/README.md +12 -3
  2. package/agents.json +1 -1
  3. package/dist/api/client.d.ts +1 -1
  4. package/dist/api/client.js +14 -7
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/blocklist/blocklist.d.ts +12 -0
  7. package/dist/blocklist/blocklist.js +19 -0
  8. package/dist/blocklist/blocklist.js.map +1 -1
  9. package/dist/commands/add.js +98 -49
  10. package/dist/commands/add.js.map +1 -1
  11. package/dist/commands/auth.d.ts +2 -0
  12. package/dist/commands/auth.js +38 -2
  13. package/dist/commands/auth.js.map +1 -1
  14. package/dist/commands/diff.js +8 -0
  15. package/dist/commands/diff.js.map +1 -1
  16. package/dist/commands/info.js +7 -0
  17. package/dist/commands/info.js.map +1 -1
  18. package/dist/commands/outdated.js +29 -4
  19. package/dist/commands/outdated.js.map +1 -1
  20. package/dist/commands/pin.js +7 -2
  21. package/dist/commands/pin.js.map +1 -1
  22. package/dist/commands/submit.js +8 -0
  23. package/dist/commands/submit.js.map +1 -1
  24. package/dist/commands/update.js +14 -3
  25. package/dist/commands/update.js.map +1 -1
  26. package/dist/commands/versions.js +11 -0
  27. package/dist/commands/versions.js.map +1 -1
  28. package/dist/discovery/github-tree.js +20 -1
  29. package/dist/discovery/github-tree.js.map +1 -1
  30. package/dist/eval-server/api-routes.js +33 -2
  31. package/dist/eval-server/api-routes.js.map +1 -1
  32. package/dist/eval-server/install-skill-routes.d.ts +2 -0
  33. package/dist/eval-server/install-skill-routes.js +7 -0
  34. package/dist/eval-server/install-skill-routes.js.map +1 -1
  35. package/dist/eval-server/oauth-github-routes.js +25 -0
  36. package/dist/eval-server/oauth-github-routes.js.map +1 -1
  37. package/dist/eval-server/origin-resolver.d.ts +6 -0
  38. package/dist/eval-server/origin-resolver.js +35 -5
  39. package/dist/eval-server/origin-resolver.js.map +1 -1
  40. package/dist/eval-server/platform-proxy.d.ts +3 -3
  41. package/dist/eval-server/platform-proxy.js +10 -25
  42. package/dist/eval-server/platform-proxy.js.map +1 -1
  43. package/dist/eval-server/studio-privacy.d.ts +26 -0
  44. package/dist/eval-server/studio-privacy.js +129 -0
  45. package/dist/eval-server/studio-privacy.js.map +1 -0
  46. package/dist/eval-ui/assets/{CreateSkillPage-ENMve2K8.js → CreateSkillPage-DXOVLzCp.js} +1 -1
  47. package/dist/eval-ui/assets/{FindSkillsPalette-BMVKCk6E.js → FindSkillsPalette-D_qkIke-.js} +2 -2
  48. package/dist/eval-ui/assets/{SearchPaletteCore-C9G-ySXc.js → SearchPaletteCore-BbJxHT_o.js} +1 -1
  49. package/dist/eval-ui/assets/{SkillDetailPanel-BCJj8p79.js → SkillDetailPanel-DMkcBtBv.js} +1 -1
  50. package/dist/eval-ui/assets/{UpdateDropdown-C4BH7W_M.js → UpdateDropdown-CH05KQXq.js} +1 -1
  51. package/dist/eval-ui/assets/{main-tzMA8J07.js → main-DpG_H4H8.js} +5 -5
  52. package/dist/eval-ui/index.html +1 -1
  53. package/dist/index.js +2 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/lib/github-fetch.d.ts +30 -0
  56. package/dist/lib/github-fetch.js +146 -5
  57. package/dist/lib/github-fetch.js.map +1 -1
  58. package/dist/lib/private-source.d.ts +77 -0
  59. package/dist/lib/private-source.js +392 -0
  60. package/dist/lib/private-source.js.map +1 -0
  61. package/dist/lib/repo-visibility.d.ts +25 -0
  62. package/dist/lib/repo-visibility.js +80 -0
  63. package/dist/lib/repo-visibility.js.map +1 -0
  64. package/dist/lockfile/lockfile.d.ts +2 -0
  65. package/dist/lockfile/lockfile.js +13 -0
  66. package/dist/lockfile/lockfile.js.map +1 -1
  67. package/dist/lockfile/types.d.ts +5 -0
  68. package/dist/marketplace/marketplace.js +8 -1
  69. package/dist/marketplace/marketplace.js.map +1 -1
  70. package/dist/updater/source-fetcher.js +15 -11
  71. package/dist/updater/source-fetcher.js.map +1 -1
  72. 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-17-10B981" alt="17 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 # sign in to GitHub for private skills
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
- Customer-facing setup walkthrough → [`.specweave/docs/external/private-repos-quickstart.md`](../../../.specweave/docs/external/private-repos-quickstart.md) (in the umbrella repo).
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "generatedAt": "2026-09-14T07:11:29.092Z",
3
+ "generatedAt": "2026-10-03T17:11:13.167Z",
4
4
  "agentPrefixes": [
5
5
  ".adal",
6
6
  ".agent",
@@ -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(skills: Array<{
237
+ export declare function reportInstallBatch(allSkills: Array<{
238
238
  skillName: string;
239
239
  repoUrl?: string;
240
240
  version?: string;
@@ -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. Prefers `vsk_*`, falls back to
59
- * `gho_*`. Returns null when nothing is stored (anonymous mode).
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
- // Prefer vsk_* (ADR-001 / AC-US5-04).
71
- token = kc.getVskillToken() ?? kc.getGitHubToken();
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
- const kind = token.startsWith("vsk_") ? "vsk_" : "gho_";
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(skills) {
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++) {
@@ -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":"AAAA,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,gFAAgF;AAChF,2EAA2E;AAC3E,4DAA4D;AAC5D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AACtD,SAAS,cAAc;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,gBAAgB,CAAC;AACzD,CAAC;AA6BD,MAAM,UAAU,GAAmB;IACjC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;CACd,CAAC;AAEF;;;;GAIG;AACH,IAAI,iBAAiB,GAAoB,IAAI,CAAC;AAE9C,6BAA6B;AAC7B,MAAM,UAAU,oBAAoB,CAAC,CAAkB;IACrD,iBAAiB,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,6BAA6B;IAC3C,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB;IACjC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB;IACvB,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/C,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;QACrD,wEAAwE;QACxE,KAAK,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IACD,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,qEAAqE;IACrE,wEAAwE;IACxE,uEAAuE;IACvE,yDAAyD;IACzD,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,GAAG,eAAe,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IAC3B,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA8B,EAC9B,OAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,MAAM,GACV,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IAE9E,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,YAAY;KAC3B,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;QACpC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,IAAI,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AACD,MAAM,OAAO,GAAW,CAAC,GAAG,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAiB,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAsFL,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,OAA0D;IAE1D,MAAM,GAAG,GAAG,GAAG,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC;IACzC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,mBAAmB,CACjC,SAAS,CAAC,OAA6C,EACvD,EAAE,cAAc,EAAE,CACnB,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,GAAG,SAAS;QACZ,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,qEAAqE;QACrE,mEAAmE;QACnE,uEAAuE;QACvE,mCAAmC;QACnC,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,uBAAuB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAKjF,CAAC;QACF,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACxB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;QACH,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC;AAOD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,OAA4B;IAE5B,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,UAAU,CAK1B,2BAA2B,OAAO,UAAU,KAAK,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QAClD,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC;QAChD,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC1D,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC;QACvC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QAC7C,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;QACtD,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACxB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAmC,CAAC,CAAC,CAAC,SAAS;QAC1F,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAkC,CAAC,CAAC,CAAC,SAAS;QACtF,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACxB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3D,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QACrD,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/E,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACxD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QACrD,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACxD,cAAc,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;QACvE,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,cAAiD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjH,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;YACpC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;SACjC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KAChB,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC7D,CAAC,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3E,iDAAiD;IACjD,MAAM,GAAG,GAAI,IAAI,CAAC,KAAiC,IAAI,IAAI,CAAC;IAE5D,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,UAAU,CAAC;QACpD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;QAC7D,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QACtD,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QACtC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QACtD,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QACvE,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS;QAChG,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACjD,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;KAC3D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAuB;IAEvB,OAAO,UAAU,CAAqB,qBAAqB,EAAE;QAC3D,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAU;IAEV,OAAO,UAAU,CAAC,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAWD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY;IAEZ,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CACjC,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAA4B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;QACpC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9D,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAChE,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;KAClE,CAAC,CAAC,CAAC;AACN,CAAC;AASD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAAY,EACZ,EAAU;IAEV,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,UAAU,CACf,GAAG,YAAY,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAC1E,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,OAAgB,EAChB,OAAgB;IAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC;IACjD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG;YAAE,OAAO;QACpD,wEAAwE;QACxE,IAAI,kBAAkB,CAAC,OAAO,CAAC;YAAE,OAAO;QAExC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;gBAE3D,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,EACxD;wBACE,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,mBAAmB,EAAE;wBAC9B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/B,MAAM,EAAE,KAAK;4BACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,UAAU,EAAE,OAAO;yBACpB,CAAC;wBACF,MAAM,EAAE,UAAU,CAAC,MAAM;qBAC1B,CACF,CAAC;oBACF,IAAI,GAAG,CAAC,EAAE;wBAAE,OAAO,CAAC,iBAAiB;oBACrC,IAAI,OAAO;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,GAAG,CAAC,MAAM,QAAQ,SAAS,IAAI,CAAC,CAAC;oBAC7G,4BAA4B;oBAC5B,IAAI,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;wBAAE,SAAS;oBACjD,OAAO,CAAC,2CAA2C;gBACrD,CAAC;wBAAS,CAAC;oBACT,YAAY,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,SAAS,KAAK,GAAG,IAAI,CAAC,CAAC;gBAChG,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;oBAClB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC7C,SAAS,CAAC,oBAAoB;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;AACH,CAAC;AAkCD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAyB;IAEzB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,EAAE,8BAA8B,EAAE;YACzE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,mBAAmB,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU,EAAE,OAAO;aACpB,CAAC;YACF,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,MAAM,SAAS,CAAC;YAC5F,MAAM,IAAI,KAAK,CACb,uBAAuB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,MAAM,SAAS,EAAE,CACrE,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqC,CAAC;QACpE,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAsBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,IAAY,EACZ,EAAU;IAEV,0EAA0E;IAC1E,0EAA0E;IAC1E,6EAA6E;IAC7E,uDAAuD;IACvD,MAAM,YAAY,GAAG,KAAK;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,kBAAkB,CAAC;SACvB,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,GAAG,GAAG,GAAG,cAAc,EAAE,kBAAkB,YAAY,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/I,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,OAAO,EAAE,mBAAmB,EAAE;KAC/B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,2BAA2B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACnG,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAA2E;IAE3E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC;IACjD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG;YAAE,OAAO;QACpD,wEAAwE;QACxE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;gBAE5D,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,cAAc,EAAE,yBAAyB,EAC5C;wBACE,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,mBAAmB,EAAE;wBAC9B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM;4BACN,MAAM,EAAE,KAAK;4BACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,UAAU,EAAE,OAAO;yBACpB,CAAC;wBACF,MAAM,EAAE,UAAU,CAAC,MAAM;qBAC1B,CACF,CAAC;oBACF,IAAI,GAAG,CAAC,EAAE;wBAAE,OAAO;oBACnB,IAAI,OAAO;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,GAAG,CAAC,MAAM,QAAQ,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;oBAC9H,IAAI,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;wBAAE,SAAS;oBACjD,OAAO;gBACT,CAAC;wBAAS,CAAC;oBACT,YAAY,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,GAAG,IAAI,CAAC,CAAC;gBACrF,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;oBAClB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC7C,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;AACH,CAAC;AAuBD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,IAAI,GAAG,MAAM,UAAU,CAE1B,yBAAyB,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;QAChC,cAAc,EACZ,CAAC,CAAC,cAAc,IAAI,IAAI;YACtB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ;gBACpC,CAAC,CAAC,CAAC,CAAC,cAAc;gBAClB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;KACjC,CAAC,CAAC,CAAC;AACN,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB;IAEnB,OAAO,UAAU,CACf,4CAA4C,EAC5C;QACE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;KACtC,CACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,CAAU,2BAA2B,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC/E,CAAC"}
@@ -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":"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"}
1
+ {"version":3,"file":"blocklist.js","sourceRoot":"","sources":["../../src/blocklist/blocklist.ts"],"names":[],"mappings":"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"}
@@ -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
- for (const unreg of selectedUnregistered) {
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 process exit race)
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 = await checkInstallSafety(pluginName, undefined, repoUrl);
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
- source: `local:${basePath}`,
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 (fire-and-forget)
1257
- // Derive owner/repo from gitUrl (e.g. "https://github.com/org/repo.git" → "org/repo")
1258
- try {
1259
- const ownerRepo = gitUrl
1260
- ? gitUrl.replace(/\.git$/, "").replace(/.*github\.com[/:]/, "")
1261
- : undefined;
1262
- const skillDirs = readdirSync(pluginDir, { withFileTypes: true })
1263
- .filter((d) => d.isDirectory() && existsSync(join(pluginDir, d.name, "SKILL.md")));
1264
- const batch = skillDirs.map((d) => ({
1265
- skillName: d.name,
1266
- ...(ownerRepo ? { repoUrl: ownerRepo } : {}),
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
- catch { /* best-effort */ }
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 checkInstallSafety(skillName, undefined, repoUrl);
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 platformSecurity = await checkPlatformSecurity(skillName);
1310
- if (!platformSecurity) {
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 checkInstallSafety(pluginName, undefined, repoUrl);
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 race)
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
- const pluginPath = plugin.source.replace(/^\.\//, "");
1870
- const subpath = `${pluginPath}/skills/${threeSkill}/SKILL.md`;
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 checkInstallSafety(skillName, undefined, repoUrl);
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
- const platformSecurity = await checkPlatformSecurity(skillName);
2504
- if (!platformSecurity) {
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 reportInstall(skillName, `${owner}/${repo}`).catch(() => { });
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`));