plugins/feed-hermit/skills/weekly-digest/SKILL.md
Synthesizes the past 7 days of archived briefs into a weekly digest — top stories, emerging vs faded themes, category activity, and per-source performance built from archive frontmatter. Delivers to the operator's configured channel and archives a weekly note. Designed as a weekly routine. Invoke with /feed-hermit:weekly-digest.
npx skillsauth add gtapps/claude-code-hermit weekly-digestInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produce a weekly synthesis from the archived brief notes. All data comes from
.claude-code-hermit/briefs/ — no re-fetching of sources. Cheap to run.
Read the week's briefs. Glob .claude-code-hermit/briefs/*.md (exclude the weekly/
subdirectory), then filter to files whose filename date prefix falls within the past 7 days
(today minus 6 days through today). Read each matching file (frontmatter + body).
brief_count for the archive.Synthesize content. From the brief bodies:
top_categories frontmatter for this tally — it is pre-truncated to top 5 per brief and undercounts categories that consistently rank below the cutoff.Source performance. Read feed-sources.md for the full source list, then from frontmatter across the week:
sources_used in ≥5 briefs.sources_skipped more often than sources_used. Include the skip count (e.g. "Source X (skipped 8/12 briefs)").feed-sources.md but in neither sources_used nor sources_skipped across any brief this week (may never have been attempted).
Keep to 3–5 bullets, actionable framing.sources_skipped (fetch failures) is the reliability signal. sources_quiet (0 items on a quiet day) is NOT — never count quiet days against a source's reliability.Write the digest. Format:
📅 Week of [Mon DD] – [Sun DD, YYYY]
[N] briefs | [total items across week]
**This week's story**
[1–2 sentences on the dominant narrative of the week]
**Top stories**
- [Story] — [days] — [one line on why it matters]
**Themes**
- Emerging: [theme]
- Faded: [topic] ← omit if none met the threshold
**Categories this week**
[Cat A: 18 items · Cat B: 11 · Cat C: 7 · ...]
**Source notes**
- Reliable: [source], [source]
- Skipped often: [source] (N/14 briefs) — consider removing or fixing
- Silent: [source] — never fetched, check if still relevant
Tone: slightly more reflective than an evening brief. One paragraph of narrative before the lists is fine.
Deliver via the Operator Notification protocol in CLAUDE.md § Operator Notification (core resolves
the channel and falls back to push when no channel is reachable). text is the digest from step 4.
Quiet week on AI infra, 12 briefs — open CC to read..claude-code-hermit/compiled/pending-delivery.md (frontmatter title, type: pending-delivery, created, brief_path pointing at the weekly archive path). Do not retry. This queue supersedes the protocol's SHELL.md-logging branch — don't also log the digest to SHELL.md Findings or record a channel-send-unavailable issue.Archive to .claude-code-hermit/briefs/weekly/YYYY-WNN.md (create the directory if absent).
Use the ISO week number (e.g. 2026-W15). Use actual counts from steps 1–3, not placeholders:
---
date: YYYY-MM-DD # Sunday of the week
week: YYYY-WNN
title: "Weekly Digest — YYYY-WNN"
created: YYYY-MM-DDTHH:MM:SS+HH:MM # ISO 8601 with timezone
tags: [brief]
brief_count: N # actual number of brief files read in step 1
top_categories: [Cat A, Cat B, Cat C] # top 3 from the full body tally in step 2
sources_used: [Source A, Source B] # union of all sources_used across the week
sources_skipped: [Source C] # union of all sources_skipped across the week
---
Reaction-feedback aggregation. Glob .claude-code-hermit/compiled/brief-feedback-*.md.
If no such files exist, SKIP this step silently — the reaction-feedback producer is a channel-layer
concern not shipped with this plugin, so its absence is expected, not an error. When logs do exist:
YYYY-MM-DD <slot> | <emoji> | source: <name> | topic: <topic>)./claude-code-hermit:proposal-create to deprioritize or remove that source (Evidence Source: scheduled-check/source-health).tools
Composes and delivers the daily fitness brief — a forward-looking morning read (readiness + today's plan) or a backward-looking evening read (today's training, or an earned-rest note, + tomorrow's setup) — in the operator's configured voice. Invoke with /claude-code-fitness-hermit:fitness-brief --morning|--evening|--slot <name>. Becomes the plugin's two daily beats — the morning Strava connectivity check and the evening activity sync, RPE binding, and Run deep-dive.
development
Renew the hermit's long-lived Claude login token over the channel, before it expires. Relays a one-time sign-in link to the operator, takes the code back, installs the new token, and restarts. Activates on messages like 'relogin', 'renew my login', 'reauth', 'the login is expiring', or when doctor's credential-expiry check flags setup-token.
development
Manage developing story arcs tracked across briefs — add, resolve, and list active arcs in compiled/story-arcs-*.md. Arc Watch keywords drive the feed-brief arc-tagging enrichment. Invoke with /feed-hermit:story-arcs add|resolve|list.
development
Gap-driven discovery of new RSS/web sources for feed-sources.md. Interactive runs WebFetch-verify candidates and auto-add them; --scheduled runs queue unverified candidates for operator review (no WebFetch, per the domain-allowlist rule). Complements source-health (removal) with discovery (addition). Invoke with /feed-hermit:source-scout.