Agent skill

Jev Skill Selector

by kerpopule in kerpopule/hermes-jev-skills

Ranks a large catalog of installed skills against the current request through the Jev service, and can conclude that no skill applies.

MITAuto-check passedAgent Workflows

Install Jev Skill Selector

skills CLI
$ npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install kerpopule/hermes-jev-skills jev-skill-select --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/kerpopule/hermes-jev-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/jev-skill-select .claude/skills/jev-skill-select && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
jev-skill-select
GitHub stars
1k
Token cost
~2.2k tokens
SKILL.md length
1,335 words
Files
1
Skills in repo
10
Repo updated
First seen
Licence
MIT

At a glance

Ranks a large catalog of installed skills against the current request through the Jev service, and can conclude that no skill applies.

  • Unsure which of many installed skills fits a request
  • SKILL.md covers On Hermes, Diagnosing fail-open, Asking directly (any agent) and The reply, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Making skill loading cheaper by loading only the skill that applies

What it does

When many skills are installed and it is unclear which one fits, this skill hands the choice to Jev in two stages. The first request ranks every skill against the turn, splitting the catalog into batches of 120 that are asked at the same time. The second reads the top five more carefully, judges each separately and may reject all of them, so small talk and ordinary turns come back with no skill.

Much of the excerpt is about cost and speed. Billing is per request, estimated as the catalog size divided by 120, rounded up, plus one. When the same plugin also does model routing, the routing questions and the skill question share one request, and the /jev merge_requests off command separates them again. A private profile or a turn that looks sensitive is never merged.

When your agent uses it

  • Unsure which of many installed skills fits a request
  • Making skill loading cheaper by loading only the skill that applies
  • Deciding whether a turn needs any skill at all

Example prompts

  • “I have hundreds of skills installed, so pick the one that fits updating our CI config, or tell me none does.”
  • “Use Jev to choose a skill for tidying the changelog, or say that no skill is needed.”
  • “Make skill loading cheaper and more accurate by selecting skills with Jev.”

Requirements

  • The Jev plugin with access to the Jev service
  • A catalog of installed skills

What it can do on your machine

Read from SKILL.md and the folder at commit dddaa39. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Jev Skill Selector loads about 2.2k tokens when it runs. Until then it costs about 54 tokens; SKILL.md has 1,335 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~54
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from kerpopule/hermes-jev-skills at commit dddaa39, republished under its MIT licence (© kerpopule). 1,335 words, ~2,204 tokens.

Download SKILL.mdSave it as .claude/skills/jev-skill-select/SKILL.md (or your agent's skills folder).
name
jev-skill-select
description
Use when unsure which of many installed skills applies to a request, if any, or when asked to make skill loading cheaper or more accurate. Jev ranks the whole catalog and may say no skill is needed.
version
0.1.0
license
MIT

Skill selection with Jev

Two round trips, about 0.5 s on a warm connection (this was ~1.2 s before the connections were pooled — every call used to open a new TLS session). The first round trip ranks every skill against the turn: the catalog is cut into batches of 120 that are asked side by side, so a 377-skill catalog is four requests sent at once and a 960-skill one is eight, all landing in the time of the slowest. The second round trip is one request: it reads the top five properly, judges each on its own, and may reject them all. Wall clock and billed requests are not the same number, and it is the requests you pay for: reckon on ceil(skills / 120) + 1 per turn that reaches Jev. A turn that nothing in the catalog comes close to ends after the first request. Small talk and ordinary turns come back with no skill. Reading the skill folders is extra: about 0.15 s for 460 skills.

When the plugin also runs model routing, the two share one request. Jev charges per request, not per question, so the plugin asks routing's three questions and this stage-1 question or questions in the same call (jevkit/turn.py), then hands the answers to each feature's own thresholds. Both halves are also pooled at the connection level (client.py keeps keep-alive sockets; a fresh TLS session per call cost ~275 ms of the ~520 ms a decision used to take). Measured against the live API on 2026-09-21/22 with a 379-skill catalog in this fleet: one question ~180-250 ms on a warm connection, and a full Hermes turn (routing + skill selection, merged, pooled) 1784 ms → 672 ms — 3 requests down to 2. The decisions do not change — the same answers, the same floors — and eight live turns before shipping gave the same tier and the same skill on all eight. /jev merge_requests off puts them back in separate requests. A private profile, a turn that looks sensitive, or routing configured for features-only state never merges, so no text moves that was not moving before.

Acknowledgements never leave the machine. "ok", "thanks, that worked", "got it", "never mind", "yes go ahead", a bare "stop" and turns that are only punctuation or emoji are answered locally in 0 ms. That gate is deliberately narrow. A real question (except a pure next? continuation), an instruction however short ("do it", "stop it", "do all of them now"), a number, or a word the gate cannot read is sent to Jev, and that includes every request written in a non-Latin script. A wrong ask costs a fraction of a cent; a wrong skip makes the feature quietly do nothing.

The narrow local gate also recognises pure social openers (how are you doing today) and pure next? continuations; a real question or instruction (all working?, next, fix the config) still reaches Jev. Selector-only meta-skills such as using-superpowers are removed before ranking, including the merged routing/skill request, so they cannot crowd out a task procedure.

On Hermes

/jev skills on makes the hermes-jev plugin do this once per fresh turn. When a skill clearly fits, a one-line suggestion is attached to the turn naming it; load it with skill_view unless it plainly does not apply. It asks Hermes which folders this session actually loads — the profile's skills folder and every skills.external_dirs folder — and it respects skills.disabled. Project-local skill folders are not read.

With /jev routing on as well, the stage-1 questions travel in routing's request instead of one of their own (see the cost note above), the two answers are read by the code that owns each decision, and the only extra thing in the log is a merged line. If that shared request fails, no skill is suggested and routing asks for itself on the next hook, which is the behaviour each feature already had on its own.

The suggestion is then checked against Hermes's own loader before it is made: a name that skill_view cannot open in this session is never offered, and the name offered is the one the loader answers to. So you will not be sent to a procedure you do not have — which matters on a profile whose catalog is smaller than the one Jev was ranking, and on a machine where a skill was never installed. Unverifiable means silent, because a suggestion is never worth a call that fails.

Two more rules keep suggestions worth reading:

  • A skill the session has already loaded is not suggested again.
  • A skill the agent keeps declining stops being offered on that profile. It is suppressed when it was loaded after fewer than 1 in 10 of its last 5 or more suggestions, within 14 days. It is still offered once every 6 hours, so a skill that became useful can come back.

The plugin records each suggestion when it makes it. The profile's jev/skill-feedback.json holds only skill names, times and whether the agent loaded the skill. Set "skill_feedback": "off" in jev/state.json to switch the second rule off.

Measured by replaying one real week (1,188 suggestions):

  • Before: 403 were loaded within five minutes (34%).
  • With both rules: 771 suggestions and 395 loads (51%).

That is 115 repeats and 294 declined offers removed, at the cost of 8 loads. A load within five minutes is correlation, not proof the suggestion caused it.

Show full SKILL.md (444 more words)Show less

Diagnosing fail-open

The local skill decision-log entry now includes a bounded reason_code: no_skills, sensitive_turn, stage_one_incomplete, a recognized transport/validation code such as timeout or invalid_response, or other. Success records use null. Arbitrary reason text, prompts and raw exception messages are not logged. Separate intentional privacy/catalog skips from service failures before changing budgets or thresholds. Older records without this field cannot establish the cause retrospectively; keep them in an unknown bucket rather than guessing. A fail-open remains silence, not a negative skill verdict.

Asking directly (any agent)

bash
jev pick-skill --turn "<the request>"            # searches Hermes, Claude Code, Codex and ./skills folders
jev pick-skill --turn "..." --root ~/my/skills   # or name the folders; repeat --root for each one

--root replaces the default folders, so name every folder you want searched. From Python, skillpick.discover_roots(hermes_home) returns the folders Hermes reads, shared ones included, ready to pass to skillpick.discover().

The reply

json
{"status": "ok", "needs_skill": 0.78, "skills": [{"name": "xlsx", "path": ".../xlsx/SKILL.md", "match": 0.72}], "latency_ms": 1143}

needs_skill (0–1) and up to three {name, path, match}, best first. Load the first one whose match is 0.5 or more. An empty list means proceed without a skill; do not go hunting for one.

Three other shapes, all with an empty skills list:

ReplyMeaningWhat to do
{"status": "ok", "needs_skill": 0.0, "skills": [], "latency_ms": 0, "skipped": "trivial"}Answered locally; Jev was not askedProceed without a skill
{"status": "ok", "needs_skill": 0.0, "skills": [], "latency_ms": 663}Jev ranked the catalog and nothing came close, so there was no second requestProceed without a skill
{"status": "fail_open", "reason": "...", "skills": []}Jev was not asked or did not answer: outage, no skills found, or the turn looked like it held a secretProceed as if this skill did not exist. This is not a "no skill needed" verdict

skills_dropped appears on any of them when the catalog is over the 960-skill cap. It is how many skills, the last ones found, were never ranked, so "no skill fits" does not cover them. Their names are logged once per process. Disable skills you do not use to get back under the cap.

Notes

  • It reads only each skill's name and description from its front matter, and only the first 200 characters of the description, so a skill with a vague or long-winded description will not be found. Fix the description, not the threshold.
  • When two folders hold a skill of the same name, the first folder searched wins. On Hermes that is the profile's own folder.
  • The turn is redacted before sending; a turn that looks like it holds a secret is not sent, and you get fail_open with an empty list.
  • If any one batch fails, the whole pick fails open. A partial ranking would say "no skill" with confidence whenever the right skill sat in the batch that was lost.
  • A suggestion is advice. If the loaded skill does not match the task once you read it, drop it and carry on.

© kerpopule, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/jev-skill-select of kerpopule/hermes-jev-skills.

Open the folder on GitHubat commit dddaa39

Compare with similar skills

Jev Skill Selector next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Jev Skill Selector compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Jev Skill Selector this skillkerpopule/hermes-jev-skills1k—~2.2kAutomated safety check: PassMIT
Context Mode Output Sandboxmksglu/context-mode26k—~4.1kAutomated safety check: PassCustom licence
Context Mode for Antigravity CLImksglu/context-mode26k—~850Automated safety check: PassCustom licence
Context Fundamentalsguanyang/open-agent-hub9752 repos~4.2kAutomated safety check: PassMIT
GSD Skill Surface Manageropen-gsd/gsd-core10k1 repos~1.6kAutomated safety check: NotesMIT
Context DoctorjzOcb/context-doctor119—~642Automated safety check: PassMIT

Similar skills

  • Context Mode Output Sandbox

    mksglu/context-mode

    Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.

    26k GitHub stars~4.1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Routing rules for using context-mode MCP tools in Antigravity CLI: sandboxed code runs, file analysis, indexed search and web fetches that keep large output out of the conversation.

    26k GitHub stars~850 tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Context Fundamentals

    guanyang/open-agent-hub

    This skill should be used to explain or reason about the foundational concepts of context engineering: what context is, the anatomy of a context window, how attention mechanics work, the U-shaped…

    975 GitHub starsUsed in 2 repos~4.2k tokens
    Agent WorkflowsAuto-check passed
  • GSD Skill Surface Manager

    open-gsd/gsd-core

    Controls which GSD skills are exposed to the agent at runtime by applying a profile, listing clusters or disabling and enabling them without a reinstall.

    10k GitHub starsUsed in 1 repo~1.6k tokens
    Agent WorkflowsAuto-check: notes
  • Context Doctor

    jzOcb/context-doctor

    Visualize and diagnose OpenClaw context window usage. An agent skill from jzOcb/context-doctor.

    119 GitHub stars~642 tokensUpdated 6 mo ago
    Agent WorkflowsAuto-check passed
  • Code Context Slicing

    trailofbits/skills

    Official

    Picks a small, graph-based slice of source with Trailmark and hands a focused code task to a smaller or local model without exposing the whole repository.

    7.4k GitHub stars~2.1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

More from kerpopule/hermes-jev-skills

All 10 skills in this repo
  • Jev Browser Use

    kerpopule/hermes-jev-skills

    Drives web pages that need interaction, letting Jev choose one action at a time from observed page elements under a host allowlist and step budget.

    1k GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Jev Desktop Computer Use

    kerpopule/hermes-jev-skills

    Drives desktop GUI apps and OS dialogs by letting Jev pick the next action from a menu of safe actions the agent built, with a Mac Co-Agent shortcut.

    1k GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed
  • Jev Transcript Compaction

    kerpopule/hermes-jev-skills

    Uses Jev to mark each transcript turn keep, summarize or drop when cutting a conversation to a fixed size, with measured results on handoff quality.

    1k GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Jev Model Routing

    kerpopule/hermes-jev-skills

    Routes a turn or delegated task to the cheapest model and effort lane that will still do it right, using the Jev decision model to classify difficulty and escalate only when needed.

    1k GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed
  • Jev Key Setup

    kerpopule/hermes-jev-skills

    Connects the Jev decision model by storing a TypeSafe, OpenRouter, Venice or OpenCode Zen key with jev setup-key, so the key never passes through the agent.

    1k GitHub stars~1.4k tokensUpdated yesterday
    Auto-check: notes
  • Frontier Model Handoff

    kerpopule/hermes-jev-skills

    Chooses which paid frontier model seat should take a task already judged hard, hands it off with proper context, and keeps a watch on the delegated run.

    1k GitHub stars~1.5k tokensUpdated yesterday
    Auto-check: warnings

Categories

Questions about Jev Skill Selector

What does Jev Skill Selector do?

Ranks a large catalog of installed skills against the current request through the Jev service, and can conclude that no skill applies. When many skills are installed and it is unclear which one fits, this skill hands the choice to Jev in two stages. The first request ranks every skill against the turn, splitting the catalog into batches of 120 that are asked at the same time.

When should I use Jev Skill Selector?

Jev Skill Selector fits situations like: unsure which of many installed skills fits a request; making skill loading cheaper by loading only the skill that applies; deciding whether a turn needs any skill at all.

How do I install Jev Skill Selector in Claude Code?

Run `npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a claude-code`. Or copy the skill folder (skills/jev-skill-select in kerpopule/hermes-jev-skills) into .claude/skills/jev-skill-select in your project. Claude Code loads it when a task matches its description.

How do I install Jev Skill Selector in Codex?

Run `npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a codex`. Or copy the skill folder (skills/jev-skill-select in kerpopule/hermes-jev-skills) into .agents/skills/jev-skill-select in your project. Codex loads it when a task matches its description.

Can I use Jev Skill Selector in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/jev-skill-select, .gemini/skills/jev-skill-select, .github/skills/jev-skill-select and .opencode/skills/jev-skill-select in your project.

What does Jev Skill Selector need to run?

SKILL.md names no scripts, command-line tools or credentials: Jev Skill Selector is instructions for the agent only. Our summary lists: The Jev plugin with access to the Jev service; A catalog of installed skills.

Does Jev Skill Selector access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Jev Skill Selector safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Jev Skill Selector use?

Jev Skill Selector is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Jev Skill Selector use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Jev Skill Selector?

Skills that share tags, products or a category with Jev Skill Selector: Context Mode Output Sandbox (mksglu/context-mode, 26k stars), Context Mode for Antigravity CLI (mksglu/context-mode, 26k stars), Context Fundamentals (guanyang/open-agent-hub, 975 stars) and GSD Skill Surface Manager (open-gsd/gsd-core, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Jev Skill Selector?

kerpopule (a GitHub user) maintains it in kerpopule/hermes-jev-skills, which has 1,046 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 7, 2026.

Source: kerpopule/hermes-jev-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.