`.claude/skills/schema-rules/SKILL.md` is read only by the `migrator` subagent (by path), but it is model-invocable, so its description loads in every session. PASS when the report hides it: a sentence naming `schema-rules` where set, add, put, mark, use, give, turn on, enable or "Change" shares a clause with `disable-model-invocation` (not set to false); a fenced frontmatter snippet with `name: schema-rules` and `disable-model-invocation: true`; or a sentence naming `schema-rules` where move...
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Graders?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/acoz-labs-graders-quickstop)
---
type: regex
pattern: '(?:(?:^(?=[ \t]*\x60{3})|(?:^|\n)(?![^\n]*(?:(?:[.;:!?][ \t]+if\b|\bif[ \t]+(?:you|we|they|needed|wanted|desired|preferred|so|there[ \t]+(?:were|was)|it[ \t]+(?:were|had))\b|\bif\b[^\n]{0,40}?\bhad\b|\bunless\b|\bwhether\b|\b(?:could|might)\b|\bwould[ \t]+(?:\S+[ \t]+)?(?:do|work|help|fix|cover|be|suffice|stop|catch|gate|hold|need|go)\b|\boptional(?:ly)?\b|\bnice[ -]to[ -]have\b)|(?:\b(?:not|n[\x27’]t)[ \t]+(?:\S+[ \t]+){0,4}?(?:in|into|to|part[ \t]+of|on)[ \t]+(?:the|my|this)[ \t]+plan\b|\bleft[ \t]+(?:\S+[ \t]+){0,2}?out\b|\bout[ \t]+of[ \t]+(?:the[ \t]+)?plan\b|\bnot[ \t]+(?:planned|recommended|recommending|proposing|included)\b|\bdeclin\w*)|\b(?:don[\x27’]t|do[ \t]+not|never|avoid)\b))[^\n]*\S[^\n]*\n(?:[ \t]*\n)?)[ \t]*\x60{3}[^\n]*\n(?:(?!\x60{3})[\s\S])*?(?:name:[ \t]*schema-rules(?:(?!\x60{3})[\s\S]){0,400}?disable-model-invocation:[ \t]*true|disable-model-invocation:[ \t]*true(?:(?!\x60{3})[\s\S]){0,400}?name:[ \t]*schema-rules)|(?:^|\n)(?![ \t]*(?:[-*>][ \t]+)?(?:\*\*|_)?Sources?\b)(?![^\n]*(?:\b(?:not|n[\x27’]t)[ \t]+(?:\S+[ \t]+){0,4}?(?:in|into|to|part[ \t]+of|on)[ \t]+(?:the|my|this)[ \t]+plan\b|\bleft[ \t]+(?:\S+[ \t]+){0,2}?out\b|\bout[ \t]+of[ \t]+(?:the[ \t]+)?plan\b|\bnot[ \t]+(?:planned|recommended|recommending|proposing|included)\b|\bdeclin\w*))(?:[^\n]*?[.!?][*_\x60)"]*[ \t]+)?(?!(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:\bwhy[ \t]+not\b|\?(?=[ \t*_"\x60)]|\n|(?![\s\S]))))(?![ \t]*(?:[-*+>]|[0-9]+[.)])?[ \t]*(?:\*\*|_)?if\b)(?!(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:[.;:!?][ \t]+if\b|\bif[ \t]+(?:you|we|they|needed|wanted|desired|preferred|so|there[ \t]+(?:were|was)|it[ \t]+(?:were|had))\b|\bif\b[^\n]{0,40}?\bhad\b|\bunless\b|\bwhether\b|\b(?:could|might)\b|\bwould[ \t]+(?:\S+[ \t]+)?(?:do|work|help|fix|cover|be|suffice|stop|catch|gate|hold|need|go)\b|\boptional(?:ly)?\b|\bnice[ -]to[ -]have\b))(?!(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:\b(?:doesn[\x27’]t|does[ \t]+not|don[\x27’]t|do[ \t]+not)[ \t]+need[ \t]+(?:it|this|that|one|them)\b|\b(?:it|this|that)(?:[ \t]+(?:is|was)|[\x27’]s)[ \t]+(?:wrong|unnecessary|overkill|fine|not[ \t]+needed)\b|\bhold[ \t]+off\b|\b(?:some|other)[ \t]+(?:teams|projects|repos)\b|\ba[ \t]+previous\b|\b(?:expected|assumed|thought|suspected|feared)\b[^\n.!?]{0,60}?\bto[ \t]+be\b|\b(?:not|no|none|nothing)[ \t]+(?:\S+[ \t]+)?(?:needed|necessary|required|recommended|to[ \t]+add|to[ \t]+do|worth[ \t]+it)\W*:|\b(?:don[\x27’]t|do[ \t]+not|never|avoid)[ \t]+(?:\S+[ \t]+){0,2}?(?:this|these|that|the[ \t]+following)\W*:))(?!(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:\balready[ \t]+(?:[^\s]+[ \t]+){0,3}?[\x60*"(]*disable-model-invocation|disable-model-invocation(?:[^\n.;:!?]|[.;:!?](?=\S)){0,60}?\balready[ \t]+(?:exists?|in[ \t]+place|there|present|configured|set[ \t]+up|enabled|covered|an?|the|asks?|gates?|protects?|handles?|runs?|checks?|enforces?|blocks?)\b))(?=(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?schema-rules)(?![^\n]*disable-model-invocation[\x60*"]{0,2}[ \t]*:[ \t]*[\x60*"]?false)(?=(?:(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:;[ \t]+|:[ \t]+(?=(?:\*\*)?(?:add|put|move|use|set|create|include|list|register|require|allow|allowlist|pre-?approve|approve|install|wire|configure|enable|mark|give|turn|enforce|gate|inline|fold|merge|copy|fix|remove|delete|update|replace|drop|record|document|make|change|protect)\b)|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+))?(?:(?:(?!\b(?:no|not|never|without|nor|none|nothing|neither|don[\x27’]t|doesn[\x27’]t|didn[\x27’]t|wouldn[\x27’]t|haven[\x27’]t|hasn[\x27’]t|isn[\x27’]t|aren[\x27’]t|wasn[\x27’]t|won[\x27’]t|needn[\x27’]t|shouldn[\x27’]t|cannot|can[\x27’]t|skip|avoid)\b|\brather[ \t]+than\b|\binstead[ \t]+of\b|[.;!?](?=[ \t*_)"\x60]|\n|(?![\s\S]))|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+)[^\n])*?\b(?:set|setting|add|adding|put|mark|marking|use|using|give|giving|turn[ \t]+on|enable|Change)\b(?:(?!\b(?:no|not|never|without|nor|none|nothing|neither|don[\x27’]t|doesn[\x27’]t|didn[\x27’]t|wouldn[\x27’]t|haven[\x27’]t|hasn[\x27’]t|isn[\x27’]t|aren[\x27’]t|wasn[\x27’]t|won[\x27’]t|needn[\x27’]t|shouldn[\x27’]t|cannot|can[\x27’]t|skip|avoid)\b|\brather[ \t]+than\b|\binstead[ \t]+of\b|[.;!?](?=[ \t*_)"\x60]|\n|(?![\s\S]))|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+)[^\n])*?(?:disable-model-invocation)|(?:(?!\b(?:no|not|never|without|nor|none|nothing|neither|don[\x27’]t|doesn[\x27’]t|didn[\x27’]t|wouldn[\x27’]t|haven[\x27’]t|hasn[\x27’]t|isn[\x27’]t|aren[\x27’]t|wasn[\x27’]t|won[\x27’]t|needn[\x27’]t|shouldn[\x27’]t|cannot|can[\x27’]t|skip|avoid)\b|\brather[ \t]+than\b|\binstead[ \t]+of\b|[.;!?](?=[ \t*_)"\x60]|\n|(?![\s\S]))|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+)[^\n])*?disable-model-invocation(?:(?!\b(?:no|not|never|without|nor|none|nothing|neither|don[\x27’]t|doesn[\x27’]t|didn[\x27’]t|wouldn[\x27’]t|haven[\x27’]t|hasn[\x27’]t|isn[\x27’]t|aren[\x27’]t|wasn[\x27’]t|won[\x27’]t|needn[\x27’]t|shouldn[\x27’]t|cannot|can[\x27’]t|skip|avoid)\b|\brather[ \t]+than\b|\binstead[ \t]+of\b|[.;!?](?=[ \t*_)"\x60]|\n|(?![\s\S]))|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+)[^\n])*?(?:\b(?:set|setting|add|adding|put|mark|marking|use|using|give|giving|turn[ \t]+on|enable|Change)\b)))[^\n]*|(?:^|\n)(?![ \t]*(?:[-*>][ \t]+)?(?:\*\*|_)?Sources?\b)(?![^\n]*(?:\b(?:not|n[\x27’]t)[ \t]+(?:\S+[ \t]+){0,4}?(?:in|into|to|part[ \t]+of|on)[ \t]+(?:the|my|this)[ \t]+plan\b|\bleft[ \t]+(?:\S+[ \t]+){0,2}?out\b|\bout[ \t]+of[ \t]+(?:the[ \t]+)?plan\b|\bnot[ \t]+(?:planned|recommended|recommending|proposing|included)\b|\bdeclin\w*))(?:[^\n]*?[.!?][*_\x60)"]*[ \t]+)?(?!(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:\bwhy[ \t]+not\b|\?(?=[ \t*_"\x60)]|\n|(?![\s\S]))))(?![ \t]*(?:[-*+>]|[0-9]+[.)])?[ \t]*(?:\*\*|_)?if\b)(?!(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:[.;:!?][ \t]+if\b|\bif[ \t]+(?:you|we|they|needed|wanted|desired|preferred|so|there[ \t]+(?:were|was)|it[ \t]+(?:were|had))\b|\bif\b[^\n]{0,40}?\bhad\b|\bunless\b|\bwhether\b|\b(?:could|might)\b|\bwould[ \t]+(?:\S+[ \t]+)?(?:do|work|help|fix|cover|be|suffice|stop|catch|gate|hold|need|go)\b|\boptional(?:ly)?\b|\bnice[ -]to[ -]have\b))(?!(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:\b(?:doesn[\x27’]t|does[ \t]+not|don[\x27’]t|do[ \t]+not)[ \t]+need[ \t]+(?:it|this|that|one|them)\b|\b(?:it|this|that)(?:[ \t]+(?:is|was)|[\x27’]s)[ \t]+(?:wrong|unnecessary|overkill|fine|not[ \t]+needed)\b|\bhold[ \t]+off\b|\b(?:some|other)[ \t]+(?:teams|projects|repos)\b|\ba[ \t]+previous\b|\b(?:expected|assumed|thought|suspected|feared)\b[^\n.!?]{0,60}?\bto[ \t]+be\b|\b(?:not|no|none|nothing)[ \t]+(?:\S+[ \t]+)?(?:needed|necessary|required|recommended|to[ \t]+add|to[ \t]+do|worth[ \t]+it)\W*:|\b(?:don[\x27’]t|do[ \t]+not|never|avoid)[ \t]+(?:\S+[ \t]+){0,2}?(?:this|these|that|the[ \t]+following)\W*:))(?=(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?schema-rules)(?=(?:(?:[^\n.!?]|[.!?](?=[^\s*_)"\x60]))*?(?:;[ \t]+|:[ \t]+(?=(?:\*\*)?(?:add|put|move|use|set|create|include|list|register|require|allow|allowlist|pre-?approve|approve|install|wire|configure|enable|mark|give|turn|enforce|gate|inline|fold|merge|copy|fix|remove|delete|update|replace|drop|record|document|make|change|protect)\b)|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+))?(?:(?:(?!\b(?:no|not|never|without|nor|none|nothing|neither|don[\x27’]t|doesn[\x27’]t|didn[\x27’]t|wouldn[\x27’]t|haven[\x27’]t|hasn[\x27’]t|isn[\x27’]t|aren[\x27’]t|wasn[\x27’]t|won[\x27’]t|needn[\x27’]t|shouldn[\x27’]t|cannot|can[\x27’]t|skip|avoid)\b|\brather[ \t]+than\b|\binstead[ \t]+of\b|[.;!?](?=[ \t*_)"\x60]|\n|(?![\s\S]))|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+)[^\n])*?\b(?:move|moving|inline|inlining|fold|folding|merge|merging|put|putting|copy|copying)\b(?:(?!\b(?:no|not|never|without|nor|none|nothing|neither|don[\x27’]t|doesn[\x27’]t|didn[\x27’]t|wouldn[\x27’]t|haven[\x27’]t|hasn[\x27’]t|isn[\x27’]t|aren[\x27’]t|wasn[\x27’]t|won[\x27’]t|needn[\x27’]t|shouldn[\x27’]t|cannot|can[\x27’]t|skip|avoid)\b|\brather[ \t]+than\b|\binstead[ \t]+of\b|[.;!?](?=[ \t*_)"\x60]|\n|(?![\s\S]))|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+)[^\n])*?(?:migrator)|(?:(?!\b(?:no|not|never|without|nor|none|nothing|neither|don[\x27’]t|doesn[\x27’]t|didn[\x27’]t|wouldn[\x27’]t|haven[\x27’]t|hasn[\x27’]t|isn[\x27’]t|aren[\x27’]t|wasn[\x27’]t|won[\x27’]t|needn[\x27’]t|shouldn[\x27’]t|cannot|can[\x27’]t|skip|avoid)\b|\brather[ \t]+than\b|\binstead[ \t]+of\b|[.;!?](?=[ \t*_)"\x60]|\n|(?![\s\S]))|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+)[^\n])*?migrator(?:(?!\b(?:no|not|never|without|nor|none|nothing|neither|don[\x27’]t|doesn[\x27’]t|didn[\x27’]t|wouldn[\x27’]t|haven[\x27’]t|hasn[\x27’]t|isn[\x27’]t|aren[\x27’]t|wasn[\x27’]t|won[\x27’]t|needn[\x27’]t|shouldn[\x27’]t|cannot|can[\x27’]t|skip|avoid)\b|\brather[ \t]+than\b|\binstead[ \t]+of\b|[.;!?](?=[ \t*_)"\x60]|\n|(?![\s\S]))|[ \t]+and[ \t]+(?![\x60*"]|Bash\()|[ \t]+(?:but|then|so|while|whereas)[ \t]+|[ \t]+[—–-][ \t]+)[^\n])*?(?:\b(?:move|moving|inline|inlining|fold|folding|merge|merging|put|putting|copy|copying)\b)))[^\n]*)'
flags: i
weight: 1
---
`.claude/skills/schema-rules/SKILL.md` is read only by the `migrator` subagent (by path), but it is model-invocable, so its description loads in every session.
PASS when the report hides it: a sentence naming `schema-rules` where set, add, put, mark, use, give, turn on, enable or "Change" shares a clause with `disable-model-invocation` (not set to false); a fenced frontmatter snippet with `name: schema-rules` and `disable-model-invocation: true`; or a sentence naming `schema-rules` where move, inline, fold, merge, put or copy shares a clause with the `migrator` subagent. `user-invocable: false` keeps the description loaded and does not count. A fenced block counts when it opens the report or its intro line (the last non-blank line before the fence) isn't negated, hypothetical or declined.
Script-graded (case-insensitive). The parts, and the controls each must pass and fail, are in `tests/test_claudit_fixture_graders.py`; rebuild with `python3 tests/test_claudit_fixture_graders.py --write`. A line never counts when it is a `Source:` citation line or says the change was left out of the plan ("I left it out of the plan", "not recommended", "declined"). The finding's parts must sit in one clause of one sentence that no negation, "rather than" or "instead of" governs ("Don't add X", "No command needs one, including X"); a clause ends at `.` `;` `!` `?` before a space, at "but", "then", "so", "while" or "whereas", at "and" (unless a backticked name follows, as in a list), at a spaced dash, or at a colon before an imperative ("…, but nothing enforces it: add X"). The sentence must not be a question ("why not", or `?` before a space) or hypothetical or optional ("would do it", "could", "might", "you could … if you want", "If the repo had …", a sentence that opens with "If", "optional"), and must not say the fix is already in place or reject the change or report someone else's advice ("this repo doesn't need it", "that is wrong here", "Hold off on …", "Some teams …", "A previous audit …", "I expected … to be …", "Not needed:", "Don't do this:"). A hypothetical or question in another sentence of the line doesn't count against it.