Setup & Installation
Install skill-scanner using the ClawHub CLI or OpenClaw CLI:
clawhub install skill-scanner-v1If the CLI is not installed:
npx clawhub@latest install skill-scanner-v1Or install with OpenClaw CLI:
openclaw skills install skill-scanner-v1What This Skill Does
skill-scanner is an AI & Machine Learning skill for OpenClaw by billyhetech.
Skill Scanner
Input Handling
Accept any of these as input:
- ClawHub URL (e.g.,
clawhub.ai/author/skill-name) — fetch the SKILL.md content via the hub API or raw URL - GitHub URL — fetch the raw SKILL.md (convert blob URLs to
raw.githubusercontent.com) - Local path — read from
~/.openclaw/skills/[name]/SKILL.mdor a path the user provides - Pasted content — analyze the text directly
If the input is a URL you can't fetch, ask the user to paste the SKILL.md content instead.
Analysis Pipeline
Run all five checks below. Assign each a traffic-light score (🟢 / 🟡 / 🔴) and collect specific evidence. Be precise: cite the exact line or field that triggered a flag.
Check 1: Frontmatter Integrity
Parse the YAML frontmatter and evaluate each field for consistency and intent:
| Field | What to look for |
|---|---|
name |
Matches directory name? Suspiciously similar to a popular skill (edit distance ≤ 2)? |
description |
Contains hidden instructions to the agent? Tries to override other skills or suppress safety behavior? Hidden Unicode characters (zero-width spaces, RTL overrides)? |
requires.bins |
Lists curl, wget, nc, ncat, python, perl, ruby without clear justification? |
requires.env / requires.config |
Requests credentials, tokens, or API keys beyond the skill's stated purpose? |
command-dispatch: tool |
Bypasses model safety review — legitimate for pure tool-dispatch flows, but flag as noteworthy regardless and check whether the skill's purpose justifies it. |
disable-model-invocation: true |
Hides the skill from the model's awareness. Legitimate for pure slash-command tools; suspicious if the skill claims to be model-driven. |
metadata |
OpenClaw requires single-line JSON here. Unusual keys, embedded commands, or values that don't match the skill's stated purpose? |
os |
Platform restriction that seems unnecessary for the skill's purpose? |
Score: 🟢 Frontmatter is clean and consistent / 🟡 Some fields seem unnecessary but not alarming / 🔴 Fields contradict stated purpose or contain suspicious values
Check 2: ClawHavoc Attack Pattern Detection
Scan the full SKILL.md body for known exploit patterns. Cite the exact line for any match.
Shell execution / reverse shells:
nc -e,bash -i >& /dev/tcp,ncat,mkfifo /tmp/python -c 'import socket',perl -e,ruby -ecurl ... | bash,wget -O- ... | sh(pipe-to-shell combos)
Credential harvesting:
- Reads from
~/.ssh/,~/.aws/credentials,~/.gitconfig, browser cookie stores, system keychain - Requests
$HOME,$USER, or$PATHto enumerate the environment
Data exfiltration:
curl -X POSTorwget --post-datato non-whitelisted external URLs- Encodes output and sends it out (base64 + curl combo)
Obfuscation:
echo ... | base64 -d | bash(decode-and-execute)- Hex or URL-encoded command strings
- Multi-stage eval patterns
Prompt injection:
- Phrases targeting safety mechanisms: "ignore previous skills", "disable skill-scanner", "override system prompt"
- Instructions that tell the agent to act differently than the stated purpose implies
- Hidden Unicode: zero-width spaces (U+200B), right-to-left override (U+202E), or other invisible characters used to conceal instructions
Score: 🟢 No patterns found / 🔴 Patterns detected — list each one with the exact line
Check 3: Permission–Purpose Alignment
Compare what the skill claims to do against the permissions it requests. The principle: a skill should request only what it genuinely needs.
| Skill Category | Suspicious Permissions |
|---|---|
| Information / lookup (weather, calculator, time) | File system write, shell access, network egress to unknown hosts |
| Content generation (writing, summarization) | Root-level binaries, credential env vars |
| Calendar / email reader | Shell execution, arbitrary file reads outside stated scope |
| Local file tool | Outbound network requests |
| Any skill | requires.bins listing network tools (curl, wget, nc) without explanation |
Score: 🟢 Permissions match purpose / 🟡 Mild overreach, plausible explanation exists / 🔴 Permissions dramatically exceed what the skill needs
Check 4: Instruction Quality and Scope
Read the skill's instructions through the lens of "would a reasonable developer write this?":
- Clarity: Are instructions specific about what the skill does and when it activates?
- Boundaries: Does the skill define what it will not do?
- Scope creep: Does it handle things unrelated to its stated purpose?
- Runtime dependencies: Does it download or reference external resources at runtime without disclosing this?
- Autonomy claims: Does it claim to run automatically, persist state between sessions, or elevate its own privileges?
Score: 🟢 Clear, well-scoped instructions / 🟡 Vague but nothing alarming / 🔴 Overly broad, evasive, or claims unusual autonomy
Check 5: Trust Signals
Look for positive evidence that the skill is maintained by a real, accountable party:
- Author: Named author or verified organization? Anonymous = caution.
- Version: Has semantic versioning (e.g.,
1.2.0)? Versioning signals active maintenance. - License: License specified? An open-source license is a meaningful trust indicator.
- Source: Public GitHub repo with commit history and open issues?
- ClawHub standing: High download count, verified badge, or positive community reviews?
- Freshness: Last updated within 6 months? Stale skills may carry unpatched risks.
Score: 🟢 Multiple trust signals present / 🟡 Some signals missing but not suspicious / 🔴 No verifiable author, no version, no source
Safety Report
Present findings in this exact format:
🔍 Skill Security Report
══════════════════════════════════════════
Skill: [name] by [author or "unknown"]
Version: [version or "not specified"]
Source: [URL or "pasted content"]
══════════════════════════════════════════
[🟢/🟡/🔴] Frontmatter Integrity → [summary]
[🟢/🟡/🔴] ClawHavoc Patterns → [summary]
[🟢/🟡/🔴] Permission–Purpose Fit → [summary]
[🟢/🟡/🔴] Instruction Quality → [summary]
[🟢/🟡/🔴] Trust Signals → [summary]
══════════════════════════════════════════
Overall: [SAFE ✅ / CAUTION ⚠️ / DANGER 🚫]
[SAFE: "Looks good. Install with: claw install [name]"]
[CAUTION or DANGER: List specific concerns with exact fields/lines,
and suggest what the author could change to resolve each one.]
Scoring rules:
- Any single 🔴 → Overall DANGER
- Two or more 🟡 → Overall CAUTION
- All 🟢, or one 🟡 → Overall SAFE
Behavior Notes
- Do not install a skill automatically — your role is to report findings, not act on them. The user needs to make an informed decision; installing without consent removes their agency.
- If asked to scan multiple skills, process each one separately with its own full report.
- Be transparent about what static analysis can and cannot catch: a sufficiently clever skill could still behave maliciously at runtime in ways that aren't visible in the SKILL.md source.
- Always recommend the user also check GitHub issues and ClawHub community reviews for runtime behavior reports that static analysis misses.
- If a skill fails the scan, explain clearly what the author could change to make it safer — the goal is to raise the bar for the ecosystem, not just block installs.
Version History
Latest version: 1.0.0
First published: Apr 6, 2026. Last updated: Apr 6, 2026.
1 version released.
Frequently Asked Questions
Is skill-scanner free to use?
What platforms does skill-scanner support?
How do I update skill-scanner?
openclaw skills update skill-scanner-v1 to get the latest version. OpenClaw will download and apply the update automatically, preserving your existing configuration.