mutation-test

Runs native and LLM-guided mutation testing to find and fix test coverage gaps.

6|Updated Mar 27, 2026
One-click install
npx skills add https://github.com/greglas75/zuvo --skill mutation-test-greglas75
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: mutation-test
Source: https://github.com/greglas75/zuvo/tree/main/skills/mutation-test
Command: npx skills add https://github.com/greglas75/zuvo --skill mutation-test-greglas75

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? High line coverage can hide shallow tests that never assert real behavior. This Skill measures how well your existing tests detect actual code changes by generating mutations, executing them against the relevant tests, and fixing the assertions that let mutants survive. ## Core Features & Use Cases - Dual mutation engines: Uses the project's native runner (StrykerJS, Infection, mutmut, PIT, cargo-mutants) when configured, with a consent-gated install option, plus an LLM-guided engine for mutation classes native tools cannot express (error-path removal, state mutation, async hazards, security guard removal). - In-run gap closure: Every surviving mutant is triaged as a real gap or equivalent mutant, and real gaps get the missing assertion added and re-probed in the same run. - Scoped execution: Defaults to changed production files with test coverage, with flags for path scope, category filtering, runner mode, score thresholds, dry-run, and report-only mode. - Use Case: After writing tests for a payment module, run the Skill scoped to that directory to verify the tests actually catch boundary, null, and security mutations, and let it add the missing assertions for any survivors. ## Quick Start Ask the AI to run mutation testing on your recently changed files to measure how well the existing tests detect behavioral changes and fix any surviving mutants.

Frequently Asked Questions about mutation-test

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run mutation testing on my project?

Invoke the Skill with an optional path scope, for example targeting a directory like src/services. By default it tests only changed production files that have test coverage, using the native mutation runner if one is configured or the LLM-guided engine otherwise.

What mutation testing tools does it support?

It detects and uses StrykerJS for TypeScript/JavaScript, Infection for PHP, mutmut for Python, PIT for JVM languages, and cargo-mutants for Rust. When no native runner is configured, it can install one with explicit consent or fall back to its LLM-guided mutation engine.

What is the difference between native and LLM mutation testing?

Native runners apply syntactic mutations exhaustively for a reproducible, comparable score. The LLM engine generates mutation classes native tools cannot express, such as error-path removal, state mutation, async hazards, and security guard removal. Hybrid mode reports both scores separately.

Can mutation testing run if my test suite has failures?

No. The Skill establishes a baseline by running the full test suite first and stops immediately if any test fails, since mutation scores against a failing suite are meaningless. It suggests repairing failing tests before proceeding.

Does mutation testing modify my production code permanently?

No. Mutations are applied temporarily, executed against the relevant tests, and restored. The only lasting changes are added test assertions that close real gaps exposed by surviving mutants, plus any consented dev-dependency installs which are logged with uninstall commands.

How do I limit mutation testing scope or runtime?

Pass a path to scope the run, use --max N to cap total LLM mutations, --category to restrict mutation types, or --quick for at most 3 mutations per file and 20 total. The default scope is changed files only, not the whole project.