Skip to content
Back to skills

Daily Brief

ASecurity

Builds the daily news brief: today's stories, weather and markets on one phone-first page. Use it when the user asks for their brief, or a routine opens one.

  • 32 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 1, 2026
ai-agentsgoshellbashnode

Security analysis

A100/100

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

Scanned October 1, 2026

npx -y skills add cgoinglove/thursday-agent --skill daily-brief --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Daily Brief?

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

Security grade badge for Daily Brief
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cgoinglove-daily-brief-thursday-agent/badge)](https://www.skillsdirectory.com/skills/cgoinglove-daily-brief-thursday-agent)

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: daily-brief
description: "Builds the daily news brief: today's stories, weather and markets on one phone-first page. Use it when the user asks for their brief, or a routine opens one."
---

# Daily brief

Four scripts do everything but choosing and writing. They sit in this skill's `scripts/` folder and
`node` runs them; nothing to install, no key. `<scratch>` is this job's own folder under `scratch/`:
write it out in full, and set `S=` again in every bash call — each call is a new shell.

```bash
S=<this skill's folder>/scripts
# Gather, one call: every topic as "<label>=<query>", in the edition the user reads, with the
# glance beside it when they want one
node $S/news.mjs "AI=AI OR OpenAI OR Anthropic" "Startups=startup funding" \
  --lang en --country US --hours 30 --out <scratch>/cand.json [--avoid a.com] [--prefer b.com]
node $S/glance.mjs --weather "<their city>" \
  --markets "S&P 500:SP500,EUR/USD,Bitcoin:CBBTCUSD" --out <scratch>/glance.json
# Read, one call: the stories you chose, from their publishers, photos saved
node $S/story.mjs <scratch>/cand.json a1 a4 b2 c1 c3 --out <scratch>/stories
# Their words, one call a file: story.mjs prints the `cat` line for each
cat <scratch>/stories/text-1.md
# Lay out, one call: after you have written <scratch>/brief.json yourself
node $S/page.mjs <scratch>/brief.json --look <scratch>/look
# A PDF beside it, only when they ask for one: a brief sent to their phone goes with its PDF
node $THURSDAY_SKILLS/artifact/scripts/document.mjs pdf <the page's path>
```

- **The ids are all you pass between steps.** `news.mjs` prints an id per story (`a1`, `b3`);
  `story.mjs` takes those ids; `brief.json` names the same ids. A url, a photo path or a number is
  never typed: the page takes them from the scripts' files.
- **What the scripts print is what you read — except the stories' own words.** `cand.json` and
  `stories.json` are for the next script; opening one costs tens of thousands of tokens and says
  nothing the printout does not. The articles' text is the one thing too long to print: `story.mjs`
  writes it into `text-<n>.md` files that each fit one read, and prints the `cat` line for each.
  Those files are the only source for a summary. Choose by reading the list yourself — never with a
  script that scores it.
- **A story `news.mjs` did not print is not in the brief.** The very article a brief of the last
  four days carried is left out before you see it; the same news in another article is yours to
  judge, against the headlines those briefs told, printed under the list. A story `story.mjs` prints
  as `NO TEXT` was refused by its publisher: drop it for one of your spares; with `NO PICTURE`, keep
  it or swap it.
- **A brief is remade, not added to.** Run the whole thing again the same day and today's own page
  does not count as already told, so the same stories come up again and `page.mjs` writes over it.
- **The browser opens itself where a step needs it.** A Google News link does not hold the
  publisher's address, so `story.mjs` follows the chosen stories' links in this job's browser;
  `--look` renders the page in a headless one of its own. Nothing else here needs one.

`references/brief.md` is the format: what `brief.json` holds, how to choose, how to write a
summary and the spoken version. `references/preferences.md` is what to keep about the user and
the one question a first brief asks.

Files in this skill

  • SKILL.md3.3 KB
  • page/brief.css10.3 KB
  • references/brief.md8.3 KB
  • references/preferences.md3.1 KB
  • scripts/glance.mjs6.8 KB
  • scripts/lib.mjs4.9 KB
  • scripts/news.mjs10.1 KB
  • scripts/page.mjs20.1 KB
  • scripts/story.mjs11.9 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.