Awesome-omni-skill permission-patterns
Rules for evaluating, classifying, and deduplicating AI tool permissions
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/permission-patterns" ~/.claude/skills/diegosouzapw-awesome-omni-skill-permission-patterns && rm -rf "$T"
skills/development/permission-patterns/SKILL.mdPermission Patterns
<!-- markdownlint-disable-file MD013 -->Unified patterns for permission safety classification and deduplication. Use these rules to evaluate permissions consistently.
Safety Classification
Classification rules for evaluating permission safety. Use these criteria to categorize permissions consistently.
Classification Rules
ALLOW - Read-Only and Safe Operations
Keywords:
list, ls, show, info, view, get, describe, inspect, status, doctor, ping, check, --version, --help
Safe domains: github.com, docker.com, kubernetes.io, python.org, npmjs.com, official documentation sites
ASK - Modifications and Risky Operations
Keywords:
update, set, edit, patch, modify, apply, rm, delete, remove, prune, clean, exec, run, eval, push, publish, deploy, kill, stop
Requires user confirmation before execution.
DENY - Irreversible Damage or Security Bypass
Keywords:
sudo, chmod 777, dd, file patterns like **/.env, **/*_rsa, **/*.key, **/*secret*
Local addresses:
localhost, 127.0.0.1, private IP ranges
Decision Criteria
- Read-only query + no secrets → ALLOW
- Modifies resources + reversible → ASK
- Irreversible or security risk → DENY
- Uncertain → ASK (conservative default)
Domain Coverage
Claude Code's
WebFetch(domain:X) uses exact host matching — subdomains are NOT covered by a root domain entry:
does NOT covergithub.com
orapi.github.com
— each needs its own entrydocs.github.com
does NOT covergithub.io
— separate entry requiredgithub.github.io
andgithubusercontent.com
are separate entries (different hostnames)raw.githubusercontent.com
is separate fromlocalhost
(ports are distinct)localhost:3000
Each hostname that needs to be fetched must be listed explicitly.
Local/private addresses always DENY:
,localhost
,127.0.0.1
,192.168.x.x
ranges10.x.x.x
Pattern Deduplication
Rules for detecting when a specific permission is already covered by a broader existing pattern.
Coverage Rules
WebFetch Domains
Each hostname must be listed exactly — there is no wildcard or subdomain coverage. Ports are also distinct:
does NOT coverlocalhostlocalhost:3000
File Paths
Broader wildcards cover more specific patterns:
covers any Read permissionRead(**)
coversGlob(**/*)
,Glob(**/*.js)Glob(**/package.json)
Hostname Recommendations
Since
WebFetch uses exact host matching, list each hostname explicitly. When multiple hostnames share a
common vendor, add all needed hostnames individually rather than assuming a root domain covers them.
Related Permission Suggestions
When discovering a safe permission, suggest related safe commands in the same family:
→ suggestdocker volume lsdocker volume inspect
→ suggestaws s3 lsaws s3 sync --dryrun
→ suggestnpm list
,npm outdatednpm audit
Commands Using This Skill
agent - Uses classification and deduplication to filter permissions during discoverypermissions-analyzer
command - Indirectly uses this skill through the permissions-analyzer agent/sync-permissions