Install any skill in seconds. Free to start, no credit card required.
Get Started Free →leiting-eric/daily-brief
Operational knowledge for the daily-brief digest pipeline (this project). RSS/API fetchers, pluggable LLM enrichment (default claude CLI on Max; also anthropic/openai/deepseek/minimax API), trading section, HTML rendering, cross-platform scheduler integration (Windows Task Scheduler / macOS launchd / Linux cron). Load when the user asks about running daily / regenerating sections / debugging a failed run / adding or disabling sources / LLM quota / scheduler / why a tab shows wrong data / why a s
Passed 21 of 23 test cases with the skill, and 6 of 23 without it.
and 14 more in the full report
15 fixed6 passed either way2 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 15 test cases the skill fixed. Same model, same prompt, with and without the skill.
A newly added website blocks standard Node fetch requests with TLS fingerprinting headers. What configuration property in sources.config.json forces the fetcher engine to use curl for that source?
| Checked | Without skill | With skill |
|---|---|---|
| Recommends setting useCurl to true for that source in sources.config.json | Missed | Passed |
The instructions your model reads when the skill loads.
This project generates a single-page HTML daily digest covering tech / finance / politics / market data / community discussion. The pipeline runs locally via the OS scheduler (Windows Task Scheduler / macOS launchd / Linux cron, default 08:00 local time) and emits daily_reports/<YYYY-MM-DD>/<YYYY-MM-DD>.html + sidecar files (each date gets its own subdir). The date label uses the system local timezone by default — set REPORT_TZ (e.g. Asia/Shanghai, UTC) in .env.local to override.
Detailed architecture lives in code; this skill is a cheat sheet for operating and diagnosing, not a re-explanation of the system.
All paths in this skill are relative to the project root (the directory that contains package.json, lib/, scripts/).
Before any command, ensure the working directory is the project root. Two cases:
Claude Code session opened inside the project — already there, no action needed
Session opened elsewhere — read the config file and cd:
# Cross-platform Node one-liner (prints the project root path):
node -e "const fs=require('fs'),os=require('os'),path=require('path');const cfg=path.join(os.homedir(),'.daily-brief-config');if(fs.existsSync(cfg))console.log(fs.readFileSync(cfg,'utf8').trim());else process.exit(1)"
Use the printed path: cd "$(...)" on bash / Set-Location (...) in PowerShell.
The config file is written by node scripts/install.mjs --global. If it's missing the user hasn't done a global install — tell them to run it.
| Need | Command | Cost |
|---|---|---|
| Full pipeline | npm run daily | ~5-8 min, ~6 Sonnet calls |
| Fetch sanity only (no LLM) | npm run dry-run | ~30s |
| Re-render existing sidecar | npm run render [date] | <1s |
| Re-run trading section | npm run regen-trading [date] | ~2 min, 1 LLM call |
| Top-up missing summary | npm run regen-enrich <cat:sub> [date] | ~20-40s, 1 LLM call |
| Open today's report in Chrome | npm run open | instant |
| Sonnet quota + call history | npm run quota-report | instant |
[date] defaults to today's date in the report timezone (system local, or REPORT_TZ if set). The pipeline and the OS scheduler both run in local time, so the report's date label = the date when the trigger fired in the report timezone. A user with REPORT_TZ=Asia/Shanghai whose machine fires the trigger at 23:00 UTC-8 will get a "next-day Shanghai" file, e.g. daily_reports/2026-05-17/2026-05-17.html.
<cat:sub> accepted by regen-enrich: finance:news, politics:world, tech:ai-news. Single-source X 推文 (tech:x-viral) is enriched as part of daily only — no top-up path.
test cases passed, vs 6 / 23 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.