* fix: harden title sanitization for Obsidian filenames Strip parentheses, brackets, curly braces, hash, tilde, and backtick from plan titles when generating Obsidian filenames. Re-trim after stripping to handle edge cases where stripped chars leave leading/trailing whitespace. Closes part of #235. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: filename separator + auto-save on arrival for Obsidian Filename separator: adds a dropdown in Obsidian settings to replace spaces with dashes or underscores in generated filenames. Fixes issues with CLI tools fumbling space-escaped paths inside Obsidian vaults. The setting flows through the save request to generateFilename() as a post-processing step. Live preview reflects the choice. Auto-save on arrival: adds an opt-in toggle that automatically saves plans to Obsidian the moment they load in the browser, before the user approves or denies. This fixes the workflow where approving from the Claude Code CLI kills the hook server before the user can Cmd+S. Guarded by a ref to fire only once per session. Closes #235, closes #228. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: pass filenameSeparator in ExportModal Obsidian save path The ExportModal's save-to-Obsidian callsite was missing the filenameSeparator config, causing the separator preference to be silently ignored when saving via the Export Modal. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Plannotator
Interactive Plan Review for AI Coding Agents. Mark up and refine your plans using a visual UI, share for team collaboration, and seamlessly integrate with Claude Code, OpenCode, and Pi.
Claude Code
|
OpenCode
|
Features
| Visual Plan Review | Built-in hook | Approve or deny agent plans with inline annotations |
| Plan Diff | Automatic | See what changed when the agent revises a plan |
| Code Review | /plannotator-review | Review git diffs with line-level annotations |
| Annotate Any File | /plannotator-annotate | Annotate any markdown file and send feedback to your agent |
Sharing Plans
Plannotator lets you privately share plans, annotations, and feedback with colleagues. For example, a colleague can annotate a shared plan, and you can import their feedback to send directly back to the coding agent.
Small plans are encoded entirely in the URL hash — no server involved, nothing stored anywhere. The data never leaves your browser.
Large plans use a short link service with end-to-end encryption. Your plan is encrypted with AES-256-GCM in your browser before it's uploaded — the server stores only ciphertext it cannot read. The decryption key lives only in the URL you share and is never sent to the server. Pastes auto-delete after 7 days.
- Zero-knowledge storage — not even the service operator can read stored plans (similar to PrivateBin)
- No accounts, no tracking, no cookies on the share portal
- Fully open source and self-hostable (see docs)
Note
Short links are end-to-end encrypted. A single-use AES-256-GCM key is generated in your browser via the Web Crypto API, used to encrypt the plan, and embedded in the URL fragment (
#key=...). The key never leaves the browser — it is never sent to the paste service or any server. Only someone with the exact URL can decrypt the plan.
Install
Install for Claude Code
Install the plannotator command:
macOS / Linux / WSL:
curl -fsSL https://plannotator.ai/install.sh | bash
Windows PowerShell:
irm https://plannotator.ai/install.ps1 | iex
Then in Claude Code:
/plugin marketplace add backnotprop/plannotator
/plugin install plannotator@plannotator
# IMPORTANT: Restart Claude Code after plugin install
See apps/hook/README.md for detailed installation instructions including a manual hook approach.
Install for OpenCode
Add to your opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}
Run the install script to get /plannotator-review:
curl -fsSL https://plannotator.ai/install.sh | bash
Windows:
irm https://plannotator.ai/install.ps1 | iex
This also clears any cached plugin versions. Then restart OpenCode.
Install for Pi
pi install npm:@plannotator/pi-extension
Then start Pi with --plan to enter plan mode, or toggle it during a session with /plannotator.
See apps/pi-extension/README.md for full usage details, commands, and flags.
How It Works
When your AI agent finishes planning, Plannotator:
- Opens the Plannotator UI in your browser
- Lets you annotate the plan visually (delete, insert, replace, comment)
- Approve → Agent proceeds with implementation
- Request changes → Your annotations are sent back as structured feedback
License
Copyright 2025-2026 backnotprop
This project is licensed under either of
- Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
