What problem does it solve?
When a new virtual rule (selectors under nodeRules) is added to a preset like preset.html-standard.jsonc, the benchmark does not automatically pick it up because bench/config.ts curates rules explicitly instead of extending the preset. The result is that fixtures the new rule should catch stay stuck at nu-only, making it look like a markuplint coverage gap when the rule already exists.
Core Features & Use Cases
- Preset-to-bench mirroring: Guides copying selectors from a preset's
nodeRules[] into bench/config.ts with a comment naming the source preset rule.
- Verification workflow: Runs
yarn bench:update:ml and checks that target fixtures flip from nu-only to match-error.
- Selector correctness guidance: Documents caveats for ASCII case-insensitive attribute name matching, the
i flag applying only to attribute values, and sibling selector (~) directionality requiring both a ~ b and b ~ a for coexistence constraints.
- Use Case: A maintainer adds a
disallowed-element selector to preset.html-standard.jsonc but the nu fixtures remain nu-only; this Skill walks them through mirroring the selector into bench/config.ts and verifying the benchmark now exercises the rule.
Quick Start
Mirror the new preset virtual rule selectors into bench/config.ts, run yarn bench:update:ml, and confirm the target fixtures flip from nu-only to match-error.