Tools: Building a Local PR Review Interface for Claude Code Plans

Tools: Building a Local PR Review Interface for Claude Code Plans

What is IPE? ## The Problems I wanted to fix ## How It Works ## Install in One Line ## The Workflow in Practice ## Try It Out Plan mode in Claude Code feels like reviewing a pull request with no comments, no diff, and no history. Claude thinks for a moment (well much longer than a "moment"), then dumps a wall of text into your terminal - It then asks for approval with many variations of "Yes, ...." Then I open the Markdown file, start taking notes while reading through it. After doing this for a while I felt there should be a better way. IPE intercepts Claude Code's ExitPlanMode hook and opens a browser tab showing the plan in a GitHub-style code review interface. You can: You can't annotate. If step 3 looks wrong and step 8 is fine but needs a tweak, you're writing one blob of feedback hoping Claude parses it all correctly. You lose context across revisions. Claude revises the plan based on your feedback - but there's no diff. Did it actually address your concern? You're re-reading the whole thing from scratch. IPE registers itself as a Claude Code hook on PermissionRequest with the ExitPlanMode matcher. When Claude finishes planning and tries to proceed, the hook fires. The binary spins up a local HTTP server, opens your browser, and blocks - Claude is sitting there waiting for your response. You review at your own pace (the timeout is 4 days, so no rush). When you approve or request changes, the server sends the response back to the hook and the browser tab closes automatically. The whole thing is a self-contained binary built with Bun. Windows (PowerShell): That's it. The script downloads the binary and registers the hook in your Claude Code settings automatically. Run it again to update. Verify it's wired up by running /hooks inside Claude Code — you should see the ExitPlanMode hook listed. The project is open github.com/EduardMaghakyan/ipe If you use Claude Code in plan mode regularly, give it a spin and let me know what you think. Issues and PRs welcome - there's a lot of room to grow this (comment threads, keyboard shortcuts, plan history persistence...). Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to ? It will become hidden in your post, but will still be visible via the comment's permalink. as well , this person and/or COMMAND_BLOCK: curl -fsSL https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.sh | bash COMMAND_BLOCK: curl -fsSL https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.sh | bash COMMAND_BLOCK: curl -fsSL https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.sh | bash CODE_BLOCK: irm https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.ps1 | iex CODE_BLOCK: irm https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.ps1 | iex CODE_BLOCK: irm https://raw.githubusercontent.com/eduardmaghakyan/ipe/main/install.ps1 | iex - Add inline comments on any block or text selection — just like leaving a review comment on a PR - Click any file reference (e.g. `src/index.ts`) to pop open a syntax-highlighted side drawer showing the actual file contents - Compare plan versions side-by-side when Claude revises after your feedback - Switch between sessions if you're running multiple Claude Code instances at once - Approve or request changes — clicking "Request Changes" bundles your inline comments and sends them back to Claude - Work with Claude Code as normal - Claude generates a plan and calls ExitPlanMode - Your browser opens with the plan displayed - Read through it, click file references to inspect code, leave inline comments where needed - Hit Accept → Claude proceeds - Hit Request Changes → your comments go back to Claude, it revises, you review the diff