{"adoption": {"forks": 600, "observed_at": "2026-08-28T04:10:12.271145+00:00", "stars": 8062}, "canonical_url": "https://ross.abutalabs.com/products/plannotator", "card": {"archived": false, "artifact_type": "application", "description": "Annotate and review coding agent plans and code diffs visually, share with your team, send feedback to agents with one click.", "domain": ["developer-tools", "large-language-models", "version-control"], "enriched": true, "function": ["code-review", "developer-tools", "chat-interface", "webhook", "plugin-system"], "health_score": 100, "homepage": "https://plannotator.ai", "language": "TypeScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["backnotprop/plannotator"], "name": "backnotprop/plannotator", "platform": ["windows", "browser", "cli", "cross-platform"], "pushed_at": "2026-08-26T21:53:28+00:00", "repo": "backnotprop/plannotator", "stars": 8062, "tags": ["ai-coding-agents", "plan-review", "annotation", "claude-code", "codex", "diff-review", "human-in-the-loop", "agent-feedback", "ai-agents", "automation", "macos", "linux"], "topics": ["claude-code", "opencode", "obsidian", "pi-mono", "plan-mode", "codex", "agents", "code-review", "skills"], "urls": [], "use_cases": ["annotate AI agent plans before implementation", "review code diffs and pull requests from coding agents", "send feedback to claude code with one click", "review agent-written code with a diff viewer", "share annotated plans with my team", "annotate markdown specs and ADRs in the browser", "review github pull requests with inline comments"], "what_it_is": "Plannotator is a local, browser-based review tool for AI coding agents like Claude Code, Codex, and Gemini CLI. It hooks into the agent's plan and code steps so you can visually annotate plans, specs, markdown, HTML, and diffs, then send structured feedback back to the agent with one click.", "when_to_avoid": ["you don't use AI coding agents and just need a general code review tool", "you need a fully hosted/collaborative review platform rather than a local browser tool", "your agent doesn't support hooks or slash commands"], "when_to_choose": ["you use AI coding agents (Claude Code, Codex, Copilot CLI, Gemini CLI, OpenCode, etc.) and want human review of plans and diffs", "you want a local-first review surface with no telemetry", "you need structured feedback that agents can act on automatically", "you want plan version history and diff views across agent iterations"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/plannotator", "repo": "backnotprop/plannotator", "role": "main", "score": 78}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:12.271145+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:31:22.510847+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1e9bc76f93b7a7229a6c7d36e368f49e6a81db59efc1a9d2f40e38414d352c", "fetched_at": "2026-08-28T04:10:12.271145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/backnotprop/plannotator"}, {"content_hash": "e5acada83999dd48d5c418ba8d56641ed891a1a8179ad123aca6a41ba22250bd", "fetched_at": "2026-08-29T08:29:25.473469+00:00", "kind": "homepage", "missing": false, "url": "https://plannotator.ai"}, {"content_hash": "756c64ecd7b2bf4e0f9a3eab4c4a33d216d1e64cf76ef263eb9b27f29ad7b31b", "fetched_at": "2026-08-29T08:29:25.483049+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/installation"}, {"content_hash": "a108d9d046f13fd23a0ccc7399dc0c4ff2e60e981f74ab83a49dfbd289a654ef", "fetched_at": "2026-08-29T08:29:25.485554+00:00", "kind": "site_page", "missing": false, "url": "https://docs.plannotator.ai/open-source/start/quickstart"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 17, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 249, "days_push": 7, "days_rel": 9, "gap_med": 1.0, "n_releases_24m": 147}, "score": 78, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}