jev-lintFind the claims your second brain forgot to question.

A cost-capped linter for Obsidian vaults and Markdown wikis. It finds possible contradictions, dated claims, unresolved markers, and missing pages—then shows the exact evidence.

Lint before lore hardens.

Regex catches broken syntax. jev-lint adds a narrow semantic pass for claims that disagree or age badly, using TypeSafe Jev as a second opinion—not a hidden editor.

$ jev-lint ~/vault

99 pages · 1,267 Jev questions
possible contradiction
  wiki/decisions/agent-routing.md:18
possibly stale claim
  wiki/decisions/network-guard.md:14

113.9s · 16 findings · $0.0243

Four checks.
Two kinds of evidence.

Jev signal

Possible contradictions

Compares exact claim pairs from linked or strongly overlapping pages.

Jev signal

Possibly stale claims

Scores dated statements that may need a current source.

Rule check

Unresolved markers

Finds TODO, FIXME, [?], and explicit unresolved comments.

Rule check

Missing pages

Resolves Obsidian wikilinks against scanned paths, titles, and aliases.

Evidence, not vibes.

Every semantic flag is tied to the quote Jev actually scored. The report keeps rule checks separate from model probabilities and makes its sampling limits explicit.

POSSIBLE CONTRADICTIONJev probability 91%
“The Atlas platform serves every API request from Amsterdam.”
VERSUS
“The Atlas platform serves every API request from Frankfurt.”

Verify scope and dates before changing either note.

A real vault, one bounded pass.

99pages
1,267questions
113.9seconds
16findings
$0.0243input cost

Measured on a personal Markdown knowledge base on 17 September 2026. See the README for scope and limitations.

Run it where your notes live.

Python 3.11+. Your vault remains local; only selected claim text is sent for semantic scoring.

pipx install git+https://github.com/vayungodara/jev-lint
jev-lint ~/path/to/vault --dry-run
jev-lint ~/path/to/vault --open

Installation, limits, and cost model →