Claude
Skills
Sign in
Back

weekly-digest

Included with Lifetime
$97 forever

Research, score, and publish a weekly industry digest on any topic. Casts a wide net via web search (20+ candidates), verifies sources for AI-generated slop, scores each item on five parameters (Novelty, Relevance, Slopiness, Technical depth, Feasibility), selects the top items, and generates both markdown files and a Tufte-style HTML report. Use this skill whenever the user says "/weekly-digest", "run the weekly digest", "industry digest", "what's new in [topic]", "weekly roundup", "news digest on [topic]", "research what happened this week in [topic]", or any request to create a curated, scored summary of recent developments in a field. Also use when the user wants to monitor a topic area with quality filtering — the slopiness scoring is the key differentiator from a simple news search.

Web Dev

What this skill does


# Weekly Digest

A research-to-publication pipeline that produces a scored, source-verified industry digest. The workflow has seven phases: init, scoping, research, verification, scoring, output, and presentation.

## Phase 0: Init

Read `~/.claude/skills/weekly-digest/settings.json`. Two possible states:

**State A — file missing, or `subjects` is empty and file has no `version` field (fresh install):** Run onboarding using the `AskUserQuestion` tool to collect all setup inputs in a single structured prompt:

```
AskUserQuestion({
  questions: [
    {
      question: "What topic do you want to track weekly?",
      header: "Topic",
      options: [
        { label: "Agent orchestration", description: "Multi-agent frameworks, enterprise deployments, governance" },
        { label: "Design innovation", description: "Design tools, AI-design convergence, award-winning products" },
        { label: "Climate tech", description: "Clean energy, carbon capture, sustainability startups" },
        { label: "AI regulation", description: "EU AI Act, governance frameworks, copyright disputes" }
      ],
      multiSelect: false
    },
    {
      question: "Any geographic focus for sources?",
      header: "Geography",
      options: [
        { label: "Global (no filter)", description: "Include sources from all regions" },
        { label: "Europe, UK, Asia — not US", description: "Deprioritize American sources" },
        { label: "Europe only", description: "EU and UK sources preferred" },
        { label: "Asia-Pacific", description: "Japan, Korea, China, Singapore, India, Australia" }
      ],
      multiSelect: false
    },
    {
      question: "How many top items should the digest include?",
      header: "Digest size",
      options: [
        { label: "5 items (Recommended)", description: "Good balance of depth and brevity" },
        { label: "3 items", description: "Quick scan, only the best" },
        { label: "10 items", description: "Comprehensive coverage" }
      ],
      multiSelect: false
    },
    {
      question: "Where should output files go?",
      header: "Output",
      options: [
        { label: "output/ (Recommended)", description: "Relative to current working directory" },
        { label: "~/Digests/", description: "Home directory, shared across projects" }
      ],
      multiSelect: false
    }
  ]
})
```

Adapt the example options to match the user's context if you know it from memory/profile. The user can always pick "Other" to type a custom value for any question.

After receiving answers:
1. Map the topic to a slug for `output_prefix` (lowercase, hyphenated, no spaces — e.g., "Agent orchestration" → "agent-orch")
2. Map geographic focus to `geo_focus` (null for "Global", string for others)
3. Parse `top_n` from the digest size answer (3, 5, or 10)
4. Write the full settings file with all defaults + the new subject:
   ```json
   { "version": 1, "top_n": 5, "target_candidates": 20, "lookback_days": 7,
     "output_dir": "output", "language": "en",
     "weights": { "novelty": 1, "relevance": 1, "slopiness": 1, "technical": 1, "feasibility": 1 },
     "obsidian_vault": null, "subjects": [{ ... }] }
   ```
5. Validate `output_dir` exists (create if needed) before proceeding.
6. Confirm: "Saved. Run `/weekly-digest add [topic]` to add more subjects."
7. Proceed to Phase 1 with the newly configured subject.

The same `AskUserQuestion` pattern should be used for `/weekly-digest add` — ask topic, geo focus, and confirm the generated slug.

**State B — subjects exist, user ran `/weekly-digest` (no args):** Run all subjects sequentially.

**When subjects list is empty but `version` field exists (user cleared subjects intentionally):** Don't auto-onboard. Respond: "No subjects configured. Add one with `/weekly-digest add [topic]`."

For the full settings schema, see `settings.example.json` in the skill directory.

## Configuration

Settings live at `~/.claude/skills/weekly-digest/settings.json`.

### Settings schema

```json
{
  "version": 1,
  "top_n": 5,
  "target_candidates": 20,
  "lookback_days": 7,
  "output_dir": "output",
  "language": "en",
  "weights": {
    "novelty": 1,
    "relevance": 1,
    "slopiness": 1,
    "technical": 1,
    "feasibility": 1
  },
  "obsidian_vault": null,
  "subjects": [
    {
      "topic": "agent orchestration",
      "geo_focus": "European, UK, Asian — not American",
      "output_prefix": "agent-orch"
    }
  ]
}
```

All fields except `subjects` are optional — missing keys use defaults shown above. The `output_prefix` must be a lowercase hyphenated slug (no spaces).

### Managing subjects

- `/weekly-digest config` — show current settings
- `/weekly-digest add [topic]` — interactively add a new default subject (ask for geo focus and output prefix)
- `/weekly-digest remove [topic]` — remove a subject from defaults
- `/weekly-digest` (no args) — run all default subjects sequentially, producing separate file sets for each
- `/weekly-digest [topic]` — run a single topic as a one-off (ignores defaults)

### Settings reference

| Key | Default | What it does |
|-----|---------|-------------|
| `top_n` | 5 | How many items appear in the digest |
| `target_candidates` | 20 | How many candidates to aim for in research |
| `lookback_days` | 7 | How far back to search (appended to queries as date range) |
| `output_dir` | `"output"` | Directory for generated files (relative to cwd) |
| `language` | `"en"` | Preferred source language; non-matching sources deprioritized |
| `weights` | all 1.0 | Per-parameter multipliers for the overall score formula |
| `obsidian_vault` | null | Path to Obsidian vault; when set, digest is copied to `{vault}/Digests/YYYYMMDD-{prefix}.md` |

## Phase 1: Scope

Parse the user's request for:

- **Topic** (required, or from settings): e.g., "agent orchestration", "quantum computing", "climate tech"
- **Geographic focus** (optional, or from settings): e.g., "European, UK, Asian — not American". Default: no filter

Auto-detect today's date for file naming (YYYYMMDD format).

If the user gives a vague topic like "AI", push back and ask them to narrow it — broad topics produce generic results.

## Phase 2: Research

Run **4-6 parallel WebSearch queries** designed to cover different angles of the topic. The goal is `target_candidates` unique items (default 20). Use `lookback_days` to scope recency — include month/year in queries for the configured window. Structure searches like this:

| Query pattern | What it catches |
|---------------|-----------------|
| `[topic] breakthrough announcements [month] [year]` | Major launches, product releases |
| `[topic] startup funding [year] [geo]` | Funding rounds, new entrants |
| `[topic] open source release [year]` | OSS frameworks, tools |
| `[topic] research paper arxiv [year]` | Academic contributions |
| `[topic] enterprise production [year] [geo]` | Real deployments, case studies |
| `[topic] regulation governance [year] [geo]` | Policy, compliance, standards |

If a geographic focus is specified, add geographic terms to queries and add a dedicated regional search. When `language` is set, prefer sources in that language.

Deduplicate across search results. Aim for diversity — reject a candidate pool that's all from the same source type (e.g., all market forecasts or all press releases). Check that at least 3 of these 6 categories are represented.

**If fewer than 15 candidates are found:** widen one query by removing the year/month filter and run it again. If still below 15, proceed with what exists and note the shortfall in the raw file header.

## Phase 3: Source Verification

Select the **top 8-10 candidates for verification** using this pre-screening signal: pick items whose search snippets contain at least one of: a specific named person/organization, a specific date, a version number, or a dollar amount. Deprioritize items with exclusively superlative or vague language.

Use WebFetch on primary sources to check for slop indi
Files: 3
Size: 16.4 KB
Complexity: 29/100
Category: Web Dev

Related in Web Dev