Skip to main content

Standalone audit-and-plan quality orchestrator with CLI and MCP surfaces.

Project description

Quality Runner

Quality Runner is a local-first audit-and-plan quality orchestrator for code repositories.

It inspects a target repo, compiles standards, detects available quality gates, normalizes evidence-backed findings, writes .quality-runner/ artifacts, and produces an ordered remediation plan. Version 1 does not edit source files, install dependencies, create commits, call remote services, or execute remediation.

Why this exists

Agentic coding workflows need a reliable way to separate evidence from opinion. Quality Runner turns repository facts, local standards, and available quality gates into versioned artifacts that another agent or human maintainer can review before approving implementation work.

Architecture

The pipeline is intentionally small: repository discovery compiles facts and quality-command evidence, standards compilation applies a profile, capability detection identifies available and missing gates, audit generation normalizes findings, and remediation planning writes an agent handoff.

See Backend Platform Case Study for the design narrative, self-audit improvements, and release-readiness proof.

Install

From PyPI after the package has been published:

uv tool install quality-runner

Until then, install from the public repository:

uv tool install git+https://github.com/jakyeamos/quality-runner.git

For local development:

git clone https://github.com/jakyeamos/quality-runner.git
cd quality-runner
uv tool install --editable . --force

Verify the installed commands:

quality-runner --version
quality-runner-mcp --version
quality-runner doctor --json

Quickstart

Run a full repo refresh and write the remediation handoff in the same command:

quality-runner refresh /path/to/repo \
  --run-id-prefix baseline-001 \
  --handoff-output /tmp/baseline-001-handoff.md \
  --json

For an audit-only pass without gate verification, use run:

quality-runner run /path/to/repo --run-id baseline-001 --json

Quality Runner writes artifacts under the target repo:

/path/to/repo/.quality-runner/runs/baseline-001/
  repo-scan.json
  code-quality-scan.json
  package-manager-preflight.json
  standards.json
  capability-matrix.json
  run-manifest.json
  quality-audit.json
  remediation-plan.json
  resolution-ledger.json
  resolution-ledger.md
  agent-handoff.json
  agent-handoff.md

The normal workflow is:

  1. Read agent-handoff.md.
  2. Review quality-audit.json for evidence-backed findings.
  3. Review code-quality-scan.json for structural warnings and line evidence.
  4. Review remediation-plan.json for ordered actions and verification gates.
  5. Have the coding agent convert the QR handoff into GSD-style phases, plans, ledgers, and batch summaries before editing.
  6. Execute one coherent batch at a time.
  7. Rerun Quality Runner to confirm findings clear and update the resolution ledger.

See Agent Usage for the copy-paste phase and batch templates agents should follow.

Commands

quality-runner doctor
quality-runner init /path/to/repo --json
quality-runner status /path/to/repo --json
quality-runner inspect /path/to/repo --json
quality-runner run /path/to/repo --json
quality-runner verify-gates /path/to/repo --json
quality-runner refresh /path/to/repo --run-id-prefix refresh-001 --handoff-output handoff.md --json
quality-runner release-smoke --json
quality-runner validate-report worker-report.json --json
quality-runner controller-report lint worker-report.json --strict --json
quality-runner export-handoff /path/to/repo
quality-runner-mcp

inspect and run scan the currently checked-out branch by default. If that branch is neither main nor the local branch with the highest commit count, repo-scan.json includes a warning. Use --checkout-most-advanced-branch to switch to that local most-advanced branch before scanning; the worktree must be clean.

See CLI Reference for command details.

refresh runs inspect, run, verify, and summarize in read-only mode. Its handoff statuses are intended for controllers: gates-clean means discovered local gates passed, gates-blocked means environment/dependency/read-only policy blocked evidence, and gates-failed means executable repo gates ran and failed. Blocked or failed handoffs include blocker_groups and next_slice.action_groups for structured routing. Use --handoff-output when you want the scan and the human remediation plan from one command; use export-handoff later to regenerate or copy a handoff from an existing run. For large remediations, agents should use QR output as evidence for a GSD-style phase plan rather than editing directly from the handoff.

Before release, run quality-runner release-smoke --json to verify the public CLI happy path, installed handoff export behavior, and report compatibility checks in one command.

MCP

The MCP server exposes:

  • quality_runner_doctor
  • quality_runner_inspect_repo
  • quality_runner_run
  • quality_runner_status
  • quality_runner_export_handoff

See MCP Integration for JSON-RPC examples and tool payloads.

Artifacts

Quality Runner writes versioned JSON and Markdown artifacts. See Artifact Contract for the current v1 artifact set and field-level guarantees.

Standards Profiles

The built-in profile is default. Repos can also save custom profiles in .quality-runner.toml:

quality-runner init /path/to/repo --json
[quality_runner]
default_profile = "team"

[quality_runner.profiles.team]
extends = "default"
required_capabilities = ["lint", "typecheck", "tests", "dead_code"]
allowed_package_managers = ["pnpm", "bun"]

After saving the config, the custom profile is selected automatically by default_profile, or explicitly with:

quality-runner run /path/to/repo --profile team --json

See Standards Profiles for the full profile and repo-policy reference.

Scan Exclusions

Discovery skips fixture corpora, docs, vendored trees, generated corpora, and tool output directories by default so embedded samples are not reported as product workspaces. Add repo-specific exclusions in .quality-runner.toml:

[quality_runner]
scan_exclusions = ["samples", "generated-reports/**"]

v1 Safety Boundary

Quality Runner v1 may create or update files under .quality-runner/runs/<run-id>/ in the target repository. It must not edit source files, install dependencies, create commits, call remote services, or execute remediation.

Every generated remediation slice includes verification guidance, but a separate coding agent must receive user approval before implementation.

Development

Run the full local ladder:

python3.14 -m pytest -q
ruff check .
ruff format --check .
basedpyright
vulture . --min-confidence 70
uv run --with pytest pytest -q
python3.14 scripts/run_pytest_with_lcov.py
pre-cr run --workspace . --json  # changed-line readiness; expects changed files

See Troubleshooting for common install and runtime issues.

See Release Checklist for PyPI and Homebrew packaging notes.

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

quality_runner-0.3.0.tar.gz (151.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quality_runner-0.3.0-py3-none-any.whl (136.6 kB view details)

Uploaded Python 3

File details

Details for the file quality_runner-0.3.0.tar.gz.

File metadata

  • Download URL: quality_runner-0.3.0.tar.gz
  • Upload date:
  • Size: 151.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quality_runner-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a0f0c047f9a167fada42a6b7d3d159da2e5a5f5409f819f58d405e5a1dec1772
MD5 8fed5da8d9a1c1e8cd9db63bf85d0988
BLAKE2b-256 ba80d1656b55b87912ef3f4e3b56734eb63c19e96ffda2f5d90ebf437fedd388

See more details on using hashes here.

Provenance

The following attestation bundles were made for quality_runner-0.3.0.tar.gz:

Publisher: release.yml on jakyeamos/quality-runner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quality_runner-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: quality_runner-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 136.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quality_runner-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6cf20e61b8758b153e745089e09197194421d3c32288d187c9c0fa075eee9f9e
MD5 a40788470de2782487a031627a32fbf4
BLAKE2b-256 ab0b18b0cbae416c0ee05d7e50daafdd57dd16a27de01bd8467c43ba4f45a895

See more details on using hashes here.

Provenance

The following attestation bundles were made for quality_runner-0.3.0-py3-none-any.whl:

Publisher: release.yml on jakyeamos/quality-runner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page