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 code | Meaning |
|---|---|
0 | No lint violations remain |
1 | Lint violations were found |
2 | Ruff 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.