You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(gemini): add Gemini CLI plan review integration
* feat(gemini): add Gemini CLI plan review integration
Adds a new `apps/gemini-hook/` adapter that enables Plannotator plan
review for Gemini CLI users via the BeforeTool hook system.
The adapter reads the plan file from disk (Gemini provides a path, not
inline content), delegates to the shared @plannotator/server for the
browser-based review UI, and translates the decision back into Gemini's
hook output format.
Requires an upstream fix (google-gemini/gemini-cli#21802) that makes
`decision = "allow"` user policies work for exit_plan_mode, allowing
hooks to replace the built-in TUI approval dialog.
Includes:
- apps/gemini-hook/server/index.ts — stdin/stdout adapter
- apps/gemini-hook/hooks/ — policy TOML + settings snippet
- scripts/install.sh — Gemini binary download, policy install, settings config
For provenance purposes, this commit was AI assisted.
* refactor(gemini): use single binary with auto-detection instead of separate app
Removes apps/gemini-hook/ — the plannotator binary now auto-detects
Gemini CLI from stdin (plan_path = file on disk) vs Claude Code
(plan = inline content) and branches input parsing + output formatting.
Config fixtures live in apps/gemini/ (policy TOML + settings snippet).
Install script gates on ~/.gemini existing so Claude-only users are
unaffected.
For provenance purposes, this commit was AI assisted.
* test(gemini): add manual sandbox script for Gemini CLI integration
Three modes:
- --simulate: pipes BeforeTool JSON to hook, tests approve/deny output
- (default): runs local patched Gemini build
- --nightly: installs Gemini nightly and runs it
Backs up and restores ~/.gemini config on exit.
For provenance purposes, this commit was AI assisted.
* feat(gemini): add slash commands, marketing tab, and docs for Gemini CLI
- Add /plannotator-review and /plannotator-annotate slash commands (.toml)
- Install Gemini slash commands in all three install scripts (sh, ps1, cmd)
- Add Gemini tab to marketing landing page with icon
- Add Gemini CLI to top-level README install section
- Create apps/gemini/README.md with full setup and usage docs
- Remove stale dev:gemini script and regenerate bun.lock
For provenance purposes, this commit was AI assisted.
* fix(gemini): merge hook into existing settings.json instead of printing instructions
When ~/.gemini/settings.json already exists, use node to JSON-merge
the BeforeTool hook config rather than asking the user to do it manually.
Falls back to instructions only if node is unavailable.
For provenance purposes, this commit was AI assisted.
* fix(gemini): handle plan_filename rename and fix scoping bug
Gemini CLI nightly renamed plan_path to plan_filename in exit_plan_mode.
Accept both field names for forward/backward compatibility. Reconstruct
full plan path from transcript_path + session_id + plans/ + filename.
Also hoist planFilename variable out of try block so it's accessible
in the deny output path (was causing ReferenceError).
For provenance purposes, this commit was AI assisted.
* fix(gemini): dim approve button when annotations exist for Gemini CLI
Gemini's hook runner ignores systemMessage on the allow path, so
approve-with-feedback is silently dropped — same limitation as Claude
Code. Extend the existing UI gate to also apply for gemini-cli origin.
For provenance purposes, this commit was AI assisted.
* fix(gemini): add AGENT_CONFIG entry and fix sandbox simulate mode
Register "gemini-cli" in AGENT_CONFIG so the UI shows "Gemini CLI"
with proper badge styling instead of generic "Coding Agent" fallback.
Update sandbox simulate mode to match production input format:
use plan_filename instead of plan_path, include transcript_path,
and simulate the Gemini directory structure for path reconstruction.
For provenance purposes, this commit was AI assisted.
Copy file name to clipboardExpand all lines: README.md
+35-1Lines changed: 35 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
# Plannotator
6
6
7
-
Interactive Plan & Code Review for AI Coding Agents. Mark up and refine your plans or code diffs using a visual UI, share for team collaboration, and seamlessly integrate with **Claude Code**, **OpenCode**, **Pi**, and **Codex**.
7
+
Interactive Plan & Code Review for AI Coding Agents. Mark up and refine your plans or code diffs using a visual UI, share for team collaboration, and seamlessly integrate with **Claude Code**, **Copilot CLI**, **Gemini CLI**, **OpenCode**, **Pi**, and **Codex**.
8
8
9
9
**Plan Mode Demos:**
10
10
<table>
@@ -54,6 +54,7 @@ Plannotator lets you privately share plans, annotations, and feedback with colle
54
54
55
55
-[Claude Code](#install-for-claude-code)
56
56
-[Copilot CLI](#install-for-copilot-cli)
57
+
-[Gemini CLI](#install-for-gemini-cli)
57
58
-[OpenCode](#install-for-opencode)
58
59
-[Pi](#install-for-pi)
59
60
-[Codex](#install-for-codex)
@@ -116,6 +117,39 @@ See [apps/copilot/README.md](apps/copilot/README.md) for details.
The installer auto-detects Gemini CLI (checks for `~/.gemini`) and configures the plan review hook and policy. It also installs `/plannotator-review` and `/plannotator-annotate` slash commands.
137
+
138
+
**Then in Gemini CLI:**
139
+
140
+
```
141
+
/plan # Enter plan mode — plans open in your browser
142
+
/plannotator-review # Code review for current changes
143
+
/plannotator-review <pr-url> # Review a GitHub pull request
144
+
/plannotator-annotate <file.md> # Annotate a markdown file
145
+
```
146
+
147
+
Requires Gemini CLI 0.36.0 or later.
148
+
149
+
See [apps/gemini/README.md](apps/gemini/README.md) for details.
0 commit comments