Why a skill needs vetting
A skill is not a passive document. When your agent loads aSKILL.md, its instructions enter the model’s context and its bundled scripts can run on your machine. That makes an installed skill a supply-chain dependency — closer to an npm package than to a wiki page. A skill that says “before you start, fetch and run this setup script” is executing code with your agent’s permissions, on your data.
The public skill directories that appeared alongside agent tooling — the ClawHavoc and ToxicSkills wave — proved the risk is real: a skill that reads your .claude/ config and exfiltrates the keys it finds, or buries a prompt-injection payload in a “prerequisites” paragraph, looks exactly like a helpful skill until it runs.
An unvetted directory that lists whatever is uploaded is a liability. A registry that inspects every skill before it’s listed, labels the risk, and re-checks it over time is the difference. That pipeline is SkillSafety.
The pipeline
Vetting isn’t a single gate at publish time. The same checks run at every stage, so problems surface where they’re cheapest to fix — on your own machine, before anything is public.- Local + CI run the same static scanner, free and offline — nothing leaves your machine. Catch issues before you push.
- The publish gate is the enforced checkpoint: a skill can’t flip to public until it clears the tiers below.
- Continuous re-checks mean a skill that was clean when published, but whose band later worsens (a new version, an updated rule), is re-labeled — and its owner is emailed.
The three tiers
SkillSafety runs three layers of review. They look at different things and cost different amounts.
Tier 1 is a fast, free reader that matches the raw text against a catalog of dangerous patterns — a reverse-shell one-liner, a hardcoded API key, a homoglyph that disguises a URL. It runs everywhere: locally, in CI, and server-side. Because it’s pure text matching, it’s instant and deterministic — the same skill always gets the same result.
Tier 2 catches what a pattern can’t. Social engineering written in fluent prose — a fake “prerequisites” section that talks the agent into fetching and running a remote script — has no single dangerous token to match. An LLM that reads for intent sees the setup that a regex reads as ordinary instructions.
Tier 3 looks at the published text as content, not as instructions: does it carry prohibited material (all examples must be synthetic). Two categories — CSAM and credible threats — are terminal: the skill is removed, not flagged for remediation.
The three tiers fold into one public band — the worst result across them. You don’t reason about tiers as a consumer; you read the band. Authors get the per-tier detail so they know exactly what to fix.
What the static scan looks for
Tier 1’s catalog, grouped. This is the full list; Fixing a blocked publish explains how to resolve each finding.What the band means
Every listed skill shows one SkillSafety band. It governs whether — and how — the skill appears in the registry.”Not yet reviewed” is honest, not hidden
The AI tiers depend on a model being reachable. If a reviewer is momentarily unavailable, SkillSafety fails open: the skill shows Not yet reviewed and is automatically re-checked — it is never turned into a false Blocked. A pending band is the system telling you the truth (“we haven’t finished checking this yet”), not a silent downgrade. Once the re-check lands, the band resolves to its real value. Every version of a skill carries its own scan and verdict history — a new version is re-vetted from scratch, and re-vetting an old version never masks a problem introduced in a new one. If a published skill’s band ever worsens, its owner gets an email.Where to go next
Fixing a blocked publish
Every refusal reason and how to fix it — findings with per-line fixes, the free re-check loop, and pre-publish deep review.
Content policy
The prohibited-content categories, the synthetic-examples rule, and what’s remediable versus terminal.
What scanning can't catch
The honest limits — why “ask before running” isn’t a security boundary, and defense-in-depth for what you install.
Scan locally & in CI
Run the same scanner on your machine and in GitHub —
decimalai skills scan, output formats, SARIF, and exit codes.SkillSafety is the safety counterpart to SkillScore. A skill needs both to earn a place in the registry: proof it works, and proof it’s safe to load.