
Openplan
- Updated July 27, 2026
- smithg09/openplan
openplan is a Claude Code skill in the AI & Agent Building category. Interactive plan review: annotate, version, and manage Claude Code plans in a browser UI.
Key points
- openplan
- AI & Agent Building
- AI-coding skill
Openplan by the numbers
- Data as of Jul 28, 2026 (Skillselion catalog sync)
/plugin marketplace add smithg09/openplan/plugin install openplan@openplanAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Last updated | July 27, 2026 |
|---|---|
| Repository | smithg09/openplan ↗ |
What it does
Interactive plan review: annotate, version, and manage Claude Code plans in a browser UI.
README.md
Openplan
Interactive plan review for Claude Code - review and annotate plans in a browser.

Try it now: Explore the live demo at openplan.smithgajjar.dev/app. Drag and drop any local markdown file/folder directly into the demo to annotate right into your browser.
What is Openplan?
Openplan hooks into Claude Code's plan mode workflow. When Claude finishes planning and triggers ExitPlanMode, Openplan intercepts the event, opens the plan in a browser UI, and lets you review, annotate, and version the plan before sending your approve or deny decision back to Claude Code.
Installation
Install the binary:
curl -fsSL https://openplan.smithgajjar.dev/install.sh | bash
Then register the hooks automatically via the Claude Code plugin marketplace:
/plugin marketplace add smithg09/openplan
/plugin install openplan@openplan
Restart Claude Code and you're ready to go. No manual hook configuration needed.
Hook Configuration
Note: If you used the plugin marketplace (Option 1), hooks are already registered. Skip this section.
For Option 2 or 3, add the following to your ~/.claude/settings.json (or your project's .claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "EnterPlanMode",
"hooks": [{ "type": "command", "command": "openplan context", "timeout": 5 }]
}
],
"PermissionRequest": [
{
"matcher": "ExitPlanMode",
"hooks": [{ "type": "command", "command": "openplan", "timeout": 345600 }]
}
]
}
}
Restart Claude Code. The next time you use plan mode, Openplan will intercept the ExitPlanMode event, open the plan in a browser, and return your approve/deny decision to Claude Code.
Usage
| Command | Description |
|---|---|
openplan |
Hook mode: reads ExitPlanMode event from stdin, opens browser UI, returns decision |
openplan context |
PreToolUse hook: injects additional planning context |
openplan annotate [file|dir] |
Open a markdown file or directory in the annotation UI |
openplan share <file> |
Generate a shareable browser link for any plan |
openplan serve |
Start the persistent dashboard server |
openplan sessions |
List active openplan sessions |
Sharing Plans
openplan share generates a self-contained URL that encodes the full plan content. Recipients can open the link in any browser to read the plan and add annotations — no account or installation required.
openplan share my-plan.md
✓ Share link generated
https://openplan.smithgajjar.dev/app#share?hash=...
Send this link to collaborators — they can view the plan and
add annotations directly in the browser. No account required.
The link is also copied to your clipboard automatically.
You can also share from agent chat using the /openplan-share skill:
/openplan-share path/to/plan.md
The URL is entirely self-contained — all plan data is encoded directly in the link using gzip compression. No server stores your content.
Storage
All data lives under ~/.openplan/:
| Path | Contents |
|---|---|
~/.openplan/plans/<project>/<plan>/ |
Plan versions (v1.md, v2.md, …) and metadata |
~/.openplan/config.json |
Settings (created on first run with defaults) |
~/.openplan/sessions/ |
Active session tracking |
~/.openplan/hooks/ |
Custom hook scripts (e.g. improve-context.md) |
Contributing
Prerequisites
Local Development
# Clone and install
git clone https://github.com/smithg09/openplan.git
cd openplan
bun install
# Build everything
bun run build:ui # Vite UI → apps/cli/internal/server/ui/dist/
bun run build:cli # Go binary → bin/openplan
# Or build both at once
bun run build
# Run the CLI
./bin/openplan --version
Development Workflow
# Start UI dev server (with Vite HMR + proxy to :7432)
bun run dev:ui
# In another terminal, run the CLI server on :7432
./bin/openplan serve
# Run type checking
bun run typecheck
Note: The UI must be built before the CLI. The Go binary embeds
apps/cli/internal/server/ui/dist/at compile time.
License
MIT © Gajjar Smith