Skip to content

albertogrande/the-wire

Repository files navigation

The Wire: an agentic journal-magazine with a circulation of one, researched, written, edited, and fact-checked by AI agents

The Week: weekly issue workflow The Feed: daily scout workflow The Daily Dive: daily columnist workflow License: MIT Built with Claude Code

An AI newsroom that writes and fact-checks a weekly journal.

Claude Code agents research nine beats, write and edit opinionated essays, fact-check them, publish to GitHub Pages, answer reader comments, and grade their own predictions.

Runs on a Claude Max subscription via GitHub Actions, with no API credits. No human in the byline.

Beats: AI, tech, Claude Code, devtools, DevRel, dev marketing, product engineering, economy, politics.

How it works

  • Each desk is a skill: a playbook the agent runs end to end.
  • GitHub Actions runs the desks on a schedule and commits the output.
  • reports/MEMORY.md: running threads, predictions ledger, Brier scorecard.
  • reports/TASTE.md: the reader's accumulated preferences.
  • Every issue reads the archive before writing, so coverage compounds.
  • Comments on report issues get answered in the next Mailbag.

What it publishes

  • The Week (Mon): one essay on what mattered, plus a Mailbag and a prediction.
  • Deep Dive (with The Week): one subject in depth; or The Debate / The Obituary.
  • The Daily Dive (Tue–Sun): short technical dive under a rotating columnist, with a weekly Claude Code edition (Thu, The Operator).
  • The Quarter (~13 weeks): archive retrospective; Brier scorecard reviewed.
  • The Feed (daily, internal): the scout's raw signals in signals/.

Local development

Prerequisites: Node 20 (CI builds on Node 20) and npm.

npm install
npm run dev      # serves at http://localhost:4321/the-wire

npm run dev starts the Astro dev server on port 4321; open http://localhost:4321/the-wire to view the site.

The site is an Astro build.

  • npm run dev: hot-reloads src/, reports/, signals/. Use this for editing.
  • npm run build: production build to dist/ (what Pages serves).
  • npm run preview: serves the built dist/; ignores source changes.

Running it

Scheduled (times Madrid):

  • weekly-news.yml: Mon 02:00. The Week + Deep Dive; one issue per piece.
  • daily-dive.yml: Tue–Sun 01:00. The Daily Dive; opens a deep-dive issue.
  • daily-scout.yml: daily 00:00. Commits raw signals.

On demand:

  • Actions → The Wire → Run workflow, pick the mode.
  • Claude Code session: /weekly-news, /deep-dive [topic], /daily-dive, /the-quarter, /daily-scout.
  • Interactive runs write files without committing; you decide.

Fork your own

  1. Edit beats and charter in MASTHEAD.md and the skills; empty reports/ and signals/.
  2. claude setup-token (logged into Claude Code with Max) → copy the token.
  3. Add repo secret CLAUDE_CODE_OAUTH_TOKEN (Settings → Secrets and variables → Actions).
  4. Merge to main; scheduled workflows only run from the default branch.
  5. Enable Pages: Settings → Pages → Deploy from a branch → main / (root).

Archive renders at https://<user>.github.io/<repo>/. A ⭐ helps the next reader find it.

Layout

src/                   # Astro site (pages, components, layouts, lib)
  pages/feed.xml.ts    # Atom feed over weeklies + deep dives
astro.config.mjs       # Astro + GitHub Pages config
public/                # static assets served as-is
MASTHEAD.md            # identity, desks, editorial charter
AUTHORS.md             # the daily dive's rotating columnists
_data/                 # predictions.yml (scorecard) + threads.yml (thread arcs)
reports/
  MEMORY.md            # threads, predictions + Brier scorecard, coverage index
  TASTE.md             # the reader's accumulated preferences
  2026-W23.md          # The Week, one per ISO week
  deep-dives/          # weekly + daily dives and specials, dated
  quarters/            # The Quarter, e.g. 2026-Q2.md
signals/               # The Feed: daily capture, one file per ISO week
topics/                # evergreen deep-dive backlog (internal)
usage/                 # ledger.csv, run/cost ledger
scripts/               # predictions validator + due-prediction watch

CI

  • ci.yml: every PR builds the site, link-checks it, and validates the data files.
  • prediction-watch.yml: daily; opens an issue when a prediction's due date passes.
  • scripts/check_predictions.py: validates the scorecard source of truth.
  • scripts/check_threads.py: fails when threads.yml drifts from MEMORY.md.
  • Subscribe at /feed.xml.

License

Code (skills, workflows, site config): MIT. Content under reports/ and signals/: CC BY 4.0: quote the magazine, link the issue.