# Quelltest > Quelltest ships two packages. npm package (Apache-2.0): The free, offline gate for AI-written tests. Proves tests would fail if the code were wrong (mutation verification in a throwaway copy), detects weakened tests in a change, and finds untested risky edges in JavaScript and TypeScript. Works with Jest, Vitest, Mocha and node:test. PyPI package (MIT): Verified edge-case tests for Python, from the specs already in your code. Reads docstrings, Pydantic models, type hints and bug reports, extracts every testable requirement, writes a pytest test for each gap, and proves each test catches the violation through a five-gate pipeline. Each documentation link below points at a raw markdown version of the page. Append `.md` to any docs or blog URL to get markdown. Package versions and licences above are the source of truth; the site is rebuilt from the same content. ## Packages - [npm: quelltest 0.3.1](https://www.npmjs.com/package/quelltest): The free, offline gate for AI-written tests. Install with `npm install -D quelltest`. Apache-2.0. Requires Node.js 20+ (Node.js 22.18+ or 24.11+ from the next release from the next release). Commands: find, score, generate, verify, gate, mcp, eval, mocks. - [PyPI: quelltest 2.0.0](https://pypi.org/project/quelltest/): Verified edge-case tests for Python, from the specs already in your code. Install with `pip install quelltest`. MIT. Requires Python 3.11+. - [npm source](https://github.com/quelltest/quelltest-npm): Source code and issues for the npm package. - [PyPI source](https://github.com/quelltest/quelltest-lib): Source code and issues for the Python package. ## Getting started - [Introduction](https://quelltest.com/docs.md): Docs for quelltest on npm (JavaScript, TypeScript) and PyPI (Python). Verify that tests catch bugs, gate weakened tests, find untested edge cases. ## npm (JavaScript/TypeScript) - [npm overview](https://quelltest.com/docs/npm.md): Free offline CLI for JavaScript and TypeScript that proves tests fail when code is wrong, flags weakened tests in a diff, and ranks untested risky edges. - [Installation](https://quelltest.com/docs/npm/installation.md): Install quelltest 0.3.1 with npm, pnpm, yarn or npx on Node.js 20+. It makes no network calls; only the verify command executes your tests. - [Quickstart](https://quelltest.com/docs/npm/quickstart.md): Run every quelltest command on a small Jest project and read the real output, from finding risky edges to gating a change that weakens tests. - [CLI reference](https://quelltest.com/docs/npm/cli.md): All eight quelltest npm commands (find, score, generate, verify, gate, mcp, eval, mocks) with every flag, the JSON report shape and exit codes 0 to 6. - [How verify works](https://quelltest.com/docs/npm/verify.md): How quelltest verify mutates your source in a throwaway copy and requires a test to pass first, observe the code and fail on a mutant. Flags and handoff. - [The test gate](https://quelltest.com/docs/npm/gate.md): quell gate compares changed test files with their merge-base version and fails on deleted, skipped, .only, removed or loosened assertions. Flags and SARIF. - [Code that calls APIs](https://quelltest.com/docs/npm/dependencies.md): How quelltest synthesises stubs from guards on API call results, checks stubs against HAR or OpenAPI examples with quell mocks, and what it cannot know. - [Rule pack](https://quelltest.com/docs/npm/rules.md): Every quelltest find rule id with what it flags, its risk and confidence, the sanitisers it recognises, and the quell-ignore and quell-ignore-mutant directives. - [CI integration](https://quelltest.com/docs/npm/ci.md): Fail pull requests that weaken tests with quell gate, report risky changed lines with find --diff, upload SARIF to code scanning, and set score thresholds. - [Privacy](https://quelltest.com/docs/npm/privacy.md): The quelltest npm package sends no code anywhere and makes no network calls. What each command reads and writes, what verify copies, and what the llm hook runs. - [Limits and known issues](https://quelltest.com/docs/npm/limits.md): What the quelltest npm package does not do: no suite-wide mutation score, narrow test generation, line-level rules, plus known issues in 0.3.1 with workarounds. ## Python (PyPI) - [Quickstart](https://quelltest.com/docs/quickstart.md): Install the quelltest PyPI package, run quell find on a Python project, write a verified pytest test with --fix, and gate CI with quell ci. - [Installation](https://quelltest.com/docs/installation.md): Install the quelltest PyPI package (MIT, Python 3.11+) with pip or uv, add optional extras for Groq, PySpark and MCP, and verify the quell command works. - [How it works](https://quelltest.com/docs/how-it-works.md): How quelltest reads specs from Python code, checks which have no test, generates a pytest test and proves it through five gates before writing it with libcst. - [Find your first gap](https://quelltest.com/docs/guides/first-gap.md): Step-by-step walkthrough for a Python module: find an untested guard clause, generate a verified pytest test, read quell-report.json, and run the new test. - [Writing good docstrings](https://quelltest.com/docs/guides/docstrings.md): Which docstring sections and Pydantic constraints the Python quelltest readers turn into requirements, with the real extraction output for a sample module. - [CLI overview](https://quelltest.com/docs/cli.md): Reference list of the quell commands in the quelltest PyPI package, with what each does, which are deprecated, and links to detailed pages. - [quell find](https://quelltest.com/docs/cli/find.md): The primary quell command. Reads guard clauses, reports which have no test, and with --fix writes verified pytest tests. Options, output and exit codes. - [quell score](https://quelltest.com/docs/cli/score.md): Show the Production Readiness Score for a Python path as a panel, JSON or an SVG badge, from a cached quell-report.json or a quick rule-engine scan. - [quell reproduce](https://quelltest.com/docs/cli/reproduce.md): Convert a plain-English bug description into a verified failing pytest test with quell reproduce. Options, what it needs, and how to read the result. - [quell ci](https://quelltest.com/docs/cli/ci.md): quell ci checks docstring and type requirements for coverage and exits 1 when the score is below --threshold, a fraction from 0.0 to 1.0. - [quell auth](https://quelltest.com/docs/cli/auth.md): Configure an LLM provider key with quell auth set, log in to the hosted service in a browser, check status and privacy, and see where credentials are stored. - [quell init](https://quelltest.com/docs/cli/init.md): quell init appends a default [tool.quell] block to an existing pyproject.toml and adds the scaffold directory to .gitignore. Shows the exact block. - [quell install](https://quelltest.com/docs/cli/install.md): quell install adds a pre-commit hook and a GitHub Actions workflow that comments the Production Readiness Score on pull requests. Flags --hook and --pr. - [CI/CD integration](https://quelltest.com/docs/guides/ci-integration.md): Run quell ci in GitHub Actions, GitLab CI or CircleCI to fail Python builds below a requirement-coverage threshold. Threshold units, exit codes and tips. - [GitHub Actions](https://quelltest.com/docs/guides/github-actions.md): Two ways to run the Python quelltest package on pull requests: the generated quell install --pr workflow with a score comment, or a plain quell ci step. - [pyproject.toml](https://quelltest.com/docs/configuration/pyproject.md): Reference for every [tool.quell] key the Python quelltest package defines, with types and defaults, and which keys the code actually reads today. - [LLM providers](https://quelltest.com/docs/configuration/llm-providers.md): Configure the optional LLM fallback in the Python quelltest package: providers, how to store a key, how to enable it, and exactly what the prompt contains. ## Reference - [Three-bucket output](https://quelltest.com/docs/reference/buckets.md): How the Python quelltest package sorts every edge case into WRITTEN, SCAFFOLDED or FLAGGED, which outcomes map to each bucket, and where reasons are recorded. - [Five-gate pipeline](https://quelltest.com/docs/reference/gates.md): The five gates every Python quelltest test must pass before it is written: valid AST, original, secure, passes on correct code, fails on violated code. - [Production Readiness Score](https://quelltest.com/docs/reference/prs.md): How the Python quelltest Production Readiness Score is computed from written tests and per-test confidence, with modifiers, tiers and the confidence factors. - [Constraint kinds](https://quelltest.com/docs/reference/constraint-kinds.md): The requirement kinds the Python quelltest package extracts, which ones the rule engine can generate tests for, and how each violation is injected. ## AI agents - [npm: MCP server and hooks](https://quelltest.com/docs/npm/agents.md): Run quell mcp so Claude Code, Cursor or any MCP client can call find, verify and gate, and block an agent from finishing with weakened tests via a Stop hook. - [Python: MCP server and plugin](https://quelltest.com/docs/mcp.md): Run the local quelltest MCP server (pip install quelltest[mcp]) so Claude Code, Cursor or any MCP client can find gaps and write verified Python tests. ## Connector - [Overview and setup](https://quelltest.com/docs/connector.md): Connect the Python quelltest package to Claude.ai (Pro and Team) so Claude can answer questions about your synced readiness reports without seeing source code. - [Tool reference](https://quelltest.com/docs/connector/tools.md): The eight tools the quelltest Claude connector exposes to Claude.ai, with inputs, outputs and rate limits. All read synced reports, never your local disk. - [Privacy and security](https://quelltest.com/docs/connector/privacy.md): Exactly what the quelltest Claude connector and cloud sync send (test names, scores, flagged locations) and what always stays on your machine. ## Blog - [Did the AI Weaken Your Tests? Catching Deleted, Skipped and Loosened Tests With quell gate](https://quelltest.com/blog/did-the-ai-weaken-your-tests-quell-gate.md): quell gate compares test files with their merge-base version and fails on deleted, skipped, .only and loosened tests. A real diff and its real output. - [Does Your Test Fail When the Code Is Wrong? How quell verify Works](https://quelltest.com/blog/does-your-test-fail-when-the-code-is-wrong.md): quell verify runs a test on the original code, then on mutants in a throwaway copy, and rejects tests nothing can break. Real output, with a rejection. - [The Gate for AI-Written Tests: Introducing quelltest 0.3](https://quelltest.com/blog/introducing-quelltest-0-3-the-gate-for-ai-written-tests.md): quelltest 0.3 proves a test fails when the code is wrong, flags weakened tests in a diff, and finds untested risky edges. Free, offline, Apache-2.0. - [One Verification Layer for Jest, Vitest, Mocha and node:test](https://quelltest.com/blog/one-verification-layer-for-jest-vitest-mocha-and-node-test.md): How quelltest detects your runner, what its runner matrix proves, and the exact verify and generate commands for Jest, Vitest, Mocha and node:test. - [Giving Claude Code, Cursor and Other Agents a Verifier: The quelltest MCP Server and a Stop Hook](https://quelltest.com/blog/quelltest-mcp-server-and-stop-hook-for-coding-agents.md): Run npx quelltest mcp to give any MCP client find, verify and gate tools, and add a Claude Code Stop hook that blocks done when tests were weakened. - [quelltest on npm or PyPI? A Guide to Picking the Right Package](https://quelltest.com/blog/quelltest-on-npm-or-pypi-which-package-to-use.md): Two packages share the name quelltest: npm for JavaScript and TypeScript, PyPI for Python. Language, licence, runtime, install lines and limits compared. - [Testing Code That Calls APIs and Services: What quelltest 0.3.1 Does About It](https://quelltest.com/blog/testing-code-that-calls-apis-and-services-quelltest-0-3-1.md): quelltest 0.3.1 derives stubs from the guards on a call's result, restores fetch after each test, and checks stubs against recordings. And what it cannot know. - [Edge-Case Testing for JavaScript and TypeScript Without Replacing Your Test Runner](https://quelltest.com/blog/npm-edge-case-testing.md): How quelltest for npm finds untested risky edges in JavaScript and TypeScript, scores them only from coverage evidence, and leaves your runner in charge. - [Vitest, Jest, or node:test? A Practical Edge-Case Testing Workflow](https://quelltest.com/blog/vitest-jest-node-test-quelltest.md): A runner-neutral workflow for Node teams on Vitest, Jest, Mocha or node:test: find gaps, verify tests can fail, gate weakened tests, with the right flags. - [Quelltest Is Now Agent-Native: A Local MCP Server Ships in the Package](https://quelltest.com/blog/quelltest-is-now-agent-native.md): The Python repo ships a local MCP server and Claude Code plugin so agents can find untested edge cases and write proven pytest tests, all on your machine. - [I Let Claude Code Write All My Tests for a Week. Here's What It Got Wrong.](https://quelltest.com/blog/i-let-claude-code-write-my-tests-for-a-week.md): Field notes from a week of fully agentic test writing — what AI test generation nails, where it quietly fails, and why 'the tests pass' is the least interesting thing a test can tell you. - [What 10 Years of Research Actually Says About Test Coverage](https://quelltest.com/blog/what-the-research-says-about-coverage.md): Coverage is the most-measured number in testing and one of the least predictive. A tour of the peer-reviewed evidence — Inozemtseva & Holmes, Defects4J, Google's mutation testing program — and what it means for how we gate CI. - [AI Writes the Code Now. Who Proves It?](https://quelltest.com/blog/ai-writes-the-code-who-proves-it.md): Agentic coding went mainstream this year. The bottleneck quietly moved from writing code to trusting it — and most teams haven't noticed their review process was built for a slower world. - [Ask Claude About Your Edge Cases — Quell Now Has a Claude Connector](https://quelltest.com/blog/quell-claude-connector.md): You can now connect Quell to Claude.ai and ask about your production readiness in plain English. No terminal required. Your source code never leaves your machine. - [Quell v2.0.0: We Stopped Generating Tests and Started Proving Things](https://quelltest.com/blog/quell-v2-release.md): v1 was a test generator. v2 is a proof engine with three buckets, five gates, and a score that tells you exactly how production-ready your edge cases are. Here's everything that changed and why we had to. - [Your Test Coverage Is Lying to You](https://quelltest.com/blog/production-readiness-score.md): 100% line coverage with zero edge case validation. It's more common than you think. Here's what the Production Readiness Score measures instead — and why it's the number that actually correlates with what breaks in production. - [The 5-Gate Pipeline: Why One Check Isn't Enough to Trust a Generated Test](https://quelltest.com/blog/five-gate-pipeline.md): Most AI test tools run one check: does it parse? Quell runs five. Here's what each gate catches, what breaks without it, and why the order matters. - [Why We Built a Verification Engine Instead of Just Generating Tests](https://quelltest.com/blog/why-verification-engine.md): Any tool can write a test that runs. We needed tests that prove something. Here's the engineering decision behind Quell's two-phase verification and why it makes all the difference. - [100% Code Coverage Is a Lie — Here's What Actually Matters](https://quelltest.com/blog/code-coverage-lie.md): Code coverage measures which lines ran, not whether your tests prove anything. Learn why coverage is a vanity metric and what to track instead. - [Your Docstrings Are Already a Test Spec — You're Just Not Using Them](https://quelltest.com/blog/docstring-driven-testing.md): Python docstrings contain every testable requirement your functions have. Learn how to turn Raises:, Returns:, and Args: blocks into verified pytest tests automatically. - [What Is Mutation Testing — and Why Your Team Keeps Skipping It](https://quelltest.com/blog/mutation-testing-explained.md): Mutation testing is the only way to prove your tests actually catch bugs. Here's why teams avoid it and how to get its benefits without the pain. - [Your Pydantic Models Are Already Test Specifications — You're Just Not Using Them](https://quelltest.com/blog/pydantic-as-test-spec.md): Every Pydantic model is a machine-readable contract. Learn how to turn validators, field constraints, and discriminated unions into verified tests without writing a single test manually. - [The Hidden Cost of Skipped Edge Cases in Python APIs](https://quelltest.com/blog/edge-cases-cost-production.md): Edge cases are not rare. They're the exact inputs real users send when they're confused, impatient, or adversarial. Here's what skipping them actually costs. - [pytest Is Not the Problem — Verification Is](https://quelltest.com/blog/pytest-not-enough.md): pytest is an excellent framework. The gap isn't the tool — it's that most test suites verify execution, not correctness. Here's the distinction and how to close it. ## Changelog - [Changelog](https://quelltest.com/changelog): Release notes. Latest entry: npm (2026-10-20). - [npm releases](https://github.com/quelltest/quelltest-npm/releases): Release notes for the npm package on GitHub. - [PyPI package releases](https://github.com/quelltest/quelltest-lib/releases): Release notes for the Python package on GitHub. ## Optional - [llms-full.txt](https://quelltest.com/llms-full.txt): All documentation and blog summaries in one plain-text file. - [Changelog feed (all packages)](https://quelltest.com/changelog/feed.atom): Atom feed of releases for both packages. - [Changelog feed (npm)](https://quelltest.com/changelog/npm.atom): Atom feed of npm package releases. - [Changelog feed (PyPI)](https://quelltest.com/changelog/pypi.atom): Atom feed of Python package releases. - [Sitemap](https://quelltest.com/sitemap.xml): Every public page. - [Security policy](https://quelltest.com/security): How to report a vulnerability. - [Privacy](https://quelltest.com/privacy): What data the tools and the website handle. - [Terms](https://quelltest.com/terms): Terms of use. - [Contributing](https://quelltest.com/contributing): How to contribute to the open-source packages.