AI & LLMsDocumentedScanned

skillvet

Security scanner for ClawHub/community skills — detects malware, credential theft, exfiltration, prompt injection,.

Share:

Installation

npx clawhub@latest install skillvet

View the full skill documentation and source below.

Documentation

Skillvet

Anyone can publish a skill to ClawHub. That's what makes it powerful — and risky. A single malicious skill can steal your API keys, exfiltrate your environment variables, inject prompts into your agent, or open a reverse shell on your machine.

Skillvet scans skills before you use them. It runs 24 critical checks and 8 warning checks against every file in a skill directory, looking for credential theft, data exfiltration, prompt injection, obfuscation, and more. No dependencies — just bash and grep.

Usage

Safe install — installs a skill, audits it, and auto-removes it if critical issues are found:

bash skills/skillvet/scripts/safe-install.sh <skill-slug>

Scan before installing — downloads a skill to a temp directory, scans it, deletes it:

bash skills/skillvet/scripts/scan-remote.sh <skill-slug>

Audit a skill you already have:

bash skills/skillvet/scripts/skill-audit.sh skills/some-skill

Audit every installed skill:

for d in skills/*/; do bash skills/skillvet/scripts/skill-audit.sh "$d"; done

Diff scan — after an update, scan only what changed between versions:

bash skills/skillvet/scripts/diff-scan.sh skills/old-version skills/new-version

Exit codes: 0 clean, 1 warnings only, 2 critical findings (blocked).

Output formats

All scripts accept --json for structured output and --summary for a single-line result.

# JSON — for CI pipelines and dashboards
bash skills/skillvet/scripts/skill-audit.sh --json skills/some-skill

# Summary — for batch scanning and notifications
for d in skills/*/; do bash skills/skillvet/scripts/skill-audit.sh --summary "$d"; done

What it catches

Critical — skill is blocked

CheckWhat it looks for
Exfiltration endpointsURLs pointing to webhook.site, ngrok.io, requestbin, etc.
Env variable harvestingBulk dumping of your shell environment
Foreign credential accessReading API keys the skill doesn't own (ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.)
Code obfuscationDynamic code evaluation, base64 decode, hex escape sequences
Path traversalReaching outside the skill directory into ~/.ssh, ~/.aws, /etc/passwd
Data exfiltrationSending captured data out via curl or wget
Reverse/bind shellsNetwork backdoors via /dev/tcp, netcat, socat
.env file theftLoading .env files from scripts (not just referencing them in docs)
Prompt injection"Ignore previous instructions" and similar overrides in markdown
LLM tool exploitationInstructing the agent to send, email, or post secrets
Agent config tamperingWriting to AGENTS.md, SOUL.md, clawdbot.json, .bashrc
Unicode obfuscationZero-width characters, RTL overrides that hide content
Suspicious setup commandsPiping remote scripts to a shell interpreter in SKILL.md
Social engineeringTelling users to download executables or run code from paste sites
Shipped .env filesActual .env files (not .example) included in the skill
Homograph charactersCyrillic letters mimicking Latin (e.g., Cyrillic a posing as Latin a in URLs)
ANSI escape injectionRaw terminal escape sequences in markdown, JSON, or YAML files
Punycode domainsxn-- encoded IDN labels that may hide homograph attacks
Double-encoded paths%25-based percent-encoding bypass attempts
Shortened URLsbit.ly, t.co, tinyurl, etc. in code — hides true destination
Insecure pipe-to-shellHTTP (no TLS) piped to a shell interpreter
String construction evasionBuilding dangerous calls from fragments ('ev'+'al', bracket notation, String.fromCharCode, getattr)
Data flow chain analysisSame file reads secrets/env, encodes data, AND sends network requests — exfiltration pipeline
Time bomb detectionDate-gated or long-delayed execution (Date.now() > epoch, setTimeout with 8+ digit delay, schedule.every().days)

Warnings — flagged for manual review

CheckWhat it looks for
Subprocess spawningCode that launches child processes or shell commands
Network requestsHTTP client libraries (axios, fetch, requests, httpx)
Minified/bundled filesJS/TS files with very long lines that can't be audited by eye
File write operationsCode that writes to the filesystem
Unknown external toolsCLI tools referenced in docs that aren't on the known-safe list
Insecure transportDisabled TLS certificate verification
Raw IP URLsHTTP to non-private IPs — bypasses DNS, harder to trace
Untrusted Docker registriesDocker pull/run from third-party registries

Limitations

This is static analysis — pattern matching with grep. It raises the bar significantly but doesn't guarantee safety. Minified JS is flagged but not deobfuscated. Prompt injection detection is English-centric.

The scanner flags itself when audited. Its own source code contains the patterns it detects. This is expected.