takopi-review
Config-driven multi-review orchestration plugin for Takopi.
takopi-review now has a hard-cutover architecture:
- package-owned request parser
- package-owned reviewer router
- repo-owned specialist reviewers from
takopi.toml - package-owned lead reviewer that dedupes and triages findings
The package no longer ships built-in specialist lanes such as security, React, or spec review. Repos define their own reviewer set, enable or disable reviewers in config, and keep reviewer execution prompts in Markdown files.
how it works
Each /review run goes through four stages:
- parse the review target from the request text
- build a deterministic change profile from the diff or snippet
- route the change to the best enabled reviewers from config
- run a final lead pass that validates, deduplicates, and ranks the reviewer findings
The router and lead prompts are package-owned and codex-only. Only the middle specialist reviewer prompts are repo-owned.
requirements
- python 3.14+
- takopi installed
codexavailable in your Takopi setupghinstalled if you want/review pr ...
install
uv tool install -U takopi --with takopi-review
or install into the same environment as Takopi:
pip install -U takopi-review
enable it:
[plugins]
enabled = ["takopi-review"]
commands
Review a freeform request, optionally by replying to a pasted snippet or message:
/review python auth middleware in this pasted snippet
/review typescript react component for accessibility --focus ui
Review the current workspace diff:
/review the working tree diff
/review the current diff --focus security --focus tests
Review a pull request, including one from another repo:
/review this pr 123
/review this pr 123 in this repo richardliang/takopi-review --focus performance
/review https://github.com/acme/repo/pull/123
Review a commit:
/review commit abc1234
config
Each target repo owns its own takopi.toml. This package repo no longer ships an active root config.
This repo keeps example review assets under examples/:
security-best-practicestypecheckercorrectness-simplicitytestsboundary-regressionsspec-reviewercode-review-excellencefrontend-browser
For the React lane, point the reviewer directly at your installed Vercel React skill instead of copying a vendored react-vercel.md. In this workspace that skill lives at SKILL.md.
Example config for a repo that vendors the example prompts into .takopi/review/reviewers/:
[plugins.review]
timeout_s = 1200
max_parallel_reviews = 8
require_repo = true
post_github_comments = true
report_dir = ".takopi/review"
[[plugins.review.reviewers]]
id = "security-best-practices"
enabled = true
summary = "Review concrete authorization, trust-boundary, secret handling, signature validation, and data-exposure regressions across services, clients, contracts, and provider integrations."
prompt_file = ".takopi/review/reviewers/security-best-practices.md"
[[plugins.review.reviewers]]
id = "react-vercel"
enabled = true
summary = "Review React, Vite, and Next-style frontend changes for bundle shape, hydration, client-server boundaries, stale data flows, rendering regressions, and performance cliffs."
prompt_file = "/absolute/path/to/vercel-react-best-practices/SKILL.md"
[[plugins.review.reviewers]]
id = "frontend-browser"
enabled = true
summary = "Read README, start the relevant local app, and use Chrome MCP to click through the changed UI flow and catch grounded regressions."
requires_repo = true
prompt_file = ".takopi/review/reviewers/frontend-browser.md"
Rules:
summaryis the router contractprompt_fileis the execution contract- editing only a reviewer prompt changes execution behavior, not routing behavior
- editing
summarychanges how the router may select that reviewer requires_repo = trueskips that reviewer when no local repo context exists
Prompt files resolve relative to takopi.toml when Takopi provides a config path, otherwise relative to the workspace root.
reviewer prompt files
The example prompt files in examples/review/reviewers/ follow a consistent skill-style structure:
- short frontmatter metadata
GoalWorking style- reviewer-specific
Checks - optional repo-specific emphasis such as
ZKP2P emphasis Do not report
That structure keeps the router metadata short in takopi.toml while making the execution prompt easy to update without changing the package.
Copy the prompts you want into your own repo and point prompt_file at them, or point prompt_file at any other Markdown file such as an installed skill SKILL.md.
Repos can also commit extra review context under .takopi/review/reference/*.md. Those files are bundled alongside AGENTS.md and README.md, so specialist reviewers can use repo-specific guidance without hardcoding it into the package. This repo's example reference file now lives under examples/review/reference/.
Example browser reviewer prompt:
Read `README.md` first to determine how to run the app locally for this repo.
Start the relevant local dev server for the changed feature.
Use Chrome MCP to open the local app and click through only the UI flows relevant to this review target.
Base your exploration on:
- the changed files
- the diff summary
- the PR or request description
Report only grounded regressions from the changed feature. Ignore generic polish comments.
outputs
Review artifacts are written under .takopi/review/ by default:
.takopi/review/
latest.json
<run-id>/
bundle.json
report.json
report.md
raw/
<reviewer-id>.txt
takopi-review-lead.txt
The report includes:
- router review kind and route summary
- selected reviewers
- skipped reviewers with reasons
- consolidated findings
- agreement matrix across selected reviewers
- recommended fix order
- testing gaps
- reviewer errors
finding schema
All reviewer output is normalized into this shape before consolidation:
{
"reviewer": "security",
"title": "Missing authorization check",
"priority": 1,
"confidence": 0.84,
"file": "src/example.py",
"start_line": 42,
"end_line": 45,
"summary": "Route allows any caller to trigger destructive actions.",
"suggested_fix": "Check allowed_user_ids before dispatch.",
"reviewed_code": "delete route still succeeds for unauthorized users.",
"agent_prompt": "Update src/example.py so unauthorized users are rejected before dispatch and add regression coverage for the denied path."
}
development
Install the locked dev environment:
uv sync --frozen --group dev
Run the same checks as CI:
uv run --no-sync ruff check
uv run --no-sync pytest -q
Build the package locally:
uv build
Metadata
Release files for takopi-review 0.1.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| takopi_review-0.1.9.tar.gz | 30.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| takopi_review-0.1.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.6 kB
Release files / takopi_review-0.1.9.tar.gz
| Download URL | takopi_review-0.1.9.tar.gz |
|---|---|
| Size | 30.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e69a80a3cc92db80452ed950c6a608401cfe5642b20221bc887fc47d73379874
|
|
BLAKE2b-256 checksum How to use checksums |
24c8b9e748725d56c6c3881342578e4fd5247aa6dc7cdd1ed5be0fff206eeb7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 22, 2026.
Transparency logRelease files / takopi_review-0.1.9-py3-none-any.whl
| Download URL | takopi_review-0.1.9-py3-none-any.whl |
|---|---|
| Size | 32.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f68c6c4cf2baaada2832198ea535662d048b3df84eb9c3749bcc572fcf10f5d
|
|
BLAKE2b-256 checksum How to use checksums |
508f7851cd511c74758a137180d60bf47c0b19548fb1270174aa5ef7dfc73e29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 22, 2026.
Transparency log