Skip to main content

quality-loop

Measure what a product teaches.

A skill bundle, an MCP server, a CLI - or a manual and the app it describes - is only as good as what someone with nothing else can do with it. quality-loop runs an agent on a real task, in a room that holds what the product gives its users and nothing more. The room is started so it cannot read the repository the answers are in. Afterwards an operator agent reports the problems it finds in what the room did, each with a severity and the evidence for it.

There is no pass/fail. The point is discovery: each run should surface something the last one did not, and leave a record good enough for a person, or a development-time agent, to reproduce what it found. Every problem carries a stable id, so the same problem is recognised across runs: de-duplicated, seen to be gone, seen to come back.

pip install quality-loop            # 'quality-loop[tui]' to drive terminal apps

Python 3.11 or later, no runtime dependencies (driving a terminal app needs pyte, the tui extra). It drives Claude Code (claude) as subprocesses, so that has to be installed and signed in. macOS and Windows; terminal apps on macOS and Linux.

See it work

The repository has two products small enough to read in a minute.

git clone https://github.com/crftwr/quality-loop && cd quality-loop
make test                                # the harness's own tests
.venv/bin/python examples/toy/run.py     # an agent-facing skill: one room, a few cents
.venv/bin/python examples/tui/run.py     # a terminal app and its manual

The toy is a "greeter" skill that reads a house style and writes one file. The TUI example is a note list whose manual is the only thing the room is given; the room drives the app itself, and the operator checks it live. The output is rooms/<version>-<time>/FINDINGS.md.

A run, per scenario

build the room - the bundle, RULES.md, and TASK.md holding the scenario's Prompt, verbatim
stand fixtures in for the user's files
operator, phase 1 - put the scenario's screen up, by name
the room's session - isolated, non-interactive
operator, live check - drive the real app, when the scenario asks for one
collect what the room made, put the user's files back, audit the transcript
operator, phase 2 - read the record, check the Must lists with evidence, write REPORT.md

The loop

quality-loop init                      # in the product: the conductor skill and settings
quality-loop run 11 12                 # starts a run in the background, prints its id
quality-loop watch                     # follow it from a terminal
quality-loop findings                  # new / still there / gone / back, against the run before

init installs a skill for the conductor: a Claude Code session in the product's repository that plans with the person, sets the product up, runs, files findings as GitHub Issues, fixes what the person chooses, and retests, under a policy the person sets. See Running the loop.

Documentation

  • Concepts: rooms, operators, the conductor, scenarios, reports, and which parts are code rather than an agent's judgement.
  • Running the loop: the command line, watching a run, parallel runs, comparing findings, the conductor and its policy.
  • Writing scenarios: the Markdown format, doc-driven scenarios, and what makes a scenario measure something.
  • Writing an adapter: what a product supplies, from a launch command and a redirected home up to evidence tools of its own.
  • Reports: problems, severities, kinds and ids, the reproduction record, and FINDINGS.md / findings.json.
  • Isolation and permissions: what keeps the room, the operator and the conductor in bounds, why each rule exists, and the known limits.
  • Development: tests, live tests, releasing.

Products using it

Status

0.x, early. It has been run end to end on macOS against the two examples and against Keyhac. The Windows screen and key backends are unit-tested but have not yet been run on a Windows machine. The design discussion is crftwr/keyhac#205 and this repository's issues.

MIT licensed.

Metadata

Release files for quality-loop 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quality-loop 0.2.0
File Size Uploaded Provenance
quality_loop-0.2.0.tar.gz 103.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for quality-loop 0.2.0
File Interpreter ABI Platform
quality_loop-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 201.5 kB

Release files / quality_loop-0.2.0.tar.gz

Download URL quality_loop-0.2.0.tar.gz
Size 103.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4351a9c7b83a086bd827dc3307a1f9ff16d82849fda9ac2fae897b3c5218cf17
BLAKE2b-256 checksum
How to use checksums
6f110ee920a81815a6ae32b1f76611a254f77272994be6d1b5d3482a728f9e96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / quality_loop-0.2.0-py3-none-any.whl

Download URL quality_loop-0.2.0-py3-none-any.whl
Size 98.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a5bb54cf456dd0c4a1bfa2d2f4f9324cd6420d1082847d3245ac9029e4e6f9a6
BLAKE2b-256 checksum
How to use checksums
44677fc8bccc196d54d2aef821a9fcd44263ceb62b319058bbffd2b7f125497d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for quality-loop 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page