Your code passes.
Does it make sense?

Turn your team’s review standards into checks for Claude Code and Codex. JevLint flags fuzzy rule violations while the agent is still working.

Paste into Claude Code. Review the setup and proposed rules before applying them.

Open source · MIT · your rules live in your repo

A passing test that proves nothing. Animated saved case; correction tested locally.
Demo transcript
  1. 0–6s: “Your test passes. Does it prove anything?” Code compares the result with itself. One red pulse follows.
  2. 6–10s: “This test proves nothing.” An editorial headline for a saved TypeSafe Jev finding.
  3. 10–14s: A real expected value replaces self-equality. Broken code now fails the local test. The correction was not re-scored by Jev.
  4. 14–20s: An illustrative workflow moves feedback from review to the edit; review remains.
  5. 20–24s: “41% fewer rule-covered review comments.” Historical result from 48 Claude Code runs, scoped below.
  6. 24–28s: “JevLint. Your team’s rules. In the edit. Keep the code. Cut the slop.” https://jevlint.dev

A linter knows syntax. You know your team.

The standards you keep explaining in review.

// tests should check behavior, not themselves
// don’t use an effect to derive state
// fallbacks shouldn’t hide bad data

What counts as a useful test or an idiomatic pattern depends on your team. Make it a focused yes/no rule. JevLint checks edits against it.

Start with 177 tested rules across five packs. Switch rules off, scope them to folders, or add yours in .jev-lint/. Explore the packs →

  1. 01 · set the standard

    Your repo. Your rules.

    Your agent reads the repo’s guidance and proposes rules for you to approve.

  2. 02 · catch it at the edit

    Feedback goes straight back.

    The hook checks changed code and sends findings to the agent while it works.

  3. 03 · keep your tools

    Review still matters.

    Fuzzy judgments can be wrong. Keep tests, linters and review. Checks fail open on API errors.

One measured result.

41% fewer
rule-covered review comments.

32 findings with JevLint off. 19 with it on. Across 48 synthetic Claude Code runs with TypeSafe Jev: 12 React and SwiftUI tasks, run twice per condition.

September 2026 · AI review and rule mapping · not measured time, token or review-cycle savings. Read the results →

Try it on your repo.

One paste. Your agent takes it from here.

You’ll need Bun and a provider API key. TypeSafe Jev is the default; OpenAI Decisions API and Cloudflare Clef are optional.

Read the setup prompt
prompt.txt
Set up jev-lint for me: https://jevlint.dev
Source: https://github.com/ckorhonen/jev-lint
Clone it to ~/Repos/jev-lint if it isn't there, then follow its jev-lint-setup skill
(.agents/skills/jev-lint-setup/SKILL.md): use TypeSafe Jev by default; if I choose OpenAI
Decisions API or Cloudflare Clef, follow its README setup. Check the selected provider's
credentials without printing them, show me the dry run, install
the hook once I confirm, and run the smoke test. Then use its jev-lint-rules skill on this
repo: read all of our agent instructions, skills, docs and linter configs, and propose rules
for me to approve before writing anything.
I'm using Claude Code, so install the hook for Claude Code (--claude-only).

Checks send code and rule questions to your chosen provider; usage is billed to your account. Provider comparisons are pending.

In development · hosted reviews

Your team’s rules.
Every pull request.

The same standards, brought to pull request review. Coming next. The open-source hooks are available today.