Install
$ agentstack add skill-markpyvo-jev-delegate-jev-delegate ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
jev-delegate
Claude Code sessions get expensive because every subtask runs on the strongest model, including renames, typo fixes, and "run the tests and tell me what failed". This skill asks Jev, a fast decision model, how demanding each subtask is, then runs it on Haiku, Sonnet, or Opus accordingly.
Jev only makes a decision. It cannot write or reason about code. You (the main model) split the work, ask Jev where each piece should run, and spawn subagents on the models it picks.
Setup (once)
The script needs a TypeSafe API key in the environment:
export TYPESAFE_API_KEY=... # JEV_API_KEY also works
Jev is in early access. If the user has no key, they can join the waitlist at typesafe.ai. Without a key the script does not fail; it returns "tier": "inherit" and you carry on with your normal model, so the skill is safe to leave installed.
Workflow
- Split the job into subtasks that can be handed off. Skip this skill for anything you will just do inline in a few seconds; the routing call is not free (about a quarter to three quarters of a second).
- Route them in one call. Describe each subtask in a sentence or two: what needs doing, roughly where, and any unknowns. Describe the work, not the model. Leave out secrets, credentials, and large code pastes, because the text is sent to api.typesafe.ai.
``bash python scripts/route.py "rename getUser to fetchUser across src/api" \ "find why the checkout total is off by one cent intermittently" \ "add unit tests for the date parser" ``
For long lists, put a JSON array of strings in a file and pass --file tasks.json.
- Read the result. You get a JSON list in the same order as your tasks:
``json {"tier": "fast", "model": "haiku", "effort_hint": "low", "confidence": 0.91, "risky": 0.02, "reason": "mechanical at 0.91, effort 0.3"} ``
modelishaiku,sonnet, oropus. Pass it as the model of the subagent you spawn for that task.model: null(tierinherit) means Jev was unavailable or no key is set. Spawn the subagent without overriding the model.effort_hintis advisory. If it sayslow, tell the subagent to keep reasoning brief and not explore beyond the task.riskyabove about 0.7 has already pushed the task toopus. Treat those tasks with care: confirm with the user before anything that touches production, money, or unrecoverable data.
- Spawn subagents using the subagent tool's
modelparameter (ormodel:in the agent definition). Give each one a self-contained prompt with the files, the goal, and how to verify it, since subagents do not see your conversation.
- Escalate one tier on failure. If a subagent's result is wrong, incomplete, or fails its check (tests still red, it says it is stuck), retry once on the next tier up: haiku, then sonnet, then opus. Do not retry on the same tier. Retrying on the same model mostly repeats the same mistake and costs the same again.
Rules that keep it cheap
- Never change the model of the main conversation. Prompt caches are per model, so switching mid-session forces the whole context to be re-read uncached, which usually costs more than the switch saves. Route the subagents, which start with small fresh contexts.
- Pin the tier for the life of a task. Do not re-route the same subtask every turn.
- Trust the asymmetry. The script moves a task up on modest confidence and down only on high confidence, and only when several signals agree. If it says
balancedon something that looks easy, that is intended. Do not override it toward cheaper. - Do not send Jev your whole conversation. It sees only the task text you pass. A short, specific description gets better answers than a long one.
Measuring savings
Every routing call is appended to ~/.jev-delegate/decisions.jsonl (task text is never stored, only an id, length, and the decision). To see the spread:
python scripts/report.py
The cost estimate uses assumed relative prices. Present it to the user as an estimate, and suggest checking real usage in their plan dashboard before quoting a number. Set JEV_DELEGATE_LOG=0 to turn logging off.
Limits worth telling the user about
- Jev reads text only and has a small input window, which is why tasks are passed as short descriptions.
- Accuracy is vendor-reported and the questions and thresholds here are unproven defaults. Misroutes cost a retry, not a wrong answer, because you verify subagent output and escalate.
- Details of the questions, thresholds, environment variables, and how to tune them against real tasks are in
references/tuning.md. Read it if the user wants to change model names, thresholds, or the effort cap.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: markpyvo
- Source: markpyvo/jev-delegate
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.