The README makes the case openly: a capable agent with bash could run git log, parse coverage.xml and glob for test files, but that is several sequential calls, hundreds of KB of context, and a weighted score improvised each session. Doing it in code makes the answer reproducible and cheap. The diff-aware scoring is the sharpest piece — it normalises against the full repository so a file with two commits in a PR is not flagged critical just because it is the only file the agent can see.
A Python analyser that reads three signals out of a repository — how often a file changes, how well it is covered, and whether it has a corresponding test file — and combines them into a per-file risk score with readable reasons. It runs as an MCP server for coding agents and as a CLI for humans and CI. The point is that the answer is computed the same way every time, rather than reasoned out from raw `git log` in the model's context.
- `qaradar_healthcheck` for a full quality overview of a repository
- `qaradar_risky_modules` ranks files by risk with the reasons behind each rating
- `qaradar_churn` finds the hotspots; `qaradar_coverage_gaps` finds the blind spots; `qaradar_untested_files` finds source files with no test at all
- `qaradar_pr_risk` scores only the files changed between a base ref and HEAD, but normalises against the whole repo so a small PR does not get falsely flagged critical
- `qaradar_should_run` answers whether a re-analysis is warranted and whether it should cover the diff or the full repo
- Coverage formats normalised across coverage.py JSON, Istanbul/Jest JSON, Cobertura XML, LCOV and Go cover profiles
- Test-naming conventions encoded per language for Python, JavaScript/TypeScript, Go, Swift, Kotlin, Dart and Objective-C, with best-effort support for Java, Ruby and Rust
- Five slash commands when installed as a Claude Code plugin: `/qaradar:qa-check`, `/qaradar:qa-risky`, `/qaradar:qa-untested`, `/qaradar:qa-plan`, `/qaradar:qa-pr-risk`
No account and no key — it reads the repository you point it at. `uvx qaradar serve` runs it without installing; `pip install qaradar` installs it. Package `qaradar`, version 0.4.0, stdio transport. In Claude Code the one-step path is `/plugin marketplace add Muratkus/qaradar` then `/plugin install qaradar@qaradar-marketplace`, which wires the server and the slash commands together. Coverage signals need an existing coverage report in the repo; churn and test mapping work without one. Persistence is opt-in via `--save`, writing to `.qaradar/state.json`.
One command — uvx qaradar serve
