/** * vigiles — SKILL.md missing-fence detector (the cross-reference moat applied * to SKILL.md frontmatter structure). * * A SKILL.md that begins with frontmatter-looking keys (`name:`, `description:`, * `allowed-tools:`, etc.) but is MISSING the opening `---` fence is a very * common real-world pain: the harness loads the whole file as plain body text — * no name, no description, no tool list — so the skill is INVISIBLE and never * fires. The model-selector has nothing to match against and the agent can never * find the skill at all. * * HIGH-PRECISION / FP-SAFE, by the same don't-cry-wolf discipline as the rest of * vigiles (see `danglingRefs`, `confidentToolIssues`): we flag ONLY when the * first non-blank, non-comment line matches a KNOWN frontmatter key at column 0 * from an explicit whitelist (`name`, `description`, `allowed-tools`, `tools`, * `model`, `color`, `disable-model-invocation`, `argument-hint`, `version`, * `license`, `metadata`). A random prose line like `Note: something` is never * flagged — the whitelist is what keeps the check FP-safe. Prefer MISSING a * real finding over emitting a false positive. * * Pure: no IO. Input is the raw SKILL.md content string. */ /** * A finding returned when a SKILL.md is missing its opening `---` fence but * begins with what looks like a frontmatter key. */ export interface SkillFenceFinding { /** The frontmatter-looking key that appears unfenced (e.g. `"name"`). */ readonly key: string; /** 1-based line number of the first unfenced key in the content string. */ readonly line: number; /** Human-readable explanation and fix. */ readonly message: string; } /** * Detect a SKILL.md body that begins with a known frontmatter key at column 0 * but is missing the required opening `---` fence. * * Returns a {@link SkillFenceFinding} describing the unfenced key, or `null` * when no problem is detected (the file is correctly fenced, starts with prose, * or is empty). * * Pure — no IO. The shared detector behind both `vigiles lint` * (`skill-missing-fence` rule) and `vigiles audit` — one detector, no drift. */ export declare function skillMissingFence(skillBody: string): SkillFenceFinding | null; //# sourceMappingURL=skill-missing-fence.d.ts.map