$npx skillfedfor your agent

lintrunner

With conditionsPyPI Quality AssuranceReleased May 20261.5M downloads / moPlatform wheel

Decision gist · record as of 2026-08-14

platform wheels — lintrunner-0.13.1-py3-none-macosx_10_12_x86_64.whl · lintrunner-0.13.1-py3-none-macosx_11_0_arm64.whl · lintrunner-0.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
v0.13.1 · released 2026-05-08 · Python >=3.6

Yes, if you manage a polyglot codebase and want unified linter orchestration. Lintrunner is actively maintained with no external runtime dependencies and ships as a compiled binary with broad platform support. The main gotcha is the unclear license—verify it fits your project's constraints before committing. The learning curve is moderate: you must write linter adapters to implement the JSON Lines protocol, but the tool itself is straightforward to configure and use.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Requires Python >=3.6 and git for change detection.
  • Linters must be configured in .lintrunner.toml and implement lintrunner's protocol (JSON Lines output to stdout).
  • Medium install friction due to platform-specific wheels and Rust compilation.

License · maintenance · safety

(unclear) — License status is unclear—no SPDX identifier or raw license text provided. Verify the actual license terms in the repository before adopting in proprietary or restricted-license projects.

last release 2026-05-08 (98 days) · last repo commit 2026-05-10 · 31 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,510,471 downloads/mo, #3,826 on PyPI

Verify before relying

pip install lintrunner

Create .lintrunner.toml with linter configurations, then:
lintrunner  # lints HEAD and working tree changes
lintrunner --all-files  # lints all configured paths
lintrunner foo.py bar.cpp  # lint specific files
  • Whether the unclear license is permissive, copyleft, or proprietary—check the repository for actual license file.
  • Whether Rust compilation is required at install time or if pre-built wheels cover all target platforms.
  • Performance characteristics when linting very large codebases or with many linters configured.
Same gist for agents: .md · .json

What it is and what it does

Lintrunner is a polyglot linting orchestrator that runs multiple linters on a codebase with a unified configuration and output format. It determines which files need linting (by default, files changed in HEAD and the working tree), invokes each linter via a common protocol, and collects their results into a single report. The tool is designed for large projects with mixed languages and tooling—you configure linters once in a .lintrunner.toml file, and lintrunner handles parallelization, path selection, and result aggregation.

The package has no runtime dependencies and ships as a compiled binary (Rust implementation) with wheels for macOS, Linux, Windows, and RISC-V. It expects each linter to be wrapped in an adapter that outputs JSON Lines to stdout and respects a {{PATHSFILE}} placeholder for the list of paths to check. Git integration is built in: by default it lints only changed files, but you can override this with --all-files, --revision, --merge-base-with, or by passing paths directly.

Use it for

  • Enforce consistent code style across a monorepo with multiple languages using a single lintrunner command.
  • Integrate linting into CI/CD pipelines with selective linter runs (--take, --skip) to balance thoroughness and speed.
  • Adopt linting incrementally on an existing project by using --output oneline to navigate through lint messages.
  • Run linters only on changed files in a pull request using --merge-base-with to avoid re-linting the entire codebase.
  • Combine project-wide and local linter configs via multiple .lintrunner.toml files (e.g., lintrunner.toml and lintrunner.private.toml).

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

With conditions

Yes, if you manage a polyglot codebase and want unified linter orchestration.

Lintrunner is actively maintained with no external runtime dependencies and ships as a compiled binary with broad platform support. The main gotcha is the unclear license—verify it fits your project's constraints before committing. The learning curve is moderate: you must write linter adapters to implement the JSON Lines protocol, but the tool itself is straightforward to configure and use.

Install

lintrunner on PyPI

Before you install

Medium install friction due to platform-specific wheels and Rust compilation. Active maintenance with recent releases; last commit 2026-05-10 and monthly downloads in the millions suggest stable, widely-used tooling.

Requires Python >=3.6 and git for change detection. Linters must be configured in .lintrunner.toml and implement lintrunner's protocol (JSON Lines output to stdout).

License in practice

License status is unclear—no SPDX identifier or raw license text provided. Verify the actual license terms in the repository before adopting in proprietary or restricted-license projects.

Quickstart

pip install lintrunner

Create .lintrunner.toml with linter configurations, then:
lintrunner  # lints HEAD and working tree changes
lintrunner --all-files  # lints all configured paths
lintrunner foo.py bar.cpp  # lint specific files

Verify before relying

  • Whether the unclear license is permissive, copyleft, or proprietary—check the repository for actual license file.
  • Whether Rust compilation is required at install time or if pre-built wheels cover all target platforms.
  • Performance characteristics when linting very large codebases or with many linters configured.

Package facts

LicenseNot declared unclear
Python supportSupports the current Python release >=3.6
Install frictionMedium. Platform-specific wheel
Runtime dependenciesNone
MaintenanceActively maintained 98 days since the last release
Last repo commit
First released
Downloads1,510,471 / month, #3,826 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyProgramming Language :: Rust

Evidence: lintrunner-0.13.1-py3-none-macosx_10_12_x86_64.whl; lintrunner-0.13.1-py3-none-macosx_11_0_arm64.whl; lintrunner-0.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; lintrunner-0.13.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; lintrunner-0.13.1-py3-none-manylinux_2_31_riscv64.whl; lintrunner-0.13.1-py3-none-win32.whl; lintrunner-0.13.1-py3-none-win_amd64.whl

Tags

Capabilities
lint runner orchestrationmulti-linter coordinatorpolyglot linting toollinter configuration managementgit-aware lintinglinter adapter protocolunified linting framework
Topics
lintingci-cdpolyglot

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “multi-linter coordinator”

  • lintrunnerLintrunner orchestrates and runs multiple linters across a codebase,…
  • pysenOrchestrates multiple Python linters (black, flake8, isort, mypy)…
  • bellowsbellows is a Python library that implements the EZSP protocol to…

Give your agent the search over MCP, or paste the wish link into any chat.

More Quality Assurance packages

coverage Worth it
PyPI · Testing · released Aug 2026

Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.

Install it if you want to measure test completeness or enforce coverage thresholds in your project.

permissive licensepure Python · 3.10+
335.8Mdownloads / mo
ruff Worth it
PyPI · Python Modules · released Aug 2026

Ruff is a Python linter and code formatter written in Rust that combines linting, formatting, and code fixing into a single tool, replacing Flake8, Black, isort, and related utilities.

MITcompiled wheel · 3.7+
316.1Mdownloads / mo
pexpect With conditions
PyPI · Software Development · released Nov 2023

Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.

ISCpure Pythonaging
200.8Mdownloads / mo
black Worth it
PyPI · Python Modules · released May 2026

Black reformats Python source code to a consistent style by parsing entire files and rewriting them according to an opinionated, deterministic set of rules, eliminating manual formatting decisions.

MITpure Python · 3.10+
179.9Mdownloads / mo
pytest-xdist Worth it
PyPI · Utilities · released Jul 2025

pytest-xdist distributes pytest tests across multiple CPU cores or machines to speed up test execution, with the simplest usage being `pytest -n auto` to spawn workers equal to available CPUs.

Install it if your test suite takes long enough that parallelization would save meaningful time.

MITpure Python · 3.9+
177.1Mdownloads / mo
cfn-lint Worth it
PyPI · Quality Assurance · released Aug 2026

Validates AWS CloudFormation templates in YAML or JSON format against resource provider schemas and best practices, checking property values and configuration correctness.

Install it if you work with CloudFormation templates.

MIT-0pure Python
114.9Mdownloads / mo

See also lintrunner-adapters · pysen · gitlint-core · import-linter · tclint · rumdl · sphinx-lint · django-migration-linter · gitlint · dotenv-linter