# Skill Safety Review

> Statically review a SKILL.md or agent skill before installing it, flagging credential access, exfiltration, instruction override, and review-evasion patterns. Use before installing any third-party skill, plugin or agent extension, or when asked whether a skill is safe. Read-only. Never executes what it scans.

- Skill: `ityaadiii/skill-safety-review` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add ityaadiii/skill-safety-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ityaadiii/skill-safety-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ityaadiii (https://skillmd.com/u/ityaadiii)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ityaadiii/skill-safety-review

---


# Review a skill before you install it

Snyk's ToxicSkills audit of 3,984 skills (Feb 2026) found 36.8% with at least one
security flaw, 13.4% critical, and 76 carrying confirmed malicious payloads. The
documented patterns were credential harvesting from the developer's shell, silent
environment-variable exfiltration, and instructions injected into the agent's own
context.

The attack does not exploit a bug. It uses the agent exactly as designed, which is why
nothing in the platform stops it.

## The refusal

**A clean scan is not a safety verdict, and this skill must never issue one.** Report
what was found and what could not be checked. "No flagged patterns" means no known text
patterns matched, nothing more.

Never execute, install, or run the skill under review. Reading is the whole job.

## Procedure

1. Run the scanner. It is read-only and pattern-matches text.

   ```bash
   node skills/skill-safety-review/scan.ts path/to/SKILL.md
   ```

   Exit code 2 means at least one critical finding.

2. **Read every critical finding in context.** Several rules fire legitimately in build
   tooling. `child_process` in a test-runner skill is expected. `child_process` in a
   skill that formats dates is not. The judgement is what the tool cannot do.

3. **Check what the scanner does not see.** Bundled scripts, referenced files, anything
   fetched at run time, and dependencies. Read those too, or say they were not read.

4. **Look at the source, not just the file.** Who publishes it, how long it has existed,
   whether the repository has any history. A skill with one commit and no author is a
   different risk from a vendor-published one.

5. **Match capability to purpose.** The question is not "is this dangerous", it is "does
   this skill need this to do its stated job". A linting skill that reads `~/.aws` has
   failed that test whatever its intent.

## What gets flagged

**Critical.** Credential-store access, named secrets read from the environment, POST to
an external host, pipe-to-shell installs, instruction override, and requests to hide
activity from the user.

**Warning.** Arbitrary shell execution, environment enumeration, hardcoded external
endpoints, writes outside the working directory, encoded blobs.

**Note.** Invisible or direction-changing Unicode, and long HTML comments. Both hide
text from a human reading a rendered page while the model still reads it.

## Output contract

- counts by severity, and every finding with its line
- for each critical: whether it is justified by the skill's stated purpose
- what was not examined (bundled scripts, remote fetches, dependencies)
- publisher and repository history
- an explicit recommendation, with the residual uncertainty stated

## What this prevents

Installing one of the 76.

