Skip to content
Back to skills

Security Review

ASecurity

Run a full security review of the user's own codebase and produce a prioritized report with file and line references and concrete fixes. Use when the user asks to review, audit or security-check their app or repo, asks whether it's safe or ready to deploy, or asks "what vulnerabilities does my code have". Covers PHP, Node.js, Python, Java, Go, Rails, .NET, frontend and AI/LLM apps.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 26, 2026
securitypythonrustgojavaphpshellbashsqlnextjsnode

Works with

  • api

Security analysis

A100/100

Pro scans all 12 files and shows the line behind each finding

Scanned October 26, 2026

npx -y skills add parag0508-lang/preflightkit --skill security-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Security Review?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Security Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/parag0508-lang-security-review/badge)](https://www.skillsdirectory.com/skills/parag0508-lang-security-review)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: security-review
description: Run a full security review of the user's own codebase and produce a prioritized report with file and line references and concrete fixes. Use when the user asks to review, audit or security-check their app or repo, asks whether it's safe or ready to deploy, or asks "what vulnerabilities does my code have". Covers PHP, Node.js, Python, Java, Go, Rails, .NET, frontend and AI/LLM apps.
---

# Security review

Review the user's own code for the vulnerabilities attackers actually exploit,
then hand back a report they can act on.

## Ground rules
- **Only review code the user owns or is authorized to work on.** This skill
  reads code and runs local scanners. It never probes, scans or attacks a live
  system the user hasn't confirmed is theirs.
- **Report fixes, not exploits.** Explain why something is exploitable in one
  sentence. Never write working attack payloads.
- **Be honest about confidence.** Mark each finding *confirmed* (you traced the
  data flow) or *likely* (pattern match, not traced). List what you didn't check.

## Steps

1. **Identify the stack.** Look for `composer.json`, `package.json`,
   `requirements.txt`/`pyproject.toml`, `pom.xml`/`build.gradle`, `go.mod`,
   `Gemfile`, `*.csproj`, plus framework markers (Next.js, Django, Laravel,
   Spring Boot). Note which parts are internet-facing.

2. **Run the scanner** bundled with this skill on the project root:
   ```bash
   bash scripts/security-check.sh <project-path>
   ```
   (`scripts/` is inside this skill's directory.) It runs whichever free tools are
   installed (gitleaks, Semgrep, Trivy, native dependency auditors) and greps for
   dangerous patterns. If tools are missing, say which ones and carry on. The
   manual review below is still worth doing.

   Read its results by kind: `[fail]` is blocking (secrets, vulnerable
   dependencies at or above the audit level), `[warn]` is advisory (risky
   patterns and Semgrep hits to verify by hand, many are false positives), and
   `[error]` means a scanner crashed, so that area was **not** checked. List
   every `[error]` under "didn't check", never as "clean". Exit code: 0 nothing
   blocking, 1 blocking, 2 a scanner could not run.

3. **Read the references for this stack**: `references/checklist.md` (OWASP Top
   10), plus the matching file in `references/stacks/` (for example
   `nodejs.md`, `php.md`, or `ai-llm-apps.md` if the app calls a language model).

4. **Review by hand, in this order** (highest impact first):
   1. **Untrusted input → dangerous sinks.** Trace request params, bodies,
      headers, uploaded files and model output into SQL, shell, `eval`,
      deserialization, file paths, templates, outbound HTTP (SSRF) and HTML output.
   2. **Access control.** Every route, API handler and server action: is
      authentication checked? Does the code check the user **owns** the object
      it's asked for (IDOR)? Are admin actions verified on the server?
   3. **Secrets.** Hardcoded keys, committed `.env` files, secrets in frontend
      bundles (`NEXT_PUBLIC_`, `VITE_`), secrets in logs.
   4. **Authentication and sessions.** Password hashing, JWT verification, cookie
      flags, rate limiting on login and reset.
   5. **Configuration.** Debug mode, CORS, security headers, exposed admin or
      actuator endpoints, permissive file upload handling.
   6. **Dependencies and runtime.** Outdated or end-of-life runtime versions,
      flagged packages. Anything in CISA's Known Exploited Vulnerabilities
      catalog is top priority.

5. **Write the report** in the format below.

## Report format

````markdown
# Security review: <project> (<date>)

**Summary:** <2–3 sentences: overall state, the single most urgent fix>

| # | Severity | Issue | Location | Confidence |
|---|----------|-------|----------|------------|
| 1 | Critical | SQL injection in user search | src/users.php:42 | Confirmed |

## 1. <Issue title>  (Critical)
**Where:** `path/to/file.ext:line`
**Why it matters:** <one sentence on impact, no payloads>
**Fix:**
```<lang>
<corrected code>
```

## What I checked / didn't check
- Scanners run: …   Missing tools: …
- Not reviewed: … (e.g. infrastructure, the live deployment)
````

**Severity:** *Critical*: remote code execution, auth bypass, or a mass data
leak reachable from the internet. *High*: an exploitable injection or IDOR, or
exposed secrets. *Medium*: needs extra conditions, or is a defense-in-depth gap
on a sensitive path. *Low*: hardening and hygiene.

Order findings by severity, then by whether they're internet-facing. Offer to fix
the top issues directly, one at a time, and show each diff.

## Fixing findings
- Fix the cause in code. After each fix, re-run the scanner and confirm the
  finding is gone.
- A pattern hit you've traced and confirmed safe is a false positive: say so in
  the report. **Only** add a suppression (`preflightkit-ignore`, `nosemgrep`,
  `gitleaks:allow`, `.preflightkitignore`, `.trivyignore`) when the user agrees,
  and write the reason in the comment, e.g.
  `// preflightkit-ignore: slug is validated against /^[a-z0-9-]+$/ above`.
- A leaked secret is fixed by **rotating** it, not by deleting the line: it's
  still in git history. Tell the user to revoke it with the provider.

Files in this skill

  • SKILL.md5.2 KB
  • references/checklist.md5.2 KB
  • references/stacks/ai-llm-apps.md5.4 KB
  • references/stacks/dotnet.md1.5 KB
  • references/stacks/frontend-react-nextjs.md2.1 KB
  • references/stacks/go.md1.6 KB
  • references/stacks/java-spring.md2 KB
  • references/stacks/nodejs.md2.8 KB
  • references/stacks/php.md5 KB
  • references/stacks/python.md2.5 KB
  • references/stacks/ruby-rails.md1.3 KB
  • scripts/security-check.sh28.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.