Skip to content
Agentmart
Submit a tool

security-review

Security-focused review of an open-source pull request or diff.

Skill by Priyank Patel

IndexedApache-2.0★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/priyank766-security-review

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Security-focused review of an open-source pull request or diff. Use when the change touches authentication or authorization, cryptography, token or session handling, input parsing, deserialization, subprocess or shell invocation, file path construction, uploads and archive extraction, outbound HTTP built from user input (SSRF), permission and ACL logic, secrets and credential handling, or any code path where untrusted input reaches a sink. Also use when a reviewer explicitly asks for a security pass on a diff. Applies the suite's 10-point filter at a lowered floor of 7.5 and routes exploitable findings through private disclosure instead of a public comment. Language- and ecosystem-agnostic. Do NOT use for offensive security work, writing exploits or proof-of-concept payloads, penetration testing live infrastructure, or license and supply-chain auditing — that belongs to dependency-review.

Use cases: testing, devops, security, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/security-review

What's inside

Skill name
security-review
Description
Security-focused review of an open-source pull request or diff. Use when the change touches authentication or authorization, cryptography, token or session handling, input parsing, deserialization, subprocess or shell invocation, file path construction, uploads and archive extraction, outbound HTTP built from user input (SSRF), permission and ACL logic, secrets and credential handling, or any code path where untrusted input reaches a sink. Also use when a reviewer explicitly asks for a security pass on a diff. Applies the suite's 10-point filter at a lowered floor of 7.5 and routes exploitable findings through private disclosure instead of a public comment. Language- and ecosystem-agnostic. Do NOT use for offensive security work, writing exploits or proof-of-concept payloads, penetration testing live infrastructure, or license and supply-chain auditing — that belongs to dependency-review.
License
Apache-2.0
Metadata
suite: opensource-review-suite · author: Priyank Patel · domain: security · version: 1.0.0 · severity_floor: 7.5
Instructions
458 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (4)

  • SKILL.md
  • DETECTION-PLAYBOOK.md · references/
  • QUALITY-FILTER.md · references/
  • REVIEW-VOICE.md · references/

SKILL.md (first lines)

# Security Review

A specialised lens on [`pr-review`](https://github.com/priyank766/OpenSource-SKILL/blob/main/skills/pr-review/SKILL.md): the same diff, read only for the
question *what can an attacker make this code do?*

**Read first:** [`DETECTION-PLAYBOOK.md`](references/DETECTION-PLAYBOOK.md) ·
[`QUALITY-FILTER.md`](references/QUALITY-FILTER.md) ·
[`REVIEW-VOICE.md`](references/REVIEW-VOICE.md)

> **Where the time goes.** Finding the flaw is the review. The playbook above is the
> general flaw-hunting procedure; this file is the domain-specific lens on top of it.
> Scoring and writing the comment are the last ten minutes, not the work.

**Severity floor: 7.5** — lower than the suite default of 8.0. The cost of a miss is
asymmetric. A false negative ships a CVE that outlives the release and lands on the
maintainer as an unplanned patch cycle. A false positive costs the author five minutes to
read and dismiss. When the two errors are that unequally priced, you lower the floor.

The floor does not license volume. Everything under 9.0 is still batched into one comment.

---

## Why this exists

Security findings are where generic AI review is at its worst. It flags `eval` in a comment
string, misses the `os.path.join` two lines below that accepts a user-supplied filename, and
then posts both with identical confidence. Maintainers learn to skim security feedback,
which is exactly the feedback they cannot afford to skim.

This skill trades breadth for a traceable argument: source → sink → why the sanitiser in
between does not hold.

### What each role gets out of it

| Role | Time this gives back |
| :--- | :--- |
| **Maintainer** | The security pass you keep deferring, done in one read. Each finding arrives with the taint path already traced, so you spend your time on the fix, not on reproducing the reviewer's reasoning. Non-exploitable hardening arrives as one batched comment instead of eleven. |
| **Contributor** | A pre-submit check on the classes maintainers actually reject for — shell interpolation, path joins, deserialization — so review is one round instead of three. |
| **Project owner** | Exploitable findings never land in a public thread by accident. The skill checks for `SECURITY.md` and private reporting *before* drafting, so disclosure policy is enforced by procedure rather than by memory. |

---

## Procedure

```mermaid
flowchart TD
    A[Start] --> B[1. Scope the diff]
    B --> C[2. Establish the trust boundary]
    C --> D[3. Check the disclosure policy]
    D --> E[4. Secret scan: diff and history]
    E --> F[5. Sink sweep + taint trace]
    F --> G[6. Vulnerability class checklist]
    G --> H[7. Read existing comments]
    H --> I[8. Score against the 7.5 floor]
    I -->|"score below 7.5"| J[Discard silently]
    I -->|"score 7.5 to 9.0"| K[Batch into one hardening comment]
    I -->|"score above 9.0"| L{Exploitable in a release?}
    L -->|"yes"| M[Private disclosure channel]
    L -->|"no, PR branch only"| N[Inline comment, minimal detail]
    M --> O[9. Approval, then send]
    N --> O
    K --> O
```

### 1. Scope the diff

```bash
gh pr checkout <PR>
git diff upstream/main...HEAD                      # three dots, always
git diff --stat upstream/main...HEAD               # sets the comment budget
git diff --name-only upstream/main...HEAD | grep -Ei \
  'auth|login|session|token|crypt|password|perm|acl|upload|parse|exec|shell|path|url'
```

Three dots. Two dots pulls in everything merged to `main` since the branch point, and you
will spend an hour auditing code the contributor never touched.

### 2. Establish the trust boundary

Before reading a single line for bugs, write down in one sentence: *where does data from
outside this process enter the changed code?* HTTP handler, CLI arg, env var, config file,
message queue, webhook, uploaded archive, database row written by another tenant. If you
cannot name the entry point, you cannot classify the finding, and an unclassified security
comment is noise.

### 3. Check the disclosure policy — before you write anything

```bash
ls SECURITY.md .github/SECURITY.md docs/SECURITY.md 2>/dev/null
gh api /repos/<OWNER>/<REPO>/private-vulnerability-reporting --jq '.enabled'
gh api /repos/<OWNER>/<REPO> --jq '.security_and_analysis'   # null unless you have admin
```

`.enabled == true` from `/private-vulnerability-reporting` means private vulnerability
reporting is on and you have a channel. Note that a `200` from `/security-advisories` proves
nothing — that endpoint answers for any repo you can read, empty list included. `false` (or
an error) plus no `SECURITY.md` means you must ask the maintainer where to send it — not
post it. See
[Responsible disclosure](#responsible-disclosure) below; that section overrides everything
else in this file.

### 4. Secret scan — diff and history

A secret removed in a later commit is still in the objects and still compromised.

```bash
# added lines only
git diff upstream/main...HEAD -U0 | grep -E '^\+' | grep -Ei \
  '(api[_-]?key|secret|passwd|password|token|private[_-]key|BEGIN [A-Z ]*PRIVATE KEY|AKIA[0-9A-Z]{16}|gh[pousr]_[A-Za-z0-9]{36}|xox[baprs]-)'

# was it ever committed, even if deleted since?
git log -p -S 'AKIA' --oneline -- .
git log -p -S 'BEGIN RSA PRIVATE KEY' --oneline -- .

# fixtures and .env are the usual leak sites
git diff --name-only upstream/main...HEAD | grep -Ei '\.env|secret|credential|\.pem|\.p12'
```

If a live credential is in history, that is a disclosure-channel finding and a rotation

From priyank766/OpenSource-SKILL, Apache-2.0.

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
Aug 6, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.0.0
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Priyank Patel

Cite this page

security-review skill. Agent Mart. https://agentmart.dev/skills/priyank766-security-review (last updated 2026-10-24)