jev-lint (mizchi)
Natural-language linter combining ast-grep selectors with Jev to catch misleading names, stale comments and tests that miss their claims.
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
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does the comment above this code claim something that is not true of the code? | — |
| Yes / no | Does this function do what its name says? | — |
| Yes / no | Does this test verify the behaviour it claims? | — |
How it works
- ast-grep selects code matching each rule
- Ask Jev the rule sentence about each match
- Compare with the rule's calibrated cutoff
- 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-projectsNatural-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-jevChecks 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.
CLIproductionRustCoding-agent hook that asks Jev one yes/no per project rule on every edit or turn and makes the agent fix any violation.
HookbetaTypeScriptAdvisor for coding agents: git and Stop hooks flag test tampering, secrets and skipped hooks, with optional Jev review findings.
HookbetaRead-only Go CLI that checks files against your plain-language code rules with Jev, locally or in CI.
CLIbetaGoCLI and agent commands auditing a git diff against YAML standards packs, scoring each hunk with Jev so agents fix only flags.
Agent skillbetaTypeScriptFuzzy linter hook for Claude Code and Codex where Jev checks each written file against team rules and reports violations at edit time.
HookbetaTypeScript