The local, pre-PR code review that hits /review quality —
and catches the AI slop /review misses.
Claude Code's /review is excellent — but it only runs on a pull request that
already exists. If you keep a tight commit log, you want that review before
you open the PR. The local alternative, /code-review, is a different and
weaker review that misses things /review catches.
And neither of them reviews for slop: dead code, comments that restate the code, verbose AI-written prose, reinvented utilities, the same rule copy-pasted across five call sites, three times the lines the job needed.
Reviso is the missing review. Three commands, all local, all report-only:
/reviso:review— the inner-loop review: assembles a mock PR (base..HEADplus uncommitted work) and reviews it in a single pass, the way/reviewdoes, at comparable cost. Plus the slop lens. Run it as often as you commit./reviso:audit— the pre-PR gate: parallel blind finders per dimension, per-candidate evidence gathering, then a single confidence gate applied by the orchestrator with the whole change in view. Slower and heavier, for when the branch is about to become a PR. (Full adversarial multi-skeptic depth lands in P1.)/reviso:style— the style lane: slop, drift from your repo's own conventions, comment and method length, duplication, over-engineering, dead weight, test slop, AI tells, derived state, naming, error-handling shape, stale docs, surface area, type slop — and nothing else. Every finding is measured against how your codebase writes, with the baseline cited — no bug hunting, no absolute thresholds, with three deliberate exceptions: a comment must earn its place (only a written convention overrides), placeholder text is always a finding, and--webadds the best-practices lens — changed lines checked against what your language and libraries document about themselves (deprecated APIs, documented misuses, advisories on newly pinned versions), citing the source. Off by default, and the only thing in Reviso that reads the web; what a query may contain is a written contract, docs/web.md.
The intended rhythm: code → review → fix → a few more commits →
audit → open the PR. Reach for style when the question is "is this
clean?" rather than "is this correct?" — a fresh AI-written change, a
refactor you suspect got verbose, a branch you're about to hand off.
It runs on the Claude subscription you already pay for. There is no account, no signup, and no telemetry.
Reviso never edits your files. It reports findings — each with a severity, a concrete failure scenario, a suggested fix, and a confidence score — and you decide. This is a permanent design constraint, not a v1 limitation.
A review tool that floods you with nitpicks gets muted within a week, and then it catches nothing at all. Reviso would rather stay silent than show you a maybe. If it's noisy for you, that's a bug — please report it, because false positives are the metric we care about most.
The catch with false-positive reports: the finding is about your code. So the feedback design is bound by a written privacy contract — docs/feedback.md. The short version: nothing is ever sent automatically; the default report is metadata-only, built by a deterministic script from an allowlist the model can't reach past; and anything that includes code opens as a prefilled issue in your browser for you to read, edit, and send yourself. After a review, name a wrong finding and Reviso offers to file it under exactly those rules.
In Claude Code, run these as two separate commands (use the full clone
URL — owner/repo shorthand is not accepted):
/plugin marketplace add https://github.com/Vyttle-LLC/reviso.git
/plugin install reviso@reviso
Then run /reviso:review on any branch. The diff base is inferred, first
match wins: --base <ref>, the open PR's target, the branch's tracking
branch (unless it is just the pushed copy of HEAD), then the repo's default
branch. Every report names the base it used and how it chose it.
Stacked branches: cut each layer with git checkout -b <child> --track <parent> and push with git push origin HEAD (not -u), and the tracking
branch stays the parent — no --base needed.
Updates are not automatic: /plugin update reviso@reviso pulls the latest
release, or enable auto-update for the marketplace under /plugin →
Marketplaces. /plugin list shows the version you're running.
To try it without installing (or to hack on it), load it straight from a checkout:
claude --plugin-dir /path/to/revisoThis is allowed and we've documented it rather than hiding it — see docs/ci.md.
One caveat worth stating plainly: run automation on an API key, not on a personal subscription. Subscriptions are licensed for interactive personal use. If you want a hosted, supported, one-click version of this on your PRs, that's Reviso Cloud — which is how the open source gets funded.
Early. The parity bar is that /reviso:review catches everything /review
catches on the same changes; anything it misses is a P0. Our eval results —
including the runs we lose — are published in docs/evals.md.
What's here today: /reviso:review (single-pass mock-PR review, anti-slop
lens, deterministic detectors), /reviso:audit (the multi-agent
finder + verify pipeline), /reviso:style (the single-pass style-only
lane, calibrated to your repo's own norms, with the opt-in --web
best-practices lens under the docs/web.md contract), the parity eval harness in
eval/, and the assisted false-positive feedback flow under the
docs/feedback.md privacy contract.
Deliberately not yet: audit's full adversarial multi-skeptic depth (P1),
comment humanization (P1), .reviso/ team memory — rules and dismissal
learnings (P2) — and a lane restructure under consideration (review at
/code-review parity, audit as review + style + architecture).
Report-only is permanent; those aren't.
Yes please. See CONTRIBUTING.md. Commits need a Signed-off-by
line (git commit -s) — it takes one flag and we'll help you fix it if you forget.
The most valuable contribution isn't code: it's a false positive report or a missed finding. Those become eval cases, and eval cases are how this gets good.
Apache-2.0. The code is open; the name and logo are not — see TRADEMARKS.md.
Built by Vyttle.