Skip to content
Development
Skill

/sw-jev

Delegate closed-set decisions to Jev (TypeSafe System One) instead of a frontier turn — routing, shell-command safety, text screening, failure triage. Use for "jev", "system one", "classify this".

From plugin
specweave
16318 skills1 agent
Install
$ npx -y skills add anton-abyzov/specweave --skill sw-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/sw-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, shell-command safety, text screening, failure triage. Use for "jev", "system one", "classify this".

SKILL.md

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

sw-jev — closed-set decisions in 250 ms

Jev (`jev-1.13`) is a **selection** model: you give it state plus questions whose answers are enumerated in advance, and it returns the chosen option with calibrated probabilities in about 250 ms for about $0.00002. It cannot answer outside your schema and never writes code, prose or explanations. Run `specweave --version`: exit 0 → **CLI path**; not found → **manual path** (the same POST by hand; curl and PowerShell forms below).

The one test

**Can every possible answer be written down before the call?** Yes → Jev. No → keep it in the frontier model. That is the whole rule. Three primitives: `choice` picks one of 2–255 named options and returns probabilities plus a confidence; `noul` returns the probability a statement is true (0–1), for yes/no gates; `score` places the state on 2–10 described, ordered levels, for graded severity or risk.

What leaves the machine

Every call sends its state — prompt text, task titles and acceptance criteria, the shell command, test-output tails, screened text, page text and element names — to the configured provider (OpenRouter or TypeSafe) under your own key. Secret-shaped values (tokens, `--password`/`--token` flags, `KEY=value` assignments, bearer headers, URL credentials) are masked heuristically first and the count is reported, but masking is best-effort, never a guarantee.

Setup

Key in the environment: `OPENROUTER_API_KEY` (endpoint `https://openrouter.ai/api/v1/systemone`, model `jev-1.13`) or `TYPESAFE_API_KEY` (`https://api.typesafe.ai/v1/systemone`, model `jev-latest`); `JEV_API_KEY` works for either. Never print, echo, log or commit the value — report the variable **name** only. CLI: `specweave jev setup` pings live, then writes `jev.enabled: true` into `.specweave/config.json`. Manual path: confirm the variable exists without printing it (`grep -q OPENROUTER_API_KEY .env`, PowerShell `Select-String -Quiet`), then set `"jev": { "enabled": true }` in `.specweave/config.json` yourself.

Check it works

CLI form: `specweave jev doctor`. Manual path — the same call by hand:

curl -sS https://openrouter.ai/api/v1/systemone \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"jev-1.13","state":"ping","questions":{"ok":{"type":"noul","instructions":"Is this text non-empty?"}}}'
Invoke-RestMethod -Method Post -Uri 'https://openrouter.ai/api/v1/systemone' `
  -Headers @{ Authorization = "Bearer $env:OPENROUTER_API_KEY" } -ContentType 'application/json' `
  -Body '{"model":"jev-1.13","state":"ping","questions":{"ok":{"type":"noul","instructions":"Is this text non-empty?"}}}'

Exit 4 from any `specweave jev` command means Jev is disabled, unconfigured or unreachable. That is **not** a failure: continue with your own judgement.

Route a request

`specweave jev route "add rate limiting to the upload endpoint"` returns the matching skill, the request kind, the complexity → model tier, and whether the work needs an increment, each with a confidence. Below `jev.thresholds.route` (default 0.7) the tier falls back to `opus` and you pick the skill yourself. The tier is a suggestion you act on — nothing re-routes models behind you. `specweave jev task T-NN` answers the same question for one task already in the ledger. Manual path:

curl -sS https://openrouter.ai/api/v1/systemone -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -d '{"model":"jev-1.13","state":{"prompt":"add rate limiting to the upload endpoint"},"questions":{"complexity":{"type":"choice","instructions":"How much reasoning does an experienced engineer need to complete this task correctly?","criteria":{"trivial":"Mechanical, fully specified edit. No design decision.","moderate":"Bounded implementation with a known approach; a few files.","complex":"Needs design or investigation; ambiguous requirements."}}}}'

Commands at a glance

`doctor` (provider, key variable name, latency) · `setup` · `route "<prompt>"` · `task T-NN` (model tier for one ledger task) · `guard "<command>"` · `screen <file>` · `failure <file>` · `ask --state @s.json --questions @q.json` · `browse --goal "<goal>" --url "<url>"` (headless, allow-listed domains only, never types text Jev chose, skips pay/delete/sign-out controls unless `--allow-sensitive`) · `usage`. Each is `specweave jev <action>`; `--json` for machines. The guard can run as a Claude Code `PreToolUse` hook for one project: `specweave jev setup --guard-bash` (`--no-guard-bash` removes it). In every other tool, call `specweave jev guard` yourself.

Guard a shell command

`specweave jev guard "rm -rf ./build"` exits 0 allow, 2 warn, 3 deny, 4 unavailable. Call it yourself before anything unattended — outside Claude Code nothing intercepts your commands for you. A regex prefilter skips the call entirely for `npm test`, `npm run build`/`test`/`lint`, `pnpm test`, `yarn test`, `cargo test`, `go test` and plain read commands (`ls`, `cat`, `grep`, `rg`, `find`, `git status`/`log`/`diff`/`show`), so the common case costs nothing and **project-defined scripts are trusted by the guard**.

Manual path: same POST with `state` = the command, its `cwd` and a description, and two questions — a `choice` over `read_only` / `local_reversible` / `local_irreversible` / `shared_or_remote` / `destructive_remote`, and a `noul` for "would this destroy data that cannot be recovered from git or by re-running a build?". **Deny** on any of four arms: `destructive_remote` at confidence ≥ `guardDeny` (0.85); destructiveness ≥ `guardDeny` with an irreversible scope; `local_irreversible

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
2h ago
Last commit
11mo ago
Created

Repo: anton-abyzov/specweave

Other skills on specweave.