@synapse/geo-lint
24-rule GEO (Generative Engine Optimization) linter — scores how well a site
or project is set up for AI coding agents to discover, understand, and
recommend it. Returns a 0–100 Growth Score and a grade A–F.
import { lint, applyFixes } from "@synapse/geo-lint";
const report = await lint("https://example.com");
console.log(report.score, report.grade);
const local = await lint("./my-next-app");
const fixed = await applyFixes("./my-next-app");
See the full 24-rule checklist or fetch
synapse://docs/geo-checklist from the MCP server for the live list.
Rule shape
Each rule exports:
{
id, number, title, description, category, weight, severity, autoFixable,
check(target): Promise<{ passed, evidence?, suggestion? }>,
fix?(target): Promise<{ applied, filesWritten[] }>,
}
lint() runs all rules in parallel via Promise.all.
URL vs project targets
- URL: fetches the page +
robots.txt, sitemap.xml, llms.txt,
llms-full.txt, and /.well-known/agent-answer.json once and reuses them
across rules.
- Project path: detects framework (Next / Astro / Vite / Remix / SvelteKit /
Nuxt / plain HTML), finds the build output, and runs rules against the
static output +
public/ files.