codegirl-007 / jevlint
git clone https://github.com/codegirl-007/jevlint.git
v0.4.0 · 14d ago
A linter to codify code taste using Jev
+0
stars, 24h · #31,344
+~0
stars, 7 days · #31,819
+126
stars, 30 days · #3,891
126
★ total
5
forks · 3 open issues
Star history (as recorded here)
LanguageGo
LicenseMIT
Created2026-09-25 (27d ago)
Last push6d ago
Watchers0
OwnerUser
Links
README excerpt
# Jevlint Jevlint checks code against plain-language rules. It uses Tree-sitter to extract code units, then asks your configured decision backend whether each one passes. ## Install Download a prebuilt binary from Releases — `linux` and `macos` on `amd64`/`arm64`, and `windows` on `amd64` — unpack it, and put `jevlint` on your `PATH`. Or install with Go: [code] ## Getting started Install `jevlint`, then work through these steps in your repository: 1. **Create `.jevlint.json`** — `jevlint init` detects languages in the project and writes a starter config (legacy `jevlint.json` is still read if present). 2. **Add rules** — Edit `.jevlint.json` or install a pack. Without rules, `check` has nothing to evaluate. 3. **Set credentials** — Export an API key for your provider (TypeSafe below; OpenAI, OpenRouter, and Cloudflare are in Providers). 4. **Verify** — `jevlint doctor` should report the config and API as OK. 5. **Check the tree** — `jevlint check .` prints findings. Exit code `0` means no failures above your confidence thresholds. [code] ## Requirements Building from source (or installing with `go install`) needs: - Go 1.26 or newer - CGO enabled - A C compiler Running checks needs credentials for a decision provider. The default is TypeSafe; create a key at . ## Commands | Command | Description | | --- | --- | | `jevlint init` | Write a starter `.jevlint.json` for the project. | | `jevlint doctor` | Check that the config loads and the credentials work. | | `jevlint check [paths...]` | Check code against the rules. | | `jevlint eval` | Score rules against fixtures in `jevlint-evals.json`. | | `jevlint plugin ...` | Manage rule packs. | | `jevlint version` | Print the version. | `init` and `doctor` accept `--json` for machine-readable output. ## Run When working on jevlint itself, set provider credentials (see Configuration) and run from the repository root: [code] | Flag | Description | | --- | --- | | `--changed` | Check only git-modified files (staged, unstaged, and untracked). | | `--clear-cache` | Clear this project's cached evaluations before checking. New results are cached. | | `--color auto\|always\|never` | Control colored text output. Defaults to `auto`. | | `--config path` | Use a different rule file. Its directory becomes the project root. | | `--concurrency number` | Set the maximum number of concurrent Jev requests. Defaults to `4`. | | `--format text\|json` | Select human-readable or machine-readable output. Defaults to `text`. | | `--refresh-cache` | Reevaluate code and replace matching cached results. | ## Configuration **Project rules** live in `.jevlint.json`. `jevlint init` creates that file. When you run commands without `--config`, jevlint loads `.jevlint.json` if it exists; otherwise it loads `jevlint.json` for older projects. Run `jevlint doctor` to rename a legacy `jevlint.json` to `.jevlint.json`. Use `--config path` only when the file is not in the project root or you want a non-default name. `init` does not