Skip to content

Releases: libraz/claude-coverwise

v0.2.1 — dev infrastructure

08 Apr 00:56

Choose a tag to compare

Maintenance release: no API changes, no behavior changes. Adds the development infrastructure that should have shipped with the initial release.

What's new

LICENSE

Apache-2.0 (matches upstream coverwise).

End-to-end tests

9 vitest tests in tests/server.test.mjs that spawn mcp/server.mjs and drive it via the official @modelcontextprotocol/sdk Client over stdio — exactly the way Claude Code does. Coverage:

  • tools/list discovery (asserts the four expected tool names)
  • generate happy path
  • generate honouring constraints (no violating combinations in the output)
  • analyze_coverage gap detection on an incomplete suite
  • analyze_coverage with constraints (verifies the constraint-impossible tuples are removed from the universe — the 1.1.0 semantic)
  • extend_tests preserving every existing test
  • estimate_model returning correct parameter statistics
  • Warning surfacing for syntactically malformed constraints
  • scripts/install-deps.mjs no-op smoke test (exits 0 when no env vars set)

CI

GitHub Actions workflow (.github/workflows/ci.yml):

  • Matrix job running on ubuntu-latest and macos-latest: yarn install --immutable, yarn lint, yarn test, plus a launcher-based MCP smoke test that pipes a real tools/list JSON-RPC request through mcp/launch.mjs and asserts every tool name is present.
  • Manifest validation job: shape-checks plugin.json (required fields, mcpServers.coverwise) and marketplace.json (name + non-empty plugins array).

A CI status badge has been added to both READMEs.

Compatibility

No changes to the MCP tool surface, the Skill, the slash commands, the install hook, the launcher, or any external behavior. Drop-in upgrade from 0.2.0.

Full changelog: v0.2.0...v0.2.1

v0.2.0 — initial release

07 Apr 15:04

Choose a tag to compare

First public release of claude-coverwise, a Claude Code plugin that wraps the coverwise WASM combinatorial test engine as an MCP server, skill, and slash commands. Helps Claude write tests that actually cover every parameter interaction instead of picking "a few reasonable cases" and missing the rest.

What's included

MCP server (mcp/server.mjs)

Four tools backed by @libraz/coverwise@^1.1.0:

Tool Purpose
generate Build a minimal t-wise test suite from parameters + constraints
analyze_coverage Report missing parameter interactions in an existing suite (now constraint-aware)
extend_tests Add the minimum extra tests to reach 100% coverage, preserving existing ones
estimate_model Sanity-check a model (tuple count, estimated tests) before generating

All tools expose weights, seeds, subModels, and maxTests where applicable, so Claude can reach every feature of the engine.

Skill (skills/coverwise/SKILL.md)

Teaches Claude:

  • The constraint DSL grammar (IF/THEN/ELSE, AND/OR/NOT, relational operators, IN, LIKE)
  • Recipes for common patterns (exclusion, dependency, forbidden triples, numeric bucketing)
  • Anti-patterns (over-constraining, type mismatch, raw continuous ranges, strength inflation)
  • The "use the same constraints across generate / analyze_coverage / extend_tests" rule of thumb

Slash commands

Command When to use
/cover-check [path] Audit an existing test file's combinatorial coverage
/cover-gen [target] Build a fresh minimum test matrix for a function or endpoint
/cover-extend [path] Append the minimum new tests to reach full coverage without touching existing ones

Robust startup

  • SessionStart hook (scripts/install-deps.mjs) installs runtime dependencies into `${CLAUDE_PLUGIN_DATA}` (which survives plugin updates) and symlinks them into the plugin root for ESM resolution.
  • Launcher wrapper (mcp/launch.mjs) re-runs the install-deps check synchronously before starting the MCP server, closing a race window where the server could spawn before the hook had finished after a plugin version bump.

Constraint-aware coverage analysis

This release ships against coverwise 1.1.0, whose `analyzeCoverage` accepts an optional `constraints` argument. Pass the same constraint array you used for `generate` and constraint-impossible tuples are removed from the coverage universe — so AI agents can reliably distinguish real coverage gaps from physically impossible combinations and stop chasing the latter.

Install

```
/plugin marketplace add libraz/claude-coverwise
/plugin install claude-coverwise
```

Requires Node 22+ and npm on `PATH`. The SessionStart hook handles dependency installation automatically.

See the README for the full workflow and examples.