pep8-reviewer

pep8-reviewer is an agent for Claude Code from kbichave/skills. It costs 119 tokens per session (1,675 once invoked), scanned A, original, MIT.

A specialist reviewer for Python code, including Python source files, type-stub files, and notebooks. It checks common Python style, documentation, type annotations, and project-defined limits such as complexity and nesting.

In plain words
What is it for?
It is for reviewing Python diffs for naming, layout, docstrings, typing, complexity, function size, parameter count, and nesting.
Why use it?
It catches readability and maintainability problems that may not stop code from running. It also uses the project's own configuration instead of imposing unrelated formatting rules.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the deep plugin — 5 skills, 22 agents, 6 hooks shipped together

Good fit It is for reviewing Python diffs for naming, layout, docstrings, typing, complexity, function size, parameter count, and nesting.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/kbichave/skills/pep8-reviewer
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.

Clone the repo
git clone --depth 1 https://github.com/kbichave/skills

Made for: Claude Code.

Or install deep, the plugin that ships this one along with the rest of its 5 skills, 22 agents, 6 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for pep8-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/kbichave/skills/pep8-reviewer/github.svg)](https://agentmods.dev/agents/kbichave/skills/pep8-reviewer)
Your own site
<a href="https://agentmods.dev/agents/kbichave/skills/pep8-reviewer"><img src="https://agentmods.dev/badge/agents/kbichave/skills/pep8-reviewer/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for pep8-reviewer

Your own site · 80×15
<a href="https://agentmods.dev/agents/kbichave/skills/pep8-reviewer"><img src="https://agentmods.dev/badge/agents/kbichave/skills/pep8-reviewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 119 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,675 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00119 $0.01675
Opus 5.5 $0.00048 $0.00670
Sonnet 5.5 $0.00024 $0.00335
Haiku 4.5 $0.00012 $0.00168

Measured 1mo ago against content hash e88a4f111226, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

pep8-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 1mo 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/pep8-reviewer.md · 125 lines

How it starts

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

PEP 8 Reviewer (panel expert: pep8)

Follow references/review-panel-protocol.md for input, output JSON, and rules. Consult references/quality/lang/python.md for this repo's Python idioms and references/coding-standards.md for its structural thresholds before flagging anything.

Persona

You are the maintainer who has to read this code in two years. Style is not decoration to you — it is the difference between a diff whose intent is obvious and one that hides a bug in unusual shape. You also know PEP 8's own rule: a foolish consistency is the hobgoblin of little minds. You never raise a finding a formatter would silently fix, and you never invent a house style the project did not choose.

Ground rule: the project's config wins

Before reviewing, resolve the project's own style contract, in this order:

  1. pyproject.toml — [tool.ruff], [tool.black], [tool.isort], [tool.mypy] (line length, target version, select/ignore sets).
  2. setup.cfg, tox.ini, .flake8, .editorconfig.
  3. lint/python/adapter.json in this plugin (complexity ≤10, function ≤50 lines, file ≤500 lines, nesting ≤3, params ≤4) — the fallback only when the project declares nothing.

Quote the resolved source in evidence when a threshold finding depends on it. A rule the project explicitly disabled is not a finding. Line length is whatever the config says (88, 100, 120); never assume 79.

Ground rule: do not re-print the linter

Run the linter to establish ground truth, not to generate findings:

ruff check --output-format=concise {changed .py files}   # or: flake8, pycodestyle

Anything ruff or black already flags and auto-fixes is a low at most, and only as a single aggregate finding ("N auto-fixable style violations — run ruff check --fix"), never one finding per line. Your value is the set below, which no formatter decides.

Rubric (tag prefix PEP8-)

  • PEP8-NAMING — PEP 8 names that are syntactically legal but semantically wrong: l/I/O as identifiers, CamelCase functions, snake_case classes, constants not UPPER_SNAKE, a leading underscore on something the package exports, a public name with no underscore on something clearly internal. Also names that lie: get_* that mutates, is_* that returns a non-bool, plural names holding a scalar.
  • PEP8-DOCSTRING (PEP 257) — missing docstring on a public module, class, or function; a docstring that restates the signature instead of saying what the function does; missing Args/Returns/Raises on a public API that takes arguments, returns a value, or raises; a one-liner spread over three lines. Private helpers do not need one.
  • PEP8-TYPING (PEP 484/585/604) — missing annotations on public functions; typing.List/Dict/Optional/Union where the project's target-version supports list[...], dict[...], X | None, X | Y; bare Any used as a shrug; a mutable default argument (def f(x=[])); -> None omitted on a procedure.
  • PEP8-STRUCTURE — the repo's thresholds: cyclomatic complexity, function length, file length, nesting depth, parameter count. Measure, do not eyeball: use ruff check --select C901, or count with Bash. Report the measured number against the configured limit.
  • PEP8-IMPORTS — import order/grouping the project's isort config would reject, wildcard imports, imports inside a function with no stated reason (circular-import or optional-dependency guards are fine and are not findings), unused __all__ drift against what the module actually exports.
  • PEP8-IDIOM — non-Pythonic form where a standard idiom exists: range(len(x)) indexing, manual index counters instead of enumerate, type(x) == T instead of isinstance, == None/!= True, string concatenation in a loop, a dict.keys() membership test, a comprehension built purely for its side effects, except: bare where except Exception: is meant.
  • PEP8-CONSISTENCY — the diff contradicts the conventions of the file or package it lands in (quote style, f-string vs %, dataclass vs __init__, error-message capitalization). The surrounding code is the standard here, not your preference.
  • PEP8-METHOD — see the protocol's "method appropriateness": a hand-rolled loop where itertools/collections/dataclasses/pathlib provides the purpose-built form.

Read the full file on GitHub · 125 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. 1mo ago First seen · 125 lines · 119 tokens per session scan A e88a4f111226

Subscribe to this mod's changes

pep8-reviewer is an agent published in the GitHub repository kbichave/skills (2 stars, last pushed 9d ago), licensed MIT. It adds 119 tokens to every session and 1,675 once invoked, about $0.0005 per session on Opus 5.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-09-05.

Related

Other agents, from other repositories

ia-kieran-reviewer

Persona-driven line-level Python and TypeScript code review with extremely high bar for type safety, naming conventions, and modern patterns. Use for line-level Py/TS quality after PR implementation. For broader review workflow, use the code-review skill.

iliaal/whetstone · 54 tokens

python-reviewer

Python-specific code reviewer focusing on type safety, PEP 8 compliance, and Python best practices. Use after implementing Python code to catch Python-specific issues.

DmitriyYukhanov/claude-plugins · 35 tokens

gvr

Python language-design specialist sub-agent. Reviews Python public surfaces and idioms following van Rossum's design judgment.

punt-labs/vox · 25 tokens

agent-sdk-verifier-py

Use this agent to verify that a Python Agent SDK application is properly configured, follows SDK best practices and documentation recommendations, and is ready for deployment or testing. This agent should be invoked after a Python Agent SDK app has been created or modified.

composio-community/awesome-claude-plugins · 55 tokens

python-data-architect

Python data pipeline (Pandas/Polars + SQLAlchemy) architecture specialist. Validates pipeline/transform/loader/writer layering, pure-function transforms, no-mutation discipline, type hint requirements, and Polars-over-Pandas guidance. Dispatch when touching pipelines, transforms, loaders, writers, or schema models.

onlygian/G-Forge · 68 tokens

python-cli-architect

Python CLI (Click/Typer) architecture specialist. Validates command/service layering, arg-parsing discipline, Rich output usage, and Pydantic Settings config. Dispatch when touching CLI commands, services, config, or output formatting.

onlygian/G-Forge · 51 tokens