Repository navigation
Add the lean-jev plugin - #18
Merged
Merged
Conversation
Hands a judgment call to Jev, TypeSafe's System One model, and frames it the way Jev needs it framed: one factor per question, a type chosen deliberately, state filtered to what the question needs, and every number reported next to the question that produced it. General guidelines cover a one-off question; a recurring one earns a written decomposition, and the first ships with the plugin. scripts/jev.py is a stdlib-only client for the single endpoint the API exposes. It reads the key from ~/.config/typesafe/env rather than the environment, because an exported key is inherited by every command the agent spawns, and it uses urllib rather than curl so the Bearer header never becomes an argv element. Carried over from LeanCode's internal marketplace at 0.2.0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings
lean-jevover from the internal marketplace, per the #ai-workplace thread where the blocker for going public (a third-party MCP binary) was removed and you said to go ahead.What it is
Jev is TypeSafe's System One model: typed questions in, numbers out. A probability for a yes/no, a position on a rubric you wrote, a pick from a fixed set with the distribution behind it. No prose, ~$0.0004 a call, so an agent can judge every item in a list rather than three and a generalisation.
The plugin is the framing discipline around that, because Jev reads a question literally and explains nothing, so a question bundling severity with confidence with "does the author already know" comes back as a confident number about none of the three. General guidelines handle a one-off question; a recurring one earns a recipe, a written decomposition with the criteria in full and an honest note on what it does not answer. One recipe ships: judging whether a unit test is worth its lines.
Where it does not work is in the README as prominently as where it does. I ranked eleven candidate uses with Jev itself before writing the skill, including two I expected to fail. Test-quality and house-pattern conformance came out around 0.86 on single-hop; "which architecture approach should we use" scored 0.19 and "which SDK should we adopt" 0.29 at confidence 0.98.
Shape, and where it differs from the Flutter plugins here
scripts/jev.py, a stdlib-only client for the one endpoint the API exposes. This is the first script in this repo, so the precedent is worth a look rather than a nod: it posts tohttps://api.typesafe.ai/v1/systemone, reads the key itself, validates criteria shapes before spending a call, and retries throttling.tests/test_jev.py, 21 stdlib tests over key resolution, request validation, state handling, and the assertion that the key travels in the header rather than the payload. No test harness exists here, so nothing runs them in CI. Say the word and I will drop them and keep them internal.plugin.jsonfields beyond whatflutter-marionettecarries, no rules, no owners file.Two decisions inside the script, in case they are worth arguing with:
600file rather than the environment, because an exported key is inherited by every command the agent spawns, including build scripts from whatever repository happens to be open. An environment variable still wins when set, for a one-off.urllib, notcurl. A Bearer header passed to curl is an argv element that anypson the machine can read while the request is in flight.What reviewers should weigh
Whatever goes in
statereaches TypeSafe: the diff, the test, the ticket. Their docs say customer requests are not used for training, and zero-data-retention is enterprise-only. The README says so under its own heading rather than inside the setup steps, because it is the part someone has to decide about rather than follow.Checks
claude plugin validate . --strictand the per-plugin validation both pass. The script and its tests were exercised from this tree: a trivial noul came back 0.96 fromjev-1.13.0, and the 21 tests pass. The README carries no em-dashes, matching the recent cleanup.Adds
__pycache__/to.gitignore, since this is the first Python in the repo.🤖 Generated with Claude Code