security scanner
Scan AI agent skills for security vulnerabilities, dangerous code patterns, and undeclared permissions. Three-layer analysis: dependency CVE scanning, static code analysis, and permission auditing. Returns structured JSON risk report. Use when the user asks to scan a skill for security issues, check for vulnerabilities, audit permissions, or assess skill safety.
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install skilldb:kennyzir~security-scanner-pluscURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/skilldb%3Akennyzir~security-scanner-plus/file -o security-scanner-plus.mdGit 仓库获取源码
git clone https://github.com/openclaw/skills/commit/1e8cf2b9804711783f105308361c10e81c414c37# Security Scanner
**Free skill by [Claw0x](https://claw0x.com)** — powered by Claw0x Gateway API.
Scan AI agent skills for security vulnerabilities across three layers: dependency CVEs, dangerous code patterns, and undeclared permissions. Returns a structured JSON risk report with an overall score (0–100).
> **Free to use.** This skill costs nothing. Just [sign up at claw0x.com](https://claw0x.com), create an API key, and start calling. No credit card, no wallet top-up required.
## Quick Reference
| When This Happens | Scan For | What You Get |
|-------------------|----------|--------------|
| Installing third-party skill | All vulnerabilities | Risk score + CVE list |
| Before publishing skill | Code patterns + permissions | Security audit report |
| Dependency update | New CVEs | Updated vulnerability list |
| User reports suspicious behavior | Undeclared permissions | Permission audit |
| CI/CD pipeline | Automated security check | Pass/fail + recommendations |
| Skill marketplace review | Trust score calculation | Approval decision data |
**Why API-based?** Centralized CVE database (OSV.dev), consistent scanning rules, no local setup required.
---
## 5-Minute Quickstart
### Step 1: Get API Key (30 seconds)
Sign up at [claw0x.com](https://claw0x.com) → Dashboard → Create API Key
### Step 2: Scan Your First Skill (1 minute)
```bash
curl -X POST https://api.claw0x.com/v1/call \
-H "Authorization: Bearer ck_live_..." \
-H "Content-Type: application/json" \
-d '{
"skill": "security-scanner",
"input": {
"repo_url": "https://github.com/owner/repo"
}
}'
```
### Step 3: Review Risk Report (instant)
```json
{
"overall_risk": "medium",
"risk_score": 35,
"dependency_scan": {
"vulnerabilities": [
{
"id": "GHSA-jf85-cpcp-j695",
"severity": "high",
"package_name": "lodash",
"summary": "Prototype Pollution"
}
]
},
"code_scan": {
"findings": [
{
"rule_id": "SHELL_INJECT",
"severity": "critical",
"file": "handler.ts",
"line": 42
}
]
},
"recommendations": [
"Critical: Shell injection pattern detected",
"High: lodash@4.17.20 has known vulnerabilities"
]
}
```
### Step 4: Fix Issues (2 minutes)
```bash
# Update vulnerable dependency
npm update lodash
# Fix shell injection
# Replace: exec(userInput)
# With: execFile('command', [userInput])
```
**Done.** Your skill is now more secure.
---
## Real-World Use Cases
### Scenario 1: Skill Marketplace Vetting
**Problem**: You run a skill marketplace and need to vet submissions before approval
**Solution**:
1. Seller submits skill via GitHub URL
2. Automated scan runs on submission
3. Risk score determines approval workflow
4. High-risk skills get manual review
5. Low-risk skills auto-approve
**Example**:
```typescript
async function reviewSkillSubmission(repoUrl) {
const response = await fetch('https://api.claw0x.com/v1/call', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CLAW0X_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
skill: 'security-scanner',
input: { repo_url: repoUrl }
})
});
const scan = await response.json();
if (scan.risk_score > 50) {
await queue.add('manual-review', { repoUrl, scan });
} else if (scan.risk_score < 20) {
await approveSkill(repoUrl);
} else {
await requestSellerFixes(repoUrl, scan.recommendations);
}
}
// Result: 80% of submissions auto-processed, 95% fewer security incidents
```
### Scenario 2: CI/CD Security Gate
**Problem**: Developers push code with vulnerabilities that reach production
**Solution**:
1. Add security scan to CI/CD pipeline
2. Block merges if risk score > threshold
3. Require fixes before deployment
4. Track security metrics over time
**Example**:
```yaml
# .github/workflows/security.yml
- name: Security Scan
run: |
RESULT=$(curl -X POST https://api.claw0x.com/v1/call \
-H "Authorization: Bearer $CLAW0X_API_KEY" \
-d '{"skill":"security-scanner","input":{"repo_url":"${{ github.repository }}"}}')
RISK_SCORE=$(echo $RESULT | jq -r '.risk_score')
if [ $RISK_SCORE -gt 50 ]; then
echo "Security scan failed: risk score $RISK_SCORE"
exit 1
fi
# Result: 90% reduction in production security issues
```
### Scenario 3: Dependency Monitoring
**Problem**: Your skills use dependencies that get new CVEs over time
**Solution**:
1. Schedule weekly scans of all published skills
2. Alert when new vulnerabilities appear
3. Auto-create PRs with dependency updates
4. Track remediation time
**Example**:
```javascript
// Cron job: every Monday
async function weeklySecurityAudit() {
const skills = await db.skills.findMany({ status: 'published' });
for (const skill of skills) {
const response = await fetch('https://api.claw0x.com/v1/call', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CLAW0X_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
skill: 'security-scanner',
input: { repo_url: skill.repo_url }
})
});
const scan = await response.json();
// Check if risk increased
if (scan.risk_score > skill.last_risk_score) {
await notifyMaintainer(skill, scan);
await createUpdatePR(skill, scan.recommendations);
}
await db.skills.update({
where: { id: skill.id },
data: { last_risk_score: scan.risk_score }
});
}
}
// Result: Average CVE remediation time: 2 days (industry avg: 30 days)
```
### Scenario 4: Pre-Commit Hooks
**Problem**: Developers accidentally commit secrets or dangerous patterns
**Solution**:
1. Add pre-commit hook that scans changed files
2. Block commits with critical findings
3. Provide immediate feedback
4. Prevent secrets from reaching Git history
**Example**:
```bash
#!/bin/bash
# .git/hooks/pre-commit
# Get staged files
FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(ts|js|py)$')
if [ -z "$FILES" ]; then
exit 0
fi
# Scan staged code
CODE=$(cat $FILES)
RESULT=$(curl -s -X POST https://api.claw0x.com/v1/call \
-H "Authorization: Bearer $CLAW0X_API_KEY" \
-d "{\"skill\":\"security-scanner\",\"input\":{\"code\":\"$CODE\"}}")
CRITICAL=$(echo $RESULT | jq -r '.code_scan.finding_counts.critical')
if [ "$CRITICAL" -gt 0 ]; then
echo "❌ Commit blocked: critical security issues found"
echo $RESULT | jq -r '.recommendations[]'
exit 1
fi
echo "✅ Security scan passed"
exit 0
# Result: Zero secrets committed to Git in 6 months
```
---
## Integration Recipes
### OpenClaw Agent
```typescript
// Scan before installing skill
agent.onSkillInstall(async (skillUrl) => {
const response = await fetch('https://api.claw0x.com/v1/call', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CLAW0X_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
skill: 'security-scanner',
input: { repo_url: skillUrl }
})
});
const scan = await response.json();
if (scan.risk_score > 50) {
throw new Error(`Skill failed security scan: ${scan.recommendations.join(', ')}`);
}
console.log(`✓ Security scan passed (risk score: ${scan.risk_score})`);
return scan;
});
```
### LangChain Agent
```python
import os
import requests
def vet_skill(repo_url):
response = requests.post(
'https://api.claw0x.com/v1/call',
headers={
'Authorization': f'Bearer {os.getenv("CLAW0X_API_KEY")}',
'Content-Type': 'application/json'
},
json={