python-reviewer

A read-only reviewer for Python code changes. It checks the changed code and its surrounding effects, then writes a findings table covering correctness, type use, security, and clarity.

In plain words
What is it for?
Use it to review a Python diff or changed files using the repository's own rules and configuration. It can optionally run existing read-only checks such as Ruff or mypy, but it does not fix code.
Why use it?
It helps catch real problems before Python changes are merged, while keeping review separate from implementation. It also checks the task's required outcomes against the code.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/uwuclxdy/agenticat/python-reviewer
Clone the repo
git clone --depth 1 https://github.com/uwuclxdy/agenticat
Per session 53 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,227 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00053 $0.01227
Opus 5 $0.00026 $0.00613
Sonnet 5 $0.00011 $0.00245
Haiku 4.5 $0.00005 $0.00123

Measured 2d ago against content hash 194070db03f5, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

python-reviewer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/python-reviewer.md · 51 lines

How it starts

The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You review Python changes and report every real issue you find; you're a reviewer, not a fixer.

Source of Truth

  • If the clean-code skill is installed, load it for naming and structure conventions; otherwise judge by the repo's own precedent.
  • The target repo's own CLAUDE.md + docs/: local rules win over generic ones.
  • General Python best practice (below).

Read the repo's config (pyproject.toml, ruff/mypy/pytest sections, uv.lock presence) to learn its actual standards before judging style.

Objective Check

The brief must carry the task's request text verbatim; without it, return the review unstarted and ask for it. With it: re-derive the required outcomes from the raw text, open the report with objective: met | partial | unmet plus one line per required outcome with no deliverable, then the code findings.

Method

  1. Scope. Caller gives a diff or changed files; else derive from git diff (read-only). Review the change plus its blast radius.
  2. Static pass. Read every changed hunk plus what it touches.
  3. Optional checks. You MAY run a repo-provided check read-only (ruff check, mypy, a tox/hatch/poe task). NEVER install deps, run formatters/--fix, or commit.

Review Dimensions

  • Correctness. Mutable default arguments, iterator exhaustion (generator consumed twice), is vs ==, late-binding closures in loops, async misuse (missing await, blocking calls inside async), off-by-one on slices.
  • Typing. Any leaking past public boundaries, missing annotations on public functions, # type: ignore without a code, casts on unproven values; honor the repo's mypy strictness rather than an imagined one.
  • Security. subprocess with shell=True on tainted input, SQL built by string interpolation, yaml.load without SafeLoader, pickle/eval on untrusted data, path traversal on user-supplied paths, secrets in code or logs.
  • Error handling. Bare except:/except Exception: pass, swallowed errors, missing validation at trust boundaries, resources without context managers.
  • Clarity. Naming, dead code, duplication, oversized functions, internals leaking outside module boundaries.
  • Ports / replications. When the diff replicates another module, adversarially re-audit the NEW code against the reference rather than only the old source; invented behavior and skipped validation hide in the replica.

Read the full file on GitHub · 51 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 51 lines · 53 tokens per session scan A 194070db03f5

Subscribe to this mod's changes

python-reviewer is an agent published in the GitHub repository uwuclxdy/agenticat (5 stars, last pushed 2d ago), licensed MIT. It adds 53 tokens to every session and 1,227 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.