Skip to content
Agentmart
Submit a tool

pyvr-scan

Find every Python environment, lockfile, Dockerfile and code path carrying a vulnerable PyPI package (first advisory - Pillow < 13.0.0) - system Pythons…

Skill by luivc1

IndexedMIT
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/luivc1-pyvr-scan

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

Find every Python environment, lockfile, Dockerfile and code path carrying a vulnerable PyPI package (first advisory - Pillow < 13.0.0) - system Pythons, python.org/Homebrew/pyenv/conda/uv installs, all virtualenvs, requirements, pyproject, uv/poetry/pdm/Pipfile/pylock locks, environment.yml, Dockerfiles, and code that imports the package. Flags Pythons too old for the fix. Use for "scan for the Pillow flaw", "which venvs have old Pillow", "check our repos", "escanea mis proyectos de Python".

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/pyvr-scan

What's inside

Skill name
pyvr-scan
Description
Find every Python environment, lockfile, Dockerfile and code path carrying a vulnerable PyPI package (first advisory - Pillow < 13.0.0) - system Pythons, python.org/Homebrew/pyenv/conda/uv installs, all virtualenvs, requirements, pyproject, uv/poetry/pdm/Pipfile/pylock locks, environment.yml, Dockerfiles, and code that imports the package. Flags Pythons too old for the fix. Use for "scan for the Pillow flaw", "which venvs have old Pillow", "check our repos", "escanea mis proyectos de Python".
License
MIT
Instructions
40 lines in SKILL.md · view on GitHub

Agent Skills spec issues

  • files: referenced but missing: scripts/pyvuln-scan.py

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Scan (read-only)

Follow **pyvr-navigator** rules. The scanner is `scripts/pyvuln-scan.py` (Python 3.8+,
stdlib only, Linux/macOS/Windows). Its probe reads package metadata inside each
interpreter and never imports third-party packages.

## Commands

| Goal | Command |
|---|---|
| This machine | `python3 "$PYVR/scripts/pyvuln-scan.py" --local -o reports/python` |
| + project venvs | add `--venvs ~/code` (finds every `pyvenv.cfg` and conda env) |
| One interpreter / venv | `--python /path/to/venv` (repeatable) |
| Repos | `--project ~/code` (requirements*.txt/*.in, pyproject incl. poetry and requires-python, uv.lock, poetry.lock, pdm.lock, pylock.toml, Pipfile.lock, environment.yml, Dockerfiles, and .py files importing the package) |
| One advisory | `--advisory advisories/pillow-2026-10.env` (default: all) |
| Every other package too | add `--osv` (sends package names and versions, nothing else, to api.osv.dev; ask first) |

Windows: `py -3 pyvuln-scan.py --local ...` in PowerShell. Outputs: `.html`, `.csv`,
`-fix-plan.md`. Exit: 0 clean, 1 warnings, 2 affected or blocked, 3 usage error.

## Read the results

| Status | Meaning | Next |
|---|---|---|
| AFFECTED | A vulnerable version is installed or pinned, and a fix exists for that Python | pyvr-fix |
| BLOCKED | The fix needs a newer Python (Pillow 13.0.0 needs >= 3.11): a 3.10 env, `requires-python` or `FROM python:3.10` | pyvr-fix > BLOCKED |
| WARN | A range allows vulnerable versions (resolution depends on the lock), an extra pulls the package in without a pin (`httpx[brotli]`, `urllib3[brotli]`, `aiohttp[speedups]`), an image's Python is too old, OSV issue with no fix, or pip < 26.2.2 (upgrade it safely first) | pyvr-fix |
| CHECK | Could not parse or probe something | Confirm manually |
| OK | Fixed version installed or required | Verify later |
| INFO | Code imports the package; hints show risky calls (thumbnail/draft, EPS, TIFF to memory) | Prioritize these apps |

Risk lines under an environment: Ghostscript present (EPS path), olefile present (FPX
path); for Brotli, the HTTP clients in that environment that decode it automatically
(urllib3/requests, aiohttp, httpx, Scrapy). Packages installed by apt/dnf are matched to
their OS package: OK when its changelog lists the advisory's `BACKPORT_CVES`, otherwise
AFFECTED with the OS update command (not pip).

## Present

Group by machine and app. P1 = AFFECTED/BLOCKED environments that process untrusted
images (INFO hints, uploads, risk lines), then other AFFECTED, then BLOCKED plans,
then WARN. Hand off to **pyvr-fix** with the generated `-fix-plan.md`.

From luivc1/python-vuln-responder, MIT.

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Oct 23, 2026 (6 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from luivc1

Cite this page

pyvr-scan skill. Agent Mart. https://agentmart.dev/skills/luivc1-pyvr-scan (last updated 2026-10-24)