jev-linter-action
GitHub Action that reviews repository files against your yes/no questions with Jev and passes only when every answer meets its threshold.
Overview
Jev Linter Action reviews repository files using your own yes/no questions. Jev returns probabilities, and the action passes only when every expected answer meets its configured threshold. A plain question expects yes with probability at least 0.8; object form allows negative expectations and custom minimum probabilities. Files are matched by one or more globs and reviewed together by default, or independently with per-file mode. Missing inputs, malformed questions and ambiguous combinations fail before any call.
It runs on Node 24 from a checked-in bundle with no install step. An example reviews a complete Sable agent bundle. The README warns not to use whole-bundle contradiction or duplication questions as consistency checks, because oversized bundles are split and distant chunks are never compared, and recommends representative labelled evaluation before adopting focused comparisons.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Are navigation paths grounded in supplied evidence rather than guessed? (example) | — |
| Yes / no | Do the instructions require finishing the itinerary even after the visitor declines it? (expect false) | — |
How it works
- Configure model, globs, questions and API key in a workflow
- Action reads matched files
- Jev answers each question
- Pass only if every answer meets its expectation and threshold
Strengths
- No config file or install step
- Custom expectations and thresholds
- Validates inputs before calling
Caveats
- Large bundles are chunked; cross-chunk comparisons are not possible
- Needs labelled evaluation for reliable thresholds
Getting started
Add `uses: sable-inc/jev-linter-action@v1` with model, glob, questions and api-key to a workflow.At a glance
- Type
- Project
- Status
- beta
- Language
- TypeScript
- Runtime
- GitHub Action (Node 24)
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
\`glob\` accepts one pattern or a newline-separated list. All matched files are reviewed together by default; \`per-file: true\` reviews each file independently. Missing inputs, malformed questions and ambiguous combinations fail before calls.
logicrw/awesome-jev-projects
Frequently asked questions
What does Jev decide?
Whether each yes/no property holds for the matched files.
What is the default threshold?
Yes with probability at least 0.8.
Can it detect contradictions across a large bundle?
No; the README warns distant chunks are never compared.
Related projects
Claude Code plugin that checks every reply and file edit against your CLAUDE.md rules with one Jev yes/no per rule.
PluginbetaTypeScriptProse linter for AI writing tells: regex handles 18, Jev judges 15 as Nouls in one call, shipped as a Claude Code Stop hook.
HookbetaPythonPublished Jev client and claim check from the Fake/Real evidence-review site, where Jev filters sources and judges each claim.
ProjectproductionTypeScriptRust 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.
Hookbeta