skills/security/security-audit/SKILL.md
Run a comprehensive security audit against a codebase. Covers OWASP Top 10, secrets exposure, dependency vulnerabilities, misconfigurations, and insecure patterns. Language-agnostic.
npx skillsauth add abhiunix/community-registry security-auditInstall 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.
When asked to run a security audit, follow this systematic process. Adapt checks to the languages and frameworks detected in the project.
Identify the tech stack before diving in.
package.json, yarn.lock (Node.js)requirements.txt, Pipfile, pyproject.toml (Python)go.mod (Go)Cargo.toml (Rust)Gemfile (Ruby)pom.xml, build.gradle (Java/Kotlin)*.csproj (C#/.NET)composer.json (PHP)Search for hardcoded secrets. These are critical findings.
# Patterns to grep for (case-insensitive):
- API_KEY, APIKEY, api_key
- SECRET, SECRET_KEY, CLIENT_SECRET
- PASSWORD, PASSWD, DB_PASS
- TOKEN, ACCESS_TOKEN, AUTH_TOKEN, BEARER
- PRIVATE_KEY, private_key, -----BEGIN
- AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
- JDBC connection strings with credentials
- mongodb://, postgres://, mysql:// with embedded passwords
- Base64-encoded strings that are suspiciously long (>40 chars)
Check:
.env files that are NOT gitignored, config.yaml, etc.).gitignore — verify it excludes .env, *.pem, *.keygit log --diff-filter=D -- "*.env" "*.key" "*.pem" (deleted but in history)ARG or ENV with secret valuesSearch for string concatenation or interpolation in database queries:
+ near SQL keywords (SELECT, INSERT, UPDATE, DELETE, WHERE)Search for:
system(), exec(), popen(), spawn(), os.system() with variable argumentsshell=True (Python), backtick execution (Ruby), child_process.exec (Node.js)eval(), Function(), exec() with user-derived dataSearch for:
innerHTML, outerHTML, document.write(), insertAdjacentHTML()dangerouslySetInnerHTML (React), v-html (Vue), [innerHTML] (Angular)| safe (Jinja2), <%== %> (ERB), {{{ }}} (Handlebars)Search for:
../ not being filtered in file path logicos.path.join() or path.join() with user-controlled segments without containment checkCheck:
Check:
Check:
Run the appropriate vulnerability scanner:
# Node.js
npm audit --json 2>/dev/null || true
# Python
pip audit 2>/dev/null || true
# Ruby
bundle audit check 2>/dev/null || true
# Go
govulncheck ./... 2>/dev/null || true
# Rust
cargo audit 2>/dev/null || true
Also check:
Check:
Check:
Structure your audit report as:
## Security Audit Report
### Summary
- **Risk Level:** Critical / High / Medium / Low
- **Tech Stack:** [detected languages, frameworks, databases]
- **Findings:** X critical, Y high, Z medium, W low
### Critical Findings
#### [CRIT-1] Finding title
- **Category:** Injection / Auth / Crypto / Config / etc.
- **Location:** file:line
- **Description:** What the vulnerability is
- **Impact:** What an attacker could do
- **Remediation:** How to fix it
- **Reference:** OWASP/CWE link if applicable
### High Findings
...
### Medium Findings
...
### Low Findings / Informational
...
### Positive Observations
- Things the project does well
development
Generate a STRIDE-based threat model from codebase and architecture analysis. Identifies assets, trust boundaries, data flows, threats, and mitigations. Language-agnostic.
development
Security-focused code review for staged changes or specified files. Checks for injection, auth flaws, crypto misuse, data exposure, and insecure patterns. Works with any language.
development
Manage Trello boards, lists, and cards via the Trello REST API.
tools
Manage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks OpenClaw to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags.