wow-digest/SKILL.md
Daily digest of 3-7 genuinely surprising items from newsletters and Telegram channels. Scores content for epistemic friction, not just relevance. Appends to daily note. Use when the user says "/wow-digest", "run the wow digest", "what's surprising today", "morning reading", or "digest my newsletters".
npx skillsauth add glebis/claude-skills wow-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.
Pull last 24h of newsletters (email) and Telegram channel posts, filter noise, score survivors for genuine surprise against the user's focus and recent research, and append 3-7 WOW items to today's daily note.
scripts/ingest.py to pull and normalize candidates from all sourcesscripts/enrich.py to fetch full content for link-only newsletters (LinkedIn, beehiiv, Substack)scripts/salience_filter.py to drop obvious noise (marketing, payments, greetings)scripts/wow_score.py on filtered candidates to score and select WOW items## Reading.wow-eval/candidates/YYYYMMDD.jsonl for replayscripts/feedback.py to collect human verdictspython3 scripts/ingest.py --days 1 --output /tmp/wow-candidates.jsonl
python3 scripts/enrich.py --input /tmp/wow-candidates.jsonl --output /tmp/wow-enriched.jsonl
python3 scripts/salience_filter.py --input /tmp/wow-enriched.jsonl --output /tmp/wow-filtered.jsonl
python3 scripts/wow_score.py --input /tmp/wow-filtered.jsonl --output /tmp/wow-selected.json
# Then the skill appends to daily note and archives emails
When the user says /wow-digest --dry-run or "preview the digest", run the full pipeline but:
This lets the user preview what would be appended without side effects.
The scoring prompt uses three context signals from the vault (~/Brains/brain/):
{focus} — From My Focus.md, sections ## Current, ## Base, ## Primary (stops at ## Nice to have). This tells the scorer what the user cares about right now.{research} — From ai-research/*.md files (last 30 days), parsed from filenames (YYYYMMDD-topic.md) and research_topic: frontmatter. Shows what the user has already investigated.{recent_topics} — From Daily/YYYYMMDD.md headings (last 7 days), excluding ## do and ## log. Shows recent daily note themes.If these files don't exist, scoring still works but with degraded personalization.
Ingestion deduplicates against the last 7 days of .wow-eval/candidates/*.jsonl using SHA-256 hashes of title|source_name (case-insensitive). Same article shared to multiple channels or re-sent in a newsletter won't appear twice. Pass --no-dedup to ingest.py to skip.
Edit config/sources.yaml to add/remove email patterns or Telegram channels.
Edit config/wow_prompt.txt to tune the scoring prompt.
After scoring, append to today's daily note (Daily/YYYYMMDD.md) ABOVE the - - - separator, below any existing content:
## Reading
- **[Title]** (Source) — hook explaining WHY it's surprising
- **[Title]** (Source) — hook
...
_WOW digest · N candidates → M selected · YYYY-MM-DD_
CRITICAL: Always run date +"%Y%m%d" to get today's date. Never assume.
If ## Reading already exists in the daily note, append items to it rather than creating a duplicate section.
After appending to daily note, archive processed newsletter emails:
message_id values from email candidatesgws gmail users messages batchModify \
--params '{"userId":"me"}' \
--json '{"ids":["ID1","ID2",...],"removeLabelIds":["INBOX"]}'
During eval phase, do NOT auto-archive. Instead:
scripts/feedback.pyCRITICAL: The user CANNOT judge WOW from titles alone. Always show the snippet content. If the snippet is empty or too short, fetch the full email body via GWS before presenting.
To check if eval mode is active:
.wow-eval/feedback.jsonl has fewer than 50 entries → eval modedevelopment
--- name: agency-docs-updater description: End-to-end pipeline for publishing Claude Code lab meetings. Accepts optional args: date (YYYYMMDD, "yesterday", "today") and lab number (e.g. "04"). Examples: "yesterday 04", "20260420 05", "04" (today, lab 04), "" (today, auto-detect lab). --- # Agency Docs Updater Execute ALL steps automatically in sequence. Only pause if a step fails and cannot be recovered. Read `references/learnings.md` before starting for known pitfalls. **Configuration**: pat
tools
This skill should be used when applying proper typography to prose text or files in Russian, English, German, or French — smart quotes per locale («ёлочки», “curly”, „Gänsefüßchen“, « guillemets »), correct dashes (тире, em/en dash, Gedankenstrich, tiret), non-breaking spaces, ranges, ellipsis, and French espaces insécables before ! ? ; :. Fully deterministic via a pinned typograf-based CLI; never apply these rules by hand. Triggers on "типографика", "typograf", "оттипографь", "smart quotes", "fix typography", "неразрывные пробелы".
development
This skill should be used when inspecting or applying advanced OpenType features of a font (woff2/otf/ttf) — ligatures, stylistic sets (ss01–ss20), character variants (cvXX), texture healing, slashed zero, tabular/oldstyle figures, fractions, small caps, case-sensitive forms — and generating the CSS to enable them. Interviews the user via cenno to pick features. Triggers on "OpenType features", "font features", "stylistic sets", "ligatures", "texture healing", "tabular figures", "what can this font do".
tools
--- name: pre-session-portrait description: Build a compressed, visualizable "portrait" of a consulting/coaching client before a session, so the paid hour is spent solving, not scoping. Runs a 7-lens JTBD-inspired interview (where / how / what / problem / ideal / tension / jobs-to-be-done) that takes rich open answers in and compresses them to an 11-field YAML portrait out. Delivers three ways: raw paste-into-a-clean-chat prompt, a secret GitHub gist link, or a Codex CLI one-liner. Use when prep