nwave-ai/nwave-nw-mutation-test
Runs feature-scoped mutation testing to validate test suite quality. Use after implementation to verify tests catch real bugs (kill rate >= 80%).
This is a copy. The original lives at nwave-ai/nw-mutation-test.
npx skills add https://github.com/nWave-ai/nWave --skill nw-mutation-test
Wave: QUALITY_GATE
Agent: Crafter (nw-software-crafter)
Run mutation testing against implementation files from the current feature. Extracts targets from the execution-log.json (see Target extraction)|generates feature-scoped configs|delegates to software-crafter. Uses cosmic-ray (Python)|PIT (Java)|Stryker (JS/TS/C#).
Projects declare a strategy via ## Mutation Testing Strategy in CLAUDE.md: per-feature | nightly-delta | pre-release | disabled.
Default (when unspecified): nightly-delta — the recommended mode. CI runs mutmut nightly against modules changed since the last run (the delta), keeping per-feature delivery gates fast. /nw-mutation-test performs an explicit, on-demand feature-scoped run regardless of strategy; under nightly-delta the in-wave Phase 5 gate is skipped and the work is handled by the CI nightly pipeline.
Implementation files are selected from the execution-log.json (completed_steps[].files_modified.implementation).
docs/feature/{feature-id}/deliver/execution-log.json - Implementation file extractionscripts/mutation/generate_scoped_configs.py - Automated config generation (if available)Orchestrator performs before delegating:
execution-log.json and extract implementation files from completed_steps[].files_modified.implementation. Gate: file list non-empty.pytest -x {test_scope} (or equivalent). Gate: exit code 0, no failures..venv-mutation/ exists with cosmic-ray installed. Gate: cosmic-ray --version succeeds.@nw-software-crafter
Execute mutation testing for project {feature-id}.
Context to pass inline (agent has no Skill access):
tests/des/)Configuration:
scripts/mutation/generate_scoped_configs.py (preferred over manual)Output file: docs/feature/{feature-id}/deliver/mutation/mutation-report.md
/nw-mutation-test des-hook-enforcement tests/des/
Reads the execution-log.json, runs generate_scoped_configs.py des-hook-enforcement, delegates to software-crafter with per-component configs. Agent runs cosmic-ray, produces mutation-report.md.
/nw-mutation-test auth-upgrade tests/auth/
Extracts files manually from the execution-log.json, creates single cosmic-ray config with module-path = [file1, file2, ...] and test-command = "pytest -x tests/auth/", delegates to agent.
/nw-mutation-test payment-gateway tests/payment/
Detects package.json, selects Stryker, delegates with Stryker-specific instructions.
After EVERY mutation run (success, failure, or interruption):
git checkout -- src/ tests/. Gate: working tree clean (no mutations remain).pytest -x {test_scope} exits 0.Mutation tools apply mutations directly to source files. An interrupted run can leave corrupted code (e.g. is not None -> is None). Agent MUST execute these steps even if the run errors out.
Kill rate thresholds:
Skip conditions (each requires documented justification in mutation-report.md):
.mutation-config.yaml has skip: true with justification.Note: Python projects require mutation testing. All skips need documented justification.
Handoff To: Phase 8 - Finalize (orchestrator continues develop.md workflow)
Deliverables: docs/feature/{feature-id}/deliver/mutation/mutation-report.md
docs/feature/{feature-id}/deliver/mutation/
mutation-report.md
cosmic-ray-*.toml (ephemeral)
Take nwave-ai/nwave-nw-mutation-test from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.