← Back to Blog

Writing

Locoreview and Local-First AI Code Review

A short note on building a Neovim plugin that made my AI coding workflow more deliberate, reviewable, and easier to trust.

Neovim showing locoreview code review comments for an AI-assisted coding workflow.

I built locoreview because my AI coding workflow was getting fast enough to become a little too easy to trust. Agents are useful when they can move through a repo quickly, but the human part of the loop still needs a place to slow down, leave precise objections, and come back later without losing context. I wanted that place to live inside Neovim, next to the code, without depending on a SaaS review surface or a temporary chat transcript.

The plugin keeps structured review comments in a repo-local Markdown file, then lets me add, list, jump between, resolve, reopen, block, or clean them from the editor. A comment can point at one line, a visual range, or a changed diff line, and it carries enough metadata to be useful later: severity, status, author, timestamps, the issue, and the requested change. It is intentionally plain: the file is readable, diffable, and easy for an agent or teammate to inspect.

The part I care about most is not the command list, though there are plenty of commands. It is the review rhythm. :ReviewPR opens a focused diff view where I can collapse context, move through files, mark sections as viewed, and leave comments without turning the review into tab management. :ReviewFix can hand open items to an external agent, but the agent is deliberately behind a contract: the review file says what matters, and the tool reads that state instead of guessing from vibes.

For me, this is the shape good AI tooling should take: small, local, inspectable, and opinionated about human judgment. locoreview is not trying to replace code review or make the editor feel magical. It helps me be a stricter reviewer of my own AI-assisted work, and that is the kind of engineering loop I want more of: faster iteration, fewer hidden decisions, and a written trail that survives after the chat window is gone.