QualBench — CI for AI-Generated Code
AI Cost Tracking
This project uses AI-generated code. Total cost: $3.1500 with 21 AI commits.
Generated on 2026-06-29 using openrouter/deep/deep-v4-pro
Correct code is not the same as mergeable code. eslint + code review, but for AI. Add to your pipeline in 2 minutes.
60 seconds to your first score
pip install qualbench
qualbench quickstart
No config, no API keys. QualBench evaluates your current diff and prints a Quality Score.
Add to CI in 2 minutes
# .github/workflows/qualbench.yml
name: QualBench
on: [pull_request]
jobs:
quality-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: semcod/qualbench-action@v1
with:
tool: prollama
fail_on_score: 70
Every AI-generated PR gets a quality review comment. Set fail_on_score and the pipeline fails if quality is below your threshold.
🧠 QualBench Review
Quality Score: 78/100
❌ Complexity increased (+12%)
⚠ Security: 1 new medium-severity finding
✔ Tests pass, no regressions
Verdict: needs_review
CI/CD Examples
GitHub Action (recommended)
# .github/workflows/qualbench.yml
name: QualBench
on: [pull_request]
jobs:
quality-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: semcod/qualbench-action@v1
with:
tool: prollama
fail_on_score: 70
GitLab CI
# .gitlab-ci.yml
qualbench:
stage: test
image: python:3.12-slim
before_script:
- pip install qualbench
script:
- qualbench run --tool prollama --json --fail-on-score 70
only:
- merge_requests
Azure DevOps
# azure-pipelines.yml
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.12'
- script: |
pip install qualbench
qualbench run --tool prollama --json --fail-on-score 70
displayName: 'QualBench Quality Check'
Jenkins
// Jenkinsfile
stage('Quality Check') {
steps {
sh '''
pip install qualbench
qualbench run --tool prollama --fail-on-score 70
'''
}
}
CircleCI
# .circleci/config.yml
version: 2.1
jobs:
quality:
docker:
- image: python:3.12-slim
steps:
- checkout
- run: pip install qualbench
- run: qualbench run --tool prollama --fail-on-score 70
workflows:
quality-check:
jobs:
- quality
The problem
AI coding tools resolve 70–80% of benchmark tasks. But most AI-generated PRs are not mergeable without human fixes. Every existing benchmark asks "do tests pass?" — nobody asks "would a senior developer approve this PR?"
Six dimensions of production readiness
| Dimension | What it measures | Weight |
|---|---|---|
| Correctness | All tests pass, no regressions | 25% |
| Mergeability | Would a senior dev merge this? (1–5) | 25% |
| Security | New vulnerabilities introduced | 15% |
| Code quality | Complexity delta, dead code | 15% |
| Iterations | Attempts to reach acceptable output | 10% |
| Cost efficiency | USD per successful patch | 10% |
Verdicts: ready_to_merge (≥85), needs_review (65–84), not_merge_ready (<65).
CLI
qualbench run --tool prollama # score current diff
qualbench run --tool prollama --json # portable JSON output
qualbench run --mode cheap # lowest-cost models
qualbench quickstart # first score in 60 seconds
qualbench compare my_tool # vs leaderboard
qualbench info # dataset summary
qualbench doctor # check dependencies
One portable format everywhere
CLI, API, GitHub Action — same JSON schema. See docs/schema.md.
Adding your tool
cp runners/template.py runners/my_tool.py
# Implement run() → return portable schema
qualbench run --tool my_tool
# Submit PR with results
License
Licensed under Apache-2.0.
Status
Last updated by taskill at 2026-04-25 13:46 UTC
| Metric | Value |
|---|---|
| HEAD | c199cf4 |
| Coverage | — |
| Failing tests | — |
| Commits in last cycle | 26 |
Repository received a mix of fixes, refactors and configuration updates: tests were hardened (mocks added), a JSON test fix was applied, many vallm/style issues and magic numbers were addressed, and release-related features (v0.3.0, Supervisor AI, new runners) were added. PyQual configuration thresholds and gates were adjusted and documentation/TODOs were updated after a PyQual run.
Metadata
Release files for qualbench 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qualbench-0.3.2.tar.gz | 340.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qualbench-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 363.3 kB
Release files / qualbench-0.3.2.tar.gz
| Download URL | qualbench-0.3.2.tar.gz |
|---|---|
| Size | 340.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
63b8533bdc18de68e1d1e9c1ad8b159525b9b147d6c2b144a6dec61e22a6fd23
|
|
BLAKE2b-256 checksum How to use checksums |
67ae14b764a1543eaa919c3a2c4a8ef8aa81565b5fd7968f547bf7e7a06f5062
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / qualbench-0.3.2-py3-none-any.whl
| Download URL | qualbench-0.3.2-py3-none-any.whl |
|---|---|
| Size | 22.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5d2b5c456cd8322af4b28c647561314e1d66d0d7abe139597bae694ade7d6540
|
|
BLAKE2b-256 checksum How to use checksums |
06f836a9f7b183aa4edf32591f3cea27c1458789fb491f5624d9f5af44497823
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|