Skylos AI Code Security & Static Analysis
Skylos is an open-source static analysis tool for Python, TypeScript, and Go, designed to enhance code security and quality. It identifies dead code, hardcoded secrets, exploitable vulnerabilities, and diff-aware regressions, particularly those introduced by AI-assisted coding. Skylos operates primarily as a CLI tool with a rapid release cadence, offering integrations for GitHub Actions and a VS Code extension for in-editor findings.
Warnings
- gotcha The `skylos agent scan` command changed its default behavior in `v4.2.1`. It now defaults to a 'fast review' path, and full, slow dead-code verification requires the explicit `--verify-dead-code` flag.
- gotcha Starting with `v4.1.4`, Skylos now honors project `.gitignore` files during file discovery and intelligently treats common imperative framework entrypoints (e.g., Flask `add_url_rule`, FastAPI `add_api_route`) as live code. This significantly reduces false positives for dead code but means previously ignored files might no longer be scanned, and some 'dead' framework routes might now be correctly recognized as live.
- gotcha While Skylos offers advanced AI features like `Auto-Fix (--fix)` and `Audit (--audit)`, these require an API key for a supported LLM provider (e.g., OpenAI, Anthropic). Skylos checks environment variables (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`), system keyring, or will prompt interactively.
- gotcha Version `4.0.0` introduced the `addopts` configuration in `pyproject.toml` under `[tool.skylos]` to set default CLI flags (e.g., `addopts = ["--quality", "--danger"]`). However, explicit CLI flags will always override `addopts` settings.
- gotcha To configure Skylos with custom settings (e.g., `complexity`, `nesting`, `max_args` thresholds) or to manage baselines, you must initialize your project with `skylos init`. This command creates or appends to a `pyproject.toml` file in your project root.
Install
-
pip install skylos
Quickstart
pip install skylos # Navigate to your project directory # cd my_python_project skylos . -a # To initialize a pyproject.toml for custom configuration: # skylos init # Then you can run: # skylos . -a --tui # for an interactive dashboard # skylos . --diff # to scan only changed files (auto-detects git base ref)