Repository navigation
v0.5.0 — coverwise-mcp rename & the pairwise_* tool surface
Rename release. The plugin, the repository and the four MCP tools all change name, so this one needs a manual step from anyone already running it. Alongside the rename, the tool surface is reworked to sit one level above the engine API, a session hook makes the plugin engage on a plain "write tests for this", and the install helper reaches four more MCP clients.
Breaking changes
The plugin is now coverwise-mcp
The repository moved from libraz/claude-coverwise to libraz/coverwise-mcp, and the plugin name with it. Re-add it:
/plugin uninstall claude-coverwise
/plugin marketplace remove claude-coverwise
/plugin marketplace add libraz/coverwise-mcp
/plugin install coverwise-mcp
Outside Claude Code, re-run the install helper so generated entries point at the new specifier:
npx -y github:libraz/coverwise-mcp initThe MCP tools moved to the pairwise_* namespace
| Before | Now |
|---|---|
generate |
pairwise_generate |
analyze_coverage |
pairwise_analyze |
extend_tests |
pairwise_extend |
estimate_model |
pairwise_estimate |
They now read as one namespace in a client's tool list. Any project CLAUDE.md naming the old tools needs updating.
What's new
A tool surface above the engine API
- A parameter model can be given as a plain
{ name: [values] }map instead of the explicitparametersarray. - Suites travel as
columnsplus positionalrows, which drop into a table-driven test (test.each,t.Runtables,pytest.mark.parametrize) and cost fewer tokens than repeating key names on every case. - Values come back in the JSON type they were declared with —
0, not"0". pairwise_extendreturnsnewRows(just the additions) andbefore(the coverage of the suite as it stood), so explaining the additions needs no second analyze call.- Positional rows are accepted wherever test cases are taken, so a suite travels between tools unchanged.
Session hook
A SessionStart hook states the applicability rule up front: a target with three or more independent parameters gets a parameter model rather than hand-picked combinations. The tools and the skill are both passive and only match a request that already sounds combinatorial — but the request that needs them most is a plain "write tests for this", which matched nothing. The hook stays silent outside code checkouts.
Install helper covers seven clients
Claude Desktop, Cursor, Cline and Gemini CLI join Claude Code (user and project) and Codex CLI, with per-platform config paths. Config writes now go through a temp file and an atomic rename and carry over the existing file mode, so a config a running client is reading is never left half-written. Codex sub-tables such as [mcp_servers.coverwise.env] are stripped along with the main block instead of being left to attach to the following section.
coverwise 1.5.0
@libraz/coverwise bumped to ^1.5.0. An existing row that drifts from the model is now preserved in the suite with a warning naming the offending value, instead of being dropped; it still does not count toward coverage.
Internals
- The CLI banner and the MCP handshake read the version from
package.jsonrather than restating it, and manifest consistency tests pin the name and version across both plugin manifests, the repository URLs and the generated config specifier. - The toolchain pin moves from volta to mise (Node 22.23.2, Yarn 4.18.0); CI actions move with it.
- Both READMEs are rewritten for the current surface, with the Mermaid loop diagram replaced by hand-authored light and dark SVGs.