Skip to content

jev-lint (mizchi)

Natural-language linter combining ast-grep selectors with Jev to catch misleading names, stale comments and tests that miss their claims.

ProjectbetaMIT

Overview

jev-lint by mizchi is a lint tool that uses Jev to decide what a parser cannot. Each rule is one sentence: an ast-grep matcher picks which code to look at, and Jev is asked that sentence about each match, answering with a probability that is compared with a per-rule cutoff calibrated on fixtures. The README's example is a function whose doc comment promises null but whose body throws, which type-checks and lints clean but is flagged at 0.89 against a 0.56 cutoff.

Forty-eight questions ship, many in several languages, for 99 rules in total: names against what they name (functions, types, npm scripts, sqlc queries), guarantees implied by names (safe, pure, idempotent, Go's Must), comments against the code beneath them, and tests against the behaviour they claim to verify, with diff-aware review. Matched code is sent to the API; only the matcher runs locally. A sample run of six findings over two files cost about a tenth of a cent, and larger-run costs are documented as measured. Documentation is in English and Japanese.

What the decision model decides

TypeQuestionAnswers
Yes / noDoes the comment above this code claim something that is not true of the code?—
Yes / noDoes this function do what its name says?—
Yes / noDoes this test verify the behaviour it claims?—

How it works

  1. ast-grep selects code matching each rule
  2. Ask Jev the rule sentence about each match
  3. Compare with the rule's calibrated cutoff
  4. Report findings, optionally only on the diff

Strengths

  • Catches issues no type checker or linter sees
  • Per-rule calibrated cutoffs
  • Measured cost data

Caveats

  • Matched code is sent to an external API
  • Rule cutoffs depend on fixtures

Getting started

`export TYPESAFE_API_KEY=...` then `npx -y jev-lint check examples`.

At a glance

Type
Project
Status
beta
Language
TypeScript
Runtime
npx CLI with ast-grep
Has code
yes
Has tests
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • lint text in code by jev scorerer

    logicrw/awesome-jev-projects
  • Natural-language linter combining ast-grep selectors with Jev verdicts to catch misleading names, stale comments, and tests that miss their stated behavior, with fixture-calibrated cutoffs and diff-aware review.

    hellogumbo/awesome-jev
  • Checks whether a function does what its name says, whether a comment is still true, and whether a test verifies what it claims, with a cutoff per rule.

    MrJev/awesome-jev

Frequently asked questions

What does Jev decide?

Whether a selected piece of code violates a one-sentence rule.

What does it catch?

Misleading names, broken implied guarantees, stale comments and tests that miss their claims.

Does code leave my machine?

Yes, matched code is sent to the API.

Related projects

  • Rust code-review gate asking Jev small typed questions about functions and tests, failing CI only on rules measured 80% right.

    CLIproductionRust
  • Coding-agent hook that asks Jev one yes/no per project rule on every edit or turn and makes the agent fix any violation.

    HookbetaTypeScript
  • Advisor for coding agents: git and Stop hooks flag test tampering, secrets and skipped hooks, with optional Jev review findings.

    Hookbeta
  • Read-only Go CLI that checks files against your plain-language code rules with Jev, locally or in CI.

    CLIbetaGo
  • CLI and agent commands auditing a git diff against YAML standards packs, scoring each hunk with Jev so agents fix only flags.

    Agent skillbetaTypeScript
  • Fuzzy linter hook for Claude Code and Codex where Jev checks each written file against team rules and reports violations at edit time.

    HookbetaTypeScript