Skip to content
Back to skills

Digest

ASecurity

Curates news, feeds, and industry sources into personalized recurring digests: sourcing, filtering, ranking, and delivery. Use to set up a daily briefing or morning/evening news roundup, track competitors, an industry, people, or markets, or run a scheduled or weekly update. Also when a digest feels too long or repetitive, keeps missing stories, or a rumor needs checking before it ships. Covers source vetting, deduplication, single-source holds, corrections, urgent alerts, slow news days, and...

  • 17 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 6, 2026
researchrustgoreactgit

Works with

  • cli

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned September 6, 2026

npx -y skills add clawic/skills --skill digest --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Digest?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Digest
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/clawic-digest/badge)](https://www.skillsdirectory.com/skills/clawic-digest)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Digest
slug: digest
version: 1.0.3
description: 'Curates news, feeds, and industry sources into personalized recurring digests: sourcing, filtering, ranking, and delivery. Use to set up a daily briefing or morning/evening news roundup, track competitors, an industry, people, or markets, or run a scheduled or weekly update. Also when a digest feels too long or repetitive, keeps missing stories, or a rumor needs checking before it ships. Covers source vetting, deduplication, single-source holds, corrections, urgent alerts, slow news days, and channel formats (email, Slack, Telegram, audio); learns format, timing, and depth preferences from reactions. Not for summarizing documents the user provides or internal business reporting.'
homepage: https://clawic.com/skills/digest
changelog: Display name shown correctly
metadata:
  clawdbot:
    emoji: πŸ“°
    displayName: Digest
    configPaths:
    - ~/Clawic/data/digest/
    - ~/Clawic/profile.yaml
    - ~/digest/
    - ~/clawic/digest/
  openclaw:
    requires:
      config:
      - ~/Clawic/data/digest/
      - ~/Clawic/profile.yaml
      - ~/digest/
      - ~/clawic/digest/
---

User preferences, learned signals, and the sent-item log live in `~/Clawic/data/digest/` (see `setup.md` on first use, `preferences-template.md` for file formats). If you have data at an old location (`~/digest/` or `~/clawic/digest/`), move it to `~/Clawic/data/digest/`, and say in one line that you moved it and from where.

## Configuration

User-dependent variables. Defaults apply until the user states a preference; store them in `~/Clawic/data/digest/config.yaml`.

| Variable | Type | Default | Effect |
|---|---|---|---|
| item_cap | number (3-15) | 8 | Hard ceiling on items per digest (rule 5); Highlights stay ≀3 at any cap |
| single_source_policy | hold \| hedge | hold | Market-moving or reputational single-source claims: hold one cycle vs ship marked "one source, unverified" (`verification.md`) |
| channel | text | channel where the digest was first requested | Where digests deliver; drives the per-channel format rules in `delivery.md` |
| digest_language | text | the language the user writes in | Digest prose language; items keep original-language names and quotes with translated summaries |
| timezone | text | `~/Clawic/profile.yaml`, else confirm before first scheduled send | Anchors every scheduled slot and recency window |

Preference areas β€” learned state lives in `~/Clawic/data/digest/preferences.md` and climbs the ladder in `learning.md`:

- **content scope** β€” topics, industries, competitors, people, regions, exclusions; drives Filter
- **sourcing** β€” trusted and blocked sources, weighting, recency windows; drives Source
- **format & structure** β€” medium, structure, length, tone, visuals; drives Format
- **timing & cadence** β€” schedule, frequency, weekday/weekend split, urgent-signal rules; drives Deliver
- **prioritization & depth** β€” what leads, what buries, per-topic depth; drives Prioritize

## When To Use

- The user wants a recurring **daily or weekly briefing** on topics they care about
- A **news roundup** filtered to one person's interests, not a generic feed
- **Tracking competitors, an industry, people, or markets** with ongoing updates on their moves
- A **scheduled topic update** is due, or the source list needs building or tuning
- An existing digest feels off: too long, repetitive, missing stories, wrong timing
- Not for: synthesizing documents the user hands you (β†’ `synthesize`), internal business reporting (β†’ `brief`), or full competitor dossiers (β†’ `competitor-monitoring`)

The test of a real digest: every item carries a why-this-matters-to-you line. A digest that could be sent to anyone is a feed, not a digest.

## Quick Reference

| Situation | Play |
|---|---|
| First digest, no preferences | Derive topics from the request; if none derivable, ask the one blocked question (topics) β€” everything else runs on defaults |
| Story covered by 3+ independent sources | Promote toward Highlights β€” convergence is an importance signal (rule 4) |
| Surprising claim from a single source | Hold one cycle or ship hedged per `single_source_policy`; independence test in `verification.md` |
| Major global news outside user's topics | One line in Worth Noting, never a Highlight β€” relevance beats magnitude (rule 1) |
| User says "too long" | Cut item count before per-item depth; log the signal (`learning.md`) |
| Story already shipped in a prior digest | Resurface only as "Update:" + what changed β€” check the sent log (rule 7) |
| Urgent item mid-cycle | Interrupt only on a [confirmed] or [locked] urgent-signal rule; otherwise hold (`delivery.md`) |
| No reaction for 3 consecutive digests | Ask one concrete question instead of guessing (`learning.md`) |
| Slow news day in their topics | Send the short honest version ("quiet day, 2 items") β€” never pad |
| Big-event day floods one theme | Cluster the theme into one block that counts as one item (`triage.md`) |
| Competitor activity to report | Moves, not mentions β€” the move catalog is in `competitors.md` |
| Gap since last digest (vacation, downtime) | One consolidated catch-up covering the period, top items only (`delivery.md`) |
| Anything else | Run Source β†’ Filter β†’ Prioritize β†’ Format β†’ Deliver β†’ Learn with current preferences |

Depth on demand: `sources.md` building and vetting the source list Β· `triage.md` dedupe, ranking, slow and heavy days Β· `verification.md` claims, rumors, corrections Β· `writing.md` item craft and summaries Β· `delivery.md` channels, timing, interrupts Β· `learning.md` signals and the preference ladder Β· `competitors.md` tracking companies and people Β· `dimensions.md` dimension catalog with defaults Β· `preferences-template.md` data-file formats.

## Core Rules

1. **Relevance beats magnitude.** Rank by interest match first, freshness second, source weight third. A tracked competitor's pricing change outranks a world-news headline outside their topics.
2. **Every item is attributed.** No source you can name = item does not ship. Never blend your own inference into a summary unmarked β€” prefix it: "Likely:" or "My read:".
3. **Exclusions are binary, interests are weighted.** One explicit "don't care about Y" beats any number of inferred interest signals for Y. An excluded topic appears only when it intersects a confirmed interest, flagged as such ("normally excluded; included because it hits X").
4. **Dedupe before ranking.** Same story from N outlets = one item; N itself is rank input β€” 3+ independent sources covering one story promotes it toward Highlights. Independence = separate original evidence, not separate URLs (`verification.md`).
5. **Fixed budget forces curation.** `item_cap` (default 8) items, hard max 3 Highlights. Adding one over cap means deleting one. Worked example: 12 candidates β†’ 3 Highlights (top interest-match), 5 body items, remaining 4 dropped or compressed into one Worth Noting line.
6. **Preference changes climb a ladder** β€” pattern β†’ confirmed β†’ locked, mechanics in `learning.md`. Never jump from a single signal to locked.
7. **The digest remembers what it sent.** Log every shipped item to `~/Clawic/data/digest/sent-log.md`; repeats resurface only as "Update:" + delta. A digest without memory re-reports yesterday and reads as a broken filter.

## Protocol

```
Source β†’ Filter β†’ Prioritize β†’ Format β†’ Deliver β†’ Learn
```

1. **Source** β€” pull from configured feeds and the per-entity source kits (`sources.md`). Default weighting: primary > original reporting > aggregators > social; social is discovery, never citation β€” trace it back before it ships.
2. **Filter** β€” topic match includes; exclusion match drops (rule 3); recency windows per content type (`dimensions.md` β†’ Sources); single-source surprising claims go to `verification.md`.
3. **Prioritize** β€” cluster duplicates, then rank per rule 1; bury borderline items into Worth Noting, don't delete (`triage.md`).
4. **Format** β€” per-item shape: headline β†’ 1-line summary β†’ why it matters to this user β†’ (source). Craft rules in `writing.md`; length pressure cuts item count before per-item depth.
5. **Deliver** β€” channel and timing per preferences; interrupts, catch-ups, and per-channel formats in `delivery.md`.
6. **Learn** β€” capture reactions into `preferences.md` after every delivery; signal counting and ladder in `learning.md`.

## Output Format (Default)

```
πŸ“° [DIGEST TYPE] β€” [DATE/TIME]

πŸ”₯ HIGHLIGHTS
β€’ [Item β€” 1-line summary + why it matters to you (source)]
β€’ [Second item]

πŸ“‹ FULL DIGEST
[Items in per-item shape, ordered per weighting profile]

πŸ’‘ WORTH NOTING
[Borderline items, one line each]

---
Sources: [count] | Next digest: [time]
```

Adapt entirely to learned preferences once they exist; the template above is only the cold-start default.

## Output Gates

Before sending, verify:

- Every item has a source and a why-it-matters line?
- ≀3 Highlights, each strong enough that the user could read only those?
- Zero exclusion-list items, unless flagged per rule 3?
- Every single-source claim hedged or held per `single_source_policy`?
- Nothing repeated unchanged from the sent log?
- Channel and time match current preferences; signals from the previous delivery recorded?

## Traps

| Trap | Why it fails | Do instead |
|---|---|---|
| Leading with globally important news | User already saw it everywhere; the digest adds zero | Lead with niche relevance; big news gets one line (rule 1) |
| Padding slow days | Trains skimming; erodes trust in Highlights | Short honest digest ("quiet day") |
| Counting syndicated copies as corroboration | Ten outlets rewriting one press release or tweet are one source | Independence test in `verification.md` before promoting |
| Trusting aggregator timestamps | Aggregators resurface old stories with fresh dates | Check the original dateline against the event date (`sources.md`) |
| Locking a preference from one comment | One signal may be mood, not preference | Climb the ladder in `learning.md` (rule 6) |
| Reading silence as satisfaction | Ignored digests look identical to loved ones | No reaction for 3 consecutive digests β†’ ask one question |
| Unmarked opinion inside summaries | User can't separate reporting from your read | Attribute claims; prefix inference (rule 2) |
| Resurfacing yesterday's story unchanged | Repetition reads as a broken filter | Only resurface as "Update:" + what changed (rule 7) |
| Interrupting off-schedule on your own judgment | "Urgent" without a learned rule is noise at a bad hour | Interrupt only per [confirmed]+ urgent-signal rule (`delivery.md`) |

## Where Experts Disagree

- **Curation vs completeness.** Tight curation is the default β€” the budget is the product. Some readers want everything as FOMO insurance; the boundary is an explicit request, and the answer is a longer Worth Noting tail, never a bigger Highlights section.
- **Relevance-first vs breaking-first.** Default: highest interest-match leads. Breaking-first is legitimate for users who act on time-sensitivity (markets, on-call, PR); it must be learned or stated, never assumed from topic choice.
- **Neutral summarizer vs opinionated curator.** The why-it-matters line is opinion, and it is the digest's value. The boundary: reporting is attributed, inference is prefixed β€” the reader always knows which is which (rule 2).

## Related Skills

More Clawic skills, get them at https://clawic.com/skills/digest (install if the user confirms):

- `brief` β€” internal business information summarized rather than external news curated
- `synthesize` β€” the user provides the documents; you distill instead of sourcing the outside world
- `competitor-monitoring` β€” full competitor dossiers, pricing alerts, and positioning analysis beyond digest items
- `newsletter` β€” the user wants to publish to an audience, not receive a personal digest

## Feedback

- If useful, star it: https://clawic.com/skills/digest
- Latest version: https://clawic.com/skills/digest

Part of [Clawic](https://clawic.com), the verified skill library. Get this skill: https://clawic.com/skills/digest.

Files in this skill

  • SKILL.md11.9 KB
  • _meta.json388 B
  • competitors.md3.6 KB
  • delivery.md3.2 KB
  • dimensions.md3.2 KB
  • learning.md4.3 KB
  • preferences.md2 KB
  • sources.md3.6 KB
  • triage.md3 KB
  • verification.md3.5 KB
  • writing.md3.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…