security-bar — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited security-bar (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.
My security checklist. It layers on top of security-review (reference it for the broad sweep) and adds the things that actually bite me. Usable standalone on a diff, and invoked by the quality stage of eskills:task-flow.
This is the defensive lens ("is this built right?"). For an offensive pass — hunting reachable, exploitable paths to a sink — use eskills:exploit-hunt; it's the counterpart, not a per-task default.
Client-side guards are not security. The anon key ships in the client; a PIN, a rate-limit, or a check that lives only in front-end code provides zero server-side protection. If it must be enforced, it is enforced on the server.
don't trust. Watch unbounded growth (a field that can balloon a stored blob).
client-side. Confirm what a shipped key can actually do.
the button" as the only control.
SELECT true and INSERT/UPDATE true;that lets anyone with the anon key read and overwrite rows via PostgREST, bypassing the app. Restrict direct writes; route privileged writes through an RPC that checks the rule.
lock. Enforce it in an RPC with RLS restricting the direct write.
eskills:perf-bar; a missing cap is both a cost and anabuse vector.
Different target from the app checklist above: this audits my own agent setup, not the code under review. The principle: agent config is executable trust — a hook or an MCP server runs with my privileges, so it is code I am running, not configuration I am declaring.
.claude/settings*.json, hook scripts, or MCPconfigs that land in a repo (sk-, ghp_, AKIA, …). Only public-by-design keys belong client-side; everything else stays in the environment, never committed.
events with full shell privileges. Flag any hook that interpolates untrusted input (tool output, file contents, a PR title) into a shell command — that is an injection sink.
calls and can exfiltrate. Prefer pinned, known sources; treat a third-party server as code I am running, not a passive endpoint.
allow lists scoped to what's actually needed; no blanket wildcards(e.g. Bash(*)) that defeat the prompt gate. Remember a permission moved to user/global settings applies to every project, not just this one.
Report findings as file:line → what an attacker does → the fix. Distinguish a real exposure from an accepted, documented risk (e.g. obscurity-bounded ids on a no-login app) — but only if the acceptance was stated, not assumed.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.