CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/stryker-mutation

Configures StrykerJS for mutation testing of JavaScript / TypeScript / React / Vue / Svelte / Node - picks the test-runner plugin (`@stryker-mutator/jest-runner`, `mocha-runner`, `vitest-runner`, `karma-runner`), authors `stryker.conf.json` with mutate globs + thresholds, runs incremental mode for PRs (only mutate changed files), and reports the mutation score. Use when a JS/TS test suite has ≥80% line coverage and the team wants to verify the tests actually catch bugs (not just touch lines).

64

Quality

81%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Quality

Content

61%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-structured, largely actionable skill with a clear install-to-CI sequence and dense reference tables. Main weaknesses are duplicated tool-background explanation, a garbled overview sentence, missing validation checkpoints for an expensive batch operation, and a couple of non-executable details in the CI snippet.

Suggestions

Add explicit validation checkpoints to the workflow: after Step 2, verify the config with a small run on a single file's mutate glob before the full 5-30 minute run, and confirm the exit code/non-zero behavior of the break threshold before enabling the CI gate.

Remove the redundant supported-runner listing in Step 1 (it repeats the overview blockquote) and fix the broken sentence "A green suite with high mutation-survival rate is the bug coverage hides" — one clear statement of the survived-mutant concept suffices.

Fix the CI snippet: use a workflow-level `on: schedule` trigger (or a separate workflow) for the full run instead of the `github.event.schedule == '0 2 * * 0'` job condition, and correct the report artifact path to `reports/mutation/html`; also repair the dangling `stryker-net-mutation` reference entry.

DimensionReasoningScore

Conciseness

Mostly efficient with concrete tables and commands, but there is avoidable redundancy: the overview blockquote ("Stryker started as a pure JavaScript mutation testing framework... supports most JavaScript projects") is repeated nearly verbatim by "supported runners include Jest, Mocha, Karma, Vitest, Jasmine, Cucumber, Tap", and the survived-mutant explanation is stated twice (Overview and Step 3). There is also a garbled sentence — "A green suite with high mutation-survival rate** is the bug coverage hides" — that adds tokens without meaning.

3 / 5

Actionability

Largely copy-paste ready: exact `npm install` packages, complete `stryker.conf.json`, `npx stryker init/run/--incremental`, and a CI snippet. Not score 5 because of minor executable gaps: the full-run CI job's condition `github.event.schedule == '0 2 * * 0'` only evaluates on schedule events (so a push-to-main trigger would never fire it), and the artifact path `reports/mutation/` doesn't match the HTML reporter's default output location (`reports/mutation/html`).

4 / 5

Workflow Clarity

Steps 1–6 are clearly sequenced (Install → Initialize → Run → Report → Incremental → CI), but there are no explicit validation checkpoints for what is a heavy batch operation: no guidance to verify the config, dry-run a small mutate glob on one file before a 30-minute run, or confirm the break threshold before gating PRs. The rubric caps workflow clarity at 3 for batch operations lacking validation steps, which applies here despite the clear sequence.

3 / 5

Progressive Disclosure

No bundle files exist (no references/, scripts/, or assets/ directories), and the single-file body is well-sectioned with appropriate inline placement for its ~176 lines. Score 4 rather than 5 because the References section has minor organization defects: a dangling broken entry ("`stryker-net-mutation` - " with an empty dash), and sibling-skill references (pitest, mutmut, mull) are listed without links or paths, so they don't function as signaled references.

4 / 5

Total

14

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: third-person voice, concrete enumerated capabilities with real package/file names, and an explicit 'Use when' clause with a measurable trigger condition. Only slight room to add a few more natural user phrasings around weak tests and test quality.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — "picks the test-runner plugin", "authors `stryker.conf.json` with mutate globs + thresholds", "runs incremental mode for PRs (only mutate changed files)", "reports the mutation score" — with named packages. This matches the anchor for multiple specific concrete actions; not score 4 because coverage of the skill's actions is comprehensive rather than having minor gaps.

5 / 5

Completeness

Both what and when are explicitly stated: the what is the enumerated concrete actions, and the when is "Use when a JS/TS test suite has ≥80% line coverage and the team wants to verify the tests actually catch bugs (not just touch lines)" — a concrete trigger condition. Clear match to the top anchor.

5 / 5

Trigger Term Quality

Strong natural terms: "mutation testing", "StrykerJS", framework names (React/Vue/Svelte), runner names (jest/vitest/mocha/karma), "PR", "line coverage", "mutation score". Not score 5 because a few natural user phrasings (e.g. "weak tests", "test quality", "assertions don't catch anything") are absent, though "verify the tests actually catch bugs" partially covers this.

4 / 5

Distinctiveness Conflict Risk

The StrykerJS name, specific plugin package names, and the ≥80% coverage precondition give it a clear niche distinct from generic coverage or testing skills. Minor theoretical overlap with general JS testing skills, but the explicit mutation-testing framing makes conflict risk minimal.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Reviewed

Table of Contents