rss-feed-reader — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited rss-feed-reader (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill when a script needs to read a feed and you want one normalized shape across both RSS 2.0 and Atom, with no third-party dependency. It does a single ElementTree pass and pulls title, link, id, published, and summary from either format, so downstream code (dedup, digest, alert) never has to branch on feed type.
feedparser.User input:
Read https://example.com/feed.xml and print each post title and link.Output:
# Copy assets/feed.py into your project, then:
from urllib.request import urlopen
from feed import parse_feed
with urlopen("https://example.com/feed.xml", timeout=20) as r:
for item in parse_feed(r.read()):
print(item["title"], "->", item["link"])Every item is a dict with the same keys whether the feed is RSS or Atom, so dedup by id and sort by published work without special-casing.
xml.etree.ElementTree; iterate item (RSS) and {atom}entry (Atom).guid/atom id to the link so every item has a stable identity for dedup.Reference: assets/feed.py.
Distilled from the author's news-aggregation projects. v1.0.0. See also: [[gmail-imap-digest]], [[sqlite-state]], [[pipeline-orchestrator]].
→ Build the full runnable bot with Trawlkit.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.