skill-security-scanner/SKILL.md
Scan AI agent skills for security vulnerabilities - prompt injection, credential exposure, malicious code patterns, data exfiltration risks, and dangerous function calls. Outputs severity-rated findings with remediation guidance.
npx skillsauth add leprachuan/pot-o-skills skill-security-scannerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A comprehensive security auditing skill for scanning other AI agent skills (Claude, Copilot CLI, Gemini) for vulnerabilities. Based on OWASP Top 10 for Agentic Apps, static analysis best practices, and AI-specific threat research.
| Category | Severity | Examples |
|----------|----------|---------|
| Hardcoded credentials | 🔴 CRITICAL | API keys, tokens, passwords in code |
| Prompt injection patterns | 🔴 CRITICAL | Instruction context override attempts in configs/docs |
| Remote code execution | 🔴 CRITICAL | eval(), exec(), dynamic __import__ |
| Data exfiltration | 🔴 CRITICAL | Unauthorized network calls with env vars or file contents |
| Shell injection | 🔴 CRITICAL | Unvalidated os.system(), subprocess with user input |
| Sensitive file access | 🟠 HIGH | Reading ~/.ssh/, .env, /etc/passwd |
| Insecure deserialization | 🟠 HIGH | pickle.loads(), yaml.load() without SafeLoader |
| Suspicious network calls | 🟠 HIGH | External requests to unknown/unexpected hosts |
| Permission escalation | 🟠 HIGH | Requests for excessive permissions in metadata |
| Obfuscated code | 🟠 HIGH | Base64-encoded payloads, hex-encoded strings |
| Missing input validation | 🟡 MEDIUM | User input passed directly to dangerous functions |
| Dependency risk | 🟡 MEDIUM | Pinned deps with known CVEs, typosquatted packages |
| Debug/backdoor artifacts | 🟡 MEDIUM | Hardcoded admin creds, test backdoors left in |
| Excessive logging | 🟢 LOW | Logging sensitive values to stdout |
| Missing .gitignore | 🟢 LOW | .env not excluded from version control |
from copilot.skill_scanner import SkillSecurityScanner
scanner = SkillSecurityScanner()
results = scanner.scan_skill("/opt/skills/some-skill")
scanner.print_report(results)
# Scan a skill directory
python3 scripts/scan.py --path /opt/skills/some-skill
# Scan all skills
python3 scripts/scan.py --path /opt/skills --all
# JSON output for CI/CD
python3 scripts/scan.py --path /opt/skills/some-skill --format json
# SARIF output for GitHub Advanced Security
python3 scripts/scan.py --path /opt/skills/some-skill --format sarif
# Only show high and critical
python3 scripts/scan.py --path /opt/skills/some-skill --severity high
🔍 Skill Security Scan Report
================================
Skill: cisco-security-cloud-control
Path: /opt/skills/cisco-security-cloud-control
Scanned: 12 files
Findings:
─────────────────────────────────────────────────────
🔴 CRITICAL [credential-exposure] copilot/cisco_scc.py:47
Possible hardcoded API key: CISCO_API_KEY = "abc123..."
Fix: Move to .env and use os.getenv()
🟠 HIGH [insecure-deserialization] claude/parser.py:89
Use of yaml.load() without SafeLoader
Fix: Replace with yaml.safe_load()
Summary: 1 critical, 1 high, 0 medium, 0 low
Status: ❌ FAILED (critical issues found)
# GitHub Actions example
- name: Scan skills
run: |
python3 /opt/skills/skill-security-scanner/scripts/scan.py \
--path ./my-skill \
--severity high \
--format sarif \
--output results.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
Create scanner_config.json to customize rules:
{
"disable_rules": ["missing-gitignore"],
"severity_overrides": {
"excessive-logging": "medium"
},
"allowed_external_hosts": ["api.cisco.com", "api.openai.com"],
"scan_extensions": [".py", ".js", ".ts", ".md", ".json", ".yaml"]
}
data-ai
Interactive TODO board for Wee Canvas. Displays TODOs from both GitHub Issues (leprachuan/fosterbot-home) and flat files in two views: list and kanban. Features filtering, drag-and-drop status changes, quick-add, and auto-refresh every 30 seconds. Use when Foster asks to "show TODOs", "open TODO board", "view my tasks", or "TODO kanban".
tools
Web-based terminal tools for Wee Canvas: remote SSH terminal (WebSSH) and local bash terminal (ttyd). Embeds interactive terminal panels in Wee Canvas iframes. Use when the user asks for a 'web terminal', 'local terminal', 'browser SSH', 'webssh', or wants to interact with a host through the WebUI canvas. For browser windows, see the browser-window skill.
development
Use when you need to send WebEx notifications to flipkey-home-bot - supports markdown formatting, auto-retry with backoff, rate limiting, and message history tracking
tools
Production-ready TODO management with dual-source support (GitHub Issues + flat files), due dates, labels, and automatic reminders. Fully portable with environment variable configuration.