Skip to main content

Lintro

Lintro Logo

A comprehensive CLI tool that unifies various code formatting, linting, and quality assurance tools under a single command-line interface.

Documentation

CI Docker Coverage

Release PyPI Python License

CodeQL OpenSSF Scorecard OpenSSF Best Practices SBOM SBOM Status

🚀 Quick Start

# Install (choose one)
uv pip install lintro              # Python / PyPI (or: pip install lintro)
bun add -g @lgtm-hq/lintro         # Node / npm — self-contained, no Python

lintro check .                     # Find issues (alias: chk)
lintro format .                    # Fix issues (alias: fmt)
lintro badge                       # shields.io issue-count badge
lintro check --output-format grid  # Beautiful output

✨ Why Lintro?

  • 🎯 Unified Interface - One command for all your linting and formatting tools
  • 📊 Consistent Output - Beautiful, standardized output formats across all tools
  • 🔧 Auto-fixing - Automatically fix issues where possible
  • 🐳 Docker Ready - Run in isolated containers for consistent environments
  • 📈 Rich Reporting - Multiple formats: grid, JSON, HTML, CSV, Markdown
  • ⚡ Fast - Optimized parallel execution

🔌 Works With Your Existing Configs

Lintro respects your native tool configurations. If you have a .prettierrc, pyproject.toml [tool.ruff], or .yamllint, Lintro uses them automatically - no migration required.

  • Native configs are detected - Your existing .prettierrc, .oxlintrc.json, etc. work as-is
  • Enforce settings override consistently - Set line_length: 88 once, applied everywhere
  • Fallback defaults when needed - Tools without native configs use sensible defaults

See the Configuration Guide for details on the 5-tier config system.

🛠️ Supported Tools

ToolLanguageAuto-fixInstall
Linters
Actionlint ⚙️ GitHub Actions - GitHub Releases
Clippy 🦀 Rust ✅ rustup component add clippy
commitlint 🔀 Git commits - bun add -D @commitlint/cli @commitlint/config-conventional
npm install -D @commitlint/cli @commitlint/config-conventional
Cppcheck 🔧 C/C++ - brew install cppcheck
apt-get install cppcheck
golangci-lint 🐹 Go ✅ brew install golangci-lint
Install docs
Hadolint 🐳 Dockerfile - GitHub Releases
html-validate 🌐 HTML - bun add -D html-validate
npm install -D html-validate
import-linter 🐍 Python - 📦
Markdownlint 📝 Markdown - bun add -D markdownlint-cli2
npm install -D markdownlint-cli2
Vale 📝 Prose / Docs - brew install vale
GitHub Releases
Oxlint 🟨 JS/TS ✅ bun add -D oxlint
npm install -D oxlint
pydoclint 🐍 Python - 📦
pylint 🐍 Python - 📦
ShellCheck 🐚 Shell Scripts - brew install shellcheck
GitHub Releases
Spectral 📘 OpenAPI/AsyncAPI/JSON Schema - bun add -D @stoplight/spectral-cli
npm install -D @stoplight/spectral-cli
Yamllint 🧾 YAML - 📦
Formatters
Black 🐍 Python ✅ 📦
Oxfmt 🟨 JS/TS ✅ bun add -D oxfmt
npm install -D oxfmt
Prettier 🟨 JS/TS · 🧾 JSON ✅ bun add -D prettier
npm install -D prettier
shfmt 🐚 Shell Scripts ✅ brew install shfmt
GitHub Releases
rustfmt 🦀 Rust ✅ rustup component add rustfmt
Lint + Format
buf 🧩 Protobuf ✅ brew install bufbuild/buf/buf
GitHub Releases
Ruff 🐍 Python ✅ 📦
SQLFluff 🗃️ SQL ✅ pipx install sqlfluff
Taplo 🧾 TOML ✅ brew install taplo
GitHub Releases
dotenv-linter 🔑 .env Files ✅ brew install dotenv-linter
GitHub Releases
Stylelint 🎨 CSS/SCSS/Sass/Less ✅ bun add -D stylelint
npm install -D stylelint
typos 🔤 Spelling ✅ brew install typos-cli
cargo install typos-cli
Type Checkers
Astro 🚀 Astro - bun add astro + bun add -D @astrojs/check
npm install astro + npm install -D @astrojs/check
Mypy 🐍 Python - 📦
svelte-check 🔥 Svelte - bun add -D svelte-check
npm install -D svelte-check
TypeScript 🟨 JS/TS - bun add -D typescript
npm install -D typescript
vue-tsc 💚 Vue - bun add -D vue-tsc
npm install -D vue-tsc
Security
Bandit 🐍 Python - 📦
Gitleaks 🔐 Secret Detection - brew install gitleaks
GitHub Releases
cargo-audit 🦀 Rust - cargo install cargo-audit
cargo-deny 🦀 Rust - cargo install cargo-deny
OSV-Scanner 🔒 Multi-ecosystem - GitHub Releases
pip-audit 🐍 Python - pip install pip-audit
uv add pip-audit
brew install pip-audit
Semgrep 🔒 Multi-language - ./scripts/utils/install-semgrep.sh
uv tool install semgrep
brew install semgrep
TruffleHog 🔐 Secret Detection - brew install trufflehog
GitHub Releases
AI Tools
idiom-review 🤖 AI · Multi-language - uv pip install 'lintro[ai]' + API key

📦 = bundled with lintro — no separate install needed
⚡ Node.js tools support --auto-install to install dependencies automatically
🟨 Every Node.js tool resolves the same way: the checked project's node_modules/.bin first, then a binary on PATH, then a version-pinned bunx/npx fetch. A project devDependency (-D, shown above) is therefore always the best answer — it is lockfile-pinned and needs no network. A global (-g) or Homebrew install still works and is used when no local install exists. See Node.js tool resolution.

🤖 AI-Powered Features (Optional)

Lintro includes optional AI-powered features that provide actionable summaries and interactive fix suggestions. AI features are BYO (Bring Your Own) API key — not enabled by default.

  • Providers: Anthropic Claude, OpenAI GPT
  • AI Summary — high-level assessment with pattern analysis (1 API call per run)
  • Interactive Fix Suggestions — AI-generated code diffs with risk classification
  • Post-fix Summary — contextualizes what was fixed and what remains
# Install with AI support
uv pip install 'lintro[ai]'
export ANTHROPIC_API_KEY=sk-ant-...   # or OPENAI_API_KEY

# Enable in config
# .lintro-config.yaml
# ai:
#   enabled: true
#   provider: anthropic

See the AI Features Guide for full documentation.

📦 Installation

Python 3.11+ is required. Check tool versions with lintro list-tools.

# Lightweight (CLI only — detects tools on PATH)
uv pip install lintro
brew tap lgtm-hq/tap && brew install lintro

# Full (bundled Python tools: ruff, black, mypy, bandit, import-linter,
# pydoclint, pylint, yamllint)
uv pip install 'lintro[full]'
brew tap lgtm-hq/tap && brew install lintro-full

# Docker (all tools)
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check

# Docker (CLI only)
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro-base:latest check

# First run after lightweight install
lintro init
lintro doctor
lintro install --profile recommended

See Getting Started for detailed installation options.

💻 Usage

# Check all files (alias: chk)
lintro check .

# Auto-fix issues (alias: fmt)
lintro format .

# Grid output with grouping
lintro check --output-format grid --group-by file

# Run specific tools
lintro check --tools ruff,prettier,mypy

# Auto-install Node.js dependencies
lintro check --tools tsc --auto-install

# Exclude directories
lintro check --exclude "node_modules,dist,venv"

# Only scan files changed vs a git base ref (fast PR-scoped checks)
lintro check --diff              # vs the repo default branch (origin/HEAD)
lintro check --diff main         # vs an explicit ref
lintro format --diff             # format only changed files

# List available tools
lintro list-tools

🐳 Docker

# Run from GHCR (tools image - recommended)
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check

# With formatting
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check --output-format grid

# Base image (minimal, no external tools; separate GHCR package)
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro-base:latest check

📚 Documentation

Guide Description
Getting Started Installation, first steps, requirements
Configuration Tool configuration, options, presets
AI Features AI summaries, fix suggestions, config
Docker Usage Containerized development
GitHub Integration CI/CD setup, workflows
Pre-commit Integration Run lintro as a pre-commit hook
Contributing Development guide, adding tools
Troubleshooting Common issues and solutions

Advanced: Tool Analysis · Architecture · Security

🔨 Development

# Clone and install
git clone https://github.com/lgtm-hq/py-lintro.git
cd py-lintro
uv sync --dev

# Run tests
./scripts/local/run-tests.sh

# Run lintro on itself
./scripts/local/local-lintro.sh check --output-format grid

🤝 Community

📄 License

MIT License - see LICENSE for details.

Release files for lintro 0.152.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lintro 0.152.9
File Size Uploaded
lintro-0.152.9.tar.gz 2.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for lintro 0.152.9
File Interpreter ABI Platform
lintro-0.152.9-py3-none-any.whl Python 3 none any Details

Total release size: 4.5 MB

Release files / lintro-0.152.9.tar.gz

Download URL lintro-0.152.9.tar.gz
Size 2.7 MB
Tags Source
SHA-256 checksum
How to use checksums
794a59b9dc1feaa8b8770c1fe14bacf8ab6c82ed8ac72fd75ec8e58c62611b90
BLAKE2b-256 checksum
How to use checksums
e4466c59b87a5737a9f5cc3db2778179b176dd9fb5a47d661460d2dd9fcbf75f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release files / lintro-0.152.9-py3-none-any.whl

Download URL lintro-0.152.9-py3-none-any.whl
Size 1.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
a08091e01235ef4b9a119d5395493d85482f91b14b1fa1a69e8b00648d6b88a5
BLAKE2b-256 checksum
How to use checksums
1662e56ef2b09c88e01805b4e9d0cf56a5f2dd64f19d9891a268ebe6cf1618e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.152.9 This release

2 release files

0.97.1

2 release files

0.97.0

2 release files

0.96.0

2 release files

0.95.0

2 release files

0.94.8

2 release files

0.94.7

2 release files

0.94.6

2 release files

0.94.5

2 release files

0.94.4

2 release files

0.94.3

2 release files

0.94.2

2 release files

0.94.1

2 release files

0.94.0

2 release files

0.93.1

2 release files

0.93.0

2 release files

0.92.0

2 release files

0.91.9

2 release files

0.91.8

2 release files

0.91.7

2 release files

0.91.6

2 release files

0.91.5

2 release files

0.91.4

2 release files

0.91.3

2 release files

0.91.2

2 release files

0.91.1

2 release files

0.91.0

2 release files

0.90.1

2 release files

0.90.0

2 release files

0.89.1

2 release files

0.89.0

2 release files

0.88.1

2 release files

0.88.0

2 release files

0.87.1

2 release files

0.87.0

2 release files

0.86.0

2 release files

0.85.2

2 release files

0.85.1

2 release files

0.85.0

2 release files

0.84.1

2 release files

0.84.0

2 release files

0.83.0

2 release files

0.82.3

2 release files

0.82.2

2 release files

0.82.1

2 release files

0.82.0

2 release files

0.81.3

2 release files

0.81.2

2 release files

0.81.1

2 release files

0.81.0

2 release files

0.80.9

2 release files

0.80.8

2 release files

0.80.7

2 release files

0.80.6

2 release files

0.80.5

2 release files

0.80.4

2 release files

0.80.3

2 release files

0.80.2

2 release files

0.80.1

2 release files

0.80.0

2 release files

0.79.4

2 release files

0.79.3

2 release files

0.79.2

2 release files

0.79.1

2 release files

0.78.2

2 release files

0.78.1

2 release files

0.78.0

2 release files

0.77.4

2 release files

0.77.3

2 release files

0.77.2

2 release files

0.77.1

2 release files

0.77.0

2 release files

0.76.0

2 release files

0.75.0

2 release files

0.74.0

2 release files

0.73.0

2 release files

0.72.0

2 release files

0.71.3

2 release files

0.71.2

2 release files

0.71.1

2 release files

0.71.0

2 release files

0.70.6

2 release files

0.70.5

2 release files

0.70.4

2 release files

0.64.5

2 release files

0.64.3

2 release files

0.64.2

2 release files

0.64.1

2 release files

0.64.0

2 release files

0.63.4

2 release files

0.63.3

2 release files

0.63.2

2 release files

0.63.1

2 release files

0.63.0

2 release files

0.62.4

2 release files

0.62.3

2 release files

0.62.2

2 release files

0.61.1

2 release files

0.61.0

2 release files

0.60.2

2 release files

0.58.1

2 release files

0.58.0

2 release files

0.57.7

2 release files

0.57.6

2 release files

0.57.5

2 release files

0.57.4

2 release files

0.57.3

2 release files

0.57.2

2 release files

0.57.1

2 release files

0.57.0

2 release files

0.56.0

2 release files

0.55.0

2 release files

0.54.0

2 release files

0.53.0

2 release files

0.52.6

2 release files

0.52.5

2 release files

0.52.4

2 release files

0.52.3

2 release files

0.52.2

2 release files

0.52.1

2 release files

0.52.0

2 release files

0.51.6

2 release files

0.51.5

2 release files

0.51.4

2 release files

0.51.3

2 release files

0.51.2

2 release files

0.42.6

2 release files

0.42.5

2 release files

0.42.4

2 release files

0.42.2

2 release files

0.42.1

2 release files

0.41.0

2 release files

0.40.6

2 release files

0.40.5

2 release files

0.40.4

2 release files

0.40.3

2 release files

0.40.2

2 release files

0.40.1

2 release files

0.40.0

2 release files

0.39.0

2 release files

0.38.0

2 release files

0.37.9

2 release files

0.37.8

2 release files

0.37.7

2 release files

0.37.6

2 release files

0.37.5

2 release files

0.35.0

2 release files

0.34.0

2 release files

0.33.0

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.30.0

2 release files

0.29.0

2 release files

0.28.0

2 release files

0.27.0

2 release files

0.26.0

2 release files

0.25.0

2 release files

0.24.5

2 release files

0.24.4

2 release files

0.24.3

2 release files

0.24.2

2 release files

0.24.1

2 release files

0.24.0

2 release files

0.23.1

2 release files

0.21.2

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.14.0

2 release files

0.13.3

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.3.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page