skill-preflight 0.1.0 → 0.1.2

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/cli.js CHANGED
@@ -8,7 +8,7 @@ export async function runCli(argv) {
8
8
  program
9
9
  .name("skill-preflight")
10
10
  .description("Pre-install safety, token, and maintainability scorecard for AI agent skills.")
11
- .version("0.1.0");
11
+ .version("0.1.2");
12
12
  program
13
13
  .command("scan")
14
14
  .argument("[target]", "Local skill path or GitHub repository URL")
@@ -1,6 +1,11 @@
1
1
  import type { ResolvedTarget, ScannedFile, TextFile } from "./types.js";
2
2
  export declare function resolveTarget(target: string, keepTemp?: boolean): Promise<ResolvedTarget>;
3
3
  export declare function isGitHubUrl(value: string): boolean;
4
+ export interface GitHubRepoRef {
5
+ owner: string;
6
+ repo: string;
7
+ }
8
+ export declare function parseGitHubUrl(value: string): GitHubRepoRef | undefined;
4
9
  export declare function discoverSkillRoots(rootPath: string): Promise<string[]>;
5
10
  export declare function readSkillFiles(rootPath: string): Promise<{
6
11
  files: ScannedFile[];
@@ -1,9 +1,11 @@
1
- import { readdir, readFile, rm } from "node:fs/promises";
1
+ import { mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { execFile } from "node:child_process";
6
6
  import { promisify } from "node:util";
7
+ import * as tar from "tar";
8
+ import { ProxyAgent } from "undici";
7
9
  import { isProbablyText, pathExists, toPosixPath } from "./utils.js";
8
10
  const execFileAsync = promisify(execFile);
9
11
  const IGNORED_DIRS = new Set([
@@ -19,20 +21,56 @@ const IGNORED_DIRS = new Set([
19
21
  "__pycache__"
20
22
  ]);
21
23
  const MAX_TEXT_FILE_BYTES = 1024 * 1024;
24
+ const GITHUB_FETCH_TIMEOUT_MS = 30000;
25
+ const GITHUB_FILE_FETCH_TIMEOUT_MS = 15000;
26
+ const GITHUB_DOWNLOAD_CONCURRENCY = 8;
27
+ const GITHUB_SPARSE_MAX_FILES = 3000;
28
+ const GITHUB_SPARSE_MAX_BYTES = 20 * 1024 * 1024;
29
+ const GITHUB_SPARSE_MAX_SINGLE_FILE_BYTES = 1024 * 1024;
30
+ let proxyDispatcherPromise;
22
31
  export async function resolveTarget(target, keepTemp = false) {
23
- if (isGitHubUrl(target)) {
32
+ const githubRepo = parseGitHubUrl(target);
33
+ if (githubRepo) {
24
34
  const tempRoot = path.join(os.tmpdir(), `skill-preflight-${randomUUID()}`);
25
- await execFileAsync("git", ["clone", "--depth", "1", target, tempRoot], {
26
- timeout: 120000,
27
- windowsHide: true
28
- });
35
+ await mkdir(tempRoot, { recursive: true });
36
+ const failures = [];
37
+ try {
38
+ await downloadGitHubSkillFiles(githubRepo, tempRoot);
39
+ }
40
+ catch (sparseError) {
41
+ failures.push(`GitHub API sparse download failed: ${formatToolError(sparseError)}`);
42
+ await removeTempPath(tempRoot);
43
+ await mkdir(tempRoot, { recursive: true });
44
+ try {
45
+ await downloadGitHubTarball(githubRepo, tempRoot);
46
+ }
47
+ catch (tarballError) {
48
+ failures.push(`Tarball download failed: ${formatToolError(tarballError)}`);
49
+ await removeTempPath(tempRoot);
50
+ try {
51
+ await execFileAsync("git", ["clone", "--depth", "1", target, tempRoot], {
52
+ timeout: 120000,
53
+ windowsHide: true
54
+ });
55
+ }
56
+ catch (gitError) {
57
+ failures.push(`git clone fallback failed: ${formatToolError(gitError)}`);
58
+ await removeTempPath(tempRoot).catch(() => undefined);
59
+ throw new Error([
60
+ `Could not load GitHub repository: ${target}`,
61
+ ...failures,
62
+ "Check the repository URL, GitHub access, network proxy settings, or try scanning a local checkout."
63
+ ].join("\n"));
64
+ }
65
+ }
66
+ }
29
67
  return {
30
68
  displayTarget: target,
31
69
  localPath: tempRoot,
32
70
  cleanup: keepTemp
33
71
  ? undefined
34
72
  : async () => {
35
- await rm(tempRoot, { recursive: true, force: true });
73
+ await removeTempPath(tempRoot).catch(() => undefined);
36
74
  }
37
75
  };
38
76
  }
@@ -46,7 +84,27 @@ export async function resolveTarget(target, keepTemp = false) {
46
84
  };
47
85
  }
48
86
  export function isGitHubUrl(value) {
49
- return /^https:\/\/github\.com\/[^/]+\/[^/]+\/?$/.test(value.trim());
87
+ return Boolean(parseGitHubUrl(value));
88
+ }
89
+ export function parseGitHubUrl(value) {
90
+ let url;
91
+ try {
92
+ url = new URL(value.trim());
93
+ }
94
+ catch {
95
+ return undefined;
96
+ }
97
+ if (url.protocol !== "https:" || url.hostname.toLowerCase() !== "github.com") {
98
+ return undefined;
99
+ }
100
+ const [owner, rawRepo, extra] = url.pathname.split("/").filter(Boolean);
101
+ if (!owner || !rawRepo || extra) {
102
+ return undefined;
103
+ }
104
+ return {
105
+ owner,
106
+ repo: rawRepo.replace(/\.git$/i, "")
107
+ };
50
108
  }
51
109
  export async function discoverSkillRoots(rootPath) {
52
110
  const directSkill = path.join(rootPath, "SKILL.md");
@@ -112,4 +170,294 @@ export function commonInstalledSkillDirs() {
112
170
  path.join(cwd, ".claude", "skills")
113
171
  ];
114
172
  }
173
+ async function downloadGitHubSkillFiles(repoRef, destination) {
174
+ const treeUrl = `https://api.github.com/repos/${encodeURIComponent(repoRef.owner)}/${encodeURIComponent(repoRef.repo)}/git/trees/HEAD?recursive=1`;
175
+ const treeResponse = await fetchJson(treeUrl, GITHUB_FETCH_TIMEOUT_MS);
176
+ const entries = treeResponse.tree;
177
+ if (!Array.isArray(entries)) {
178
+ throw new Error("GitHub API response did not include a repository tree.");
179
+ }
180
+ const blobEntries = entries.filter((entry) => entry.type === "blob" && entry.path);
181
+ const skillRoots = new Set(blobEntries
182
+ .filter((entry) => basenamePosix(entry.path).toLowerCase() === "skill.md")
183
+ .map((entry) => dirnamePosix(entry.path)));
184
+ if (treeResponse.truncated && skillRoots.size === 0) {
185
+ throw new Error("GitHub API tree response was truncated before any SKILL.md files were found.");
186
+ }
187
+ if (skillRoots.size === 0) {
188
+ return;
189
+ }
190
+ const candidates = blobEntries
191
+ .map((entry) => ({
192
+ entry,
193
+ skillRoot: findContainingSkillRoot(entry.path, skillRoots)
194
+ }))
195
+ .filter((candidate) => Boolean(candidate.skillRoot))
196
+ .filter(({ entry }) => !hasIgnoredPathSegment(entry.path))
197
+ .sort((left, right) => downloadPriority(left.entry, left.skillRoot) - downloadPriority(right.entry, right.skillRoot));
198
+ const selected = [];
199
+ let selectedBytes = 0;
200
+ for (const { entry } of candidates) {
201
+ const isSkillFile = basenamePosix(entry.path).toLowerCase() === "skill.md";
202
+ const size = entry.size ?? 0;
203
+ if (!isSkillFile &&
204
+ (selected.length >= GITHUB_SPARSE_MAX_FILES ||
205
+ selectedBytes + size > GITHUB_SPARSE_MAX_BYTES ||
206
+ size > GITHUB_SPARSE_MAX_SINGLE_FILE_BYTES)) {
207
+ continue;
208
+ }
209
+ selected.push(entry);
210
+ selectedBytes += size;
211
+ }
212
+ const downloadedSkillFiles = new Set();
213
+ const skillFileFailures = [];
214
+ await runWithConcurrency(selected, GITHUB_DOWNLOAD_CONCURRENCY, async (entry) => {
215
+ const fileUrl = `https://raw.githubusercontent.com/${encodeURIComponent(repoRef.owner)}/${encodeURIComponent(repoRef.repo)}/HEAD/${encodePosixPath(entry.path)}`;
216
+ const isSkillFile = basenamePosix(entry.path).toLowerCase() === "skill.md";
217
+ try {
218
+ const content = await fetchBuffer(fileUrl, GITHUB_FILE_FETCH_TIMEOUT_MS);
219
+ const outputPath = resolveInside(destination, entry.path);
220
+ await mkdir(path.dirname(outputPath), { recursive: true });
221
+ await writeFile(outputPath, content);
222
+ if (isSkillFile) {
223
+ downloadedSkillFiles.add(entry.path);
224
+ }
225
+ }
226
+ catch (error) {
227
+ if (isSkillFile) {
228
+ skillFileFailures.push(`${entry.path}: ${formatToolError(error)}`);
229
+ }
230
+ }
231
+ });
232
+ if (downloadedSkillFiles.size === 0) {
233
+ throw new Error([
234
+ "GitHub API found SKILL.md files, but none could be downloaded from raw.githubusercontent.com.",
235
+ ...skillFileFailures.slice(0, 5)
236
+ ].join("\n"));
237
+ }
238
+ }
239
+ async function downloadGitHubTarball(repoRef, destination) {
240
+ const tarballUrl = `https://codeload.github.com/${encodeURIComponent(repoRef.owner)}/${encodeURIComponent(repoRef.repo)}/tar.gz/HEAD`;
241
+ const archivePath = path.join(os.tmpdir(), `skill-preflight-${randomUUID()}.tar.gz`);
242
+ try {
243
+ const archive = await fetchBuffer(tarballUrl, GITHUB_FETCH_TIMEOUT_MS);
244
+ await writeFile(archivePath, archive);
245
+ await tar.x({
246
+ file: archivePath,
247
+ cwd: destination,
248
+ strip: 1
249
+ });
250
+ }
251
+ finally {
252
+ await removeTempPath(archivePath).catch(() => undefined);
253
+ }
254
+ }
255
+ async function fetchJson(url, timeoutMs) {
256
+ return fetchWithTimeout(url, timeoutMs, {
257
+ headers: {
258
+ Accept: "application/vnd.github+json",
259
+ "User-Agent": "skill-preflight"
260
+ }
261
+ }, async (response) => (await response.json()));
262
+ }
263
+ async function fetchBuffer(url, timeoutMs) {
264
+ return fetchWithTimeout(url, timeoutMs, {
265
+ headers: {
266
+ "User-Agent": "skill-preflight"
267
+ },
268
+ redirect: "follow"
269
+ }, async (response) => Buffer.from(await response.arrayBuffer()));
270
+ }
271
+ async function fetchWithTimeout(url, timeoutMs, init, consume) {
272
+ const controller = new AbortController();
273
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
274
+ const dispatcher = await getProxyDispatcher();
275
+ try {
276
+ const requestInit = {
277
+ ...init,
278
+ signal: controller.signal
279
+ };
280
+ if (dispatcher) {
281
+ requestInit.dispatcher = dispatcher;
282
+ }
283
+ const response = await fetch(url, requestInit);
284
+ if (!response.ok) {
285
+ throw new Error(`HTTP ${response.status} ${response.statusText}`);
286
+ }
287
+ return await consume(response);
288
+ }
289
+ catch (error) {
290
+ if (error instanceof Error && error.name === "AbortError") {
291
+ throw new Error(`Timed out after ${Math.round(timeoutMs / 1000)}s fetching ${url}`);
292
+ }
293
+ throw error;
294
+ }
295
+ finally {
296
+ clearTimeout(timeout);
297
+ }
298
+ }
299
+ async function runWithConcurrency(items, limit, worker) {
300
+ let nextIndex = 0;
301
+ const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
302
+ while (true) {
303
+ const index = nextIndex;
304
+ nextIndex += 1;
305
+ if (index >= items.length) {
306
+ return;
307
+ }
308
+ await worker(items[index]);
309
+ }
310
+ });
311
+ await Promise.all(workers);
312
+ }
313
+ function findContainingSkillRoot(filePath, skillRoots) {
314
+ let current = dirnamePosix(filePath);
315
+ while (true) {
316
+ if (skillRoots.has(current)) {
317
+ return current || ".";
318
+ }
319
+ if (!current) {
320
+ return undefined;
321
+ }
322
+ current = dirnamePosix(current);
323
+ }
324
+ }
325
+ function downloadPriority(entry, skillRoot) {
326
+ const relativePath = relativePosix(skillRoot === "." ? "" : skillRoot, entry.path);
327
+ const basename = basenamePosix(relativePath).toLowerCase();
328
+ if (basename === "skill.md")
329
+ return 0;
330
+ if (/^readme(\.[a-z0-9]+)?$/i.test(basename) || /^licen[cs]e(\.[a-z0-9]+)?$/i.test(basename))
331
+ return 1;
332
+ if (/^(package\.json|requirements\.txt|pyproject\.toml|cargo\.toml|go\.mod|gemfile|pipfile)$/i.test(basename)) {
333
+ return 2;
334
+ }
335
+ if (/^(references?|docs?|knowledge|examples?)\//i.test(relativePath))
336
+ return 3;
337
+ if (entry.size !== undefined && entry.size > GITHUB_SPARSE_MAX_SINGLE_FILE_BYTES)
338
+ return 10;
339
+ return 4;
340
+ }
341
+ function basenamePosix(value) {
342
+ return value.split("/").filter(Boolean).pop() ?? "";
343
+ }
344
+ function dirnamePosix(value) {
345
+ const parts = value.split("/").filter(Boolean);
346
+ parts.pop();
347
+ return parts.join("/");
348
+ }
349
+ function relativePosix(root, filePath) {
350
+ return root ? filePath.slice(root.length + 1) : filePath;
351
+ }
352
+ function hasIgnoredPathSegment(value) {
353
+ return value.split("/").some((segment) => IGNORED_DIRS.has(segment));
354
+ }
355
+ function encodePosixPath(value) {
356
+ return value.split("/").map(encodeURIComponent).join("/");
357
+ }
358
+ function resolveInside(rootPath, relativePath) {
359
+ const normalized = path.normalize(relativePath.replaceAll("/", path.sep));
360
+ if (path.isAbsolute(normalized) || normalized.startsWith("..")) {
361
+ throw new Error(`Unsafe path from GitHub archive: ${relativePath}`);
362
+ }
363
+ const resolved = path.resolve(rootPath, normalized);
364
+ const root = path.resolve(rootPath);
365
+ if (resolved !== root && !resolved.startsWith(`${root}${path.sep}`)) {
366
+ throw new Error(`Unsafe path from GitHub archive: ${relativePath}`);
367
+ }
368
+ return resolved;
369
+ }
370
+ async function removeTempPath(targetPath) {
371
+ await rm(targetPath, {
372
+ recursive: true,
373
+ force: true,
374
+ maxRetries: 5,
375
+ retryDelay: 200
376
+ });
377
+ }
378
+ function getProxyDispatcher() {
379
+ proxyDispatcherPromise ??= resolveProxyUrl()
380
+ .then((proxyUrl) => {
381
+ if (!proxyUrl) {
382
+ return undefined;
383
+ }
384
+ return new ProxyAgent(proxyUrl);
385
+ })
386
+ .catch(() => undefined);
387
+ return proxyDispatcherPromise;
388
+ }
389
+ async function resolveProxyUrl() {
390
+ const envProxy = process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy;
391
+ if (envProxy) {
392
+ return normalizeProxyUrl(envProxy);
393
+ }
394
+ if (process.platform !== "win32") {
395
+ return undefined;
396
+ }
397
+ try {
398
+ const { stdout } = await execFileAsync("reg", ["query", "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"], {
399
+ timeout: 5000,
400
+ windowsHide: true
401
+ });
402
+ const proxyEnabled = /ProxyEnable\s+REG_DWORD\s+0x1/i.test(stdout);
403
+ const proxyServer = stdout.match(/ProxyServer\s+REG_SZ\s+(.+)/i)?.[1]?.trim();
404
+ if (!proxyEnabled || !proxyServer) {
405
+ return undefined;
406
+ }
407
+ return parseWindowsProxyServer(proxyServer);
408
+ }
409
+ catch {
410
+ return undefined;
411
+ }
412
+ }
413
+ function parseWindowsProxyServer(value) {
414
+ const entries = value
415
+ .split(";")
416
+ .map((entry) => entry.trim())
417
+ .filter(Boolean);
418
+ if (entries.length === 0) {
419
+ return undefined;
420
+ }
421
+ const keyed = entries.map((entry) => {
422
+ const separator = entry.indexOf("=");
423
+ return separator >= 0
424
+ ? {
425
+ key: entry.slice(0, separator).toLowerCase(),
426
+ value: entry.slice(separator + 1)
427
+ }
428
+ : {
429
+ key: "",
430
+ value: entry
431
+ };
432
+ });
433
+ const candidate = keyed.find((entry) => entry.key === "https")?.value ??
434
+ keyed.find((entry) => entry.key === "http")?.value ??
435
+ keyed.find((entry) => entry.key === "socks")?.value ??
436
+ keyed[0]?.value;
437
+ return candidate ? normalizeProxyUrl(candidate) : undefined;
438
+ }
439
+ function normalizeProxyUrl(value) {
440
+ const trimmed = value.trim();
441
+ if (!trimmed) {
442
+ return undefined;
443
+ }
444
+ if (/^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed)) {
445
+ return trimmed;
446
+ }
447
+ return `http://${trimmed}`;
448
+ }
449
+ function formatToolError(error) {
450
+ if (!(error instanceof Error)) {
451
+ return String(error);
452
+ }
453
+ const parts = [error.message];
454
+ const maybeError = error;
455
+ if (maybeError.stderr?.trim()) {
456
+ parts.push(maybeError.stderr.trim());
457
+ }
458
+ if (maybeError.stdout?.trim()) {
459
+ parts.push(maybeError.stdout.trim());
460
+ }
461
+ return parts.join(" | ");
462
+ }
115
463
  //# sourceMappingURL=filesystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/core/filesystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/core/filesystem.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skill-preflight",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Pre-install safety, token, and maintainability scorecard for AI agent skills.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -47,7 +47,9 @@
47
47
  "node": ">=20"
48
48
  },
49
49
  "dependencies": {
50
- "commander": "^12.1.0"
50
+ "commander": "^12.1.0",
51
+ "tar": "^7.5.16",
52
+ "undici": "^6.26.0"
51
53
  },
52
54
  "devDependencies": {
53
55
  "@types/node": "^20.19.0",