Skip to content

jevlint

Semantic lint rules as yes/no questions to Jev, for review issues like logged secrets or unbounded retries that ESLint cannot express.

ProjectbetaMIT

Overview

This jevlint targets code-review questions that syntax-based linters cannot answer, such as whether a secret is being logged, whether a retry loop can run forever, or whether a handler leaks an internal error message. Each rule is a plain-English yes/no question phrased so that yes means violation, with criteria describing the true and false cases, a severity, a why and a suggested fix.

jevlint selects the code each rule applies to, optionally with a regex prefilter and an ast-grep candidate selector, sends it to Jev, and reports a calibrated probability. Results look like normal linter output with files, line ranges, rule ids and exit codes. Rules are tested against their own fixtures and answers are cached. Without a selector, a chunk is judged and then narrowed to the smaller window that fired. The README says to use it alongside ESLint, since deterministic rules are cheaper and exact when syntax suffices.

What the decision model decides

TypeQuestionAnswers
Yes / noDoes the code in `code` pass a password, API key, access token or other secret value to a logging call?—
Yes / noCan this retry loop run forever?—

How it works

  1. Define rules in jevlint.config.ts with question, criteria and file globs
  2. Prefilter and selectors pick candidate code
  3. Jev returns the probability that each candidate violates the rule
  4. Hits above the rule's threshold are reported with line range, why and fix
  5. jevlint test checks each rule against its fixtures

Strengths

  • Catches semantic issues that syntax rules miss
  • Fixture tests and caching make results repeatable
  • Prefilters keep API calls down
  • Familiar linter output and exit codes

Caveats

  • Requires a TypeSafe or AI gateway key
  • Line precision depends on chunking or selectors
  • Not a replacement for deterministic linters

Getting started

npm install --save-dev @hazymoon/jevlint typescript, npx jevlint init, export TYPESAFE_API_KEY=..., npx jevlint test, then npx jevlint.

At a glance

Type
Project
Status
beta
Language
TypeScript
Runtime
Node.js 22+ or Bun CLI
Has code
yes
Has tests
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • Semantic lint rules for the code-review questions a deterministic linter can't express

    logicrw/awesome-jev-projects
  • Semantic lint rules for review questions syntax can't answer, such as a logged secret or an unbounded retry loop, asked of Jev alongside ESLint.

    MrJev/awesome-jev

Frequently asked questions

How is a rule written?

As a narrow yes/no question about the code, phrased so yes means violation, with criteria for each answer.

Should it replace ESLint?

No. The README recommends it alongside ESLint for questions syntax cannot decide.

Which keys does it accept?

A TypeSafe key or an AI gateway key, as described in its providers section.

Related projects

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

    Hookbeta
  • Node quality gate that scores each diff, commit message and doc set with three Jev Score lenses and a security Noul.

    CLIbetaTypeScript
  • GitHub Action that compiles .jev.yml rules into Jev questions and fails, comments on or passes a PR based on the numbers.

    ProjectbetaTypeScript
  • 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
  • Read-only Go CLI that checks files against your plain-language code rules with Jev, locally or in CI.

    CLIbetaGo