Saga: Navigating massive diffs with linear, chapter-based walkthroughs

The job of software engineering is shifting under our feet. Away from producing code, toward providing judgement, architecture, and taste. Code review is the primary place we express that judgement today.

I've preached to colleagues about the virtues of the PR for many years. A good review is one of the highest leverage things we can do. It unblocks your team, provides a place to coach other engineers, and acts as the primary mechanism to share engineering best practices. It's also how we learn and understand our systems, and one way we can build and maintain our mental model of a codebase.

Now that AI writes the vast majority of our code, the value (and sheer volume) of reviews has exploded. Coding with an agent means reviewing the output before even opening a PR. As teams adopt higher-level AI practices, the delta between code produced and code reviewed is widening. Over the last six months, I reviewed significantly more code than I produced. In the next six, I expect to be reviewing 2 or 3 times more. I am convinced that approving non trivial changes will remain a place for expert human judgement, long after agents completely take over the IDE.

Simultaneously, those PRs are getting larger, denser, and more complex. So, how do we manage? Of course, we have a selection of AI code review tools, automated tests, static analysis, and other CI machinery at our disposal. These are helpful, but not a substitute for human review. The never will, as long as we want to understand the software being built and keep the codebase coherent.

Lately I've found myself reviewing PRs at the tail end of a long day with Claude. I'm staring at a diff like the abyss. The code stares back. I struggle to focus. My brain feels stiff from a day of context-switching and steering models. The review, 1500 lines over 40 files, is too much to hold in working memory. But the change is critical, I know it's the most important thing right now.

I begin reading. Line by line, top to bottom. But code isn't linear. I have to skip around, cmd + f, check that function signature on main, is the logic correct? What about the typing? Does the domain model hold? So many questions. Somewhere in that chaotic loop, my attention thins out. I approve with comments, knowing there are 3 more reviews waiting in the queue.

I kept asking myself: how can I make this more engaging? How can I read through these complex changes in an order that makes architectural sense? GitHub isn't innovating here. They're fighting to keep the servers running, let alone evolve the PR interface beyond split vs. unified diffs.

What we need is a map. A guided tour of the diff that breaks it down into logical chunks that tell a coherent story. Giving your brain a narrative to follow, not just a file tree organized alphabetically.

So, I built Saga.

Saga is a CLI tool that generates linear, chapter based walkthroughs for code review. Just install it and run saga from your review branch, or point it at a different branch with CLI arguments.

Saga diffs the branch against your base, then uses an LLM to group the changes into ordered chapters. Each chapter is a coherent unit you can actually reason about, sequenced so the architecture reveals itself as you read. It hands you a beautiful, self-contained HTML file. Your guided tour of the review, with the context you need to apply your judgement instead of drowning in it.

A Saga walkthrough: a review broken into ordered chapters

Saga supports commenting on lines and files, as well as the overall review. Once you've finished reading, use saga comments push to populate a pending review on GitHub, or tell your agent to read and resolve your comments with saga comments read.

Saga works with models from Anthropic, OpenAI, and OpenRouter. And is entirely bring-your-own-key, because I'm not made of tokens, and I don't want your data. Your diff will be sent to the model provider of your choice.

I’m sharing Saga as an open-source project because I know I'm not the only one staring into the abyss at 6pm. If you've got a monster PR sitting in your queue, give it a try:

uv tool install saga-cli

The code is available on GitHub, the package is on Pypi, and issues and stars are always welcome. If it helps you find your way through, drop me a line - I'd love to hear it.