← All skills
news-digest
92 / 100 · Low risk
Fine to try. Some of what it can do is expected: a security skill usually runs scanners and checks websites.
By OpenHands/extensions (GitHub) · security · 182 stars · scanned at commit b98ac06
Create an automation that reads a list of public RSS and Atom feeds on a schedule - daily by default - keeps what is new and matches the configured topics, and has an agent write a short digest of it. It needs no credentials: the feeds are public URLs and, on a local Agent Canvas, the conversation is started with no secrets and no MCP servers.
Works with any agent that supports SKILL.md skills.
What this skill can do
Connects to the internet
This is disclosed by the author in the skill's SKILL.md or README. Expected for a security skill.
Found in 21 places.
Show 17 more
- skills/news-digest/SKILL.md, line 219
curl -s -X POST "${OPENHANDS_HOST}/api/automation/v1/{id}/dispatch" \ - skills/news-digest/scripts/main.py, line 42
import urllib.request - skills/news-digest/scripts/main.py, line 248
req = urllib.request.Request(url, headers={"X-Session-API-Key": key}) - skills/news-digest/scripts/main.py, line 249
with urllib.request.urlopen(req) as r: - skills/news-digest/scripts/main.py, line 268
req = urllib.request.Request( - skills/news-digest/scripts/main.py, line 277
urllib.request.urlopen(req) - skills/news-digest/scripts/main.py, line 294
req = urllib.request.Request( - skills/news-digest/scripts/main.py, line 299
with urllib.request.urlopen(req) as r: - skills/news-digest/scripts/main.py, line 308
req = urllib.request.Request( - skills/news-digest/scripts/main.py, line 317
with urllib.request.urlopen(req) as r: - skills/news-digest/scripts/main.py, line 545
req = urllib.request.Request( - skills/news-digest/scripts/main.py, line 552
with urllib.request.urlopen(req, timeout=FEED_TIMEOUT) as response: - skills/news-digest/scripts/main.py, line 700
req = urllib.request.Request(url, data=data, headers=headers, method=method) - skills/news-digest/scripts/main.py, line 702
with urllib.request.urlopen(req) as r: - skills/news-digest/scripts/main.py, line 711
req = urllib.request.Request( - skills/news-digest/scripts/main.py, line 715
with urllib.request.urlopen(req) as r: - skills/news-digest/scripts/main.py, line 767
req = urllib.request.Request(
and 1 more places
Runs commands on your computer
The author does not mention this. Expected for a security skill.
Found in 5 places.
Show 2 more
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'news-digest' ] || [ -L ~/.agents/skills/'news-digest' ]; then echo 'A skill folder named news-digest already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/OpenHands/extensions' "$d" && git -C "$d" checkout --quiet 'b98ac0671a51cc91bab3609bf4d334c7c832dd98' -- 'skills/news-digest' && mkdir -p ~/.agents/skills && cp -R "$d"/'skills/news-digest' ~/.agents/skills/'news-digest' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'news-digest' ~/.claude/skills/'news-digest' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for OpenHands/extensions shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/OpenHands/extensions/)
Score history
| Date | Version | Score |
|---|
| 2026-11-12 | b98ac06 | 92 |