jev-enforce
Claude Code plugin that checks every reply and file edit against your CLAUDE.md rules with one Jev yes/no per rule.
Overview
jev-enforce makes Claude Code follow CLAUDE.md (or AGENTS.md) by checking output against it. The author's premise is that CLAUDE.md is context, not a constraint: rules hold for a few turns, then raw SQL appears in a handler or a test becomes it.skip. The plugin reads the same rule files Claude Code does, treats each bullet as a rule, and classifies each once (cached) as constraining replies, code, both or neither, skipping git and workflow rules.
A Stop hook checks the final reply and a PostToolUse hook checks Edit, Write and MultiEdit; an end mode records edits and checks them all with the reply in parallel once per turn. Broken rules come back as a block decision quoting the rule, once per turn so it cannot loop. The README estimates about 350 ms and about 3 cents per 1,000 checks. Without a key it does nothing and cannot break a session.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Does this rule constrain replies, code, both or neither? | replies · code · both · neither |
| Yes / no | Does this reply or edit break this rule? | — |
How it works
- Read and classify rules from CLAUDE.md files (cached)
- On edit or stop, ask one Noul per applicable rule in one request
- Return block with quoted rules if any are broken
- Claude fixes in the same turn; checks run once per turn
Strengths
- Enforces project rules on every turn cheaply
- Cannot loop or break a session
- CLI works via npx with nothing to install
Caveats
- The fix itself is not re-checked
- Requires a TypeSafe key for checks
Getting started
`claude plugin marketplace add erkamyaman/jev-enforce` and `claude plugin install jev-enforce@jev-enforce`, then add TYPESAFE_API_KEY to ~/.claude/settings.json; or try `npx jev-enforce check --as code src/orders.ts`.At a glance
- Type
- Plugin
- Status
- beta
- Language
- TypeScript
- Runtime
- Claude Code plugin and npx CLI
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
📏 Claude Code plugin that makes Claude follow your CLAUDE.md: every reply and edit checked by TypeSafe Jev ✅
logicrw/awesome-jev-projects📏 Claude Code plugin that makes Claude follow your CLAUDE.md: every reply and edit checked by TypeSafe Jev ✅.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Whether each reply or edit breaks each CLAUDE.md rule, and which rules apply to code or replies.
Can it get stuck in a loop?
No, it blocks at most once per turn.
What does it cost?
The README estimates about 3 cents per 1,000 checks.
Related projects
Coding-agent hook that asks Jev one yes/no per project rule on every edit or turn and makes the agent fix any violation.
HookbetaTypeScriptClaude Code plugin with nine Jev-judged gates for rules, scope, intent, completion and claims that escalate but never approve.
HookbetaTypeScriptProse linter for AI writing tells: regex handles 18, Jev judges 15 as Nouls in one call, shipped as a Claude Code Stop hook.
HookbetaPythonGitHub Action that reviews repository files against your yes/no questions with Jev and passes only when every answer meets its threshold.
ProjectbetaTypeScriptLean Pi supervisor: zero-token regex guardrails, done-check verification, per-turn routing and a Jev/Clef semantic slop gate on diffs.
ProjectbetaTypeScriptPi extension that checks proposed code edits against repository Markdown rules with Jev, reporting rule text and line ranges.
ProjectbetaTypeScript