npx skills add https://github.com/akillness/oh-my-gods --skill plannotator关键词:
plan| 来源: https://github.com/backnotprop/plannotator可视化地批注和审查 AI 编码代理的计划,与团队分享,一键发送反馈。适用于 Claude Code、OpenCode、Gemini CLI 和 Codex CLI。
所有模式在 scripts/ 目录下都有对应的脚本。可以直接运行它们,或者让代理调用它们。
| 脚本 | 模式 | 用途 |
|---|---|---|
scripts/install.sh | CLI 安装 | 一键安装; 设置所有 AI 工具 |
Keyword:
plan| Source: https://github.com/backnotprop/plannotatorAnnotate and review AI coding agent plans visually, share with your team, send feedback with one click. Works with Claude Code , OpenCode , Gemini CLI , and Codex CLI.
All patterns have a corresponding script in scripts/. Run them directly or let the agent call them.
| Script | Pattern | Usage |
|---|---|---|
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
--allscripts/setup-hook.sh | Claude Code 钩子 | 配置 Claude Code 的 ExitPlanMode 钩子 |
scripts/setup-gemini-hook.sh | Gemini CLI 钩子 | 配置 Gemini CLI 的 ExitPlanMode 钩子 + GEMINI.md |
scripts/setup-codex-hook.sh | Codex CLI 设置 | 配置 Codex CLI 的 developer_instructions + 提示词 |
scripts/setup-opencode-plugin.sh | OpenCode 插件 | 注册插件 + 斜杠命令 |
scripts/check-status.sh | 状态检查 | 验证所有集成和配置 |
scripts/configure-remote.sh | 远程模式 | SSH / devcontainer / WSL 配置 |
scripts/review.sh | 代码审查 | 启动差异审查 UI |
# 仅安装 CLI(macOS / Linux / WSL)
bash scripts/install.sh
# 安装 CLI 并获取 Claude Code 插件命令
bash scripts/install.sh --with-plugin
# 安装 CLI + 配置 Gemini CLI
bash scripts/install.sh --with-gemini
# 安装 CLI + 配置 Codex CLI
bash scripts/install.sh --with-codex
# 安装 CLI + 注册 OpenCode 插件
bash scripts/install.sh --with-opencode
# 安装 CLI + 一次性配置所有 AI 工具集成
bash scripts/install.sh --all
功能说明:
https://plannotator.ai/install.sh 安装# 将钩子添加到 ~/.claude/settings.json
bash scripts/setup-hook.sh
# 预览将进行的更改(不实际写入)
bash scripts/setup-hook.sh --dry-run
功能说明:
ExitPlanMode 钩子合并到 ~/.claude/settings.json 中(先备份)在 Claude Code 中运行:
/plugin marketplace add backnotprop/plannotator
/plugin install plannotator@plannotator
# 重要:插件安装后请重启 Claude Code
当 Claude Code 退出计划模式时,通过钩子自动触发。
当你的代理完成计划时(Claude Code:按 Shift+Tab×2 进入计划模式),plannotator 会自动打开:
delete — 删除有风险或不必要的步骤insert — 添加缺失的步骤replace — 修正错误的方法comment — 阐明约束条件或验收标准# 审查所有未提交的更改
bash scripts/review.sh
# 审查特定的提交
bash scripts/review.sh HEAD~1
# 审查分支差异
bash scripts/review.sh main...HEAD
功能说明:
plannotator review UI# 交互式设置(SSH、devcontainer、WSL)
bash scripts/configure-remote.sh
# 查看当前配置
bash scripts/configure-remote.sh --show
# 直接设置端口
bash scripts/configure-remote.sh --port 9999
功能说明:
.zshrc、.bashrc、.profile)PLANNOTATOR_REMOTE=1 和 PLANNOTATOR_PORT 写入 shell 配置文件手动设置环境变量:
export PLANNOTATOR_REMOTE=1 # 不自动打开浏览器
export PLANNOTATOR_PORT=9999 # 用于转发的固定端口
| 变量 | 描述 |
|---|---|
PLANNOTATOR_REMOTE | 远程模式(不自动打开浏览器) |
PLANNOTATOR_PORT | 固定的本地/转发端口 |
PLANNOTATOR_BROWSER | 自定义浏览器路径/应用 |
PLANNOTATOR_SHARE_URL | 自定义分享门户 URL |
bash scripts/check-status.sh
检查以下所有项目:
~/.claude/settings.json 中的 Claude Code 钩子(或检测到插件)~/.gemini/settings.json 中的 Gemini CLI 钩子~/.codex/config.toml 中的 developer_instructionsopencode.json 中的 OpenCode 插件 + 斜杠命令# 配置 Gemini CLI(钩子 + GEMINI.md 说明)
bash scripts/setup-gemini-hook.sh
# 预览将进行的更改(不实际写入)
bash scripts/setup-gemini-hook.sh --dry-run
# 仅更新 settings.json 钩子(跳过 GEMINI.md)
bash scripts/setup-gemini-hook.sh --hook-only
# 仅更新 GEMINI.md(跳过 settings.json)
bash scripts/setup-gemini-hook.sh --md-only
功能说明:
ExitPlanMode 钩子合并到 ~/.gemini/settings.json 中(格式与 Claude Code 相同)~/.gemini/GEMINI.md设置后在 Gemini CLI 中的用法:
# 进入计划模式(退出时触发钩子)
gemini --approval-mode plan
# 手动计划审查(已验证格式)
python3 -c "
import json
plan = open('plan.md').read()
print(json.dumps({'tool_input': {'plan': plan, 'permission_mode': 'acceptEdits'}}))
" | plannotator > /tmp/plannotator_feedback.txt 2>&1 &
# 实现后的代码审查
plannotator review
注意: Gemini CLI 支持
gemini hooks migrate --from-claude来自动迁移现有的 Claude Code 钩子。
# 配置 Codex CLI(developer_instructions + 提示词文件)
bash scripts/setup-codex-hook.sh
# 预览将进行的更改(不实际写入)
bash scripts/setup-codex-hook.sh --dry-run
功能说明:
~/.codex/config.toml 中的 developer_instructions~/.codex/prompts/plannotator.md(使用 /prompts:plannotator 调用)设置后在 Codex CLI 中的用法:
# 使用 plannotator 代理提示词
/prompts:plannotator
# 手动计划审查(已验证格式)
python3 -c "
import json
plan = open('plan.md').read()
print(json.dumps({'tool_input': {'plan': plan, 'permission_mode': 'acceptEdits'}}))
" | plannotator > /tmp/plannotator_feedback.txt 2>&1 &
# 实现后的代码审查
plannotator review HEAD~1
注意:使用 heredoc/echo 的
plannotator plan -可能会失败,并显示Failed to parse hook event from stdin。请使用上述的 python3 JSON 格式。
随时将当前计划保存到 Obsidian 或 Bear Notes — 无需批准或拒绝。
注意: 笔记选项卡使用
POST /api/save-notes,该接口直接写入保险库文件系统(Obsidian)或调用bear://x-callback-url/create(Bear)。此端点仅在钩子模式下可用。
# 1. 安装 CLI + 一次性配置所有 AI 工具集成
bash scripts/install.sh --all
# 2. 验证一切正常
bash scripts/check-status.sh
# 3. 重启你的 AI 工具(Claude Code、Gemini CLI、OpenCode、Codex)
1. bash scripts/install.sh --with-plugin
└─ 安装 CLI + 显示插件安装命令
2. bash scripts/setup-hook.sh ← 如果使用插件则跳过此步
└─ 配置自动计划审查触发器
3. bash scripts/check-status.sh
└─ 确认一切就绪
4. [在计划模式下使用代理编码 → Shift+Tab×2]
└─ plannotator 自动打开
5. bash scripts/review.sh ← 代理完成编码后
└─ 打开可视化差异审查
1. bash scripts/install.sh
2. bash scripts/setup-gemini-hook.sh
3. gemini --approval-mode plan ← 在计划模式下工作
└─ 退出时触发 plannotator
1. bash scripts/install.sh
2. bash scripts/setup-codex-hook.sh
3. /prompts:plannotator ← 在 Codex 会话内部
# 自动化设置(推荐)
bash scripts/setup-opencode-plugin.sh
# 或手动添加到 opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@plannotator/opencode@latest"]
}
设置后,重启 OpenCode。可用的斜杠命令:
/plannotator-review — 为当前 git 差异打开代码审查 UI/plannotator-annotate <file.md> — 批注一个 markdown 文件submit_plan 工具会自动提供给代理用于提交计划。
将批准的计划自动保存到你的 Obsidian 保险库,包含 YAML 前置元数据和标签。
~/Documents/Obsidian/MyVaultobsidian.json 配置# 检查 Obsidian 安装(macOS)
ls /Applications/Obsidian.app
# 检查 Obsidian 配置是否存在(保险库检测依赖于此)
# macOS
cat ~/Library/Application\ Support/obsidian/obsidian.json
# Linux
cat ~/.config/obsidian/obsidian.json
# Windows
cat %APPDATA%/obsidian/obsidian.json
# 步骤 1:验证 Obsidian 已安装并至少有一个保险库
bash scripts/check-status.sh
# 步骤 2:触发一个计划审查(任何方法)
# Claude Code: Shift+Tab×2 → 计划模式 → 退出计划模式
# Gemini CLI: gemini --approval-mode plan
# OpenCode: 代理创建一个计划
# 步骤 3:在 plannotator UI 中:
# 1. 点击 ⚙️(设置齿轮图标)
# 2. 转到“保存”选项卡
# 3. 打开“Obsidian 集成”开关
# 4. 从下拉菜单中选择你的保险库(自动检测)
# - 如果未检测到保险库,则输入自定义路径
# 5. 设置文件夹名称(默认:“plannotator”)
# 步骤 4:批准一个计划以测试集成
# - 在 plannotator UI 中点击“批准”
# - 检查你的保险库中是否已保存文件
| 设置 | 描述 | 默认值 |
|---|---|---|
| 保险库 | Obsidian 保险库的路径 | 自动检测 |
| 文件夹 | 保险库中用于存储计划的子文件夹 | plannotator |
| 自定义路径 | 自动检测失败时的手动路径 | - |
文件以人类可读的名称和 YAML 前置元数据保存:
文件名: {标题} - {月} {日}, {年} {时}-{分}{上午/下午}.md
示例: User Authentication - Feb 22, 2026 10-45pm.md
---
created: 2026-02-22T22:45:30.000Z
source: plannotator
tags: [plannotator, project-name, typescript, ...]
---
[[Plannotator Plans]]
# 原始计划内容...
标签提取:
plannotator — 始终包含使用子文件夹在保险库内组织计划:
vault/plannotator/
├── approved/ ← 已批准的计划
├── denied/ ← 被拒绝的计划
└── 2026-02/ ← 月度归档
手动创建子文件夹(Obsidian 会自动检测它们):
mkdir -p ~/path/to/vault/plannotator/approved
mkdir -p ~/path/to/vault/plannotator/denied
mkdir -p ~/path/to/vault/plannotator/2026-02
或直接写入任何子文件夹:
cp ~/.plannotator/plans/<name>-approved.md ~/path/to/vault/plannotator/approved/
如果你更喜欢 Bear Notes 而不是 Obsidian:
bear://x-callback-url/create 保存open "bear://x-callback-url/create?title=Plannotator%20Check&text=Bear%20callback%20OK"
| 功能 | Obsidian | Bear |
|---|---|---|
| 存储 | 文件系统 | x-callback-url |
| 前置元数据 | YAML | 无(井号标签) |
| 平台 | macOS/Win/Linux | macOS/iOS |
保险库未检测到:
# 1. 检查 Obsidian 配置是否存在
ls ~/Library/Application\ Support/obsidian/obsidian.json # macOS
# 2. 如果缺失,请打开 Obsidian 并先创建一个保险库
open /Applications/Obsidian.app
# 3. 创建保险库后,重启 plannotator
计划未保存:
# 检查保险库文件夹的写入权限
ls -la ~/path/to/vault/plannotator/
# 检查浏览器控制台是否有错误(F12 → 控制台)
导出 → 笔记选项卡的保存按钮需要钩子模式:
review/annotate 模式下,/api/save-notes 端点不活动。正常的 Claude Code 钩子调用(ExitPlanMode 钩子)始终在钩子模式下运行。在自动化/无头浏览器中看不到设置:
Bear 导出不工作:
open "bear://x-callback-url/create?..." 在终端中能工作设置不持久化:
Obsidian 集成是可选的 — 即使没有它,计划仍然可以被审查和批准。
每周安装数
1
仓库
首次出现
1 天前
安全审计
安装于
mcpjam1
claude-code1
replit1
junie1
windsurf1
zencoder1
scripts/install.sh |
| CLI Install |
One-command install; --all sets up every AI tool |
scripts/setup-hook.sh | Claude Code Hook | Configure Claude Code ExitPlanMode hook |
scripts/setup-gemini-hook.sh | Gemini CLI Hook | Configure Gemini CLI ExitPlanMode hook + GEMINI.md |
scripts/setup-codex-hook.sh | Codex CLI Setup | Configure Codex CLI developer_instructions + prompt |
scripts/setup-opencode-plugin.sh | OpenCode Plugin | Register plugin + slash commands |
scripts/check-status.sh | Status Check | Verify all integrations and configuration |
scripts/configure-remote.sh | Remote Mode | SSH / devcontainer / WSL configuration |
scripts/review.sh | Code Review | Launch diff review UI |
# Install CLI only (macOS / Linux / WSL)
bash scripts/install.sh
# Install CLI and get Claude Code plugin commands
bash scripts/install.sh --with-plugin
# Install CLI + configure Gemini CLI
bash scripts/install.sh --with-gemini
# Install CLI + configure Codex CLI
bash scripts/install.sh --with-codex
# Install CLI + register OpenCode plugin
bash scripts/install.sh --with-opencode
# Install CLI + all AI tool integrations at once
bash scripts/install.sh --all
What it does:
https://plannotator.ai/install.sh# Add hook to ~/.claude/settings.json
bash scripts/setup-hook.sh
# Preview what would change (no writes)
bash scripts/setup-hook.sh --dry-run
What it does:
ExitPlanMode hook into ~/.claude/settings.json safely (backs up first)Run inside Claude Code:
/plugin marketplace add backnotprop/plannotator
/plugin install plannotator@plannotator
# IMPORTANT: Restart Claude Code after plugin install
Triggered automatically via hook when Claude Code exits plan mode.
When your agent finishes planning (Claude Code: Shift+Tab×2 to enter plan mode), plannotator opens automatically:
delete — remove risky or unnecessary stepinsert — add missing stepreplace — revise incorrect approachcomment — clarify constraints or acceptance criteria# Review all uncommitted changes
bash scripts/review.sh
# Review a specific commit
bash scripts/review.sh HEAD~1
# Review branch diff
bash scripts/review.sh main...HEAD
What it does:
plannotator review UI# Interactive setup (SSH, devcontainer, WSL)
bash scripts/configure-remote.sh
# View current configuration
bash scripts/configure-remote.sh --show
# Set port directly
bash scripts/configure-remote.sh --port 9999
What it does:
.zshrc, .bashrc, .profile)PLANNOTATOR_REMOTE=1 and PLANNOTATOR_PORT to shell profileManual environment variables:
export PLANNOTATOR_REMOTE=1 # No auto browser open
export PLANNOTATOR_PORT=9999 # Fixed port for forwarding
| Variable | Description |
|---|---|
PLANNOTATOR_REMOTE | Remote mode (no auto browser open) |
PLANNOTATOR_PORT | Fixed local/forwarded port |
PLANNOTATOR_BROWSER | Custom browser path/app |
PLANNOTATOR_SHARE_URL | Custom share portal URL |
bash scripts/check-status.sh
Checks all of:
~/.claude/settings.json (or plugin detected)~/.gemini/settings.json~/.codex/config.toml developer_instructionsopencode.json + slash commands# Configure Gemini CLI (hook + GEMINI.md instructions)
bash scripts/setup-gemini-hook.sh
# Preview what would change (no writes)
bash scripts/setup-gemini-hook.sh --dry-run
# Only update settings.json hook (skip GEMINI.md)
bash scripts/setup-gemini-hook.sh --hook-only
# Only update GEMINI.md (skip settings.json)
bash scripts/setup-gemini-hook.sh --md-only
What it does:
ExitPlanMode hook into ~/.gemini/settings.json (same format as Claude Code)~/.gemini/GEMINI.mdUsage in Gemini CLI after setup:
# Enter planning mode (hook fires when you exit)
gemini --approval-mode plan
# Manual plan review (validated format)
python3 -c "
import json
plan = open('plan.md').read()
print(json.dumps({'tool_input': {'plan': plan, 'permission_mode': 'acceptEdits'}}))
" | plannotator > /tmp/plannotator_feedback.txt 2>&1 &
# Code review after implementation
plannotator review
Note: Gemini CLI supports
gemini hooks migrate --from-claudeto auto-migrate existing Claude Code hooks.
# Configure Codex CLI (developer_instructions + prompt file)
bash scripts/setup-codex-hook.sh
# Preview what would change (no writes)
bash scripts/setup-codex-hook.sh --dry-run
What it does:
developer_instructions in ~/.codex/config.toml~/.codex/prompts/plannotator.md (invoke with /prompts:plannotator)Usage in Codex CLI after setup:
# Use the plannotator agent prompt
/prompts:plannotator
# Manual plan review (validated format)
python3 -c "
import json
plan = open('plan.md').read()
print(json.dumps({'tool_input': {'plan': plan, 'permission_mode': 'acceptEdits'}}))
" | plannotator > /tmp/plannotator_feedback.txt 2>&1 &
# Code review after implementation
plannotator review HEAD~1
Note:
plannotator plan -with heredoc/echo can fail withFailed to parse hook event from stdin. Use the python3 JSON format above.
Save the current plan to Obsidian or Bear Notes at any time — without approving or denying.
Note: The Notes tab uses
POST /api/save-noteswhich writes directly to the vault filesystem (Obsidian) or callsbear://x-callback-url/create(Bear). This endpoint is only available in hook mode.
# 1. Install CLI + configure all AI tool integrations at once
bash scripts/install.sh --all
# 2. Verify everything
bash scripts/check-status.sh
# 3. Restart your AI tools (Claude Code, Gemini CLI, OpenCode, Codex)
1. bash scripts/install.sh --with-plugin
└─ Installs CLI + shows plugin install commands
2. bash scripts/setup-hook.sh ← skip if using plugin
└─ Configures automatic plan review trigger
3. bash scripts/check-status.sh
└─ Confirm everything is ready
4. [Code with agent in plan mode → Shift+Tab×2]
└─ plannotator opens automatically
5. bash scripts/review.sh ← after agent finishes coding
└─ Opens visual diff review
1. bash scripts/install.sh
2. bash scripts/setup-gemini-hook.sh
3. gemini --approval-mode plan ← work in plan mode
└─ plannotator fires on exit
1. bash scripts/install.sh
2. bash scripts/setup-codex-hook.sh
3. /prompts:plannotator ← inside Codex session
# Automated (recommended)
bash scripts/setup-opencode-plugin.sh
# Or add manually to opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@plannotator/opencode@latest"]
}
After setup, restart OpenCode. Available slash commands:
/plannotator-review — open code review UI for current git diff/plannotator-annotate <file.md> — annotate a markdown fileThe submit_plan tool is automatically available to the agent for plan submission.
Auto-save approved plans to your Obsidian vault with YAML frontmatter and tags.
~/Documents/Obsidian/MyVaultobsidian.json config after first vault creation# Check Obsidian installation (macOS)
ls /Applications/Obsidian.app
# Check Obsidian config exists (vault detection depends on this)
# macOS
cat ~/Library/Application\ Support/obsidian/obsidian.json
# Linux
cat ~/.config/obsidian/obsidian.json
# Windows
cat %APPDATA%/obsidian/obsidian.json
# Step 1: Verify Obsidian is installed and has at least one vault
bash scripts/check-status.sh
# Step 2: Trigger a plan review (any method)
# Claude Code: Shift+Tab×2 → plan mode → exit plan mode
# Gemini CLI: gemini --approval-mode plan
# OpenCode: Agent creates a plan
# Step 3: In the plannotator UI:
# 1. Click ⚙️ (Settings gear icon)
# 2. Go to "Saving" tab
# 3. Toggle ON "Obsidian Integration"
# 4. Select your vault from dropdown (auto-detected)
# - Or enter custom path if vault not detected
# 5. Set folder name (default: "plannotator")
# Step 4: Approve a plan to test the integration
# - Click "Approve" in the plannotator UI
# - Check your vault for the saved file
| Setting | Description | Default |
|---|---|---|
| Vault | Path to Obsidian vault | Auto-detected |
| Folder | Subfolder in vault for plans | plannotator |
| Custom Path | Manual path if auto-detect fails | - |
Files are saved with human-readable names and YAML frontmatter:
Filename: {Title} - {Month} {Day}, {Year} {Hour}-{Minute}{am/pm}.md
Example: User Authentication - Feb 22, 2026 10-45pm.md
---
created: 2026-02-22T22:45:30.000Z
source: plannotator
tags: [plannotator, project-name, typescript, ...]
---
[[Plannotator Plans]]
# Original plan content...
Tag extraction:
plannotator — always includedOrganize plans within the vault using subfolders:
vault/plannotator/
├── approved/ ← approved plans
├── denied/ ← rejected plans
└── 2026-02/ ← monthly archive
Create subfolders manually (Obsidian detects them automatically):
mkdir -p ~/path/to/vault/plannotator/approved
mkdir -p ~/path/to/vault/plannotator/denied
mkdir -p ~/path/to/vault/plannotator/2026-02
Or write directly to any subfolder:
cp ~/.plannotator/plans/<name>-approved.md ~/path/to/vault/plannotator/approved/
If you prefer Bear Notes over Obsidian:
bear://x-callback-url/createopen "bear://x-callback-url/create?title=Plannotator%20Check&text=Bear%20callback%20OK"
| Feature | Obsidian | Bear |
|---|---|---|
| Storage | File system | x-callback-url |
| Frontmatter | YAML | None (hashtags) |
| Platforms | macOS/Win/Linux | macOS/iOS |
Vault not detected:
# 1. Check Obsidian config exists
ls ~/Library/Application\ Support/obsidian/obsidian.json # macOS
# 2. If missing, open Obsidian and create a vault first
open /Applications/Obsidian.app
# 3. After creating vault, restart plannotator
Plans not saving:
# Check write permissions on vault folder
ls -la ~/path/to/vault/plannotator/
# Check browser console for errors (F12 → Console)
Export → Notes tab Save buttons require hook mode:
review/annotate modes, the /api/save-notes endpoint is not active. Normal Claude Code hook invocation (ExitPlanMode hook) always runs in hook mode.Settings not visible in automated/headless browsers:
Bear export not working:
open "bear://x-callback-url/create?..." works from terminalSettings not persisting:
Obsidian integration is optional — plans can still be reviewed and approved without it.
Weekly Installs
1
Repository
First Seen
1 day ago
Security Audits
Installed on
mcpjam1
claude-code1
replit1
junie1
windsurf1
zencoder1
agent-browser 浏览器自动化工具 - Vercel Labs 命令行网页操作与测试
150,000 周安装
TypeScript/JavaScript 开发技能 - 掌握 Metabase 开源项目开发流程与工具
206 周安装
Upstash Redis SDK 完整指南 - Redis-JS 安装、使用与性能优化教程
206 周安装
Tavily API 网络搜索技能 - 实现网页爬取、内容提取和智能研究功能
206 周安装
企业合规助手:GDPR、CCPA等隐私法规合规指南与数据处理协议审查清单
206 周安装
DeepSpeed 开发助手:官方文档指南、API 使用与性能优化教程
207 周安装
utrace-analysis - GitHub API 代码分析与追踪工具 | 开源项目监控与调试
1 周安装