al-mutate

Validates AL test rigor by injecting one mutation at a time and classifying killed, surviving, or equivalent mutants.

4|Updated Feb 22, 2026
One-click install
npx skills add https://github.com/FBakkensen/bc-agentic-dev-tools-marketplace --skill al-mutate-fbakkensen
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: al-mutate
Source: https://github.com/FBakkensen/bc-agentic-dev-tools-marketplace/tree/main/plugins/al-agentic-dev/skills/al-mutate
Command: npx skills add https://github.com/FBakkensen/bc-agentic-dev-tools-marketplace --skill al-mutate-fbakkensen

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Tests that pass green do not prove assertions actually catch faults. This Skill mutation-tests AL/Business Central production code to expose under-asserted tests, dead code, and real coverage gaps that a green build hides. ## Core Features & Use Cases - One-mutation-at-a-time execution: Applies a single operator per site, runs the script-backed build gate, classifies the result, and reverts with a verified clean tree before continuing. - Precise classification: Distinguishes killed mutants (a test went red), survivors (real coverage gaps), equivalent mutants (with documented reasons), stillborns (compile failures that prove nothing), and runner-contract failures. - Delegated worker model: Host plans and judges; a worker executes the mutate-build-revert cycle and writes a durable mutation report under .output/mutation-report/. - Use Case: After refactoring a posting routine in a Business Central app, run mutation testing to confirm the existing tests would actually catch a boundary flip or guard inversion before handing off to code review. ## Quick Start Run /al-mutate on the recently refactored production code to verify the test suite kills injected mutations.

Frequently Asked Questions about al-mutate

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

FAQPage Schema
How do I run mutation testing on AL Business Central code?

Run /al-mutate after a refactor or standalone on legacy code. It plans mutation sites, applies one operator at a time, runs the build gate via test.ps1, classifies each mutant, reverts, and writes a report to .output/mutation-report/.

What does a surviving mutant mean in mutation testing?

A survivor is a mutation the test suite failed to catch, indicating a real coverage gap or under-asserted test. The fix is a killer test written through TDD via /al-implement, then rerunning that mutation site.

Why is a compile failure not counted as a killed mutant?

A mutant the compiler rejects never ran, so no test had to answer it and nothing is proven about the assertions. It is classified as invalid_stillborn, and the host re-plans a compiling operator at that site.

When should I not run mutation testing on AL code?

Skip it when the tree is dirty, the baseline build is red, or a refactor is still in flight, since classifications drift and reverts become ambiguous. Also skip trivial code like pure delegation and accessors.

Can mutation testing run only unit tests instead of the full gate?

Yes. When unitTestApp is configured and the site is genuinely unit-layer, run test.ps1 with -UnitTestOnly. Integration, page, install, or permission behaviour requires the full gate, and closeout always uses the full gate.