Security

Skill Auditor

Try it

Automated 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 entire skills/ dir, hook into pre-commit / GitHub Actions.

When to Use

  • Before clawhub install from ClawHub
  • Before git clone of 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, subprocess with shell=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 uses curl → mismatch
  • No requires.env but reads process.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.

ScoreRisk LevelAction
0-15🟢 LOWBasic review, install OK
16-40🟡 MEDIUMFull code review required
41-70🔴 HIGHHuman approval required
71-100⛔ EXTREMEDo NOT install

Step 5: Trust Hierarchy (human)

Apply different scrutiny based on source:

  1. Official OpenClaw skills → Lower scrutiny (still audit)
  2. High-star repos (1000+) → Moderate scrutiny
  3. Known authors with track record → Moderate scrutiny
  4. New / unknown sources → Maximum scrutiny
  5. 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

Featureskill-vetter (v1.0)skill-auditor (v1.0)
Audit methodManual checklistAutomated scan + manual judgment
Red flag rules1330+
Risk scoring4-tier label0-100 numeric + 4-tier label
Batch mode❌✅
CI integration❌✅ (pre-commit, GitHub Action)
Permission mismatch check❌✅
Trust database❌✅ (optional, offline)
OutputMarkdown templateMarkdown + 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

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván558 installs18 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

More from Zoran

Browse all skills

Manage simple todos with add, list, complete, and remove features using a configurable todo file, priority, and auto-archive settings.

by zoran-xc1 installs