Python Linting With Ruff

July 30, 2026 ยท View on GitHub

Skylos can run Ruff through the same skylos CLI used for repository analysis. Ruff remains an optional dependency, so the core Skylos install stays focused on its multi-language analyzers.

Install

pip install "skylos[lint]"

The all extra also includes lint support:

pip install "skylos[all]"

Run

Lint the current directory:

skylos lint

Pass paths and Ruff check options after lint:

skylos lint src test
skylos lint src --select E,F,I
skylos lint . --fix
skylos lint . --diff

With no arguments, Skylos invokes ruff check .. Other than the top-level -h / --help flags, which display Skylos wrapper help, it forwards the arguments unchanged to ruff check using the Python environment that runs Skylos. It does not use a shell.

Configuration And Exit Codes

Ruff continues to discover configuration from pyproject.toml, ruff.toml, or .ruff.toml. Skylos does not translate Ruff rules into SKY-* findings or merge them into Skylos reports.

The command preserves Ruff's output and exit code:

Exit codeMeaning
0No lint violations remain
1Lint violations were found
2Ruff could not run because of invalid options, configuration, or another error

This means existing CI checks can replace ruff check ... with skylos lint ... without changing their pass/fail behavior.

Relationship To Skylos Analysis

skylos lint is a convenience entry point for Ruff's fast Python lint rules. It is separate from skylos . and skylos . -a, which cover Skylos dead code, security, secrets, dependency, quality, and AI-defect analysis across multiple languages. Installing the lint extra does not make Ruff run during a normal Skylos scan.

For all Ruff options and configuration behavior, see the Ruff linter documentation and Ruff configuration documentation.