oxlint-plugin-jev
Oxlint plugin where lint rules are plain-English yes/no questions about code that Jev answers, reporting matches above a cutoff.
Overview
oxlint-plugin-jev lets you write Oxlint rules in plain English. Each rule is a yes/no question about a function, a call, a JSX element or a whole file, such as whether a call writes personal data to a log or whether a function's name implies it only reads while its body writes. Each matching node is sent to Jev with the question, and the plugin reports an error when the yes-probability is at or above the rule's cutoff.
Rules live in .oxlintrc.json under a single jev/ask rule with an id, target, question and cutoff; file rules can add a location question to underline the right spot. The target decides what Jev reads, with no selector syntax. In CI, a ci: fail option makes runs fail if Jev cannot be reached rather than pass silently. The package is labelled experimental.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this call write personal data, such as an email or phone number, to a log or console? | yes · no |
| Yes / no | Does this function's name imply it only reads data, while its body also writes or sends something? | yes · no |
How it works
- Define plain-English rules with targets and cutoffs.
- Oxlint visits matching functions, calls, JSX or files.
- Each match is sent to Jev with the question.
- Report when the yes-probability meets the cutoff.
Strengths
- Semantic lint rules without writing AST logic.
- Per-rule cutoffs.
- CI fail mode prevents silent passes.
Caveats
- Experimental package.
- Sends code snippets to TypeSafe; cost scales with matches.
Getting started
npm i -D oxlint oxlint-plugin-jev, export TYPESAFE_API_KEY, and add jev/ask rules to .oxlintrc.json.At a glance
- Type
- Plugin
- Status
- prototype
- Language
- TypeScript
- Runtime
- Oxlint JS plugin
- Has code
- yes
Use cases and integrations
How curated lists describe it
Oxlint rules written as plain-English questions about a function, call, JSX element or file, reported when the yes-probability clears your cutoff.
MrJev/awesome-jev
Frequently asked questions
How do I write a rule?
As a yes/no question with a target (function, call, jsx or file) and a cutoff.
What happens if Jev is unreachable in CI?
With ci: fail, the run fails instead of passing quietly.
Is it stable?
No, it is marked experimental.
Related projects
Go linter whose rules are plain-English questions: static analysis picks nodes, Jev answers a Noul about each one.
CLIbetaGoPython/TypeScript/Go chatbot safety library checking user input and bot replies with Jev and returning one actionable verdict per message.
LibraryproductionPythonRust 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.
HookbetaCLI that uses Jev to score JS/TS code comments for accuracy and usefulness and lists the weakest first.
ProjectbetaTypeScript