{"slug": "show-hn-open-plan-annotator-local-annotation-ui-for-working-with-agent-plans", "title": "Show HN: Open-plan-annotator – local annotation UI for working with agent plans", "summary": "Developer ndom91 released open-plan-annotator, a fully local annotation UI plugin for coding agents including Claude Code, OpenCode, and Pi, that intercepts plan mode and lets users mark up plans with strikethrough, replace, insert, or comment actions before approving or requesting changes. The plugin runs an ephemeral HTTP server and React UI in the browser, sending structured feedback back to the agent for iterative revision, and is available via package managers for each agent harness.", "body_md": "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.\n\nSelect text to `strikethrough`\n\n, `replace`\n\n, `insert`\n\n, or `comment`\n\n— then approve the plan or request changes\n\n- Your coding agent (Claude Code, OpenCode, and pi) finishes writing a plan\n- The plugin launches an ephemeral HTTP server and opens a React UI in your browser\n- You review the plan and annotate it — strikethrough, replace, insert, or comment on any section\n**Approve** to let the agent proceed, or**Request Changes** to send your annotations back as structured feedback- The agent revises the plan and the cycle repeats until you're satisfied\n\nEverything runs locally.\n\n`open-plan-annotator`\n\nis package-managed as a plugin within your harness of choice. The main plugin package then installs the specific local platform runtime it needs for your host (`linux`\n\n/`darwin`\n\n, `x86_64`\n\n/`arm64`\n\n, etc). After installing the plugin, your agent will call `open-plan-annotator`\n\nautonomously when you ask it to \"make a plan\" or any similar such comment, including in claude-code specifically as a hook when exiting `PlanMode`\n\n. Alternatively, you can call it yourself explicitly via the exposed command. See below for more details.\n\nInstall from inside Claude Code:\n\n```\n/plugin marketplace add ndom91/open-plan-annotator\n/plugin install open-plan-annotator@ndom91-open-plan-annotator\n```\n\nWhat you get:\n\n`ExitPlanMode`\n\nhook: opens the annotation UI whenever Claude submits a plan`/annotate-plan [task description]`\n\n: asks Claude to draft a plan and send it to the UI`open-plan-annotator`\n\n: runtime command invoked by the hook\n\nThird-party marketplace auto-update is disabled by default in Claude Code. Enable auto-update for the `ndom91-open-plan-annotator`\n\nmarketplace in the Marketplace UI if you want updates automatically.\n\nAdd the plugin to your OpenCode config (`opencode.json`\n\nor `.opencode/config.json`\n\n):\n\n```\n{\n  \"plugin\": [\"open-plan-annotator@1.8.7\"]\n}\n```\n\nWhat you get:\n\n`annotate_plan`\n\n: tool the agent calls after drafting a markdown plan`open-plan-annotator`\n\n: runtime command spawned by the plugin- optional implementation-agent handoff after approval\n\nRestart OpenCode after installing or updating so it reloads the package-managed runtime.\n\nInstall the Pi extension:\n\n```\npi install npm:@open-plan-annotator/pi-extension\n```\n\nWhat you get:\n\n`annotate_plan`\n\n: tool the agent calls after drafting a markdown plan`/annotate-plan [plan markdown]`\n\n: command for manually reviewing supplied text or the latest assistant message`open-plan-annotator`\n\n: runtime command used by the extension\n\nManual review examples:\n\n```\n/annotate-plan\n/annotate-plan # Plan\\n\\n1. Do the thing\n```\n\nInstall globally if you want to run the CLI directly:\n\n```\nbun add -g open-plan-annotator\nnpm install -g open-plan-annotator\n```\n\nThis adds the `open-plan-annotator`\n\ncommand. To verify the resolved runtime:\n\n```\nopen-plan-annotator doctor\n```\n\nYou can also review a Markdown plan directly from disk, which is useful for agents without a native plugin:\n\n```\nopen-plan-annotator review /absolute/path/to/plan.md\n```\n\nThe command opens the same local review UI and blocks until approval or requested changes. It prints review result JSON to stdout when the user is done.\n\nGeneric agent setup instructions are available with:\n\n```\nopen-plan-annotator agent-setup\nopen-plan-annotator help agent\n```\n\n**Claude Code**: navigate to the`/plugin`\n\n-> \"Installed\" ->`open-plan-annotator`\n\nentry and select \"Update\", then restart Claude Code.**OpenCode**: bump the version number in your`opencode.jsonc`\n\n`plugins`\n\n`open-plan-annotator`\n\nentry, then restart OpenCode.**Pi**: update the Pi extension, then restart Pi.** Manual/global install**: update the npm package, then rerun`open-plan-annotator`\n\n.\n\n| Action | Shortcut | Description |\n|---|---|---|\n| Delete | `d` |\nStrikethrough selected text |\n| Replace | `r` |\nReplace selected text with new content |\n| Insert | `s` |\nInsert text after the selection |\n| Comment | `c` |\nAttach a comment to selected text |\n| Approve | `Cmd+Enter` |\nApprove the plan and proceed |\n| Request Changes | `Cmd+Shift+Enter` |\nSend annotations back to the agent |\n\n```\nbun run dev\n```\n\nStarts the Bun server on port 3847 with a test plan and the Vite dev server on port 5173 with HMR.\n\n```\nbun run lint        # check\nbun run lint:fix    # auto-fix\nbun run format      # format\n```\n\n- Architecture:\n`docs/architecture.md`\n\n- Operations:\n`docs/operations.md`\n\n- Release process:\n`docs/release.md`\n\nMIT", "url": "https://wpnews.pro/news/show-hn-open-plan-annotator-local-annotation-ui-for-working-with-agent-plans", "canonical_source": "https://github.com/ndom91/open-plan-annotator", "published_at": "2026-07-26 18:28:48+00:00", "updated_at": "2026-07-26 18:52:45.683369+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["ndom91", "Claude Code", "OpenCode", "Pi", "open-plan-annotator"], "alternates": {"html": "https://wpnews.pro/news/show-hn-open-plan-annotator-local-annotation-ui-for-working-with-agent-plans", "markdown": "https://wpnews.pro/news/show-hn-open-plan-annotator-local-annotation-ui-for-working-with-agent-plans.md", "text": "https://wpnews.pro/news/show-hn-open-plan-annotator-local-annotation-ui-for-working-with-agent-plans.txt", "jsonld": "https://wpnews.pro/news/show-hn-open-plan-annotator-local-annotation-ui-for-working-with-agent-plans.jsonld"}}