hardener-job

Runs mutation testing on target repositories and strengthens tests to kill surviving mutants.

Updated Jul 27, 2026
One-click install
npx skills add https://github.com/arayaroma/ether --skill hardener-job-arayaroma
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: hardener-job
Source: https://github.com/arayaroma/ether/tree/main/skills/hardener-job
Command: npx skills add https://github.com/arayaroma/ether --skill hardener-job-arayaroma

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Code coverage metrics can claim a line is tested even when no test actually asserts on its behavior, leaving regressions undetected. This Skill measures real test-suite effectiveness by mutating source code and checking whether any test fails, then strengthens weak tests. ## Core Features & Use Cases - Mutation Testing Execution: Drains pending hardener jobs from the ether job store, detects the target repo's stack, and runs the appropriate mutation tool (Stryker for JS/TS, mutmut or cosmic-ray for Python), optionally bootstrapping the tool if absent. - Autonomy-Tiered Test Hardening: Proposes or autonomously writes targeted tests that kill surviving mutants, re-runs the mutation tool to confirm, and never modifies application source. - Outcome Recording: Writes mutation score reports to the target's .ether/qa/jobs directory and records run outcomes so the autonomy state machine can promote or demote future runs. - Use Case: Schedule a recurring job via /loop or CronCreate to periodically mutation-test a repository, surface untested behavior, and incrementally improve the test suite's defect-detection ability. ## Quick Start Ask the agent to run the hardener job against your repository to mutation-test the suite and report surviving mutants.

Frequently Asked Questions about hardener-job

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

FAQPage Schema
How do I run mutation testing on my JavaScript or TypeScript project?▼

Mutation testing for JS/TS uses Stryker (@stryker-mutator/core). The skill checks for an existing stryker.conf file or offers to run npx stryker init if bootstrapping is allowed, installing it as a devDependency in the target repo rather than globally.

What is the difference between code coverage and mutation testing?▼

Coverage only shows a line executed during a test, not that the test asserted on its outcome. Mutation testing flips conditionals, changes boundaries, or drops lines, then checks whether any test fails, revealing behavior with no real test protection.

Which mutation testing tools work for Python projects?▼

Python repositories use mutmut or cosmic-ray as the mutation testing tool. For other stacks, the skill checks the job's params.tool override or reports that no mutation tool is available rather than guessing.

Does the hardener job modify application source code to fix mutants?▼

No, it never modifies application source. A surviving mutant means a test is missing, not that the code is wrong, so the skill only adds targeted tests asserting on the specific behavior the mutant broke, then re-runs the mutation tool to confirm.

How often should mutation testing jobs be scheduled?▼

Schedule with a long interval using /loop, since mutation runs are expensive and can take minutes to hours on large suites. Avoid running more often than architect-job and prevent collisions with CI-triggered test runs on the same target.