Install
$ agentstack add skill-yesterday-ai-skills-agentic-news-digest ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
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.
- 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 [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]
[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: • ([Date]) • ([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]
→
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]. [Group by project, not by day]
--
🌐 Die wichtigsten Tech-News der Woche
- [Title] ([Source], [DD.MM.])
[Summary + relevance]
[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_` | `` | ❌ No | ❌ No |
| Discord | `**bold**` | `*italic*` | `[Text](URL)` or suppress with `` | ❌ No | ✅ `#` |
| WhatsApp | `*bold*` | `_italic_` | Plain URLs | ❌ No | ❌ Use CAPS |
---
## Quality Checklist (Run Before Every Publish)
- [ ] `news/inbox.json` was 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:
- Check heartbeat-state.json → if lastnewsdigest == today, SKIP
- Read news/inbox.json FIRST
- Run aggregation pipeline
- 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.json` after 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."* 📡
## Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [Yesterday-AI](https://github.com/Yesterday-AI)
- **Source:** [Yesterday-AI/skills](https://github.com/Yesterday-AI/skills)
- **License:** MIT
- **Homepage:** https://github.com/Yesterday-AI/skills
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.