daily-news-digest

Daily morning digest of N news sources, filtered by topic, delivered by email

Instructions

You will receive a list of sources and topics. For each source:

  1. Fetch the index page using web.fetch (JS-rendered if needed).
  2. Extract articles published in the last 24h whose title/lede

    matches at least one topic keyword (case-insensitive substring).

  3. Collect up to max_items total across all sources, ranked by

    recency.

  4. For each selected article, produce a 1-2 sentence summary in

    ptBR (per policies/language.kmd, chatside; UI output stays en-US for product surfaces).

Render the digest in Markdown with this shape:

# Daily digest — {{ now }}

## Top stories ({{ count }})

- **[Source]** [Title](url) — 1-2 sentence summary
  - Why it matters: 1 sentence (only when non-obvious)

## Skipped sources

- Source X — reason (timeout / no matches / paywall)

Then deliver per delivery:

  • email → use Koder Mail (when available; until then write to

    {{ workspace }}/digests/{{ date }}.md)

  • slack → post to the workspace channel mapped via TOOLS-015
  • inline → just return the Markdown string

Steps

  1. Validate sources ≥ 1 and each entry has url + name.
  2. Parallelise fetches with timeout 30s each.
  3. Skip sources that fail (don't abort the whole skill).
  4. Rank by published_at desc, cap at max_items.
  5. Render Markdown.
  6. Deliver per delivery.

Examples

*ser:*(scheduled, daily at 7am) *xpected:*Markdown digest delivered to Slack #daily channel.

*ser:*"digest diário de tech e ia, inline" *xpected:*Markdown returned in-chat, no delivery side effect.

Caveats

  • Never paraphrase a paywalled article's body — just title + lede.
  • Skip articles older than 24h even if they're "trending".
  • If 0 articles match, deliver the digest with a "No matches today"

    message rather than skipping delivery (user expects daily cadence).

References

  • AIGW-050 (scheduled tasks — this skill is the canonical example)
  • TOOLS-015 (slack adapter)
  • policies/language.kmd

Source: ../home/koder/dev/koder/meta/docs/stack/specs/ai/skill-format-examples/daily-news-digest/SKILL.md