{
 "batch": "read1-022",
 "plugins": [
  {
   "pr": 0,
   "name": "done-bell",
   "does": "Records turn-end and approval events via hooks and rings an OS notification/beep plus a Hermes Desktop status chip and pane when a busy session goes idle or needs approval.",
   "useful": 3,
   "reliable": 3,
   "polish": 3,
   "creative": 2,
   "beyond": 4,
   "total": 19,
   "best": "Small, readable hook set with a Desktop chip and pane, no keys, approval hooks deliberately drop command text, and 9 pytest cases.",
   "worst": "The README's 'when away' notification has no focus check in desktop/plugin.js, config_schema in plugin.yaml is never read, and docs/catalog.yaml still has a REPLACE_WITH_40_CHAR_COMMIT placeholder.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 0,
   "name": "homeassistant",
   "does": "Adds a Home Assistant gateway platform that relays WebSocket state_changed events to the agent, plus four REST tools to list, read and control devices.",
   "useful": 4,
   "reliable": 5,
   "polish": 4,
   "creative": 3,
   "beyond": 5,
   "total": 26,
   "best": "Real gateway platform registered via ctx.register_platform, token read only from Hermes's secret store, timeouts on every call, code-execution service domains blocked, and about 176 tests.",
   "worst": "ha_call_service can unlock locks or change alarm states with no confirmation step of its own, and the entity allow/deny lists are opt-in.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 153091,
   "name": "pokeit",
   "does": "Connects Hermes to the hosted PokeIt MCP server for live Pokemon GO data and adds a Desktop Radar map, chip, catch/scan cards and a watch backed by a read-only local proxy.",
   "useful": 3,
   "reliable": 4,
   "polish": 5,
   "creative": 4,
   "beyond": 4,
   "total": 24,
   "best": "Product-grade Desktop UI with a screenshot, a hardened read-only proxy (fixed hosts, timeouts, size caps, CSP), about 60 tests and CI, and it needs no key.",
   "worst": "Every agent tool lives on a remote server that is not in the repo and can change after install, so what the agent can do cannot be audited from the code, and the audience is a niche.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 149186,
   "name": "money-magnet",
   "does": "Local JSON income/expense/budget tracker with crypto portfolio P&L and a CoinGecko-vs-Binance price-gap 'arbitrage' check, all read-only.",
   "useful": 2,
   "reliable": 2,
   "polish": 2,
   "creative": 1,
   "beyond": 2,
   "total": 11,
   "best": "It never trades or needs keys; it only reads public prices with 10s timeouts.",
   "worst": "No tests, a 28-line README, the promised 'budget alerts' only report status, the 'arbitrage' just compares an aggregate price with one exchange, and bad /money add input raises an uncaught ValueError.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 149427,
   "name": "cron-consolidator",
   "does": "Reads a profile's cron jobs, usage audit and execution DB read-only and prints a plan of merge candidates, same-minute collisions, failure streaks and unconfirmed deliveries, without model calls.",
   "useful": 3,
   "reliable": 4,
   "polish": 3,
   "creative": 3,
   "beyond": 3,
   "total": 19,
   "best": "Strictly read-only (DB opened read-only, no --apply), clean code, and 29 test cases that check it writes nothing.",
   "worst": "overlap() requires every cron field to overlap, ignoring cron's day-of-month OR day-of-week rule, so some collisions can be wrong; it has no UI, and a stray CLAUDE.md holds the developer's personal notes.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 149503,
   "name": "elcaro",
   "does": "Runtime prompt-injection defense that scans every tool result through a transform_tool_result hook, quarantines or flags hits, taints the session to gate credential, network and destructive calls behind approval, and keeps a hash-chained verdict log.",
   "useful": 4,
   "reliable": 4,
   "polish": 5,
   "creative": 4,
   "beyond": 5,
   "total": 27,
   "best": "Changes how Hermes itself handles untrusted content: hooks on every tool result plus pre_tool_call taint gating, secrets from Hermes's secret store, LLM passes off by default, a Desktop pane/chip and 30 plugin tests.",
   "worst": "After the log's first 512 KiB rotation, verify_chain will likely report it as TAMPERED, the rules are regexes that are easy to evade, and a configured api_url answering 'not quarantined' skips the local scan.",
   "standout": true,
   "blocked": null
  },
  {
   "pr": 153918,
   "name": "contractguard",
   "does": "Checks an HTTP API against its OpenAPI spec inside Hermes: offline request preflight, live GET/HEAD to loopback only, drift diff against an approved baseline, and approval-gated baseline promotion with redacted SQLite run records.",
   "useful": 3,
   "reliable": 4,
   "polish": 4,
   "creative": 3,
   "beyond": 3,
   "total": 20,
   "best": "Carefully scoped safety design: loopback-only GET/HEAD with no redirects, auth headers rejected and redacted, promotion behind Hermes's approval hook with a SHA-256 re-check, plus ADRs, SECURITY.md and CI.",
   "worst": "The loopback check compares hostnames, not resolved IPs, and there are no tests for the diff rules, promotion or live-transport safety checks the README says are tested.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 154009,
   "name": "hermes-make-it-smart",
   "does": "Indexes every Hermes profile's sessions read-only, classifies them with DeepSeek plus rules, and renames or tags sessions through cellar_* tools and a Desktop catalogue page.",
   "useful": 3,
   "reliable": 2,
   "polish": 3,
   "creative": 3,
   "beyond": 4,
   "total": 19,
   "best": "A real 3,600-line Desktop page plus an on_session_end index that tackles a genuine pain: hundreds of untitled Hermes sessions.",
   "worst": "It reads the DeepSeek token straight from ~/.hermes/auth.json instead of the secret store, and cellar_rename/cellar_tag overwrite titles on the model's confirm=true with no human approval, unlike the README's 'only when you press Rename'.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 153405,
   "name": "operate-hermes-plugin",
   "does": "A thin REST wrapper around the commercial operate.center gig marketplace that lets the agent list, sell, hire and fulfil paid gigs, release escrow and download deliveries, with a 15-minute unattended automation.",
   "useful": 2,
   "reliable": 1,
   "polish": 2,
   "creative": 2,
   "beyond": 3,
   "total": 13,
   "best": "Covers the marketplace's full buy/sell loop, and the API key comes from Hermes's secret store first.",
   "worst": "It moves money (hire_gig, approve releases escrow) with no approval gate in the plugin, can upload any local file, and /operate demo writes a fake +$68 that /operate status then shows as Net Earned; there are no tests.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 153741,
   "name": "demand-radar",
   "does": "Turns an idea into queries against Stack Exchange, HN Algolia and GitHub issues, keeps posts asking for or complaining about it, and returns a rule-based GO/NARROW/KILL/NO SIGNAL/UNKNOWN verdict with an HTML report.",
   "useful": 3,
   "reliable": 4,
   "polish": 3,
   "creative": 3,
   "beyond": 3,
   "total": 19,
   "best": "Deterministic, honest verdicts from official APIs, an optional GitHub token from the secret store, escaped HTML reports and 19 offline tests.",
   "worst": "Keyword matching on three public sources is a shallow demand signal, and there is no UI beyond the /radar command and the report.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 152088,
   "name": "meeting-copilot-live",
   "does": "Hermes Desktop pane plus a dashboard API that captures a consented meeting, transcribes it (local Whisper, Meta cloud or Meetily), searches a chosen project folder and returns a cited answer to a question you trigger.",
   "useful": 4,
   "reliable": 3,
   "polish": 4,
   "creative": 4,
   "beyond": 4,
   "total": 23,
   "best": "Careful secret handling (allowlisted names through scoped Hermes secrets, keys passed to workers over stdin), consent gating, and a full Desktop pane with native macOS capture and an overlay.",
   "worst": "No tests ship ('runtime-only source release'), and the README itself calls it an early preview with unverified live answers and Windows path; the Meta ASR endpoint could not be verified.",
   "standout": false,
   "blocked": null
  },
  {
   "pr": 151537,
   "name": "eyes",
   "does": "A transform_tool_result hook that finds media files a tool just wrote, measures them with ffprobe/ffmpeg, and appends a note with warnings when the output is black, frozen, empty or silent.",
   "useful": 3,
   "reliable": 3,
   "polish": 3,
   "creative": 5,
   "beyond": 4,
   "total": 22,
   "best": "A fresh idea: the agent gets measured feedback on the images, video and audio it just made, through one small, readable, fail-open hook with no network.",
   "worst": "Only 5 tests (4 need ffmpeg), the README example relies on a probe.py that isn't included, and the path regex misses relative paths and paths with spaces.",
   "standout": false,
   "blocked": null
  }
 ]
}