Security Scan Skill
Run three independent scanners and summarize results:
runDependencyAudit() for package/dependency vulnerabilities
runSastScan() for static code findings
runHoundDogScan() for privacy/security dataflow findings
Orchestration
For full scans, run scanners in parallel and tolerate per-scanner failures.
const [depResult, sastResult, hounddogResult] = await Promise.allSettled([
runDependencyAudit(),
runSastScan(),
runHoundDogScan(),
]);
const dep = depResult.status === 'fulfilled' ? depResult.value : null;
const sast = sastResult.status === 'fulfilled' ? sastResult.value : null;
const hounddog =
hounddogResult.status === 'fulfilled' ? hounddogResult.value : null;
Do not fail the whole scan because one scanner errors.
Minimal Response Shape
runDependencyAudit()
metadata.vulnerabilities: { info, low, moderate, high, critical }
vulnerabilities[]: id, package, severity, fix, source
runSastScan()
results[]: checkId, message, severity, fingerprint, location
runHoundDogScan()
vulnerabilities[]: hash, ruleIds, message, severity, location, privacyViolations, remediation*
Output Expectations
Return concise results instead of dumping full payloads:
- Per scanner: status (
ok or error) and count by severity.
- Top critical/high findings with file path and short message.
- A short remediation plan, with risky/breaking changes clearly called out.
1---2name: security-scan3description: Run runDependencyAudit, runSastScan, and runHoundDogScan and return a concise, prioritized security summary with critical/high findings first. Must use this skill if security scanning is explicitly requested by the user.4---56# Security Scan Skill78Run three independent scanners and summarize results:910- `runDependencyAudit()` for package/dependency vulnerabilities11- `runSastScan()` for static code findings12- `runHoundDogScan()` for privacy/security dataflow findings1314## Orchestration1516For full scans, run scanners in parallel and tolerate per-scanner failures.1718```javascript19const [depResult, sastResult, hounddogResult] = await Promise.allSettled([20 runDependencyAudit(),21 runSastScan(),22 runHoundDogScan(),23]);2425const dep = depResult.status === 'fulfilled' ? depResult.value : null;26const sast = sastResult.status === 'fulfilled' ? sastResult.value : null;27const hounddog =28 hounddogResult.status === 'fulfilled' ? hounddogResult.value : null;29```3031Do not fail the whole scan because one scanner errors.3233## Minimal Response Shape3435- `runDependencyAudit()`36 - `metadata.vulnerabilities`: `{ info, low, moderate, high, critical }`37 - `vulnerabilities[]`: `id`, `package`, `severity`, `fix`, `source`38- `runSastScan()`39 - `results[]`: `checkId`, `message`, `severity`, `fingerprint`, `location`40- `runHoundDogScan()`41 - `vulnerabilities[]`: `hash`, `ruleIds`, `message`, `severity`, `location`, `privacyViolations`, `remediation*`4243## Output Expectations4445Return concise results instead of dumping full payloads:46471. Per scanner: status (`ok` or `error`) and count by severity.482. Top critical/high findings with file path and short message.493. A short remediation plan, with risky/breaking changes clearly called out.