# Skills Firewall

> "Security firewall for skills that automatically blocks and filters malicious or potentially harmful skills. Use when:

- Skill: `dvcrn/skills-firewall` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add dvcrn/skills-firewall`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/skills-firewall/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/skills-firewall

---


# Skills Firewall

A security firewall that automatically blocks and filters malicious or potentially harmful skills by analyzing code patterns, detecting security threats, and enforcing security policies.

## Quick Start

### Scan a Single Skill

```bash
python scripts/scan_skill.py /path/to/skill
```

### Check Firewall Decision

```bash
python scripts/firewall_check.py /path/to/skill
```

### Generate Security Report

```bash
python scripts/generate_report.py /path/to/skills --format text
```

## Core Workflows

### 1. Security Scanning

Scan skills for potential security threats:

```bash
# Scan single skill
python scripts/scan_skill.py ./my-skill

# Scan all skills in directory
python scripts/scan_skill.py ./skills

# JSON output for automation
python scripts/scan_skill.py ./my-skill --json
```

**Threat Levels:**
- `SAFE` - No security concerns
- `LOW` - Minor concerns, generally safe
- `MEDIUM` - Moderate concerns, review recommended
- `HIGH` - Significant risks, blocking recommended
- `CRITICAL` - Severe threats, must block

### 2. Firewall Filtering

Check and filter skills based on security rules:

```bash
# Check single skill
python scripts/firewall_check.py ./my-skill

# Filter all skills
python scripts/firewall_check.py ./skills

# Add to allowed list
python scripts/firewall_check.py ./my-skill --allow

# Add to blocked list
python scripts/firewall_check.py ./my-skill --block
```

**Actions:**
- `allow` - Skill passes firewall
- `warn` - Skill has warnings but allowed
- `block` - Skill is blocked
- `quarantine` - Skill isolated for review

### 3. Security Reports

Generate comprehensive security reports:

```bash
# Text report
python scripts/generate_report.py ./skills

# JSON report
python scripts/generate_report.py ./skills --format json

# HTML report
python scripts/generate_report.py ./skills --format html --output report.html
```

## Detection Categories

The firewall detects threats in these categories:

| Category | Examples | Severity |
|----------|----------|----------|
| Code Injection | eval(), exec(), __import__() | HIGH |
| Command Execution | subprocess shell=True, os.system() | HIGH |
| Credential Exposure | Hardcoded passwords, API keys | CRITICAL |
| Network Communication | HTTP requests, socket connections | MEDIUM |
| File Operations | File deletion, modification | MEDIUM |
| Deserialization | pickle.loads, unsafe yaml.load | HIGH |
| Privilege Escalation | sudo, chmod 777 | HIGH |
| Obfuscation | Base64 decoding, encoding | LOW |

## Configuration

### Export/Import Config

```bash
# Export current config
python scripts/firewall_check.py ./skills --export-config firewall.yaml

# Use custom config
python scripts/firewall_check.py ./skills --config firewall.yaml
```

### Config File Format

```yaml
default_action: warn
allowed_skills:
  - skill-creator
  - weather
blocked_skills:
  - malicious-skill
quarantine_dir: ./quarantine
rules:
  - name: block_eval
    description: Block eval() usage
    patterns:
      - "eval("
    action: block
    enabled: true
```

## Reference Documentation

- **Malicious Patterns**: See [malicious_patterns.md](references/malicious_patterns.md) for detailed pattern catalog
- **Security Rules**: See [security_rules.md](references/security_rules.md) for rule definitions and configuration

## Programmatic Usage

```python
from scan_skill import scan_skill, ThreatLevel
from firewall_check import SkillsFirewall, ActionType

# Scan a skill
result = scan_skill("/path/to/skill")
print(f"Threat Level: {result.threat_level}")
print(f"Is Safe: {result.is_safe}")

# Use firewall
firewall = SkillsFirewall()
decision = firewall.check_skill("/path/to/skill")
print(f"Action: {decision.action}")
print(f"Reason: {decision.reason}")

# Manage lists
firewall.add_allowed_skill("trusted-skill")
firewall.add_blocked_skill("malicious-skill")

# Create custom rule
firewall.create_rule(
    name="block_custom_pattern",
    description="Block custom dangerous pattern",
    patterns=["dangerous_function("],
    action=ActionType.BLOCK
)
```

## Best Practices

1. **Scan Before Use**: Always scan new skills before installation
2. **Review Warnings**: Investigate warning-level findings
3. **Update Rules**: Keep detection patterns current
4. **Document Exceptions**: Record why skills are allowed/blocked
5. **Regular Audits**: Run periodic security scans
6. **Use Reports**: Generate reports for compliance and review
