← ClaudeAtlas

feed-watcherlisted

Poll RSS / Atom / JSON-Feed / GitHub-releases sources from the source-registry and return items new since last poll. Dedup state is persisted via seen-tracker under `<repo>/.state/<agent_name>/seen.jsonl`, keyed by the calling agent — feed-watcher holds no state of its own. Composes on source-registry (which sources to poll) and source-fetcher (one-off URL fetch for HTML sources without native feeds). Use when a Category 2 scheduled agent starts its run (its first action, to learn what changed since the last run) and when the user wants a one-shot "what's new in the last N days from sources tagged X" lookup.
themarmack/research-bot · ★ 0 · AI & Automation · score 68
Install: claude install-skill themarmack/research-bot
# feed-watcher Polls a configurable set of sources from `source-registry` and returns the items that are new since this skill's last run. Every Category 2 scheduled agent (weekly-intelligence-digest, voices-watcher, monthly-copilot-changelog, etc.) calls this at the top of its run to know what changed. ## When to use - A scheduled agent's first action of the run — fetch new items across its source list. - A user wants a one-shot "what's new in the last N days from sources tagged X" lookup. ## When NOT to use - For arbitrary URLs not in `source-registry` — use `source-fetcher` directly. - For sources without published feeds AND without a stable HTML page — feed-watcher will fail; consider a custom skill. ## How it works 1. **Get the source list** — call `source-registry` with the caller's filter (topic_tags, credibility tier, or an explicit source-id list). Default if nothing specified: every source where `verified: true`. 2. **Per source, poll**: - `type: rss | atom | json-feed`: fetch the feed URL via `source-fetcher` (which runs the result through `prompt-injection-guard`). Parse items. - `type: github-releases`: fetch `https://api.github.com/repos/{owner}/{repo}/releases` via `source-fetcher`. Parse JSON. - `type: html`: fetch the index page via `source-fetcher`. Heuristically extract item titles + links from the page (look for `<article>`, `<li class*="post">`, dated headings, etc.). Mark items with a warning that they came from HTML scrape, not a feed.