/** * Plugin health leaderboard — rank many plugins by the deterministic structural * signals `scan` already computes (research/divergent-bets.md #9, the engine). * * This is the no-model half: a defensible health score from concrete facts * (missing hook scripts, skills that can't trigger, agents with no tool * contract, untested surfaces). It deliberately does NOT score on the loader's * free-text warnings — those include doc-mention false positives (see * src/scan.ts), and a ranking that penalizes a prose mention would be unfair. * The behavioural columns (real trigger-rate, observed egress, safety) need a * model and stack on top later; this part runs anywhere in CI for free. */ import { type PluginScore } from "./score-core.js"; export { type PluginScore, type Deduction, W_MISSING_HOOK, W_NO_DESCRIPTION, W_DANGLING_REF, W_OVERLAP, W_NO_CONTRACT, W_TRIFECTA, gradeFor, reportDeductions, isEmptyMachine, computeIntegrityScore, scoreReport, } from "./score-core.js"; /** * Scan + score each directory, ranked best-first (ties broken by name). * * 🔴 PER-DIRECTORY HARNESS DETECTION, because a leaderboard is a list of OTHER * people's repos and they do not all target the same harness. `vigiles audit` on * ONE target resolves the adapter (`resolveHarnessSelection`) and threads * `adapter.layout` into `scanPlugin`; the multi-target branch of the same command * called `scanPlugin(dir)` bare, so every Codex plugin in a board was scanned with * the Claude Code layout — no surfaces found, nothing to deduct, and it ranked at * the TOP. A silent zero reads as a perfect score. * * Detection only (no `--harness=`/config override): the flag and the config key * describe the repo the user is standing in, not the N vendored directories being * compared, so forcing one harness onto all of them would be the same bug wearing * a different hat. */ export declare function rankPlugins(dirs: readonly string[]): PluginScore[]; /** Format a ranked leaderboard as human-readable text. */ export declare function formatLeaderboard(scores: readonly PluginScore[]): string; /** * Format a ranked leaderboard as a Markdown table — the PUBLISHABLE form (a README, * a gist, the leaderboard site). Shows the top 2 deductions per plugin; the full * breakdown is in `--json`. Sibling of the plain-text {@link formatLeaderboard}. */ export declare function formatLeaderboardMarkdown(scores: readonly PluginScore[]): string; //# sourceMappingURL=leaderboard.d.ts.map