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.
Ranks a large catalog of installed skills against the current request through the Jev service, and can conclude that no skill applies.
$ npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kerpopule/hermes-jev-skills jev-skill-select --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "jev-skill-select" agent skill from https://github.com/kerpopule/hermes-jev-skills/tree/main/skills/jev-skill-select into .claude/skills/jev-skill-select/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jev-skill-select", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kerpopule/hermes-jev-skills/tree/main/skills/jev-skill-selectType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kerpopule/hermes-jev-skills jev-skill-select --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kerpopule/hermes-jev-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/jev-skill-select .agents/skills/jev-skill-select && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "jev-skill-select" agent skill from https://github.com/kerpopule/hermes-jev-skills/tree/main/skills/jev-skill-select into .agents/skills/jev-skill-select/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jev-skill-select", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kerpopule/hermes-jev-skills jev-skill-select --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kerpopule/hermes-jev-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/jev-skill-select .cursor/skills/jev-skill-select && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "jev-skill-select" agent skill from https://github.com/kerpopule/hermes-jev-skills/tree/main/skills/jev-skill-select into .cursor/skills/jev-skill-select/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jev-skill-select", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kerpopule/hermes-jev-skills.git --path skills/jev-skill-select--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kerpopule/hermes-jev-skills jev-skill-select --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kerpopule/hermes-jev-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/jev-skill-select .gemini/skills/jev-skill-select && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "jev-skill-select" agent skill from https://github.com/kerpopule/hermes-jev-skills/tree/main/skills/jev-skill-select into .gemini/skills/jev-skill-select/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jev-skill-select", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kerpopule/hermes-jev-skills jev-skill-selectInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kerpopule/hermes-jev-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/jev-skill-select .github/skills/jev-skill-select && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "jev-skill-select" agent skill from https://github.com/kerpopule/hermes-jev-skills/tree/main/skills/jev-skill-select into .github/skills/jev-skill-select/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jev-skill-select", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kerpopule/hermes-jev-skills --skill jev-skill-select -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kerpopule/hermes-jev-skills jev-skill-select --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kerpopule/hermes-jev-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/jev-skill-select .opencode/skills/jev-skill-select && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "jev-skill-select" agent skill from https://github.com/kerpopule/hermes-jev-skills/tree/main/skills/jev-skill-select into .opencode/skills/jev-skill-select/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jev-skill-select", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
jev-skill-selectRanks 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. 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.
Read from SKILL.md and the folder at commit dddaa39. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from kerpopule/hermes-jev-skills at commit dddaa39, republished under its MIT licence (© kerpopule). 1,335 words, ~2,204 tokens.
.claude/skills/jev-skill-select/SKILL.md (or your agent's skills folder).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.
/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:
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):
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.
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.
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().
{"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:
| Reply | Meaning | What to do |
|---|---|---|
{"status": "ok", "needs_skill": 0.0, "skills": [], "latency_ms": 0, "skipped": "trivial"} | Answered locally; Jev was not asked | Proceed 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 request | Proceed 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 secret | Proceed 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.
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.fail_open with an empty list.© kerpopule, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/jev-skill-select of kerpopule/hermes-jev-skills.
Open the folder on GitHubat commit dddaa39
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Jev Skill Selector this skillkerpopule/hermes-jev-skills | 1k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Context Mode Output Sandboxmksglu/context-mode | 26k | — | ~4.1k | Automated safety check: Pass | Custom licence | |
| Context Mode for Antigravity CLImksglu/context-mode | 26k | — | ~850 | Automated safety check: Pass | Custom licence | |
| Context Fundamentalsguanyang/open-agent-hub | 975 | 2 repos | ~4.2k | Automated safety check: Pass | MIT | |
| GSD Skill Surface Manageropen-gsd/gsd-core | 10k | 1 repos | ~1.6k | Automated safety check: Notes | MIT | |
| Context DoctorjzOcb/context-doctor | 119 | — | ~642 | Automated safety check: Pass | MIT |
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.
mksglu/context-mode
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.
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…
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.
jzOcb/context-doctor
Visualize and diagnose OpenClaw context window usage. An agent skill from jzOcb/context-doctor.
trailofbits/skills
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.
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.
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.
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.
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.
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.
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.
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.