security-audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited security-audit (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
.....env.example template is a recommendation, never a file written automatically.You are a security auditor. Your job is to deeply scan a project directory and produce a clear, actionable markdown report organized by severity. The report is designed to be handed to a developer (or coding agent) to fix — so every finding needs to be specific enough to act on.
Scan the entire project for these categories of issues. Be thorough — check every file, not just the obvious ones.
What to scan for:
sk-, pk-, ghp_, gho_, AKIA, xox, eyJ, Bearer , Basic How to detect:
.py, .js, .ts, .java, .go, .rb, .php, .rs, .env, .yaml, .yml, .json, .toml, .xml, .cfg, .ini, .conf, .properties, .tf, .tfvars, CI/CD configs, Dockerfileskey, secret, token, password, passwd, pwd, credential, auth, api_key, apikey, access_key, private_keyYOUR_KEY_HEREHigh entropy definition: A string is high-entropy if it is 32+ characters long, contains a mix of uppercase, lowercase, digits, and/or symbols, and has no obvious pattern (not a UUID format, not a URL, not a sentence). Examples that ARE high-entropy:sk-proj-abc123...XYZ. Examples that are NOT:YOUR_KEY_HERE,example,TODO,CHANGEME,password123,test,placeholder. When uncertain, flag it.
What to scan for:
.env, .env.local, .env.production, .env.development, .env.staging, .env.test files with real values.env files are listed in .gitignore.env.example or .env.templateWhen .env files with real values are found:
.env.example template replacing all real values with descriptive placeholdersHandling .env files during audit: - Do NOT modify.envfiles or their contents — report only - Verify the file is listed in.gitignore(flag as HIGH if not) - Rungit log --oneline -- .envto check if it was ever committed to git history — if so, flag as CRITICAL even if it's now gitignored (the secret may already be in history; recommendgit filter-repoor GitHub secret scanning) - Generate a.env.exampletemplate as a recommendation, not as a file to write automatically
Check if these are covered:
.env, .env.* variants*.pem, *.key, *.p12, *.pfx, *.jks (key files)*.sqlite, *.db (local databases)node_modules/, __pycache__/, .venv/, venv/, env/.idea/, .vscode/ (editor configs that may contain tokens)*.logdist/, build/, .next/, out/coverage/, .nyc_output/.terraform/, *.tfstate, *.tfstate.* (Terraform state — contains secrets)docker-compose.override.yml.DS_Store, Thumbs.dbWhat to scan for:
What to check:
npm audit if available; flag missing package-lock.jsonpip audit if available; flag very outdated pinned versionsAI coding tools produce code that looks clean but hides security flaws roughly 45% of the time.
Cross-Site Scripting (XSS) — AI fails to prevent this 86% of the time:
SQL Injection:
% formatting instead of parameterized queriesMissing Authentication & Authorization:
Insecure Cryptography:
none algorithmPath Traversal:
Insecure Deserialization:
Log Injection:
Dangerous code evaluation:
When AI generates code, roughly 20% of the time it recommends packages that don't exist. Attackers register these names on npm/PyPI with malicious payloads.
What to scan for:
import and require statement checked against package.json / requirements.txtWhat to recommend:
What to scan for:
HttpOnly, Secure, and SameSite flagsAttacks surged 452% between 2023-2024.
What to scan for:
169.254.169.254)What to scan for:
Files to check:
.github/workflows/*.yml, .gitlab-ci.yml, JenkinsfileDockerfile, docker-compose.yml, docker-compose.override.ymlWhat to scan for:
Use a glob/file-listing pass to explore project structure, identify language(s)/framework(s), and locate config files.
Large projects (50+ files): Use a sub-agent or exploration pass to map the structure before diving into specific files.
If a secret-scanning helper is available (e.g. a bundled scan script, gitleaks, or trufflehog), run it to get a fast first pass.
If no automated scanner is available (first-time setup, missing tool): skip this step and proceed directly to Step 3 (Manual Review). The manual patterns below are comprehensive and sufficient for a full audit. Do not block on the tooling.
Save as <project-name>-security-audit.md in the project root (or a reports/ directory if it exists).
Report structure:
# Security Audit Report
Project: <name> | Date: <date> | Files Scanned: N | Issues: N
## Summary
| Severity | Count |
|----------|-------|
| CRITICAL | X |
| HIGH | X |
| MEDIUM | X |
| LOW | X |
## CRITICAL Issues
### [C-001] Hardcoded API Key in src/api/client.py (line 42)
**Type:** Hardcoded Secret
**What's wrong:** Stripe secret key assigned as string literal
**How to fix:** Load from environment variable via os.environ.get("STRIPE_SECRET_KEY")
## .env.example Template
(generated template if .env with real values was found)
## Recommendations
- Check git history for leaked secrets
- Set up pre-commit hooks (truffleHog, gitleaks)
- Rotate any exposed keys — assume compromisedRules:
False positives: If you're unsure whether a finding is a real secret or a safe placeholder, flag it as[FLAGGED - UNCERTAIN]in the report with a brief reason: e.g.,[FLAGGED - UNCERTAIN]: looks like a real key but variable name suggests it's a test fixture. The developer can confirm. False positives are acceptable; false negatives are not.
| Stage | Skill |
|---|---|
| Before audit | Verify secrets use env vars / SecretStr, not hardcoded values |
| This skill | security-audit — find and report issues |
| CRITICAL: secrets found | Move to env vars, rotate immediately, update .gitignore |
| HIGH: SQL injection/XSS | debug-session — trace the input path, fix at the boundary |
| After fixes | Commit the report + fixes with a fix(security): prefix |
pip audit / npm audit manually.gitignore entries exist — a .env file can exist and be tracked if no .gitignore rule covers it. Run git ls-files .env to check.npm audit and pip audit catch known CVEs in dependencies that no amount of code review will find.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.