watchers

Poll RSS feeds, JSON APIs, and GitHub repositories with watermark-based deduplication.

Updated Aug 22, 2026
One-click install
npx skills add https://github.com/vivekgoquest/hermes-agent-stable --skill watchers-vivekgoquest
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: watchers
Source: https://github.com/vivekgoquest/hermes-agent-stable/tree/main/optional-skills/devops/watchers
Command: npx skills add https://github.com/vivekgoquest/hermes-agent-stable --skill watchers-vivekgoquest

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Monitoring external sources like RSS feeds, GitHub repos, or JSON APIs for new items requires writing polling logic and tracking what has already been seen. This Skill provides ready-made scripts that fetch data, deduplicate against a persisted watermark, and print only new items, so cron jobs or chat sessions can react to changes without replaying old content. ## Core Features & Use Cases - RSS/Atom Watching: Poll any RSS 2.0 or Atom feed and emit only new entries, deduplicated by guid or id. - GitHub Monitoring: Watch issues, pull requests, releases, or commits for any repository, with optional GITHUB_TOKEN authentication to avoid rate limits. - Generic JSON API Polling: Poll any JSON endpoint returning a list of objects, with configurable ID field and dotted items-path. - Use Case: Schedule a cron job every 15 minutes to run watch_rss.py against the Hacker News feed; when new headlines appear, the agent summarizes and delivers them, and stays silent when nothing is new. ## Quick Start Ask the agent to watch the Hacker News RSS feed every 15 minutes and notify you only when new stories appear.

Frequently Asked Questions about watchers

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I monitor an RSS feed for new entries with a script?▼

Run watch_rss.py with a --name and the feed --url. The first run records a baseline silently; subsequent runs print only entries whose guid or id was not previously seen, making it safe to schedule via cron.

How to get notified about new GitHub issues or releases?▼

Use watch_github.py with --repo owner/name and --scope set to issues, pulls, releases, or commits. Set GITHUB_TOKEN in the Hermes .env file to avoid the 60 requests per hour anonymous rate limit.

Can I poll any JSON API for new items?▼

Yes, watch_http_json.py polls any endpoint returning a list of objects. Configure --id-field for the dedup key and --items-path as a dotted path when the list is nested inside the response object.

Why did the watcher print nothing on its first run?▼

The first run records a baseline of all current IDs and intentionally emits nothing, so existing feed content is never replayed. To force a replay, delete the state file in $HERMES_HOME/watcher-state/.

Where does the watcher store its deduplication state?▼

State lives in $HERMES_HOME/watcher-state/<name>.json, or in the directory set by WATCHER_STATE_DIR. Each file holds a bounded set of up to 500 seen IDs, written atomically via a temp file and rename.

What are the limitations of watermark-based polling?▼

The watermark caps at 500 stored IDs, so very high-churn feeds may need a raised limit. Items without an ID field are skipped, and fetch errors exit non-zero without emitting partial results.