Validate test effectiveness with mutation testing using Stryker (TypeScript/JavaScript) and mutmut (Python). Find weak tests that pass despite code mutations. Use when user mentions mutation testing, Stryker, mutmut, test effectiveness, finding weak tests, or improving test quality through mutation analysis.
View on GitHublaurigates/claude-plugins
testing-plugin
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/laurigates/claude-plugins/blob/main/testing-plugin/skills/mutation-testing/SKILL.md -a claude-code --skill mutation-testingInstallation paths:
.claude/skills/mutation-testing/# Mutation Testing
Expert knowledge for mutation testing - validating that your tests actually catch bugs by introducing deliberate code mutations.
## Core Expertise
**Mutation Testing Concept**
- **Mutants**: Small code changes (mutations) introduced automatically
- **Killed**: Test fails with mutation (good - test caught the bug)
- **Survived**: Test passes with mutation (bad - weak test)
- **Coverage**: Tests execute mutated code but don't catch it
- **Score**: Percentage of mutants killed (aim for 80%+)
**What Mutation Testing Reveals**
- Tests that don't actually verify behavior
- Missing assertions or edge cases
- Overly permissive assertions
- Dead code or unnecessary logic
- Areas needing stronger tests
## TypeScript/JavaScript (Stryker)
### Installation
```bash
# Using Bun
bun add -d @stryker-mutator/core
# Using npm
npm install -D @stryker-mutator/core
# For Vitest
bun add -d @stryker-mutator/vitest-runner
# For Jest
bun add -d @stryker-mutator/jest-runner
```
### Configuration
```typescript
// stryker.config.mjs
/** @type {import('@stryker-mutator/api/core').PartialStrykerOptions} */
export default {
packageManager: 'bun',
reporters: ['html', 'clear-text', 'progress', 'dashboard'],
testRunner: 'vitest',
coverageAnalysis: 'perTest',
// Files to mutate
mutate: [
'src/**/*.ts',
'!src/**/*.test.ts',
'!src/**/*.spec.ts',
'!src/**/*.d.ts',
],
// Thresholds for CI
thresholds: {
high: 80,
low: 60,
break: 60, // Fail build if below this
},
// Incremental mode (faster)
incremental: true,
incrementalFile: '.stryker-tmp/incremental.json',
// Concurrency
concurrency: 4,
// Timeout
timeoutMS: 60000,
}
```
### Running Stryker
```bash
# Run mutation testing
npx stryker run
# Incremental mode (only changed files)
npx stryker run --incremental
# Specific files
npx stryker run --mutate "src/utils/**/*.ts"
# With specific configuration
npx stryker run --configFile stryker.prod.config.mjs
# G