#12363·oh-my-pi

TypeSafe Jev skill routing as a copy-paste before_agent_start example

Author: kvnlooCreated Sep 17, 2026Updated Sep 17, 2026

A PR that implements this example is coming in the same turn (kvnloo:examples/typesafe-jev-skill-routing). Please do not have robomp pick this up independently.

What is missing

OMP already has native TypeSafe as a judgment backend (/login typesafe, TYPESAFE_API_KEY, providers.judgmentProvider: typesafe, eval judge()). That covers auto-thinking, unexpected-stop, and git AI staging.

It does not yet name which installed skill to read before a turn. With a few dozen SKILL.md files, the model still guesses from truncated one-liners. TypeSafe's published cookbook is exactly this problem: Skill suggestion.

Proposal

Ship a copy-paste example extension, not a core feature:

  • packages/coding-agent/examples/extensions/typesafe-jev.ts
  • before_agent_startPOST https://api.typesafe.ai/v1/systemone
  • Call 1 of the cookbook: one choice over the roster + three gate nouls in the same request (docs: extra questions barely change latency)
  • Inject <skill_relevance> via systemPromptAppend (same hook as pirate.ts; cookbook puts the line in the system prompt after the roster)
  • Quiet when the gate mean is < 0.30; fail-open on missing key / timeout / HTTP error
  • /jev status. Do not put Jev in /model (max output tokens 0)

OMP skill counts are typically ~40, which the cookbook says one Choice holds comfortably. The cookbook's second request (rerank top 3 with SKILL.md excerpts) is the follow-up when lookalikes collide or the roster grows past ~100.

Live check (this machine, 39 skills, jev-1.13.0)

Path p50 p95 2.5s abort
Tiny noul probe 323ms 357ms 0 misses
Full route (choice + gates) ~330ms ~372ms 0 misses

Hook log already firing on user turns in this omp session. Chat stays on the default model.

Public usage (sanity)

People already call native System One the same way: elizaOS/eliza, monotykamary/pi-fabric (no automatic retry — the caller decides), browser-use/jev-ultrafast, Vercel AI typesafe-ai/jev-latest, LangChain langchain_typesafe. None of those treat Jev as a chat model.

Out of scope

  • Bundling this into core / enabling it by default
  • Two-stage rerank
  • Changing TypeSafeJudge or providers.judgmentProvider