Unified code quality orchestration; linters, formatters, type checkers, and security analyzers in one CLI
Project description
Scrutiny
Unified code quality orchestration for Python projects.
Scrutiny runs Ruff (formatter + linter), Mypy, Radon, and Bandit in a single command with tiered strictness, automatic pyproject.toml generation, context-aware defaults, and structured logging. Configure once, enforce everywhere.
Installation
# All tools
pip install ks-scrutiny[all]
# Specific tools only
pip install ks-scrutiny[ruff,mypy]
# Core package only (install tools separately)
pip install ks-scrutiny
Quick Start
# Run with strict tier (default)
python -m scrutiny
# Run on a specific directory
python -m scrutiny src/
# Essential tier (core correctness only)
python -m scrutiny --essential
# Check tool availability
python -m scrutiny --doctor
Output Example
======================================================================
Code Quality Analysis
Project: my-project
Tools: ruff_formatter, ruff_linter, mypy, radon, bandit
Tier: strict
Security: enabled
Context: cli
Mode: standard
Framework: none
Config: pyproject.toml unchanged
======================================================================
Running ruff_formatter...
[ruff_formatter]
Files: 12
Issues: 0
Time: 0.02s
Checked: formatting consistency
Result: all files formatted
Running ruff_linter...
[ruff_linter]
Files: 12
Issues: 0
Time: 0.03s
Checked: 54 lint rule groups
Result: no issues found
Running mypy...
[mypy]
Files: 12
Issues: 0
Time: 0.45s
Checked: strict type checking, unreachable code, untyped globals
Result: no type errors
Running radon...
[radon]
Files: 12
Issues: 0
Time: 0.08s
Checked: cyclomatic complexity (threshold B, max score 10)
Result: all functions within threshold
Running bandit...
[bandit]
Files: 12
Issues: 0
Time: 0.15s
Checked: security (MEDIUM+ severity, MEDIUM+ confidence)
Result: no findings
======================================================================
Script Code: 0
All checks passed (12 files, 0.73s)
ruff_formatter ... passed
ruff_linter ... passed
mypy ... passed
radon ... passed
bandit ... passed
======================================================================
Configuration Tiers
| Tier | Description | Use Case |
|---|---|---|
--essential |
Core correctness only | Legacy codebases, quick checks |
--standard |
Quality + correctness | Production-ready code |
--strict |
Maximum rigor (default) | Enforced style and best practices |
--insane |
Every rule enabled | Bulletproof but noisy |
Each tier includes all rules from the tier below it.
CLI Flags (Summary)
| Flag | Description |
|---|---|
--tool ruff|mypy|radon|bandit |
Run only specified tool(s) |
--fix / --check-only |
Enable/disable auto-fix |
--parallel / --no-parallel |
Parallel tool execution |
--generate-config |
Create/merge pyproject.toml |
--show-config |
Display effective configuration |
--doctor |
Check tool availability |
-q / -v / --detailed |
Output verbosity |
See docs/cli.md for the complete reference.
Documentation
- CLI Reference - All flags with examples
- Configuration - Tiers, tool settings, exclusions
- Architecture - Package structure and data flow
- API Reference - Public API for programmatic use
License
See LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ks_scrutiny-3.1.1.tar.gz.
File metadata
- Download URL: ks_scrutiny-3.1.1.tar.gz
- Upload date:
- Size: 189.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1566a1972d321f1dc2cbfc2fdac4694878d4093838559e88517ed46073dafc1
|
|
| MD5 |
7db7c965f1ed6053d7f9340d2fb44bd1
|
|
| BLAKE2b-256 |
ea0235880ef251f1d9b5d278f18279e0bab37dbcdfef4207e6e4241a7558b9d2
|
File details
Details for the file ks_scrutiny-3.1.1-py3-none-any.whl.
File metadata
- Download URL: ks_scrutiny-3.1.1-py3-none-any.whl
- Upload date:
- Size: 103.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80159654ded43b2ad3c79952a8386c65f2d3db73fd1d0f05fb2d10cfcf1bf802
|
|
| MD5 |
c5294e1f968c3ba5f7129c02bbe109d1
|
|
| BLAKE2b-256 |
10d9fbc09971a29913c2026423be99fed37f7ec6c92ffad308264dd21e96412d
|