| name | [REPLACE: SKILL_NAME] |
| description | Digest of the most interesting new posts on [REPLACE: TOPIC] from RSS feeds and the open web |
${var} — Optional. Pass a different topic to override the default. If empty, digests [REPLACE: TOPIC].
Today is ${today}. Build a digest of the [REPLACE: MAX_ITEMS] most interesting new posts on [REPLACE: TOPIC].
Steps
-
Read sources — pull the last 24h of entries from each feed:
[REPLACE: FEED_URLS]
(Comma- or newline-separated list of RSS/Atom URLs.)
Use WebFetch to retrieve each feed and parse the entries. If a feed 404s or returns malformed XML, log a single warning line and skip that feed for this run.
-
Augment with web search — run a WebSearch for [REPLACE: TOPIC] latest and pick up to 5 fresh links published in the last 24h that aren't already in the feed results.
-
Score and rank — for each candidate, score on:
- Recency — within the last 24h gets full marks.
- Source weight — feeds in the configured list outrank generic search results.
- Specificity — items mentioning concrete numbers, code, or named systems beat opinion pieces.
Drop anything obviously off-topic (the ${var} or [REPLACE: TOPIC] keyword should appear somewhere in title or summary).
-
Pick the top [REPLACE: MAX_ITEMS] — write articles/[REPLACE: SKILL_NAME]-${today}.md with one entry each:
### [Title](url)
*[Source · published date]*
2-3 sentences distilling the takeaway. No filler.
-
Notify via ./notify with:
*[REPLACE: TOPIC] digest — ${today}*
[N] picks. Top item: [shortened title].
Full digest: https://github.com/${GITHUB_REPOSITORY}/blob/main/articles/[REPLACE: SKILL_NAME]-${today}.md
-
Log — append to memory/logs/${today}.md:
## [REPLACE: SKILL_NAME]
- **Sources scanned**: N feeds + 1 web search
- **Items picked**: N (of M candidates)
- **Top source**: domain
- **Status**: DIGEST_OK | DIGEST_QUIET (no items) | DIGEST_DEGRADED (some feeds failed)
Sandbox note
WebFetch and WebSearch are built-in Claude tools that bypass the GitHub Actions sandbox network gate. Use those for every external read in this skill — curl will frequently fail.
Constraints
- Never repeat. Track which item URLs went out via
memory/topics/[REPLACE: SKILL_NAME]-seen.txt (append-only). Skip anything that's already in there.
- No filler. If fewer than
[REPLACE: MAX_ITEMS] items meet the bar, send fewer items — never pad with low-signal content.
- Quote, don't paraphrase the news. Say "Anthropic released X" not "AI labs are releasing things." Specificity beats hand-waving.