Skip to main content

pythinker-review

Agent-first code review, security review, and root-cause debugging engine for Pythinker. Standalone CLI (pythinker-review, pythinker-secscan, pythinker-security-scan, pythinker-debug) and integration into pythinker-code as the review / secscan / security-scan / debug subcommands and the code-reviewer / security-reviewer / debugger subagent roles.

CLI

# Branch-vs-main code review
pythinker-review diff --base origin/main --format pretty --extra-instructions "focus on API regressions" --max-findings 5

# Branch-vs-main code + security in one pass
pythinker-review diff --with-security --fail-on high

# Read-only Reviewflow-style deslopify review
pythinker-review diff --mode deslopify --fail-on none

# Inspect saved diff findings by priority
pythinker-review next
pythinker-review show-finding <finding-id>

# Stateful pure-Python Reviewflow workflow
pythinker-review init
pythinker-review map
pythinker-review review --limit 3 --jobs 3
pythinker-review report --status open
pythinker-review show --finding <finding-id>
pythinker-review triage --finding <finding-id> --status false-positive
pythinker-review fix --finding <finding-id>          # explicit mutating patch attempt
pythinker-review open-pr --patch <patchAttemptId> --dry-run
pythinker-review revalidate --finding <finding-id>

# Code-reviewr-derived read-only PR assistant artifacts
pythinker-review describe --base origin/main --format json --labels-file labels.yaml
pythinker-review improve --base origin/main --format pretty --best-practices-file best_practices.md --min-score 5   # alias: suggest
pythinker-review ask "what changed and what should I test?" --base origin/main
pythinker-review ask-line "why is this safe?" --file src/app.py --start-line 42 --base origin/main
pythinker-review labels --base origin/main --labels-file labels.yaml
pythinker-review changelog --base origin/main --pr-url https://example.test/pr/1 --add-pr-link
pythinker-review docs --base origin/main --docs-style "Google-style docstring" --symbol ExampleConfig
pythinker-review compliance --base origin/main --ticket-file issue.md
pythinker-review help-docs "how do I run review?" --docs-path docs
pythinker-review similar-issues --issue-file issue.md --issues-dir issues       # dependency-free lexical search by default
pythinker-review similar-issues --issue-file issue.md --issues-dir issues --backend chroma                  # in-memory Chroma search when installed
pythinker-review similar-issues --issue-file issue.md --issues-dir issues --backend chroma --persist-index  # explicit local Chroma index
pythinker-review tools

# Security-only scan, SARIF for CI
pythinker-secscan diff --format sarif --fail-on critical

# Repo-wide Pythinker Security Scan pipeline (pure Python runtime)
pythinker-security-scan init --root .
pythinker-security-scan scan --json
pythinker-security-scan process --limit 10
pythinker-security-scan report --write

# Root-cause debugger over a captured failure log
pythinker-debug failure failure.log --command "pytest tests/test_app.py::test_case"

Configuration

pythinker-review, pythinker-secscan, and pythinker-security-scan accept explicit/env model configuration. When invoked via pythinker review / pythinker secscan / pythinker security-scan / pythinker debug, the active Pythinker model is wired in automatically through a ReviewLLM adapter.

Persistence

Each diff --save run writes:

.pythinker-review/
├── index.json
└── runs/
    └── 20260520120000-a1b2c3d4/
        ├── meta.json
        ├── findings.jsonl
        └── diff.patch

The stateful Reviewflow workflow writes .pythinker-review-flow/ by default:

.pythinker-review-flow/
  config.json
  project.json
  features/*.json
  findings/*.json
  patches/*.json
  reports/*.md
  runs/*.json
  locks/*.json

.gitignore is auto-patched idempotently on first diff save if a .gitignore file already exists.

Blackbox parity hardening

Phase 1 now ports the highest-value behavior from the mounted blackbox repos:

  • Reviewflow-style evidence validation rejects findings outside the reviewed chunk/feature, unsafe paths, stale line ranges, or non-matching evidence snippets.
  • Reviewflow pure-Python stateful commands cover init, map, status, review, ci, report, show --finding, next, triage, revalidate, fix, open-pr, doctor, and clean-locks.
  • Code-review prompt parity covers partial-diff caveats, concrete trigger scenarios, test analysis, suggested regression tests, and minimum fix scope.
  • Code-reviewr PR assistant parity adds read-only describe, improve/suggest, ask, labels, changelog, and docs artifact commands with strict JSON schemas.
  • Pythinker Security Scan deterministic signals include CWE/severity hints, expanded vulnerability anchors, technology detection, and batch-scoped security advisor context.
  • Python-native Pythinker Security Scan repo-wide commands (pythinker-security-scan / pythinker security-scan) port the scan/process/revalidate/triage/report/export/status workflow without Node or pnpm runtime glue.
  • Fenced/prose-wrapped JSON is cleaned safely, while truly malformed output remains fail-closed.

Phase 1

See docs/superpowers/specs/2026-05-20-pythinker-review-foundation-design.md for the full spec. Future phases deepen mapper parity, external matcher plugin marketplaces, and PR-provider comment publishing integrations.

Metadata

Release files for pythinker-review 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pythinker-review 0.1.0
File Size Uploaded Provenance Actions
pythinker_review-0.1.0.tar.gz 172.3 kB Without provenance Details for pythinker_review-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pythinker-review 0.1.0
File Interpreter ABI Platform Actions
pythinker_review-0.1.0-py3-none-any.whl Python 3 none any Details for pythinker_review-0.1.0-py3-none-any.whl

Total release size: 383.7 kB

Release files / pythinker_review-0.1.0.tar.gz

Download URL pythinker_review-0.1.0.tar.gz
Size 172.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9d6ffb17a1167205ef3eaa54d5635c8bb4c5cebfa24d7ca4f8d24806863dcaeb
BLAKE2b-256 checksum
How to use checksums
46dbcf04f936066c793ad590b850cbbd21698ef1b080ddaba5063b12760437e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / pythinker_review-0.1.0-py3-none-any.whl

Download URL pythinker_review-0.1.0-py3-none-any.whl
Size 211.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca7626f1c4123602e57ce1132540b2731475dd742cf01994754e9685e9f6b3dc
BLAKE2b-256 checksum
How to use checksums
b0571f7fe0fd819d44e4353f2779601405095e5ce2122f6eb238366d98e76345
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Security for pythinker-review 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page