← ClaudeAtlas

dead-predicatelisted

A router rule can be live, healthy and match nothing anyone types: the pattern list omits the ordinary word, or a JSON escape left the pattern inert. Use before claiming a discipline is hook-enforced.
MrBinnacle/skills · ★ 0 · AI & Automation · score 62
Install: claude install-skill MrBinnacle/skills
# Router skill predicate gap ## Problem A skill is documented as MANDATORY and wired into a `UserPromptSubmit` router hook, so the rule looks enforced rather than remembered. It is not: **the hook runs, exits 0, and matches nothing**, because its regex list omits the word users most often type for the thing it guards. The wiring is present, the hook is healthy, the config is valid — and nothing distinguishes "the predicate did not match" from "no prompt needed it." ## Use when - A rule file says a skill is MANDATORY, and you cannot recall the reminder arriving. - You are about to write, or repeat, the claim that a discipline is hook-enforced. - A rule's `patterns` list was seeded from error signatures or example phrasings and never re-read. - The skill did fire once, and you have not checked *which* pattern matched. ## Root cause Router patterns are seeded from the highest-precision triggers — error strings, slash commands, distinctive nouns — because the ordinary word for the artifact looks too broad to add safely. The predicate then matches specialist phrasing and misses the common request: **model-pull wearing a hook's clothes**. ## Solution ### 1. Test the negative first, against the live hook Do this before editing anything. Probe the suspect prompt **and a known-good fixture in the same run** — the known-good is a positive control, and without it the run is uninterpretable: ```sh cd ~/.claude/hooks for p in "write me a plan for issue 18" "<a phrase you know