jev
Skill1 starsChanged 6 days agoMITView on GitHub
Use the real JEV model (TypeSafe's System One decision model) via OpenRouter for fast, cheap, typed decisions — boolean/noul, choice, score — instead of burning a full LLM turn on classification, routing, filtering, or triage. Trigger whenever a task reduces to \"yes/no\", \"pick one of N\", or \"rate on a scale\" over some text/state: ticket routing, content moderation gates, file/document triage, resume screening, sentiment scoring, tool/skill selection, web-scrape link picking, context-pruning decisions, guardrail checks. NOT for text generation, summarization, free-form extraction, or multi-step reasoning — JEV can only answer with a boolean, one of a fixed list, or a number on a scale.
- Reads credentials
32 other projects use a version of this.
Adopted by
Most recently taken up by
- Lu1sDV/skillsmdtheir own version, first seen Nov 4, 2026
- josecabralf/skillstheir own version, first seen Nov 1, 2026
- dagonet/claude-code-toolkittheir own version, first seen Nov 1, 2026
- connorch/skillstheir own version, first seen Oct 28, 2026
- GastonGelhorn/jevmatetheir own version, first seen Oct 25, 2026
- Kadihx/jev-x-kittheir own version, first seen Oct 25, 2026
Used with
Projects with it also use review.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SentrySkillreview
Fixture review skill.
Also in 5 projects that use this
Other versions32 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 32
- wuyoscar/jev-skill★ 665same name
- joetawil7/first-pass★ 128same name
- FrancoisChastel/jev-code★ 44same name
- BorisLeMeec/jev★ 38same name
- flc1125/skills★ 38same name
- pragma-sh/pragma★ 25same name
- ciberjohn/Hermes-Skills★ 17same name
- ratacat/ratacats-skills★ 9same name
- Vincent-the-gamer/skills★ 9same name
- AlexPEClub/Jev-Model-Router-Claude-Code★ 8same name
22 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository26 other files it gives its agents.
- art-directorSkill
- awesome-readmeSkill
- brand-strategy-storytellingSkill
- creative-directorSkill
- depth-psychologySkill
- designcraft-expertSkill
- effectcraft-expertSkill
- ffmpegSkill
- filmcraft-expertSkill
- freelance-designer-opsSkill
- geo-ai-visibilitySkill
- graphic-designerSkill
- image-gen-promptsSkill
- llm-wikiSkill
- marketing-mbaSkill
- photocraft-expertSkill
- presentation-designSkill
- pricing-and-sales-negotiationSkill
- public-speaking-persuasionSkill
- seedance-promptsSkill
- slide-software-techniquesSkill
- social-algorithmSkill
- ux-ui-expertSkill
- vectorcraft-expertSkill
- video-editorSkill
- workshop-facilitationSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 7 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 28 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
Use it as a tool Claude Code calls, not as a replacement for reasoning.
- Distinctive: line 21
If the task needs generated prose, code, or an answer outside a fixed set — don't use JEV, just answer directly.
- Distinctive: line 32
If unset, ask the user for it before proceeding — never hardcode a key in scripts or commit it.
- Very specific: line 36
Use scripts/jev_client.py from this skill's folder (stdlib only, no deps, works from any cwd).
- Distinctive: line 38
If the base directory isn't shown or the script isn't there, find it instead of guessing (newest install wins):
- Distinctive: line 67
Write request files to the session scratchpad, not the user's project.
- Very specific: line 79
Read references/patterns.md for the exact request shape and how to act on each answer:
- Distinctive: line 85
Verify citations after research (claim vs fetched source)
- Very specific: line 94
Put structured context in state as named JSON fields and reference them in instructions with backticked paths, e.g.
- Very specific: line 95
Always include a no-match option (none/unknown) when nothing may fit.
- Very specific: line 96
Never ask JEV to count or do math: ask one noul per item and sum probabilities in code.
- Distinctive: line 98
Don't use JEV for things code does exactly: known rules, lookups, arithmetic.
- Very specific: line 100
Always batch every question you need about the same state into ONE request — JEV answers all questions in parallel in a single call, which …
“Common” is measured: kept by at least 6 in 10 of the 28 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
JEV via OpenRouter
JEV is not a chatbot. It answers exactly one of three shapes: noul (boolean probability), choice (pick one option from a fixed list), score (position on an ordered scale). No output tokens, no free text. Model: typesafe/jev-1.13 on OpenRouter, $0.042/M input tokens, output free, ~32k token context.
Use it as a tool Claude Code calls, not as a replacement for reasoning. The pattern: Claude (system 2) decides what to ask and why; JEV (system 1) answers fast and cheap.
When to reach for it
- Routing: which subagent/skill/tool should handle this request
- Triage/classification: ticket severity, file type, invoice vs not-invoice, spam vs not
- Filtering a large batch: "which of these 500 files are candidates for X" (loop calls, or batch via multiple
questionsper state) - Guardrail gate: does this input look like a prompt injection / policy violation, yes or no
- Scoring: urgency, sentiment, confidence, relevance, on a defined scale
- Pruning agent context: keep/drop a text block
If the task needs generated prose, code, or an answer outside a fixed set — don't use JEV, just answer directly.
Setup
Requires OPENROUTER_API_KEY in the environment. Check first:
echo $OPENROUTER_API_KEY # bash
$env:OPENROUTER_API_KEY # powershellIf unset, ask the user for it before proceeding — never hardcode a key in scripts or commit it.
How to call it
Use scripts/jev_client.py from this skill's folder (stdlib only, no deps, works from any cwd). Below, <skill-dir> means this skill's base directory — the one shown when the skill loads (plugin install: inside the plugin cache; manual install: ~/.claude/skills/jev). Always use the absolute path.
If the base directory isn't shown or the script isn't there, find it instead of guessing (newest install wins):
ls -d ~/.claude/plugins/cache/*/*/*/skills/jev/scripts/jev_client.py ~/.claude/skills/jev/scripts/jev_client.py 2>/dev/null | sort -V | tail -1(Get-ChildItem "$HOME/.claude/plugins/cache","$HOME/.claude/skills" -Recurse -Filter jev_client.py -ErrorAction SilentlyContinue | Sort-Object LastWriteTime | Select-Object -Last 1).FullNameThree ways to call it:
Inline, one-off:
python "<skill-dir>/scripts/jev_client.py" --state "Customer: my Stripe connection keeps failing after 3 days" \
--noul urgent="Is human intervention needed right now?" \
--choice team="Which team handles this?:technical,billing,sales,other"From a JSON file or stdin (preferred for anything with criteria descriptions or multiple questions — see references/api.md for the full schema):
python "<skill-dir>/scripts/jev_client.py" request.json
cat request.json | python "<skill-dir>/scripts/jev_client.py" -Bulk (many items, different states) — write one request per line to a .jsonl file; runs in parallel (default 8 workers, -w N to change), prints one result per line in input order. A failed item prints {"error": ...} without stopping the rest. Transient 429/5xx/network errors retry automatically with backoff.
python "<skill-dir>/scripts/jev_client.py" items.jsonl -w 16Measured: 12 tickets classified in ~1.6s wall total, $0.00018.
Write request files to the session scratchpad, not the user's project.
For Python-side batch loops, import it directly instead of shelling out per item:
import sys; sys.path.insert(0, "<skill-dir>/scripts")
from jev_client import decide
decide(state, questions) # returns parsed JSON dict, raises JevError
decide_many([{"state": s, "questions": q}, ...], workers=8) # parallel, per-item {"error"} on failureReady-made patterns
Read references/patterns.md for the exact request shape and how to act on each answer:
- Rerank search/research results before fetching (fetch only the top few)
- Pick the next element in browser automation (+ irreversibility check)
- Review a diff before commit (plain rules first, then risk per hunk)
- Triage failing tests / logs (real bug vs flaky vs environment…)
- Verify citations after research (claim vs fetched source)
- Screen external content for prompt injection / exfiltration
- Triage PR review comments (must-fix / nit / question / outdated)
- Find duplicates (pre-filtered pairs only)
- Organize files into folders (propose, user confirms, never auto-move)
Question-writing rules (from TypeSafe's official skill + cookbooks)
- One narrow judgment per question; put several independent questions about the same state in ONE request (13 batched ≈ 12× cheaper, 10× faster than 13 calls).
- Put structured context in
stateas named JSON fields and reference them in instructions with backticked paths, e.g.ticket.messages[0].text. - Always include a no-match option (
none/unknown) when nothing may fit. JEV can't pick a value you didn't list. - Never ask JEV to count or do math: ask one
noulper item and sum probabilities in code. - For ranking with several criteria: ask each criterion as its own
scoreonce, apply weights in code — reweight later without re-calling. - Don't use JEV for things code does exactly: known rules, lookups, arithmetic.
Always batch every question you need about the same state into ONE request — JEV answers all questions in parallel in a single call, which is both faster and cheaper than N separate calls.
Reading the answer
noultype → response has a probability 0–1 that the proposition is true. Don't hard-threshold at 0.5 for anything consequential; readreferences/api.mdon calibration and adding an explicit "I don't know" option tochoice/scorecriteria to avoid confident-but-wrong answers on out-of-distribution input.choicetype → response has the chosen option plus a probability distribution over all options and aconfidencescore.scoretype → response has a probability-weighted position on the scale plus per-level probabilities.
Full field-level schema, request/response examples, and known limitations are in references/api.md — read it before hand-writing a raw request.
What NOT to build
Don't reimplement a local model (that's what Rizzo Flow / SemIf / other open clones are for — different tool, different tradeoff: this skill talks to the real hosted JEV over the network). Don't add retries/caching/queueing beyond what jev_client.py already does unless the task actually needs it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

