setup-permissions-92db14 — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited setup-permissions-92db14 (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Project-agnostic, global skill. It scans the repo's stack, predicts the scoped permission rules the user will likely need, presents them for per-rule authorization, and writes only the approved ones to the chosen settings.json. It is proactive - it runs at project-setup time, before the user has hit a single permission prompt.
It complements two existing skills and must not duplicate them:
fewer-permission-prompts is reactive (mines past transcripts for commands alreadyprompted). This skill predicts from the stack instead.
update-config owns the settings.json rule syntax and the write mechanism. Reuseits conventions; let it (or the same careful write) perform the actual file edit.
Permissions are a security boundary. The risk is not building this - it is proposing broad rules the user rubber-stamps. Every proposed rule must be as narrow as possible.
Bash(npm run test:*), Bash(pytest:*), Bash(ruff check:*),Bash(go build:*), Read(./src/**).
Bash(git:*) (allows git push --force, git reset --hard),Bash(:*) (everything), unscoped Edit(**), Bash(rm:*), Bash(sudo:*).
Dangerous-by-nature operations - force-push, rm, sudo, deploy/release, piping a download to a shell (curl ... | sh), credential or .env reads - must be listed under "Deliberately NOT proposed", never offered as allows. The user can always add those manually with full awareness.
Tool(specifier); Bash uses prefix matching with :* (e.g. Bash(npm run build:*)matches npm run build and anything after). Read/Edit use gitignore-style globs rooted at the project (Read(./config/**)).
allow, ask, and deny. Prefer allowfor safe, frequent commands; suggest ask (not silent allow) for medium-risk ones; reserve deny for things that should be blocked outright.
choices on teammates.
to carry the allowlist for everyone.
Read whichever file already exists first, so you merge into its permissions.allow rather than clobbering it, and never re-propose a rule that is already present.
package.json (scripts!), pyproject.toml, setup.py,Makefile/justfile, go.mod, Cargo.toml, *.csproj, pom.xml, build.gradle, CI workflows, lint/format configs (.eslintrc, ruff.toml, etc.).
and whether gh/docker/git are in use.
Explore agent and work fromits summary.
Group proposals by category (test / lint+format / build / type-check / package-mgmt / git (scoped, safe ops only) / read paths). Present them so the user authorizes each rule individually - use AskUserQuestion with multiSelect per category so a whole category is cleared in one screen rather than one tedious prompt per rule. For each rule show: the rule string + a one-line "allows X; does NOT allow Y" note. Then a "Deliberately NOT proposed" section listing the dangerous operations you withheld and why.
permissions.allow (dedupe; preserveexisting entries and formatting). Create the file/array if absent.
rule does not seem to apply.
rm,sudo, deploy, curl|sh, and secret/.env reads.
.claude/settings.local.json unless the user chose otherwise.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.