LabscoMCP early access ↗
MuratKusMCP SERVER

QA Radar

Tell an agent which files to test first — git churn, coverage gaps and test mapping combined into a risk score.

by MuratKus ↗Automated Testing & QACommunity

LABSCO SUMMARY

An agent could compute this itself — the argument is that it shouldn't.

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.

What it is

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.

What you get

  • 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

Requirements

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.

Setup effort

One command — uvx qaradar serve