/** * Skill Compliance Checker — post-hoc, deterministic verification that real * source files follow the checkable rules described in skills/ATOMIC_DESIGN.md * and skills/MOTION_VIDEO_DESIGN.md. * * No LLM reads these docs at check time — the checkable rules are hand-extracted * into the regex/string checks below (each cites the doc line it came from), so * this stays fast and deterministic like specs/validator.ts. This does not make * an agent obey markdown — it is the same mechanism a linter uses to enforce a * style guide: run after the fact, over real files, independent of whether the * agent read the doc, generated the file via memi, or hand-wrote it. * * skills/DESIGN_SYSTEM_REFERENCE.md contributes nothing checkable — it is a * pure component-name-to-external-URL catalog with zero required props, states, * durations, or naming rules. getReferenceCoverage() below surfaces it as a * read-only benchmark annotation, never a pass/fail input. */ export type ComplianceSeverity = "critical" | "warning"; export interface ComplianceFinding { severity: ComplianceSeverity; rule: string; file: string; message: string; fix?: string; docRef: string; } export interface ComplianceReport { version: 1; target: string; generatedAt: string; findings: ComplianceFinding[]; summary: { critical: number; warning: number; filesChecked: number; }; } export interface ReferenceCoverageNote { component: string; systemsCatalogued: number; note: string; } interface SourceFile { path: string; content: string; } type Ruleset = "atomic" | "motion"; /** * Run the requested rule families over already-in-memory source files. * Accepts either a full-project scan (RawFile[]-shaped, extra fields ignored) * or a single memi-generated file, since only `path`/`content` are read. */ export declare function checkSkillCompliance(files: SourceFile[], opts?: { rulesets?: Ruleset[]; target?: string; }): ComplianceReport; export declare function getReferenceCoverage(componentKind: string): ReferenceCoverageNote[]; export {};