Interactive plan annotation plugin for Claude Code
npx claudepluginhub ndom91/open-plan-annotatorInteractive plan annotation UI: review, strikethrough, and comment on Claude's plans before approving. Fully local, no external services.
Share bugs, ideas, or general feedback.

A fully local agentic coding plugin that intercepts plan mode and opens an annotation UI in your browser. Mark up the plan, send structured feedback to the agent, and receive a revised version — iterate as many times as you need until you're ready to approve.
Select text to strikethrough, replace, insert, or comment — then approve the plan or request changes
Everything runs locally. Nothing leaves your machine.

[!NOTE]
open-plan-annotatornow ships as one package-managed install. The npm package contains the plugin glue and resolves a platform runtime package locally. There is no first-run binary download and no in-app self-update path.
From within Claude Code, add the marketplace and install the plugin:
/plugin marketplace add ndom91/open-plan-annotator
/plugin install open-plan-annotator@ndom91-open-plan-annotator
This installs the npm-backed plugin and registers the ExitPlanMode hook that launches the annotation UI. In Claude Code, third-party marketplaces have auto-update disabled by default, so also enable auto-update for the ndom91-open-plan-annotator marketplace in the Marketplace UI.
Add open-plan-annotator to the plugin array in your OpenCode config (opencode.json or .opencode/config.json):
{
"plugin": ["open-plan-annotator@latest"]
}
OpenCode will install the package and load it automatically. The plugin:
submit_plan tool that the agent calls after creating a planTo update, refresh the plugin through OpenCode and restart the app so it reloads the latest package-managed runtime.
[!NOTE] The update mechanism changed significantly in
1.0.20+: OpenCode now loads the npm package plus a platform runtime package instead of using the old in-place binary updater. If OpenCode appears to be stuck on an older plugin build, clear the cachedopen-plan-annotatorentries under~/.cache/opencode/node_modules/and restart OpenCode.
By default, after a plan is approved the plugin sends "Proceed with implementation." to a build agent. To customize or disable this, create open-plan-annotator.json in your project's .opencode/ directory or globally in ~/.config/opencode/:
{
"implementationHandoff": {
"enabled": true,
"agent": "build"
}
}
Set enabled to false to disable auto-handoff. Project config overrides global config.
If you want to run the CLI standalone or install the package globally:
pnpm add -g open-plan-annotator
npm install -g open-plan-annotator
git clone https://github.com/ndom91/open-plan-annotator.git
cd open-plan-annotator
bun install
bun run build
Then load it directly in Claude Code:
claude --plugin-dir ./open-plan-annotator
npm, pnpm, or bun), then rerun open-plan-annotator.The built-in doctor command reports the resolved runtime package and runtime path:
open-plan-annotator doctor
| Action | Shortcut | Description |
|---|---|---|
| Delete | d | Strikethrough selected text |
| Replace | r | Replace selected text with new content |
| Insert | i | Insert text after the selection |
| Comment | c | Attach a comment to selected text |
| Approve | Cmd+Enter | Approve the plan and proceed |
| Request Changes | Cmd+Shift+Enter | Send annotations back to the agent |