0134GitHub
jevkit
A Rust CLI for Jev, with a linter that checks questions before you pay.
ariel-frischer/jevkitREADME ↗
██ ██████ ██ ██ ██ ▄█▀ ██ ██████
██ ██▄▄ ██▄▄██ ████ ██ ██
████▀ ██▄▄▄▄ ▀██▀ ██ ▀█▄ ██ ██
</pre>
**Typed decisions from the command line.**
[](https://github.com/ariel-frischer/jevkit/actions)
[](LICENSE)
</div>
[TypeSafe’s Jev](https://docs.typesafe.ai) returns typed decisions instead of
prose. `jevkit` is a CLI for it: ask Jev questions about a passage, get back
probabilities, labels, and scores. `jev lint` validates a question set offline,
before you spend anything on a call.
## Install
```sh
curl -fsSL https://raw.githubusercontent.com/ariel-frischer/jevkit/main/install.sh | sh
```
More ways to install: see [Installation details](#installation-details).
## Usage
```console
$ jev ask -q severity.yaml "The deploy script drops the production database with no confirmation."
{
"risky": 0.96,
"severity": "high",
"urgency": 2.82
}
```
No file, either: a question set passed inline is a one-liner.
```console
$ jev ask --question-set '{"risky":{"type":"noul","instructions":"Is this risky?"}}' "jumping into a volcano"
{
"risky": 0.97
}
```
**Built for AI agents too.** `jev` ships with an [agent skill](#the-agent-skill)
that teaches a coding agent to drive the CLI; agents can also consume it via
`npx skills add ariel-frischer/jevkit`.
## Features
- 🎯 **Typed questions**: `noul` (probability), `choice` (label), `score` (level), sent in terse YAML or JSON, by file, stdin, or `--question-set` inline
- 🦀 **Offline linting**: 13 rules that catch billed-but-useless questions before a call; documented exit codes for CI
- 🔩 **Machine-first I/O**: JSON on stdout (compact when piped, pretty on a TTY; `--compact`/`--pretty` to force), diagnostics on stderr, `0/1/2` exit codes (ok / usage·API / lint-rejected)
- 📊 **Usage ledger**: `jev ask --