Free skill by Claw0x — 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, create an API key, and start calling. No credit card, no wallet top-up required.
When This HappensScan ForWhat You GetInstalling third-party skillAll vulnerabilitiesRisk score + CVE listBefore publishing skillCode patterns + permissionsSecurity audit reportDependency updateNew CVEsUpdated vulnerability listUser reports suspicious behaviorUndeclared permissionsPermission auditCI/CD pipelineAutomated security checkPass/fail + recommendationsSkill marketplace reviewTrust score calculationApproval decision data
Why API-based? Centralized CVE database (OSV.dev), consistent scanning rules, no local setup required.
Sign up at claw0x.com → Dashboard → Create API Key
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"
}
}'
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"
]
}
bash
# Update vulnerable dependency
npm update lodash
# Fix shell injection
# Replace: exec(userInput)
# With: execFile('command', [userInput])
Done. Your skill is now more secure.
Problem: You run a skill marketplace and need to vet submissions before approval
Solution:
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
Problem: Developers push code with vulnerabilities that reach production
Solution:
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
Problem: Your skills use dependencies that get new CVEs over time
Solution:
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)
Problem: Developers accidentally commit secrets or dangerous patterns
Solution:
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
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;
});
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={
'skill': 'security-scanner',
'input': {'repo_url': repo_url}
}
)
result = response.json()
if result["risk_score"] > 50:
raise SecurityError(f"High risk: {result['recommendations']}")
return result
# Use in skill installation
try:
scan = vet_skill("https://github.com/owner/repo")
install_skill(repo_url)
except SecurityError as e:
print(f"Installation blocked: {e}")
yaml
name: Security Scan
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Scan for vulnerabilities
run: |
RESULT=$(curl -X POST https://api.claw0x.com/v1/call \
-H "Authorization: Bearer ${{ secrets.CLAW0X_API_KEY }}" \
-H "Content-Type: application/json" \
-d "{\"skill\":\"security-scanner\",\"input\":{\"repo_url\":\"https://github.com/${{ github.repository }}\"}}")
echo "$RESULT" | jq '.'
RISK_SCORE=$(echo "$RESULT" | jq -r '.risk_score')
if [ "$RISK_SCORE" -gt 50 ]; then
echo "::error::Security scan failed with risk score $RISK_SCORE"
exit 1
fi
echo "::notice::Security scan passed with risk score $RISK_SCORE"
typescript
// Scan all skills in marketplace
const skills = await db.skills.findMany();
const scans = await Promise.all(
skills.map(async skill => {
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: { skill_slug: skill.slug }
})
});
return response.json();
})
);
// Update trust scores
for (let i = 0; i < skills.length; i++) {
const trustScore = calculateTrustScore(scans[i]);
await db.skills.update({
where: { id: skills[i].id },
data: {
trust_score: trustScore,
last_scan: new Date(),
security_scan_status: scans[i].overall_risk
}
});
}
This skill runs a three-layer security analysis pipeline. No LLM involved — pure deterministic scanning logic.
Dependencies are extracted from package.json (npm) or requirements.txt (PyPI) and queried against the OSV.dev batch vulnerability database.
Source files ( .ts, .js, .py) are scanned line-by-line against 8 pre-compiled regex rules covering: dynamic execution, shell injection, env leaks, data exfiltration, hardcoded credentials, unsafe imports, filesystem overreach, and insecure network requests.
The SKILL.md frontmatter allowed-tools field is cross-referenced against actual code behavior detected by the static analyzer.
The three layer scores are summed into a total risk score (0–100):
Score RangeRisk Level0–20Low21–50Medium51–100High
You can scan a skill using any of these three modes (mutually exclusive — provide exactly one):
Provide a public GitHub repository URL. The scanner fetches dependency files, source code, and SKILL.md automatically.
json
{ "repo_url": "https://github.com/owner/repo" }
Provide a skill slug from the Claw0x platform. The scanner looks up the associated repo URL and proceeds with the standard scan.
json
{ "skill_slug": "validate-email" }
Submit code directly along with optional dependency and SKILL.md data. No GitHub fetching needed.
json
{
"code": "import os\nos.system('rm -rf /')",
"dependencies": { "requests": "2.28.0" },
"skill_md": "---\nname: my-skill\nallowed-tools: Bash(curl *)\n---"
}
Sign up at claw0x.com
Create API key in Dashboard
Set environment variable: bash
# Add to ~/.openclaw/.env or your agent's environment
CLAW0X_API_KEY=ck_live_...
Security note: Never embed API keys in prompts, source code, or version-controlled files. Use environment variables or secret managers.
No credit card or wallet balance needed. This skill is free to use.
bash
curl -s -X POST https://api.claw0x.com/v1/call \
-H "Authorization: Bearer $CLAW0X_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"skill": "security-scanner",
"input": {
"repo_url": "https://github.com/owner/repo"
}
}'
Provide exactly one of the three input modes:
FieldTypeRequiredDescriptionrepo_urlstringone of threeGitHub repo URL. Mutually exclusive with skill_slug and codeskill_slugstringone of threeClaw0x skill slug (1–100 chars). Mutually exclusive with repo_url and codecodestringone of threeSource code to scan directly (max 500KB). Mutually exclusive with repo_url and skill_slugdependenciesobjectnoPackage name to version map for dependency scanning (used with code mode)skill_mdstringnoSKILL.md content for permission auditing (used with code mode)
FieldTypeDescriptionoverall_riskstringRisk level: low, medium, or high``risk_scorenumberNumeric risk score (0–100)input_modestringWhich input mode was usedrepo_urlstring or nullRepository URL if applicabledependency_scan.packages_scannednumberNumber of packages checkeddependency_scan.vulnerabilitiesarrayFound CVEs (max 20)dependency_scan.vulnerability_countsobjectCount by severity levelcode_scan.findingsarrayDangerous code patterns found (max 50)code_scan.finding_countsobjectCount by severity levelcode_scan.rules_checkednumberNumber of rules appliedpermission_audit.declared_permissionsarrayPermissions from SKILL.mdpermission_audit.detected_permissionsarrayPermissions found in codepermission_audit.undeclared_risksarrayDetected but not declaredrecommendationsarrayActionable fix suggestionsscanned_atstringISO 8601 scan timestampscan_duration_msnumberTotal scan time in milliseconds
Input:
json
{
"skill": "security-scanner",
"input": {
"code": "const { exec } = require('child_process');\nexec(userInput);",
"dependencies": { "lodash": "4.17.20" }
}
}
Output:
json
{
"overall_risk": "high",
"risk_score": 62,
"input_mode": "direct",
"repo_url": null,
"dependency_scan": {
"packages_scanned": 1,
"vulnerabilities": [
{
"id": "GHSA-jf85-cpcp-j695",
"summary": "Prototype Pollution in lodash",
"severity": "high",
"package_name": "lodash",
"package_version": "4.17.20"
}
],
"vulnerability_counts": { "critical": 0, "high": 1, "medium": 0, "low": 0 }
},
"code_scan": {
"findings": [
{
"rule_id": "SHELL_INJECT",
"name": "Shell injection",
"severity": "critical",
"file": "input.ts",
"line": 1,
"match": "require('child_process')",
"description": "Shell command execution detected"
}
],
"finding_counts": { "critical": 1, "high": 0, "medium": 0, "low": 0 },
"rules_checked": 8
},
"permission_audit": {
"declared_permissions": [],
"detected_permissions": ["Bash(*)"],
"undeclared_risks": ["Bash(*)"]
},
"recommendations": [
"Critical: Shell injection pattern detected",
"High: lodash@4.17.20 has known vulnerabilities",
"Undeclared permission: Bash(*) detected but not declared"
],
"scanned_at": "2025-01-15T10:30:00.000Z",
"scan_duration_ms": 1250
}
Free. This skill costs nothing to use. Just sign up at claw0x.com and create an API key.
Why free? Security scanning is a critical need for the agent ecosystem. We provide it free to help build trust and attract users to the Claw0x platform.
FeatureLocal Tools (npm audit, Snyk)Claw0x (API-Based)Setup Time10-30 min (install, configure)2 minutes (get API key)CVE Databasenpm registry onlyOSV.dev (all ecosystems)Code AnalysisBasic (npm audit)8 rule categoriesPermission Audit❌ Not available✅ SKILL.md cross-checkMulti-LanguageSeparate tools per languageUnified APICI/CD IntegrationComplex (multiple tools)Single API callCostFree (local)Free (API)MaintenanceTool updates requiredZero maintenance
text
┌─────────────────────────────────────────────────────────────┐
│ Skill Development Lifecycle │
└─────────────────────────────────────────────────────────────┘
│
├─ Development
│ • Write code
│ • Add dependencies
│
├─ Pre-Commit Scan
│ POST /v1/call
│ {code: staged_files}
│ → Block if critical
│
├─ CI/CD Scan
│ POST /v1/call
│ {repo_url: github_url}
│ → Fail build if risk > 50
│
├─ Pre-Publish Scan
│ POST /v1/call
│ {skill_slug: slug}
│ → Calculate trust score
│
└─ Continuous Monitoring
Weekly scans for new CVEs
Alert on risk increase
Claw0x is the native skills layer for AI agents — providing unified API access, atomic billing, and quality control.
Explore more skills: claw0x.com/skills