AI-powered test coverage, inside Claude Code.
When Claude writes code in your project, it should also write the tests. Qualflare makes that the default: generate coverage for what you changed, run your test suite, fix what breaks, and report it all to your Qualflare dashboard — without switching context.
One-time setup, then just code.
Before you begin, install the Qualflare CLI — you'll authenticate per project from your shell with qf login once setup tells you which identifiers to use.
Add the plugin to Claude Code:
/plugin marketplace add Qualflare/qualflare-claude-code
Install it in your current project:
/plugin install qualflare@qualflare
Run setup once in your project root:
/qf-init
That's it. /qf-init detects your tech stack, reads your package layout, derives a CLI identifier per package, and writes a state file so every future session starts with full context about your tests. At the end, it tells you exactly which qf login <identifier> commands to run in your terminal before your first /qf-run. It never asks for your token in the chat.
Every command runs from the Claude Code chat — no terminal, no config files.
| Command | When to use it |
|---|---|
/qf-init |
Once, to set up a new project — detects frameworks, counts test files, and optionally enables the coverage nudge |
/qf-cover [path or glob] |
After writing code — generates tests for the source files you just changed |
/qf-run [slug, path, or report-path slug] |
When you're ready to verify — runs your test suite and uploads results to Qualflare. Pass a report file you produced yourself (e.g. /qf-run zap-report.json zap) to upload it directly |
/qf-fix [slug or path] |
When tests are red — analyzes the last run and patches your code until they pass |
/qf-doctor |
When something feels wrong — health check covering CLI, auth, config, slug drift, and file-count drift |
/qf-update [slug or path] |
When you've added test files — refreshes counts without re-running full setup |
/qf-state |
When you want to see what Qualflare knows — shows frameworks, file counts, and hook status |
/qf-hook on|off |
Any time — toggle the end-of-session coverage nudge on or off |
When enabled during /qf-init, a quiet nudge appears at the end of any session where you edited source files without touching the tests:
🔍 Qualflare: 3 source file(s) changed without test updates. Run /qf-cover to add coverage.
It only fires when something worth covering was changed — trivial edits, config files, and type definitions don't count. Toggle it any time with /qf-hook off.
If your tests run with any of these, Qualflare has you covered.
Unit — jest · vitest · mocha · golang · python (pytest) · rspec · phpunit · testng
BDD — cucumber · karate
End-to-end — playwright · cypress · selenium · testcafe · maestro · xctest · espresso · detox · webdriverio · appium · flutter
API — newman · k6
Security — zap · trivy · snyk · sonarqube
Generic — junit (any JUnit XML) · ctrf (Common Test Report Format JSON) · qualflare-json (output of Qualflare's own reporters)
/qf-run runs jest, mocha, python, golang, playwright, cypress, rspec, phpunit, junit (Maven/Gradle) and cucumber for you, writing each in the report format the Qualflare CLI parses. Cypress reports are Mochawesome JSON, so add mochawesome as a dev dependency. For every other framework, produce the tool's report yourself and upload it with /qf-run <report-path> <slug>.
/qf-init records Vitest packages under the jest slug, which reads the same report. Multi-framework monorepos work too — /qf-init detects each workspace and tracks them separately.
Before running /qf-init, make sure you have:
- Claude Code — the CLI or desktop app
- Qualflare CLI (
qf) — installed and on your PATH (see below) - A Qualflare token per identifier —
/qf-inittells you which identifiers your project needs and prints the exactqf logincommands to run.
Qualflare uses per-project tokens stored locally. After /qf-init prints your identifiers, register each one in your own terminal:
qf login <identifier>qf login asks for the token at a hidden prompt. Don't paste tokens into the Claude Code chat (the chat is sent to the model and saved in the session transcript), and don't pass them as a command-line argument (shell history and the process list keep them).
In a monorepo, each package gets its own identifier — run qf login once per package. Tokens live in ~/.config/qualflare/config.toml after login. Get tokens at https://app.qualflare.com/project/<identifier>/settings/access-tokens.
QF_API_KEY is no longer read by the CLI — remove it from your environment if you have it set.
macOS / Linux — Homebrew:
brew install qualflare/tap/qfAll platforms — binary download:
Download the pre-built binary for your OS from github.com/Qualflare/qualflare-cli/releases, extract it, and place qf somewhere on your PATH.
Docker:
docker pull ghcr.io/qualflare/qf:latestVerify the install with qf version. /qf-run will not continue until qf is on your PATH.
/qf-run uploads to the environment named by QF_ENVIRONMENT if you set it, and otherwise to development, which every Qualflare project starts with. Qualflare rejects an environment name your project doesn't have.
Run /qf-doctor first. It checks the things that break most often:
- Is
qfinstalled and available on your PATH? - Is each package's identifier configured locally (
qf projectslists them)? - Is your
test-state.mdstill current, or has the project drifted since setup? - Do the framework slugs in the plugin match the installed CLI?
Most issues are a missing CLI or a missing qf login. Fix what the doctor flags and re-run.
/qf-init creates a .qualflare/ directory in your project root:
.qualflare/
├── test-state.md # framework + file-count context — commit this
├── config.json # hook preference — commit this
└── results/ # raw test-runner output uploaded by qf collect — gitignore this
Add .qualflare/results/ to your .gitignore. The other two files are meant to be committed — they give every session the context it needs without running setup again.
Pull the latest version at any time:
/plugin update qualflare
Bug reports and pull requests are welcome — open an issue at github.com/Qualflare/qualflare-claude-code/issues.
For development notes — how to test the hook, how to add a new framework, how to cut a release — see CLAUDE.md.
Licensed under the Apache License 2.0.
Qualflare · Docs · CLI releases · Issues · Changelog