Open source. Free. No account.

Is this Claude Code skill
safe to install?

Agent skills bundle npx, pip install, shell commands, and URL fetches that LLMs can hallucinate into malware. Beepack Scan catches hallucinated packages, typosquats, and malicious URLs before you run them.

No sign-up. Verdict in under 10 seconds. Works on GitHub repos, blobs, gists, and direct markdown URLs.
Try:

The attack Aikido flagged in December 2025

Agent skills are downloaded from community marketplaces (sickn33's 1400+ skills, lobehub, Claudepluginhub) and run blindly. Some of them reference npm or pip packages that don't exist - a prime typosquatting vector.

"The LLM invents a plausible-looking package name, the skill ships it as a real install command, and the first person who registers that name on npm owns every machine that runs the skill." - paraphrased from Aikido Security

Three steps, ten seconds

1

Paste a URL

GitHub repo, raw SKILL.md, gist, or drop the file. We fetch the markdown and all referenced .sh / .py / .js scripts.

https://github.com/user/my-skill
2

We scan deterministically

Every npx, pip install, shell command, URL, and import goes through the real npm registry, PyPI, URLhaus, RDAP, and a typosquat detector. No LLM. Reproducible.

npm registry + URLhaus + RDAP
3

Get a verdict

RED blocks obvious threats (hallucinated packages, URLhaus matches, distance-1 typosquats). YELLOW flags possibles. GREEN means every reference resolves to a real, popular target.

RED / YELLOW / GREEN

What the scanner catches

Concrete attack patterns, not vibes.

Hallucinated packages → RED

The skill runs npx @anthropic/skill-runner but the package doesn't exist on npm. First squatter to register it owns every install. We hit the npm registry for every reference and block on 404.

Typosquats (distance 1) → RED

Levenshtein distance ≤ 1 from a top-10k package that does exist. expresss vs express, reqeusts vs requests. Clear intent to deceive.

URLhaus match → RED

A URL in the skill (or in a curl/wget) appears on the URLhaus blocklist of known-malicious hosts. Updated daily.

Pastebin / tunnel URLs → YELLOW

Commands that fetch scripts from ngrok.io, trycloudflare.com, pastebin.com, or other ephemeral hosts. Legitimate use exists, but it's a common exfiltration + payload delivery vector.

Recently registered domains → YELLOW

Domain age under 30 days via RDAP. Young domains are disproportionately malicious; we flag so you know the skill's dependencies are brand new.

Suspicious suffix typosquats → YELLOW

Patterns like stripe-js when stripe is popular. Distance 2-3 matches. Confidence calibrated conservatively to avoid false positives.

Use it anywhere you install skills

Web

Paste a URL, get a verdict, share the scan. Zero setup.

https://beepack.ai/scan

CLI

Pipe into a pre-install hook. Exit codes: 0 / 1 / 2 for green / yellow / red.

npx @actabi/beepack scan <url>

MCP soon

Expose scan_skill as an MCP tool Claude Code can call mid-conversation.

claude mcp add beepack

GitHub Action soon

Run the scan on every push. Status check on PRs for skill repos.

actabi/beepack-scan@v1

Publisher badge soon

Live-updating SVG badge in your README so users see the current verdict.

![safety](/badge/slug)

Watch mode v3

Subscribe to a skill. Alert when a scan turns RED because an upstream dep changed.

beepack watch <url>

Scan your next skill install in one paste

Deterministic checks, open source, no data kept beyond the scan result. If you publish skills, a verified badge is one click away.

Open the scanner →