skill-preflight 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ScanOptions, ScanReport, SkillReport } from "./types.js";
2
+ export declare function scan(options: ScanOptions): Promise<ScanReport>;
3
+ export declare function scanSkillRoot(rootPath: string, target: string): Promise<SkillReport>;
@@ -0,0 +1,119 @@
1
+ import path from "node:path";
2
+ import { commonInstalledSkillDirs, discoverSkillRoots, readSkillFiles, resolveTarget } from "./filesystem.js";
3
+ import { rules } from "./rules.js";
4
+ import { scoreFindings, sortFindings } from "./scoring.js";
5
+ import { estimateTokens, pathExists } from "./utils.js";
6
+ const SCRIPT_FILE_PATTERN = /\.(sh|bash|zsh|ps1|bat|cmd|js|mjs|cjs|ts|py|rb|pl)$/i;
7
+ const DEPENDENCY_FILE_PATTERN = /(^|\/)(package\.json|requirements\.txt|pyproject\.toml|Cargo\.toml|go\.mod|Gemfile|Pipfile)$/i;
8
+ const REFERENCE_FILE_PATTERN = /(^|\/)(references?|docs?|knowledge|examples?)\//i;
9
+ const ASSET_FILE_PATTERN = /\.(png|jpe?g|gif|webp|svg|pdf|zip|tar|gz|mp4|mov|mp3|wav|exe|dll|bin)$/i;
10
+ export async function scan(options) {
11
+ const targets = await resolveScanTargets(options);
12
+ const reports = [];
13
+ for (const target of targets) {
14
+ const resolved = await resolveTarget(target, options.keepTemp);
15
+ try {
16
+ const roots = await discoverSkillRoots(resolved.localPath);
17
+ if (roots.length === 0) {
18
+ throw new Error(`No SKILL.md files found under ${target}`);
19
+ }
20
+ for (const root of roots) {
21
+ reports.push(await scanSkillRoot(root, resolved.displayTarget));
22
+ }
23
+ }
24
+ finally {
25
+ await resolved.cleanup?.();
26
+ }
27
+ }
28
+ return {
29
+ generatedAt: new Date().toISOString(),
30
+ target: options.installed ? "installed skills" : targets.join(", "),
31
+ reports,
32
+ summary: summarize(reports)
33
+ };
34
+ }
35
+ export async function scanSkillRoot(rootPath, target) {
36
+ const { files, textFiles } = await readSkillFiles(rootPath);
37
+ const skillFile = textFiles.find((file) => file.path.toLowerCase() === "skill.md");
38
+ const context = {
39
+ rootPath,
40
+ skillName: deriveSkillName(rootPath, skillFile?.content),
41
+ files,
42
+ textFiles,
43
+ skillFile,
44
+ metrics: buildMetrics(files, textFiles, skillFile)
45
+ };
46
+ const findings = sortFindings(rules.flatMap((rule) => rule.run(context)));
47
+ const scoring = scoreFindings(findings);
48
+ return {
49
+ target,
50
+ rootPath,
51
+ skillName: context.skillName,
52
+ score: scoring.score,
53
+ grade: scoring.grade,
54
+ recommendation: scoring.recommendation,
55
+ categories: scoring.categories,
56
+ findings,
57
+ metrics: context.metrics
58
+ };
59
+ }
60
+ async function resolveScanTargets(options) {
61
+ if (options.installed) {
62
+ const installedDirs = commonInstalledSkillDirs();
63
+ const existingDirs = [];
64
+ for (const dir of installedDirs) {
65
+ if (await pathExists(dir)) {
66
+ existingDirs.push(dir);
67
+ }
68
+ }
69
+ if (existingDirs.length === 0) {
70
+ throw new Error("No common installed skill directories were found.");
71
+ }
72
+ return existingDirs;
73
+ }
74
+ if (!options.target) {
75
+ throw new Error("Missing target. Use: skill-preflight scan <path-or-github-url>");
76
+ }
77
+ return [options.target];
78
+ }
79
+ function buildMetrics(files, textFiles, skillFile) {
80
+ return {
81
+ totalFiles: files.length,
82
+ totalBytes: files.reduce((sum, file) => sum + file.bytes, 0),
83
+ textFiles: textFiles.length,
84
+ scriptFiles: files.filter((file) => SCRIPT_FILE_PATTERN.test(file.path)).length,
85
+ dependencyFiles: files.filter((file) => DEPENDENCY_FILE_PATTERN.test(file.path)).length,
86
+ referenceFiles: files.filter((file) => REFERENCE_FILE_PATTERN.test(file.path)).length,
87
+ assetFiles: files.filter((file) => ASSET_FILE_PATTERN.test(file.path)).length,
88
+ skillMdBytes: skillFile?.bytes ?? 0,
89
+ skillMdLines: skillFile?.lines.length ?? 0,
90
+ estimatedActivationTokens: skillFile ? estimateTokens(skillFile.content) : 0,
91
+ hasSkillMd: Boolean(skillFile),
92
+ hasReadme: files.some((file) => /^README(\.[a-z0-9]+)?$/i.test(path.basename(file.path))),
93
+ hasLicense: files.some((file) => /^LICEN[CS]E(\.[a-z0-9]+)?$/i.test(path.basename(file.path))),
94
+ hasExamples: files.some((file) => /(^|\/)(examples?|samples?)\//i.test(file.path) || /example/i.test(file.path)),
95
+ hasTests: files.some((file) => /(^|\/)(test|tests|fixtures?|evals?)\//i.test(file.path) || /\.(test|spec)\./i.test(file.path))
96
+ };
97
+ }
98
+ function deriveSkillName(rootPath, skillContent = "") {
99
+ const nameMatch = skillContent.match(/(^|\n)name\s*:\s*["']?([^"'\n]+)["']?/i);
100
+ return nameMatch?.[2]?.trim() || path.basename(rootPath);
101
+ }
102
+ function summarize(reports) {
103
+ if (reports.length === 0) {
104
+ return {
105
+ count: 0,
106
+ averageScore: 0,
107
+ minScore: 0,
108
+ highRiskCount: 0
109
+ };
110
+ }
111
+ const total = reports.reduce((sum, report) => sum + report.score, 0);
112
+ return {
113
+ count: reports.length,
114
+ averageScore: Math.round(total / reports.length),
115
+ minScore: Math.min(...reports.map((report) => report.score)),
116
+ highRiskCount: reports.filter((report) => report.score < 60 || report.findings.some((finding) => finding.severity === "critical")).length
117
+ };
118
+ }
119
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/core/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CategoryScore, Finding } from "./types.js";
2
+ export declare function scoreFindings(findings: Finding[]): {
3
+ score: number;
4
+ grade: string;
5
+ recommendation: string;
6
+ categories: CategoryScore[];
7
+ };
8
+ export declare function sortFindings(findings: Finding[]): Finding[];
@@ -0,0 +1,36 @@
1
+ import { CATEGORIES } from "./categories.js";
2
+ import { clamp, gradeForScore, recommendationForScore, severityRank } from "./utils.js";
3
+ export function scoreFindings(findings) {
4
+ const categories = CATEGORIES.map((category) => {
5
+ const impact = findings
6
+ .filter((finding) => finding.category === category.id)
7
+ .reduce((sum, finding) => sum + finding.scoreImpact, 0);
8
+ return {
9
+ id: category.id,
10
+ label: category.label,
11
+ maxScore: category.maxScore,
12
+ score: clamp(category.maxScore - impact, 0, category.maxScore)
13
+ };
14
+ });
15
+ const score = Math.round(categories.reduce((sum, category) => sum + category.score, 0));
16
+ return {
17
+ score,
18
+ grade: gradeForScore(score),
19
+ recommendation: recommendationForScore(score),
20
+ categories
21
+ };
22
+ }
23
+ export function sortFindings(findings) {
24
+ return [...findings].sort((a, b) => {
25
+ const severityDelta = severityRank(b.severity) - severityRank(a.severity);
26
+ if (severityDelta !== 0) {
27
+ return severityDelta;
28
+ }
29
+ const impactDelta = b.scoreImpact - a.scoreImpact;
30
+ if (impactDelta !== 0) {
31
+ return impactDelta;
32
+ }
33
+ return a.id.localeCompare(b.id);
34
+ });
35
+ }
36
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/core/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExF,MAAM,UAAU,aAAa,CAAC,QAAmB;IAM/C,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,QAAQ;aACpB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;aACrD,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAE1D,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;SAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAExF,OAAO;QACL,KAAK;QACL,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;QAC3B,cAAc,EAAE,sBAAsB,CAAC,KAAK,CAAC;QAC7C,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAmB;IAC9C,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1E,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;QAClD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,98 @@
1
+ export type CategoryId = "security" | "permissions" | "token" | "footprint" | "maintainability" | "reliability" | "compatibility";
2
+ export type Severity = "info" | "low" | "medium" | "high" | "critical";
3
+ export interface CategoryDefinition {
4
+ id: CategoryId;
5
+ label: string;
6
+ maxScore: number;
7
+ }
8
+ export interface Finding {
9
+ id: string;
10
+ category: CategoryId;
11
+ severity: Severity;
12
+ title: string;
13
+ description: string;
14
+ recommendation: string;
15
+ scoreImpact: number;
16
+ file?: string;
17
+ line?: number;
18
+ }
19
+ export interface TextFile {
20
+ path: string;
21
+ absolutePath: string;
22
+ bytes: number;
23
+ content: string;
24
+ lines: string[];
25
+ }
26
+ export interface ScannedFile {
27
+ path: string;
28
+ absolutePath: string;
29
+ bytes: number;
30
+ isText: boolean;
31
+ }
32
+ export interface ScanMetrics {
33
+ totalFiles: number;
34
+ totalBytes: number;
35
+ textFiles: number;
36
+ scriptFiles: number;
37
+ dependencyFiles: number;
38
+ referenceFiles: number;
39
+ assetFiles: number;
40
+ skillMdBytes: number;
41
+ skillMdLines: number;
42
+ estimatedActivationTokens: number;
43
+ hasSkillMd: boolean;
44
+ hasReadme: boolean;
45
+ hasLicense: boolean;
46
+ hasExamples: boolean;
47
+ hasTests: boolean;
48
+ }
49
+ export interface SkillContext {
50
+ rootPath: string;
51
+ skillName: string;
52
+ files: ScannedFile[];
53
+ textFiles: TextFile[];
54
+ skillFile?: TextFile;
55
+ metrics: ScanMetrics;
56
+ }
57
+ export interface CategoryScore {
58
+ id: CategoryId;
59
+ label: string;
60
+ maxScore: number;
61
+ score: number;
62
+ }
63
+ export interface SkillReport {
64
+ target: string;
65
+ rootPath: string;
66
+ skillName: string;
67
+ score: number;
68
+ grade: string;
69
+ recommendation: string;
70
+ categories: CategoryScore[];
71
+ findings: Finding[];
72
+ metrics: ScanMetrics;
73
+ }
74
+ export interface ScanReport {
75
+ generatedAt: string;
76
+ target: string;
77
+ reports: SkillReport[];
78
+ summary: {
79
+ count: number;
80
+ averageScore: number;
81
+ minScore: number;
82
+ highRiskCount: number;
83
+ };
84
+ }
85
+ export interface ScanOptions {
86
+ target?: string;
87
+ installed?: boolean;
88
+ keepTemp?: boolean;
89
+ }
90
+ export interface Rule {
91
+ id: string;
92
+ run(context: SkillContext): Finding[];
93
+ }
94
+ export interface ResolvedTarget {
95
+ displayTarget: string;
96
+ localPath: string;
97
+ cleanup?: () => Promise<void>;
98
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { Severity } from "./types.js";
2
+ export declare function estimateTokens(text: string): number;
3
+ export declare function severityRank(severity: Severity): number;
4
+ export declare function toPosixPath(value: string): string;
5
+ export declare function isProbablyText(buffer: Buffer): boolean;
6
+ export declare function gradeForScore(score: number): string;
7
+ export declare function recommendationForScore(score: number): string;
8
+ export declare function clamp(value: number, min: number, max: number): number;
9
+ export declare function pathExists(filePath: string): Promise<boolean>;
10
+ export declare function firstMatchLine(lines: string[], pattern: RegExp): number | undefined;
@@ -0,0 +1,82 @@
1
+ import { stat } from "node:fs/promises";
2
+ import path from "node:path";
3
+ export function estimateTokens(text) {
4
+ if (!text) {
5
+ return 0;
6
+ }
7
+ const asciiChars = text.replace(/[^\x00-\x7F]/g, "").length;
8
+ const nonAsciiChars = text.length - asciiChars;
9
+ return Math.ceil(asciiChars / 4 + nonAsciiChars / 1.8);
10
+ }
11
+ export function severityRank(severity) {
12
+ switch (severity) {
13
+ case "critical":
14
+ return 5;
15
+ case "high":
16
+ return 4;
17
+ case "medium":
18
+ return 3;
19
+ case "low":
20
+ return 2;
21
+ case "info":
22
+ return 1;
23
+ }
24
+ }
25
+ export function toPosixPath(value) {
26
+ return value.split(path.sep).join("/");
27
+ }
28
+ export function isProbablyText(buffer) {
29
+ if (buffer.length === 0) {
30
+ return true;
31
+ }
32
+ const sample = buffer.subarray(0, Math.min(buffer.length, 8000));
33
+ let suspicious = 0;
34
+ for (const byte of sample) {
35
+ if (byte === 0) {
36
+ return false;
37
+ }
38
+ if (byte < 7 || (byte > 14 && byte < 32)) {
39
+ suspicious += 1;
40
+ }
41
+ }
42
+ return suspicious / sample.length < 0.08;
43
+ }
44
+ export function gradeForScore(score) {
45
+ if (score >= 90)
46
+ return "A";
47
+ if (score >= 80)
48
+ return "B";
49
+ if (score >= 70)
50
+ return "C";
51
+ if (score >= 60)
52
+ return "D";
53
+ return "F";
54
+ }
55
+ export function recommendationForScore(score) {
56
+ if (score >= 90)
57
+ return "Recommended";
58
+ if (score >= 80)
59
+ return "Good, review minor findings";
60
+ if (score >= 70)
61
+ return "Install with caution";
62
+ if (score >= 60)
63
+ return "Needs review before install";
64
+ return "High risk, do not install blindly";
65
+ }
66
+ export function clamp(value, min, max) {
67
+ return Math.max(min, Math.min(max, value));
68
+ }
69
+ export async function pathExists(filePath) {
70
+ try {
71
+ await stat(filePath);
72
+ return true;
73
+ }
74
+ catch {
75
+ return false;
76
+ }
77
+ }
78
+ export function firstMatchLine(lines, pattern) {
79
+ const index = lines.findIndex((line) => pattern.test(line));
80
+ return index >= 0 ? index + 1 : undefined;
81
+ }
82
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from "./cli.js";
3
+ await runCli(process.argv);
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ScanReport } from "../core/types.js";
2
+ export type ReportFormat = "text" | "json" | "markdown" | "html" | "sarif";
3
+ export declare function renderReport(report: ScanReport, format: ReportFormat): string;
4
+ export declare function parseFormat(value: string): ReportFormat;