Agentic news digest
Skill Yesterday-AI/skills/plugins/personal-agent/skills/agentic-news-digest
Yesterday's PUBLIC plugin catalog for Claude Code and Cursor
npx -y skills add Yesterday-AI/skills --skill agentic-news-digestAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
End-to-end skill for curated team news digests. Covers the full pipeline: team inbox (manual submissions & co-authored drafts), source aggregation (RSS, Twitter, GitHub, web search), research & fact-checking, relevance scoring, article formatting (5 templates), and scheduled delivery to Slack/Discord/WhatsApp. Handles the critical handoff between conversational sessions (where links are received) and isolated cron sessions (where digests are built).
SKILL.md
13.0 KB, as published. Nobody here has run it
Agentic News Digest π°
Turn information overload into a curated knowledge stream. This skill enables an agent to act as a news curator for a team -- collecting tips from conversations, researching sources, fact-checking claims, scoring relevance, and delivering formatted digests.
When to Use
- Running a Daily News Digest for a team channel
- Publishing Breaking News about significant industry events
- Announcing new skills, features, or milestones internally
- Creating a Weekly Recap of what happened
- Setting up a Tech Radar to track specific trends
- A team member shares a link and says "put this in the next digest"
Setup
On first activation, create memory/news_digest_config.json:
{
"audience": "Team name or description",
"goals": ["What the digest should achieve"],
"detail_level": "Brief | Balanced | Deep-Dive",
"sources": {
"external": ["RSS URLs", "Twitter accounts", "blogs"],
"internal": ["GitHub org/repos", "internal docs"]
},
"channel": "Channel ID for delivery",
"schedule": "HH:MM Timezone",
"custom_topics": []
}
The Inbox Problem: Why This Section Exists
Agents often receive news tips in conversational sessions (DMs, group chats) but publish digests from isolated cron sessions. These are separate processes with no shared memory.
If you only "remember" a link in conversation, the cron job will never see it.
The inbox is a file-based handoff mechanism that solves this. It is the ONLY reliable way to pass items from conversation β digest pipeline. Not memory files, not MEMORY.md, not "mental notes." The inbox file.
Inbox File: news/inbox.json
{
"version": 1,
"items": []
}
Also create news/archive/ for processed items.
Item Schema
Each inbox item looks like this:
{
"url": "https://example.com/article",
"title": "Optional title if already known",
"context": "Why this was shared / what the submitter said about it",
"draft": null,
"submitted_by": "Name of the person who sent it",
"submitted_at": "2026-03-31T10:30:00Z",
"priority": "normal | high",
"target_type": "daily | breaking | skill-announcement | milestone"
}
Receiving Tips During Conversation
When a team member shares a link or news tip in a DM or group chat:
- Read
news/inbox.json - Append the item with full metadata (URL, context, who sent it, timestamp)
- Write back to
news/inbox.jsonimmediately - Confirm to the user that it's queued
Do NOT:
- Write it to a separate queue file that the cron job doesn't check
- Store it only in memory/daily notes and hope it gets picked up
- Say "vorgemerkt" without actually writing to
news/inbox.json - Rely on session context surviving to the next heartbeat
The rule is simple: If it's not in news/inbox.json, it doesn't exist for the digest pipeline.
Co-Authored Drafts
Sometimes a team member doesn't just drop a link -- they collaborate with the agent on the article text in conversation. They iterate, give feedback, adjust wording. The result is a co-authored draft that both sides agreed on.
Two submission modes:
| Mode | What happens | Agent's job |
|---|---|---|
| Raw input (link, bullets, notes) | Agent writes the article from scratch | Research, summarize, format |
| Iterated draft (text refined in conversation) | Agent publishes as-is | Format-fix only (platform syntax, typos) |
Rules for iterated drafts:
- Store the final agreed text in the
draftfield of the inbox item - Set
priority: "high"automatically - The digest pipeline MUST publish the draft verbatim -- no rewriting, no re-summarizing
- Only allowed changes: platform formatting (e.g., Slack
*bold*syntax) and typo fixes - Fact-checking still applies (verify claims/links work), but the text stays as agreed
- Confirm to the submitter: "Gespeichert in der Inbox -- wird genau so gepostet."
Why this matters: When someone invests time iterating on text with you, they chose every word deliberately. Re-summarizing it in the cron job throws away that effort and breaks trust.
The Digest Pipeline
Every digest -- daily, weekly, or breaking -- follows these 5 steps in order.
Step 1: Read the Inbox (ALWAYS FIRST)
Before any external aggregation:
- Read
news/inbox.json - Separate items into two buckets:
- Draft items (
draftis not null): Auto-include. Skip scoring & summarization. - Raw items (
draftis null): Feed into the normal pipeline with a +2 relevance bonus.
- Draft items (
- If the inbox is empty, proceed to external aggregation.
This step is not optional. The inbox exists because team members explicitly flagged these items as relevant. Skipping it defeats the purpose of the entire inbox mechanism.
Step 2: Aggregate External Sources
Gather raw candidates from configured sources:
| Source Type | Method | Notes |
|---|---|---|
| RSS/Atom feeds | web_fetch on feed URLs | Parse for items < 24h old |
| Twitter/X | RSS proxies or x-reader skill | Check configured accounts |
| GitHub repos | gh api for commits, PRs, releases | Last 24h for daily, 7d for weekly |
| Web search | web_search with specific queries | Not broad scans -- targeted topics |
| Exa AI | exa-search-api skill (if available) | Best for semantic discovery |
| Internal | Project files, recent team activity | Only company-public information |
Target: 15-25 raw candidates for a daily digest, 40-60 for a weekly.
Step 3: Research & Fact-Check
For each candidate (external AND raw inbox items), verify:
Freshness:
- Extract the publication date from the source (not just when you found it)
- Daily: published within last 24h. Weekly: within last 7 days.
- No date available β verify via
web_searchthat the topic is current - β οΈ NEVER present old news as new. When in doubt, drop the item.
Source quality:
- Is the source authoritative? (Official blog, verified account, reputable outlet)
- Can the claim be corroborated by a second source?
- For numbers/stats: trace to the original study or announcement
- For product launches: verify on the official product page
Context enrichment:
- What's the backstory? (Follow-up to something the team already knows?)
- Competing perspectives? (Don't present one-sided narratives)
- Actual impact vs. hype?
Drop the item if: No verifiable date, single anonymous source, contradicted by official channels, clickbait with no substance, older than the time window.
Step 4: Score & Select
Score each verified item on a 0-10 scale:
| Criterion | Weight | Description |
|---|---|---|
| Strategic Fit | 3 | Directly relevant to team's current projects or strategy |
| Actionability | 2 | Team could act on this (adopt tool, adjust approach) |
| Novelty | 2 | Genuinely new information, not a rehash |
| Impact | 2 | Significant industry shift, major launch |
| Source Quality | 1 | Authoritative, primary source |
Bonuses:
- Inbox submission: +2 (team member already deemed it relevant)
- Co-authored draft: auto-include (bypasses scoring entirely)
Thresholds:
- β₯ 7: Include (highlight if β₯ 9)
- 4-6: Include if space permits
- < 4: Drop
Item limits: Daily: 5-8 items total. Weekly: 10-15. Quality over quantity -- always.
Step 5: Format, Publish, Archive
- Select the appropriate template (see below)
- Apply platform-specific formatting
- Publish to the configured channel
- Move processed inbox items to
news/archive/inbox_YYYY-MM-DD.json - Reset
news/inbox.jsonitems to[] - Update
memory/heartbeat-state.json(e.g.,last_news_digest: "YYYY-MM-DD") - Log in
memory/YYYY-MM-DD.md
Article Templates
π° Daily Digest
π° _Yesterday Daily -- [Weekday], [DD. Month YYYY]_
--
π _Intern bei Yesterday_
β’ _[Title]_ -- [1-2 sentence summary]. <URL|β Details>
[If no internal news: "Ruhiger Tag intern -- keine nennenswerten Updates."]
--
π _Tech & AI News_
β’ _[Title]_ ([Source], [DD.MM.])
[2-3 sentences: what happened + why it matters for us]
<URL|β Quelle>
[Repeat for top 5-7 external items, sorted by score descending]
--
_Kuratiert von [Agent Name] πΎ | Quellen: [X] geprΓΌft, [Y] relevant_
Rules:
- Internal section ALWAYS comes first, NEVER skip it
- Each item: source name, date, working link
- Max 8 items total -- this is a digest, not a dump
- Inbox items with drafts: insert the draft text verbatim in the appropriate section
β‘ Breaking News
For single high-impact events that can't wait (score β₯ 9, at least 2 sources).
β‘ *Breaking: [Headline]*
[3-5 sentences: what happened with concrete details]
*Warum das wichtig ist:*
[2-3 sentences connecting to team's work]
*Quellen:*
β’ <URL1|[Source 1]> ([Date])
β’ <URL2|[Source 2]> ([Date])
_[Agent Name] πΎ | [Timestamp]_
Max 1 breaking news per day. Multiple breaking items β bundle into urgent daily digest.
πΎ Skill / Feature Announcement
πΎ *Neuer Skill: [Name] -- [One-line description]*
[2-3 sentences: what it does, what problem it solves]
*Was steckt drin:*
β’ [Capability 1] -- [brief description]
β’ [Capability 2] -- [brief description]
*Warum das wichtig ist:*
[1-2 sentences: concrete benefit for the team]
β <URL|Zum Skill>
Keep under 200 words. Focus on value, not implementation.
π Milestone Update
π *Milestone: [What was achieved]*
[2-3 sentences: significance of the achievement]
*Key Facts:*
β’ [Measurable detail]
β’ [Measurable detail]
β’ [What's next]
_[Agent Name] πΎ_
Only for genuine milestones, not routine progress.
π Weekly Recap
π _Yesterday Weekly -- KW [XX] ([DD.MM.] - [DD.MM.YYYY])_
--
π _Diese Woche intern_
β’ _[Project/Theme]_ -- [Week summary]. <URL|β Details>
[Group by project, not by day]
--
π _Die wichtigsten Tech-News der Woche_
1. _[Title]_ ([Source], [DD.MM.])
[Summary + relevance]
<URL|β Quelle>
[Top 5-8 items of the entire week, numbered by importance]
--
π _Zahlen der Woche_ (optional)
β’ [Interesting stat]
β’ [Interesting stat]
--
_KW [XX] Recap von [Agent Name] πΎ | [X] Quellen ausgewertet_
Don't concatenate 5 daily digests -- curate the week's highlights.
Platform Formatting Reference
| Platform | Bold | Italic | Links | Tables | Headers |
|---|---|---|---|---|---|
| Slack | *bold* | _italic_ | <URL|Text> | β No | β No |
| Discord | **bold** | *italic* | [Text](URL) or suppress with <URL> | β No | β
# |
*bold* | _italic_ | Plain URLs | β No | β Use CAPS |
Quality Checklist (Run Before Every Publish)
-
news/inbox.jsonwas read and processed (inbox items included or archived) - Every item has a verifiable publication date
- Every item has a working source link
- No item is older than the digest's time window
- Each item has a "why this matters for us" line
- Internal section is present (even if "quiet day")
- Platform formatting is correct for the target channel
- No duplicate topics from yesterday's digest
- Co-authored drafts are published verbatim (not re-summarized)
- Total length stays reasonable (daily β€ 500 words, weekly β€ 800 words)
- Language matches channel config (e.g., German for Yesterday)
- Numeric claims cite a source
Scheduler Integration
With Heartbeat:
Add to your HEARTBEAT.md or equivalent:
1. Check heartbeat-state.json β if last_news_digest == today, SKIP
2. Read news/inbox.json FIRST
3. Run aggregation pipeline
4. Publish, archive inbox, update state
With Cron: Create a dedicated cron job that runs the digest pipeline at the configured schedule. The cron session has NO access to main session memory -- the inbox file is the bridge.
Key principle: The inbox is the ONLY handoff between conversational sessions and digest runs. Everything else (memory files, session context, "mental notes") is unreliable across session boundaries.
Maintenance
- Archive processed inbox items:
news/archive/inbox_YYYY-MM-DD.json - Archive daily raw items:
memory/archive/news_YYYY-MM-DD.md - Update
memory/heartbeat-state.jsonafter each publish - Review relevance scoring weights quarterly with the team
- Rotate stale RSS sources quarterly
- Monitor inbox for items that were submitted but never published (indicates pipeline bug)
"Signal over Noise. Wisdom over Data." π‘