Skip to content
Development
Skill

/jev

Delegate closed-set decisions to Jev (TypeSafe System One) instead of a frontier turn: routing, command safety, text screening, failure triage. Use when saying "jev" or "system one".

From plugin
specweave
16318 skills1 agent
Install
$ npx -y skills add anton-abyzov/specweave --skill jev --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/jev

Context preview

The summary Claude sees to decide when to auto-load this skill.

Delegate closed-set decisions to Jev (TypeSafe System One) instead of a frontier turn: routing, command safety, text screening, failure triage. Use when saying "jev" or "system one".

SKILL.md

jev.SKILL.md
description: Delegate closed-set decisions to Jev (TypeSafe System One) instead of a frontier turn: routing, command safety, text screening, failure triage. Use when saying "jev" or "system one".
version: 2.0.0
argument-hint: "[doctor|setup|ask|route|task|guard|screen|failure|browse|usage]"

Jev — System One for closed-set decisions

Jev (`typesafe/jev-1.13`, reached through OpenRouter or TypeSafe) is a **selection** model, not a generation model. You hand it state plus questions whose answers are enumerated in advance; it returns the chosen option with calibrated probabilities in about 250 ms for about $0.00002. It cannot return anything outside your schema, and it never writes code, prose or explanations.

The one test

> **Can every possible answer be written down before the call?**

Yes → Jev. No → keep the work in the frontier model. That is the whole rule.

Three primitives, nothing else:

| Primitive | Answer shape | Use for | |---|---|---| | `choice` | one of 2–255 named options + probabilities + confidence | which skill, which tier, which scope, which failure kind | | `noul` | probability that a statement is true (0–1) | yes/no gates: needs an increment? AC satisfied? injected text? | | `score` | position on 2–10 ordered, described levels | graded severity, risk, priority |

When to delegate inside the SpecWeave loop

| Moment | Delegate | Command | |---|---|---| | Before picking a skill or spawning a subagent tier | route the prompt | `specweave jev route "<prompt>"` | | Before claiming a task, to pick its model tier | complexity of one ledger task | `specweave jev task T-01` | | Before an unattended risky shell command | scope + destructiveness verdict | `specweave jev guard "<command>"` | | Pulled issue / PR / web text enters context | injection screen | `specweave jev screen <file>` (or on stdin) | | Right after a red test run | regression vs flake vs env vs test bug | `specweave jev failure <file>` (or on stdin) | | Mechanical navigation of a known site | headless browse loop | `specweave jev browse --goal "<goal>" --url "<url>"` | | Any other closed set of your own | arbitrary state + questions | `specweave jev ask --state @state.json --questions @q.json` |

Everything else — writing the spec, the diff, the review prose — stays with you.

Two narrowings worth knowing. `specweave jev task T-NN` is the live model-tier surface (`selectModelTierForTask()` in code): SpecWeave does **not** silently re-route model tiers inside task generation, so the tier is a suggestion you act on, not something that happens behind you. And the completion evaluator is **downgrade-only** — a Jev noul can mark an exit-0 run as failed, never turn a failed run into a pass.

Commands

| Command | Prints | Exit | |---|---|---| | `specweave jev doctor` | provider, model, key source (env var **name** only), live latency | 0 ok · 4 unavailable | | `specweave jev setup` | live ping, then writes `jev.enabled` into `.specweave/config.json` | 0 ok · 4 unavailable | | `specweave jev ask` | raw typed answers as JSON | 0 ok · 1 bad input · 4 unavailable | | `specweave jev route "<prompt>"` | skill, request kind, complexity → model tier, needs-increment, each with confidence | 0 ok · 4 unavailable | | `specweave jev task T-01 [inc]` | complexity → model tier for one task in the ledger | 0 ok · 4 unavailable | | `specweave jev guard "<command>"` | verdict + probabilities | 0 allow · 2 warn · 3 deny · 4 unavailable | | `specweave jev screen <file>` | injection probability + flagged yes/no | 0 ok · 4 unavailable | | `specweave jev failure <file>` | failure kind + probabilities | 0 ok · 4 unavailable | | `specweave jev browse` | steps, final url/title, page text excerpt, screenshot paths | 0 ok · 4 unavailable | | `specweave jev usage` | calls, tokens, cost from `.specweave/state/jev-usage.jsonl` | 0 |

`ask` takes `--state` and `--questions` as inline JSON, plain text, `@file` or `-` for stdin; for a one-off question use the shorthand `--choice "<instructions>" --option key=description` (repeatable) or `--noul "<instructions>"`. `--json` on any action prints the machine-readable form. `screen` and `failure` read stdin when no file is given.

**Exit 4 is not a failure.** It means Jev is disabled, unconfigured or unreachable: continue with your own judgement and say nothing further about it.

What leaves the machine

Every `specweave jev` call sends the question state to the configured provider (OpenRouter or TypeSafe) under the user's own key: the prompt text, task titles and acceptance criteria, the shell command, test-output tails, screened text, and page text and element names while browsing. Secret-shaped values — tokens, `--password` / `--token` flags, `KEY=value` assignments, bearer headers and URL credentials — are masked heuristically before the request and the count is reported, but masking is best-effort, not a guarantee. Do not hand Jev state you would not paste into a third-party API.

Thresholds and confidence

Configured under `jev.thresholds` in `.specweave/config.json`:

  • `route` (default 0.7) — a routing answer below this confidence falls back to `opus`

and to your own skill choice.

  • `guardWarn` (0.5) / `guardDeny` (0.85) — the bands behind the guard verdict.

The guard **denies** on four arms: scope `destructive_remote` with confidence at or above `guardDeny`; destructiveness at or above `guardDeny` with scope `local_irreversible` or `destructive_remote`; scope `local_irreversible` with confidence at or above `guardDeny` *and* destructiveness at or above `guardWarn` (a near-certain local wipe scores its scope high and its destructiveness only moderately); or the two irreversible scopes *summed* at or above `guardDeny` with destructiveness at or above `guardWarn` (a `deleteMany` whose database Jev cannot place splits 0.50 / 0.45). It **warns** when destructiveness reaches `guardWarn`, or the scope is `shared_or_remote`, `local_irreversible` or `destructive_remote` — a lo

Read more
Ships withspecweave

Spec-first AI development: describe a feature → AI creates spec + plan + tasks, builds autonomously, syncs to GitHub/JIRA. Domain-expert skills for PM, Architect, Frontend, QA learn your patterns permanently. Claude Code, Codex, Cursor, Copilot & more.

Get the whole plugin
Stats
164
Stars
21
Forks
Active
Maintenance
TypeScript
Language
MIT
License
1h ago
Last commit
11mo ago
Created

Repo: anton-abyzov/specweave

Other skills on specweave.