Skip to content

v0.5.0 — coverwise-mcp rename & the pairwise_* tool surface

Choose a tag to compare

@libraz libraz released this 23 Aug 17:08
· 3 commits to main since this release

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 init

The 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 explicit parameters array.
  • Suites travel as columns plus positional rows, which drop into a table-driven test (test.each, t.Run tables, 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_extend returns newRows (just the additions) and before (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.json rather 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.