The deterministic mirror (route-check.mjs) sits at 100% on the same rules. Sending the actual rule text to a real model (sonnet, headless, 50-case routing-benchmark.json) scored 78% — the 22-point gap decomposed into 4 clusters. This PR closes 3 of them at the rules layer.
diagnoseA "why…" question is a gentler entry than a fix command.
A "why…" question is ALWAYS diagnose, even when it names a failure — the question form is what makes it diagnose, not the absence of a symptom.
cover without a % target"write more tests" with no target → ask the target %.
A surface called out as "untested" is cover even with no % target — the "fix" there repairs a coverage gap, not a bug; ask the target % at invoke time.
improve-skill regardless of verb"optimize my prompt" (not a skill file) → route to optimize.
When the improvement target IS a skill or agent — a SKILL.md, a named skill, an agent prompt — it is improve-skill regardless of the verb.
Do not guess when two DIFFERENT skills are plausible and the goal names no artifact, metric, or number.