Interactive Plan Review: Mark up and refine your plans using a UI, easily share for team collaboration, automatically integrates with agent plan mode. Select the exact parts of the plan you want to change. Mark it for deletion, add a comment, or suggest a replacement. Share plans and collect team member feedback. Automatically send feedback for Claude Code to act on. Runs locally. Local plugin. No network requests. Plannotator runs entirely in your browser. Plans never leave your machine.
I personally wanted a better way to review Claude Code plans and then annotate certain sections of plans and also share the plans with teammates. So I built plannotator. Source code is available through the GitHub link.
Plannotator is a Claude Code plug-in and works through hooks. It runs locally and doesn't talk to any external service. See the README on GitHub for installation details.
If you ever share a plan, it's never stored on the back-end. In fact, I don't have a back-end. This is a static site. The share link is a static site. Sharing is inspired by Textarea.my - I compress the content and annotations into a base64 and then store that in the link.
@backnotprop Local-first and no backend is a nice touch!! How do you think about collaboration and versioning over time, for example, when plans evolve, multiple people annotate, or you want to compare revisions, without compromising the stateless, link-based approach?
@malekmoumtaz Right now you are able to share your annotations with others. You can go back and forth by re-sharing the link. Everybody gets an username already. Like a decentralized google doc.
Revisions would be a simple data model upgrade. I need to do some work to import everybody else's annotations into the claude-code feedback (like day or so)... I think everything you mention can be done in a stateless approach.
Otherwise there is a product potential here. I am not leading with that because I want to test the basic capabilities and get feedback on that. AI moves very fast and its not clear what type of operations will evolve around planning & related collaboration.
Report
The local-first approach with base64-encoded sharing is clever. I'm curious about the annotation workflow - when you mark a section for deletion or suggest a replacement, how does that feedback get formatted for Claude Code? Is it just appended to the next prompt, or is there something more structured?
@yamamoto7 The feedback is visible in the `export` tab top right, there is a way to see the raw diff. It is provided as a list of feedback items depending on comment/delete.
``` # Plan Feedback
I've reviewed this plan and have 2 pieces of feedback:
## 1. Remove this
```
const server = new WebSocketServer({ port: 8080 });
server.on('connection', (socket, request) => {
const sessionId = generateSessionId();
sessions.set(sessionId, socket);
socket.on('message', (data) => {
broadcast(sessionId, data);
});
});
```
> I don't want this in the plan.
## 2. Feedback on: "Implement reconnection logic with exponential backoff"
This is a thoughtful take on a real gap. Plans are becoming first-class artifacts in agent workflows, but review and collaboration around them still feels ad hoc. Local-first, no backend and explicit annotation hit the right trade-offs early. The stateless sharing model is especially interesting, it keeps friction low while still enabling real feedback loops. Curious to see how this evolves as plan reviews become more central to team workflows.
You can do a lot of cool things with Claude Code hooks. As swe's, our responsibilities are moving into planning, orchestrating, and reviewing. So I built "Plannotator" to give me better iteration on reviewing plans.
I personally wanted a better way to review Claude Code plans and then annotate certain sections of plans and also share the plans with teammates. So I built plannotator. Source code is available through the GitHub link.
Plannotator is a Claude Code plug-in and works through hooks. It runs locally and doesn't talk to any external service. See the README on GitHub for installation details.
If you ever share a plan, it's never stored on the back-end. In fact, I don't have a back-end. This is a static site. The share link is a static site. Sharing is inspired by Textarea.my - I compress the content and annotations into a base64 and then store that in the link.
Plannotator
I personally wanted a better way to review Claude Code plans and then annotate certain sections of plans and also share the plans with teammates. So I built plannotator. Source code is available through the GitHub link.
Plannotator is a Claude Code plug-in and works through hooks. It runs locally and doesn't talk to any external service. See the README on GitHub for installation details.
You can try a demo here: https://share.plannotator.ai/
If you ever share a plan, it's never stored on the back-end. In fact, I don't have a back-end. This is a static site. The share link is a static site. Sharing is inspired by Textarea.my - I compress the content and annotations into a base64 and then store that in the link.
https://github.com/backnotprop/plannotator
@backnotprop Local-first and no backend is a nice touch!! How do you think about collaboration and versioning over time, for example, when plans evolve, multiple people annotate, or you want to compare revisions, without compromising the stateless, link-based approach?
Plannotator
@malekmoumtaz Right now you are able to share your annotations with others. You can go back and forth by re-sharing the link. Everybody gets an username already. Like a decentralized google doc.
Revisions would be a simple data model upgrade. I need to do some work to import everybody else's annotations into the claude-code feedback (like day or so)... I think everything you mention can be done in a stateless approach.
Otherwise there is a product potential here. I am not leading with that because I want to test the basic capabilities and get feedback on that. AI moves very fast and its not clear what type of operations will evolve around planning & related collaboration.
The local-first approach with base64-encoded sharing is clever. I'm curious about the annotation workflow - when you mark a section for deletion or suggest a replacement, how does that feedback get formatted for Claude Code? Is it just appended to the next prompt, or is there something more structured?
Plannotator
@yamamoto7 The feedback is visible in the `export` tab top right, there is a way to see the raw diff. It is provided as a list of feedback items depending on comment/delete.
```
# Plan Feedback
I've reviewed this plan and have 2 pieces of feedback:
## 1. Remove this
```
const server = new WebSocketServer({ port: 8080 });
server.on('connection', (socket, request) => {
const sessionId = generateSessionId();
sessions.set(sessionId, socket);
socket.on('message', (data) => {
broadcast(sessionId, data);
});
});
```
> I don't want this in the plan.
## 2. Feedback on: "Implement reconnection logic with exponential backoff"
> I dont want to do it this way
---
```
@backnotprop
Thanks for the clarification. The export tab approach sounds practical for reviewing changes. I'll check it out.
Numok
That's cool! Would it make sense at some point to have the entire Claude code accessible via web? UI is so much friendlier.
It can be very useful for giving out a business logic to the client or shipping code if you work in a large team. 👍🏻
Love it. Would be nice to be able to use the same UI to annotate any .md file even without being in plan mode.
Plannotator
@sdebaene nice thought ill try to roadmap it. this is mostly a side project
How do you do plan diffs + merging annotations without growing a backend monster?
Local-first tools are my religion and my curse.
Plannotator
@teodor_hascau no intuitive design for this yet
GraphBit
This is a thoughtful take on a real gap. Plans are becoming first-class artifacts in agent workflows, but review and collaboration around them still feels ad hoc. Local-first, no backend and explicit annotation hit the right trade-offs early. The stateless sharing model is especially interesting, it keeps friction low while still enabling real feedback loops. Curious to see how this evolves as plan reviews become more central to team workflows.