# Permission Rule Hygiene Convention A marketplace-wide convention for writing Claude Code permission grants that actually take effect — specifically, grants for the auto-mode-gated action classes (arbitrary code execution) that a skill, command, or plugin wants to run without a prompt. The principle: **the operative allow-rule for a guarded code-execution helper must be a narrow, machine-independent, bare-command rule that the operator adds to user-global settings — never an interpreter-wildcard grant, never a hardcoded machine path, and never a self-granted rule a skill or plugin ships expecting it to work.** The three anti-patterns below each break that in a different way; the [correct pattern](#the-correct-pattern) fixes all three at once. Enforced by `/claude-config:audit-permission-grants`, which scans skill/command/agent frontmatter `allowed-tools` and `settings.json` / `settings.local.json` `permissions.allow` and flags each anti-pattern (checks P1/P2/P3). ## Why this convention exists Running this convention's own detector against this marketplace surfaced six pre-existing interpreter/runner-led frontmatter grants (shapes like `Bash(bash