@veriova/ctxlint
v0.1.5
Published
Lint your AI coding context: find drift, bloat, staleness and gaps across CLAUDE.md, .cursor/rules, AGENTS.md and copilot-instructions. The free CLI from Veriova.
Maintainers
Readme
ctxlint
Lint your AI coding context. The free CLI from Veriova.
Your team runs Claude Code, Cursor and Copilot, each reading its own
instruction files (CLAUDE.md, .cursor/rules, AGENTS.md,
copilot-instructions.md). Engineers edit one and forget the others. Files
bloat past the token budget where models stop following them. Rules go stale
while the codebase moves on. Result: every AI tool on your team works from
different, outdated instructions, and ships code that ignores your standards.
ctxlint finds that rot in seconds:
npx @veriova/ctxlintctxlint: AI context report
Found 6 context files:
CLAUDE.md [Claude Code] ~9,210 tokens
.cursor/rules/base.mdc [Cursor] ~2,140 tokens
apps/api/CLAUDE.md [Claude Code] ~1,830 tokens 204d stale
...
Findings:
▲ [token-bloat] CLAUDE.md is ~9,210 tokens: above the ~8,000-token budget where rule-following degrades.
▲ [drift] CLAUDE.md and .cursor/rules/base.mdc cover the same scope for different tools but share <20% of rules.
▲ [stale] apps/api/CLAUDE.md last changed ~204 days before the repo's latest commit.
ℹ [coverage] "apps/web" has Cursor rules but no CLAUDE.md: Claude Code users there get no instructions.What it checks
| Rule | What it catches |
|---|---|
| token-bloat | Context files past the ~8k-token attention budget (models skim or ignore the rest) |
| stale | Rules untouched for 90+ days while the repo keeps moving |
| drift | Same scope, different tools, almost no shared rules: your AIs disagree |
| duplication | Near-identical rules copy-pasted across tools: divergence waiting to happen |
| coverage | A directory instructs one tool but leaves the others blind |
| legacy | Deprecated formats (.cursorrules) |
CI
ctxlint exits non-zero on errors, so it drops straight into CI:
- run: npx @veriova/ctxlintSupported files
CLAUDE.md / CLAUDE.local.md · .cursor/rules/**/*.{md,mdc} · .cursorrules ·
AGENTS.md · .github/copilot-instructions.md · GEMINI.md · .windsurfrules
Found at the repo root and nested (monorepos welcome).
From the CLI to your whole team
ctxlint finds the rot in one repo, on one machine, for free. It stays free.
But the rot is an org problem: every repo, every engineer, every AI tool drifting apart. Fixing it once locally does not keep it fixed across the team. That is what Veriova does: it hosts one source of truth for your organization's AI context, generates the per-tool files from it, keeps them in sync across repos and people, and gives you an audit trail of what changed and why.
ctxlint(this CLI): scan and lint, free, local and CI.ctxlint compile: one canonical source, generated per-tool files, so you never hand-edit a generated file again. (Coming next.)- Veriova: the same thing for the whole org. Shared context, team sync across repos, drift checks on PRs, and a record of every change.
MIT. Built by Veriova.
