pi-jev-skill-picker
Ranks the Pi agent’s skills for the task in front of it.
Safzan Pirani’s picker scores every installed skill with Jev and hands the agent the ones that fit, instead of loading them all.
# pi-jev-skill-picker A Pi extension that keeps the Agent Skills catalog out of model requests and replaces it with one ranking tool backed by [TypeSafe's Jev](https://docs.typesafe.ai) System One model. Skills stay loaded, so `/skill:name` keeps working. Before each agent turn the extension removes Pi's generated `<skills>` catalog from the effective system prompt and gives the model two tools to pull skills in on demand. `skill_search` takes a plain-language description of the task, rates every enabled skill against it, and returns the complete `SKILL.md` instructions of the skills that apply. ## What it saves On a 137-skill catalog the generated `<skills>` block runs about 19,000 tokens, which is 87% of Pi's system prompt. Pi resends it on every request. Both rows below use the same captured prompt and one trivial turn: | Model | Catalog present | Catalog stripped | Saving | |---|---|---|---| | `gpt-6-astra` | 21,074 tokens, $0.2107 | 2,541 tokens, $0.0254 | 87.9% | | `deepseek-v4.1-flash` | 22,377 tokens, $0.0034 | 3,434 tokens, $0.0005 | 84.6% | One `skill_search` call costs about 38,600 Jev input tokens, or $0.0016 at $42 per billion. Jev bills input only. Against `gpt-6-astra` that is under 1% of what a single un-stripped request wastes. ## How the ranking works Each skill becomes its own Score question. The task goes in the shared `state`, and the skill's name and description go in that skill's own `instructions`. Jev judges each skill without seeing the others, so no keyword prefilter can drop one first. Every skill is rated on the same three ordered levels: | Level | Meaning | |---|---| | 0 | Unrelated. A different domain, tool or workflow. | | 1 | Adjacent. Same general area, not the specific thing the task needs. | | 2 | Directly applicable. Cove