Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Security
Skill Auditor
Try itAutomated 0-100 risk audit for AI agent skills before you install them. Scans 30+ red flag patterns.
What it does
Runs an automated scan over a skill's SKILL.md and every file in its folder, flagging 30+ patterns across network exfiltration, credential access, dangerous code, obfuscation, file-system abuse, permission escalation, and supply-chain risks. Each finding is weighted into a 0-100 risk score that maps to LOW, MEDIUM, HIGH, or EXTREME bands, and the script compares declared permissions against actual file and network behavior. Supports JSON output, batch mode for whole directories, and pre-commit or GitHub Actions hooks for CI. Human-judgment steps (source provenance, trust hierarchy, final decision) remain with the reviewer.
When to use it
- Auditing a skill before installing from a marketplace or repo
- Wiring pre-commit or GitHub Actions checks on vendored skills
- Batch-scanning an entire skills/ directory
- Re-checking installed skills after upstream updates
The skill document
Skill Auditor 🔒
Automated, security-first audit for AI agent skills. Never install a skill without auditing it first.
Superset of skill-vetter with three additions: (1) Automated scanning via
scripts/vet.py— no more manual checklist reading. (2) Quantitative risk score (0-100) instead of just LOW/MED/HIGH labels. (3) Batch mode + CI integration — audit an entireskills/dir, hook into pre-commit / GitHub Actions.
When to Use
- Before
clawhub installfrom ClawHub - Before
git cloneof any skill repo - Before copying a skill folder into your workspace
- In CI: as a pre-commit hook or GitHub Action on repos that vendor skills
- Periodically: re-audit your installed skills after upstream updates (skills drift)
Quick Start
# Audit a single skill folder
python3 {baseDir}/scripts/vet.py path/to/some-skill
# Audit with JSON output (for CI / programmatic use)
python3 {baseDir}/scripts/vet.py path/to/some-skill --json
# Audit all skills in a directory (batch mode)
python3 {baseDir}/scripts/vet.py --batch path/to/skills/
# Show risk score only (0-100)
python3 {baseDir}/scripts/vet.py path/to/some-skill --score
The Audit Protocol (6 Steps)
The automated script handles steps 2-4. Steps 1, 5, 6 still benefit from human judgment.
Step 1: Source Check (human)
- Where did this skill come from? (ClawHub / GitHub / DM / fork?)
- Is the author known/reputable? Cross-check on the platform's creator page.
- Download / star count (popularity signal, not safety signal).
- Last update date (stale skills rot).
- Are there reviews / discussions from other users?
Step 2: Automated Code Scan (script)
scripts/vet.py reads ALL files in the skill folder and checks against 30+ red-flag rules. See references/rules.md for the full rule set.
Categories covered:
- Network exfiltration (curl/wget to unknown hosts, IP-literal URLs, Pastebin, tor)
- Credential access (
~/.ssh,~/.aws,~/.config, browser cookies, keychain) - Identity files (
MEMORY.md,USER.md,SOUL.md,IDENTITY.md— core agent files) - Dangerous code (
eval(),exec()with input,pickle.loads,subprocesswithshell=True) - Obfuscation (base64 decode, hex blobs, minified/encoded payloads)
- File system abuse (writes outside workspace,
sudo,chmod 777, shell rc files) - Permission escalation (sudo, modifying sudoers, requesting broad scopes)
- Supply chain (installing packages without listing them, curl|sh, pip install from raw URLs)
Step 3: Permission Scope (script + human)
The script extracts declared permissions from frontmatter (metadata.openclaw.requires) and compares against actual file/network behavior. Mismatches are flagged:
- Declares
requires.bins: [gh]but usescurl→ mismatch - No
requires.envbut readsprocess.env.GITHUB_TOKEN→ mismatch - Declares nothing but reads
~/.aws/credentials→ critical
Step 4: Risk Scoring (script)
Each red flag has a weight (5-25 points). The script sums weights and caps at 100. See references/scoring.md for the full model.
| Score | Risk Level | Action |
|---|---|---|
| 0-15 | 🟢 LOW | Basic review, install OK |
| 16-40 | 🟡 MEDIUM | Full code review required |
| 41-70 | 🔴 HIGH | Human approval required |
| 71-100 | ⛔ EXTREME | Do NOT install |
Step 5: Trust Hierarchy (human)
Apply different scrutiny based on source:
- Official OpenClaw skills → Lower scrutiny (still audit)
- High-star repos (1000+) → Moderate scrutiny
- Known authors with track record → Moderate scrutiny
- New / unknown sources → Maximum scrutiny
- Skills requesting credentials → Human approval always, regardless of source
Step 6: Decision & Documentation (human)
Based on the audit report, decide:
- ✅ SAFE TO INSTALL — proceed
- ⚠️ INSTALL WITH CAUTION — install but monitor, or request changes from author
- ❌ DO NOT INSTALL — reject, optionally report to community
Document the decision in your team's trust ledger (see references/trust-database.md).
Output Format
The script produces a structured report:
SKILL AUDIT REPORT
═══════════════════════════════════════════════════
Skill: [name]
Source: [ClawHub / GitHub / other]
Author: [username]
Version: [version]
Audited: [date] by skill-auditor v1.0.0
───────────────────────────────────────────────────
METRICS:
• Files scanned: [count]
• Lines scanned: [count]
• Rule violations: [count]
• Scan duration: [seconds]
───────────────────────────────────────────────────
RISK SCORE: 42/100 → 🔴 HIGH
RED FLAGS (by severity):
⛔ CRITICAL (25 pts each):
• [rule_id] [file:line] — [description]
🔴 HIGH (15 pts each):
• [rule_id] [file:line] — [description]
🟡 MEDIUM (10 pts each):
• [rule_id] [file:line] — [description]
🟢 LOW (5 pts each):
• [rule_id] [file:line] — [description]
PERMISSION MISMATCHES:
• [declared vs actual]
VERDICT: ❌ DO NOT INSTALL
═══════════════════════════════════════════════════
JSON output (--json) is machine-readable for CI.
CI Integration
See references/ci-integration.md for:
- Pre-commit hook (reject commits that add unaudited skills)
- GitHub Action (audit skills on PR)
- Scheduled re-audit (catch upstream drift)
Quick example — .github/workflows/audit-skills.yml:
on: [pull_request]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install -r skills/skill-auditor/requirements.txt # if needed
- run: python3 skills/skill-auditor/scripts/vet.py --batch skills/ --fail-on high
Comparison with skill-vetter
| Feature | skill-vetter (v1.0) | skill-auditor (v1.0) |
|---|---|---|
| Audit method | Manual checklist | Automated scan + manual judgment |
| Red flag rules | 13 | 30+ |
| Risk scoring | 4-tier label | 0-100 numeric + 4-tier label |
| Batch mode | ❌ | ✅ |
| CI integration | ❌ | ✅ (pre-commit, GitHub Action) |
| Permission mismatch check | ❌ | ✅ |
| Trust database | ❌ | ✅ (optional, offline) |
| Output | Markdown template | Markdown + JSON |
Trust Database
references/trust-database.md is an offline, community-maintained list of known-malicious and known-benign skill slugs. Contributions welcome via PR. The script reads it if present and warns on matches.
Rules of Engagement
- No skill is worth compromising security.
- When in doubt, don't install.
- High-score skills from known authors still need review — supply chain attacks target trusted authors.
- Document every audit decision so future-you (and your team) can learn.
- Re-audit after upstream updates — skills drift.
Files
skill-auditor/
├── SKILL.md # this file
├── scripts/
│ ├── vet.py # single-skill audit (main entry)
│ ├── batch_vet.py # batch audit a directory
│ └── score.py # scoring model (imported by vet.py)
├── references/
│ ├── rules.md # full rule set (30+ rules)
│ ├── scoring.md # scoring model explanation
│ ├── ci-integration.md # CI setup guide
│ └── trust-database.md # known-malicious / known-benign slugs
├── examples/
│ ├── report-example.md # sample audit report
│ └── github-action.yml # ready-to-use GitHub Action
└── tests/
├── test_vet.py # test suite
├── test_skill_good/ # benign skill sample (should score low)
└── test_skill_malicious/ # malicious skill sample (should score high)
Paranoia is a feature. Automation is a multiplier. 🔒🦀
Questions people ask
- Does it block installation automatically?
- No. It produces a structured audit report with a verdict (SAFE TO INSTALL / INSTALL WITH CAUTION / DO NOT INSTALL); the final call is yours. In CI you can configure it to fail the build above a chosen score (e.g. `--fail-on high`).
- How is the 0-100 risk score computed?
- Each of the 30+ red flag rules carries a weight of 5-25 points based on severity. Triggered weights are summed and capped at 100. The score maps to bands: 0-15 LOW, 16-40 MEDIUM, 41-70 HIGH, 71-100 EXTREME.
- How is this different from skill-vetter?
- skill-vetter is a manual checklist with 13 rules and a 4-tier label. Skill Auditor automates the scan via a Python script, expands rules to 30+, returns a numeric 0-100 score alongside the label, and adds batch mode, declared-vs-actual permission mismatch detection, an offline community trust database, and pre-commit / GitHub Actions hooks.
Related skills
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Site audit, content writing, and competitor analysis for organic search rankings.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
More from Zoran
Browse all skillsManage simple todos with add, list, complete, and remove features using a configurable todo file, priority, and auto-archive settings.