Skip to main content

LLM-oriented CLI linter — catch quality drift before it hardens (Rust binary).

Project description

llm-lint — Ferris inspecting code on a conveyor belt

llm-lint

Static checks for “LLM slop” and related drift: oversized files/functions, duplicate bodies, noisy helpers, risky env fallbacks, and secret-shaped strings. Implemented in Rust; configuration lives in llm-lint.toml or llm-lint.json at the root of the tree you scan.


Python environments

The CLI is published to PyPI as llm-lint (pre-built wheels for common platforms via Maturin).

pip / virtualenv

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install llm-lint
llm-lint scan .

uv (recommended)

uv tool install llm-lint
llm-lint scan .

Or run without a global install:

uv tool run --from llm-lint llm-lint scan .

pipx

pipx install llm-lint
llm-lint scan .

JavaScript / Node environments

The npm package llm-lint-cli is a thin wrapper: it runs the same binary via uv tool run --from llm-lint, so the real executable comes from PyPI.

Prerequisites

  • uv must be available. On macOS/Linux the package’s install flow can bootstrap uv; on Windows install uv yourself if needed.

Install in a project

npm install -D llm-lint-cli
npx llm-lint scan .

package.json scripts:

{
  "scripts": {
    "lint:llm": "llm-lint scan ."
  }
}

Postinstall config

On a normal (non-global) npm install, if llm-lint.toml is missing in the project root, a starter file is copied from the package template. Existing files are left unchanged.


Other install options

Channel Command
Cargo (from source / crates.io) cargo install llm-lint

Usage

llm-lint scan .
llm-lint scan . -f json --fail-threshold 20
llm-lint scan . -v --max-file-lines 300

See llm-lint.toml in this repo for configuration keys (include rules, thresholds, exclude-dirs, etc.).


Release & publishing

See RELEASING.md for PyPI trusted publishing, npm token, and scripts/release.py.


Repo layout

  • docs/logo.png — project logo (README header)
  • Cargo.toml / src/ — CLI and library
  • pyproject.toml — PyPI metadata + maturin (bindings = "bin")
  • npm/llm-lint-cli wrapper + templates/llm-lint.toml
  • .github/workflows/ — CI + publish on GitHub Release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_lint-0.1.3.tar.gz (104.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

llm_lint-0.1.3-py3-none-win_amd64.whl (1.5 MB view details)

Uploaded Python 3Windows x86-64

llm_lint-0.1.3-py3-none-manylinux_2_39_x86_64.whl (1.6 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

llm_lint-0.1.3-py3-none-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file llm_lint-0.1.3.tar.gz.

File metadata

  • Download URL: llm_lint-0.1.3.tar.gz
  • Upload date:
  • Size: 104.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for llm_lint-0.1.3.tar.gz
Algorithm Hash digest
SHA256 e6c56abb8eb4f2390e44cda6adba2b80f7d2608803a9640ab248492e8f37f34d
MD5 4137b5c905cd84bc526ecf0273b0a666
BLAKE2b-256 17839fa5c0a58dfa9c6d16cae2efd7e3b362f3572d94af7014451ca08d3a0058

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_lint-0.1.3.tar.gz:

Publisher: publish.yml on joshuagilley/llm-lint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_lint-0.1.3-py3-none-win_amd64.whl.

File metadata

  • Download URL: llm_lint-0.1.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for llm_lint-0.1.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8c3e6375c035f2b420bcd749ffd4196158fe241fca21cc71c31cc8b74c0163f0
MD5 e6e9a5e3d60603c1cf3901347b7433f2
BLAKE2b-256 7baef905739f6a998b1b17d77a0747b5861c424bb1e69e80dd331cd337e2d33c

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_lint-0.1.3-py3-none-win_amd64.whl:

Publisher: publish.yml on joshuagilley/llm-lint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_lint-0.1.3-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for llm_lint-0.1.3-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 50e03f56d356b160ce58d987fbd99cdbe2cc35350654cbd6bd83ff13a561ca92
MD5 f4a60183c761209c6456a14aa702ca77
BLAKE2b-256 22b526c9cac3fcb4d70a518630b049c6db84f76cde8b8eca0c02885105b0d097

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_lint-0.1.3-py3-none-manylinux_2_39_x86_64.whl:

Publisher: publish.yml on joshuagilley/llm-lint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_lint-0.1.3-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for llm_lint-0.1.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a6fc944ae082740888f26cde450d75e1f812cddcce8f26515f2b86660646bcb
MD5 6db7a212e806aa69be4a50bf8c45ddf5
BLAKE2b-256 67ba57ea42e131ab9da2d8607d9c4ac5edf2949dfed502d5d74584df32fbf2f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_lint-0.1.3-py3-none-macosx_11_0_arm64.whl:

Publisher: publish.yml on joshuagilley/llm-lint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page