Agent skill · software engineering · nousresearch

watchers

Poll RSS, JSON APIs, and GitHub with watermark dedup.

Why this skill is useful

Adds three executable scripts for monitoring RSS feeds, GitHub repositories, and JSON APIs, which provide new capabilities for automation and notification that the AI cannot generate on its own.

What it needs

Requires python installed locally. About 3k tokens when loaded. Last updated 2026-08-07. 226,679 stars on the source repository.

What this skill does

Watchers Poll external sources on an interval and react only to new items. Three ready-made scripts plus a shared watermark helper; wire them into a cron job (or run them ad-hoc from the terminal). When to Use User wants to watch an RSS/Atom feed and be notified of new entries User wants to watch a GitHub repo's issues / pulls / releases / commits User wants to poll an arbitrary JSON endpoint and get notified on new items User asks for "a watcher for X" or "notify me when X changes" Mental model A watcher is just a script that: 1. Fetches data from the external source 2. Compares against a watermark file of previously-seen IDs 3. Writes the new watermark back 4. Prints new items to stdout (or nothing on no-change) The scripts below handle all three. The agent runs them via the terminal tool — from a cron job, a webhook, or an interactive chat — and reports what's new. Ready-made scripts All three live in $HERMESHOME/skills/devops/watchers/scripts/ once the skill is installed. Each reads WATCHERSTATEDIR (defaults to $HERMESHOME/watcher-state/) for its state file, keyed by the --name argument. Script What it watches Dedup key --- --- --- watchrss.py RSS 2.0 or Atom feed URL <guid> / <id> watchhttpjson.py Any JSON endpoint returning a list of objects Configurable id field watchgithub.py GitHub issues / pulls / releases / commits for a repo id / sha All three: First run records a baseline — never replays existing feed Watermark is a bounded ID set (max 500) to cap memory Output format: ## <title>\n<url>\n\n<optional body> per item Empty stdout on no-new — the caller treats that as silent Non-zero exit on fetch errors Usage Run a watcher directly from the terminal tool: Watch a GitHub repo (set GITHUBTOKEN in ${HERMESHOME:-~/.hermes}/.env to avoid the 60 req/hr anonymous rate limit): Poll an arbitrary JSON API: Wiring into cron Ask the agent to schedule a cron job with a prompt like: Every 15 minutes, run watchrss.py --name hn --url https://news.ycombinator.com/rss. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills nousresearch/watchers

View the source on GitHub

Browse the @skills marketplace