skills/testing/testing-security/SKILL.md
Security test: DAST OWASP ZAP/Nuclei, SAST Semgrep/Bandit, Snyk/Trivy, detect-secrets/TruffleHog
npx skillsauth add alphaonedev/openclaw-graph testing-securityInstall 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.
This skill automates security testing by integrating DAST tools (OWASP ZAP, Nuclei), SAST tools (Semgrep, Bandit), SCA tools (Snyk, Trivy), and secrets scanners (detect-secrets, TruffleHog) to identify vulnerabilities in code, applications, and secrets.
Use this skill during CI/CD pipelines, before deployments, or for periodic audits; ideal for projects with web apps, APIs, or codebases in languages like Python, Java, or JavaScript where security flaws could lead to breaches.
Always configure tools via environment variables for authentication (e.g., $ZAP_API_KEY for OWASP ZAP, $SNYK_TOKEN for Snyk). Start with a baseline scan on new projects, then automate in scripts.
zap-cli to scan a URL, and follow with Nuclei for specific exploits.Use these exact commands in scripts or terminals; ensure dependencies are installed (e.g., via pip or Docker).
zap.sh -daemon -port 8080, then scan via zap-cli -p 8080 quick-scan --spider https://target.com --report html. API endpoint: POST to /JSON/core/action/newSession/ with $ZAP_API_KEY.nuclei -t templates/ -u https://target.com -o results.txt; use config file like nuclei-config.yaml with severity levels.semgrep --config p/default --lang python .; customize with a .semgrep.yml file: rules: - id: no-os-system patterns: - pattern: os.system(...).bandit -r /path/to/code -f json; ignore paths via -x tests/.$SNYK_TOKEN, then snyk test --file=requirements.txt; API: GET https://snyk.io/api/v1/org/{orgId}/projects for project lists.trivy image myimage:latest --exit-code 1 --severity CRITICAL; config via .trivy.yaml with ignoreUnfixed: true.detect-secrets scan > .secrets.baseline; use with Git hook: detect-secrets hook --baseline .secrets.baseline.trufflehog git https://github.com/repo --since-commit HEAD~1; filter with --regex for patterns.Integrate via scripts or orchestration tools like Jenkins or GitHub Actions; pass outputs as JSON for chaining. For auth, set env vars like $TRIVY_USERNAME and $TRIVY_PASSWORD. Use Docker images (e.g., owasp/zap2docker-stable) for isolated runs. Config formats: YAML for Semgrep rules (e.g., { patterns: [pattern: "regex"] }), JSON for Snyk reports. Ensure tools are version-pinned (e.g., Semgrep v0.100.0) to avoid breaking changes.
Check exit codes after each command (e.g., Semgrep returns non-zero on findings); parse errors from stdout, like OWASP ZAP's JSON responses for "error" keys. Common issues: Network errors in DAST—retry with zap-cli --retries 3; authentication failures—verify env vars (e.g., if $SNYK_TOKEN is invalid, output "Auth error"). Log all outputs to files and handle via try-catch in scripts, e.g., in Bash: zap-cli quick-scan || echo "Scan failed: $?" >> error.log. For API calls, check HTTP status codes (e.g., 401 for unauthorized).
tools
Root web development: project structure, tooling selection, deployment decisions
development
WebAssembly: Rust/Go/C to WASM, wasm-bindgen, Emscripten, WASM Component Model
development
Vue 3: Composition API script setup, Pinia, Vue Router 4, SFCs, Vite, Nuxt 3
tools
Tailwind CSS 4: utility classes, config, JIT, arbitrary values, darkMode, plugins, shadcn/ui