plannotator — Claude Code skill: visual plan and diff review
The skill opens a browser approval loop: a human reads a plan, diff or spec and leaves notes before any code gets written.
npx skills add akillness/jeo-skills --skill plannotator -a claude-codeWhat plannotator does
plannotator is a human approval gate that sits between plan generation and execution. An agent has already produced a plan, a diff or a markdown artifact, and someone needs to walk through it line by line in a browser and decide: approve, request changes, or archive.
The skill first classifies the request into one of five packets: plan-review, diff-review, markdown-review, platform-setup or troubleshooting. Then it opens the smallest path. For a diff that means bash scripts/review.sh, optionally with a range like bash scripts/review.sh main...HEAD. Platform setup starts with bash scripts/install.sh and bash scripts/check-status.sh. Reference docs cover routing, installation and troubleshooting.
Platforms behave differently, and that matters. Claude and Gemini CLI have the clearest native hook-driven path, while Codex and OpenCode usually fall back to manual diff or markdown review. Don't assume one setup fits all — check which mode actually fires in your environment. The skill does not write the plan itself: spec creation routes to task-planning or ralph, broad PR policy to code-review, and rendered-UI critique to agentation.
What it helps with
- approve an implementation plan before the agent starts coding
- leave line-targeted comments on a diff or commit range
- mark up a spec or PRD in the browser
- wire the review loop into Claude, Gemini CLI, Codex or OpenCode
- debug flaky remote mode, ports or status checks
Example prompts for the agent
- open the plan in plannotator, I want to leave notes before we start
- run a browser review of the diff main...HEAD
- check plannotator status and fix remote mode
How to install plannotator
1Skills CLI (Vercel)
npx skills add akillness/jeo-skills --skill plannotator -a claude-code2Manually: put the files in place
~/.claude/skills/plannotator/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/plannotator/
1Skills CLI (Vercel)
npx skills add akillness/jeo-skills --skill plannotator -a codex2Manually: put the files in place
.agents/skills/plannotator/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add akillness/jeo-skills --skill plannotator -a cursor2Manually: put the files in place
.cursor/skills/plannotator/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install akillness/jeo-skills plannotator2Manually: put the files in place
.github/skills/plannotator/SKILL.md1Skills CLI (Vercel)
npx skills add akillness/jeo-skills --skill plannotator -a gemini-cli2Platform CLI
gemini skills install https://github.com/akillness/jeo-skills --path .agent-skills/plannotatorManually: put the files in place
.devin/skills/plannotator/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add akillness/jeo-skills --skill plannotator -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about plannotator
How do I install plannotator in Claude?
Run npx skills add akillness/jeo-skills --skill plannotator -a claude-code. The skill lands at ~/.claude/skills/plannotator/SKILL.md.
What does plannotator do?
It opens a browser approval loop for a plan, diff or markdown spec. You annotate it and choose to approve, request changes or save.
How is plannotator different from code-review?
plannotator is an approval gate for one concrete artifact before execution. Broad PR policy, merge criteria and risk judgment route to code-review.
Source text
SKILL.md · MIT
--- name: plannotator description: > Routing-first visual approval gate for AI agent plans, markdown specs, and diffs. Use when a human needs to review a concrete plan before execution, inspect a targeted diff in a browser, mark up a spec/PRD/architecture note, or set up the review loop on Claude Code, Gemini CLI, Codex CLI, or OpenCode. Route planning/spec creation to `task-planning` or `ralph`, broad PR-policy review to `code-review`, rendered-UI critique to `agentation`, and fresh-session browser verification to `browser-harness`. allowed-tools: Read Bash Write compatibility: > Best for Claude Code, Gemini CLI, Codex CLI, OpenCode, and orchestration flows like JEO where an agent already produced a plan, spec artifact, or diff and a human wants a browser-based approval loop. Not for creating the plan itself, owning merge policy, or doing generic UI screenshot review. license: MIT metadata: tags: plan, plannotator, plan-review, diff-review, spec-review, markdown-review, claude-code, codex, gemini, opencode, annotation, visual-review, obsidian, bear-notes platforms: Claude, OpenCode, Codex, Gemini keyword: plan version: "1.1.0" source: backnotprop/plannotator modernization: 2026-04-13 hardening: 2026-04-19 --- # plannotator Use this skill when the job is to **classify one review packet, open the smallest honest visual review path, and leave broad planning / PR policy / UI critique work outside the front door**. `plannotator` is not the planner. It is the **human approval gate** that sits between: - plan/spec creation (`task-planning`, `ralph`) - orchestration/runtime ownership (`jeo`, `task-planning`, `bmad`) - broader PR/code judgment (`code-review`) - rendered-UI bug markup (`agentation`) - clean browser verification (`browser-harness`) Read these support docs first: - [references/intake-packets-and-route-outs.md](references/intake-packets-and-route-outs.md) - [references/platform-setup.md](references/platform-setup.md) - [references/notes-and-troubleshooting.md](references/notes-and-troubleshooting.md) ## When to use this skill - A coding agent already produced an implementation plan and a human must approve or request changes before coding starts. - A concrete git diff, commit range, or PR exists and the reviewer wants browser-based line-targeted feedback. - A markdown artifact such as a spec, PRD, architecture note, or generated plan package needs visual review and revision feedback. - The user needs to connect `plannotator` to Claude Code, Gemini CLI, Codex CLI, or OpenCode and the main job is setup for the review loop. - The review flow exists but remote mode, stable URLs/ports, or platform-specific behavior is flaky and needs targeted troubleshooting. ## When not to use this skill - **The main job is writing or refining the plan/spec itself** → `task-planning`, `ralph`, or `survey` - **The main job is broad PR policy, merge criteria, risk judgment, or code-owner approval** → `code-review` - **The main job is exact rendered-UI critique that should drive frontend fixes** → `agentation` - **The main job is clean disposable browser automation or deterministic website verification** → `browser-harness` - **The main job is task orchestration, board state, or multi-agent routing** → `jeo`, `task-planning`, `bmad` - **The main job is note taxonomy, wiki curation, or long-term note-system management** → `obsidian`, `llm-wiki` ## Instructions ### Step 1: Classify the review packet first Normalize the request into one primary packet before discussing commands. ```yaml plannotator_intake: primary_packet: plan-review | diff-review | markdown-review | platform-setup | troubleshooting artifact_ready: yes | no artifact_type: plan | git-diff | pr | markdown-spec | generated-response | unknown platform: claude | gemini | codex | opencode | mixed | unknown trigger_mode: native-hook | manual-review | unknown feedback_goal: approve | request-changes | annotate | archive | unknown repo_context: git-repo | markdown-only | remote-container | unknown confidence: high | medium | low ``` Default to the smallest obvious interpretation: - existing implementation plan → `plan-review` - existing code changes / PR / commit range → `diff-review` - existing spec or markdown artifact → `markdown-review` - install/integration question → `platform-setup` - flaky remote/browser/status issue → `troubleshooting` ### Step 2: Verify the concrete artifact exists `plannotator` only helps once something concrete can be reviewed. Checklist: 1. A plan, diff, PR, markdown file, or generated response already exists. 2. The user wants **review**, not plan generation. 3. For diff review, a git repo, PR URL, or explicit commit range exists. 4. For markdown/spec review, the file or generated artifact is identifiable. 5. For note export, save/integration is configured; treat it as secondary, not the main packet. If the artifact is missing, route out instead of forcing the review tool. ### Step 3: Choose exactly one review packet Use the router in [references/intake-packets-and-route-outs.md](references/intake-packets-and-route-outs.md) and pick one primary packet: - `plan-review` - `diff-review` - `markdown-review` - `platform-setup` - `troubleshooting` List anything else as follow-up, not as a co-owner. ### Step 4: Run the chosen packet - **Plan review** → confirm the runtime can hand the plan into `plannotator`, use the native/hook path when real, annotate one issue per step, and end with **approve**, **request changes**, or **archive/save**. - **Diff review** → use a concrete target and launch the smallest diff packet: ```bash bash scripts/review.sh bash scripts/review.sh HEAD~1 bash scripts/review.sh main...HEAD ``` - **Markdown review** → confirm the spec/PRD/architecture file exists, use annotation/review mode directly, and be explicit when the runtime only supports annotation rather than a stronger approval path. - **Platform setup** → start with: ```bash bash scripts/install.sh bash scripts/check-status.sh ``` then use [references/platform-setup.md](references/platform-setup.md). - **Troubleshooting** → start with: ```bash bash scripts/check-status.sh bash scripts/configure-remote.sh ``` then use [references/notes-and-troubleshooting.md](references/notes-and-troubleshooting.md). ### Step 5: Keep manual-vs-hook reality explicit - Claude and Gemini are the clearest native/hook-driven plan-review fits. - Codex has public hooks, but upstream `plannotator` still documents the practical path as manual diff/markdown review or partial setup. - OpenCode users explicitly asked for more manual control when auto-invocation is too eager. Do **not** flatten this into “all platforms work the same.” ### Step 6: Route adjacent work aggressively - planning/spec creation or refinement → `task-planning`, `ralph`, `survey` - orchestration state or multi-agent routing → `jeo`, `task-planning`, `bmad` - broad PR policy, merge gating, or risk judgment → `code-review` - rendered UI bug markup → `agentation` - clean disposable browser verification → `browser-harness` - note/vault/wiki administration beyond saving reviewed artifacts → `obsidian`, `llm-wiki` ### Step 7: Use a short output contract Preferred output: ```markdown # plannotator Review Packet - Primary packet: - Artifact: - Platform + trigger mode: - Next action: - Outcome or limitation: - Route-outs: ``` For setup-heavy asks, use a short setup brief with: - platform - native-hook vs manual-review status - install commands - verification steps - caveats ## Examples ### Example 1: Approve a concrete plan **Input** > The agent already proposed a 6-step implementation plan. I want to inspect it visually and either approve it or send corrections back before coding starts. **Good output direction** - choose `plan-review` - verify the plan already exists - use the runtime's real review surface - annotate one issue per step - end with approve vs request-changes - route plan creation back out if the plan is still immature ### Example 2: Review a diff **Input** > The agent already changed three files. Open the visual diff review for `main...HEAD` and let me leave targeted feedback. **Good output direction** - choose `diff-review` - verify git context / diff range - use `bash scripts/review.sh main...HEAD` - keep broader PR-policy review routed to `code-review` ### Example 3: Review a PRD/spec artifact **Input** > I want to mark up this architecture note and either accept it as-is or send revision feedback before we continue. **Good output direction** - choose `markdown-review` - verify the markdown artifact exists - explain whether the current platform supports native approval or manual annotation only - keep note export secondary and route wiki/vault management outward ### Example 4: Codex setup reality check **Input** > Set up plannotator for Codex so I can review plans before code runs. **Good output direction** - choose `platform-setup` - start with install + status verification - explain the current Codex manual/partial reality honestly instead of promising parity that upstream docs do not show - route broad hook/platform policy work outward if needed ## Best practices 1. Treat `plannotator` as a visual approval gate, not the planning engine. 2. Review one concrete artifact at a time. 3. Keep manual-review vs native-hook differences explicit. 4. Use one annotation per issue whenever possible. 5. End with a clear outcome: approve, request changes, annotate only, or archive. 6. Keep note export secondary to the review packet. 7. Route PR policy, orchestration, and rendered-UI critique to neighboring skills instead of stretching `plannotator`. ## References - [GitHub: backnotprop/plannotator](https://github.com/backnotprop/plannotator) - [Official site: plannotator.ai](https://plannotator.ai) - [references/intake-packets-and-route-outs.md](references/intake-packets-and-route-outs.md) - [references/platform-setup.md](references/platform-setup.md) - [references/notes-and-troubleshooting.md](references/notes-and-troubleshooting.md) - [references/review-modes-and-boundaries.md](references/review-modes-and-boundaries.md)
© akillness · MIT · akillness/jeo-skills