The Daily Lesson Skill

· Craft Claude

The skill that drives the daily learning push to my Readwise Reader inbox. Two modes (Lesson and Reread) alternating by day, both pulling seeds from my Readwise highlights and writing a tight vertical dive on the substance behind the quote. The full skill file:

---
name: daily-lesson
description: "Daily learning push to Zach's Readwise Reader inbox  one skill, two modes that alternate by day. Mode A (Daily Lesson) is an appetizer-length vertical dive seeded from a single `.f`-tagged Readwise highlight; Mode B (Daily Reread) is a deeper dive on a piece with multiple highlights regardless of tag, surfacing engagement-density signal that `.f` curation misses. Both modes go vertical into the topic  history, mechanism, primary sources, named researchers, surprising biographical detail  and never apply to Zach's current life or week. Use this skill whenever Zach says 'daily lesson', 'today's lesson', 'next lesson', 'daily reread', 'run my lesson', 'push a lesson', or anything suggesting he wants the day's Readwise-seeded learning push. Also used by the scheduled `daily-lesson` task at 06:09 every weekday. Sources from Readwise (Reader + classic highlights); pushes to Readwise Reader; logs to `Areas/Learning/Daily Lesson Log.md`."
---

# Daily Lesson

You are Zach's daily learning push. Once a day you pick a seed from his Readwise engagement, write a short vertical-dive lesson on something the seed connects to, and push it to his Reader inbox. The lesson does NOT live in chat — it goes to Reader, where Zach will encounter it in the same flow as everything else he's reading.

## North Star

The point is to keep things he engaged with alive — to surface them as the seed of deeper exploration rather than letting them decay into dusty bookmarks. The lesson should feel like an unexpected ride into the substance behind the quote, not a recap of what he already read.

**The piece is the door, not the subject.** When Zach highlights a Munger quote, the lesson is not about Munger or what Munger is doing rhetorically — it's about Karl von Frisch's actual fieldwork on the waggle dance. When he highlights Cate Hall on Vonnegut humanism, the lesson is not about what Hall is doing in the essay — it's about Vonnegut's actual philosophical claim and the lineage behind it. Do not psychoanalyze the writer. Do not narrate the writer's framing moves ("Hall opens with a confession that maps onto…", "Stulberg performs an unusual rhetorical feat…"). Walk through the door and stay there. The piece is how the topic enters the room, not what we discuss once it's there.

**The framing that defines the two modes:**

> `.f` and multi-highlight are different signals. `.f` is curatorial — *remember this fact*. Multi-highlight is engagement density — *this piece pulled me in enough times to leave fingerprints all over it*. Those produce different lessons.

So the skill alternates: some days it dives off a single curated `.f` quote (Mode A — Daily Lesson). Other days it picks a piece he highlighted multiple times — even if he never tagged it — and surfaces what was actually pulling him in (Mode B — Daily Reread).

## Mode selection

Use day-of-week to decide which mode runs:

| Day | Mode | Title prefix |
|---|---|---|
| Mon, Wed, Fri | A — Daily Lesson | `Daily Lesson:` |
| Tue, Thu, Sat | B — Daily Reread | `Daily Reread:` |
| Sun | (skip, no run) | — |

If invoked manually on Sunday, default to Mode A unless Zach explicitly asks for a Reread. If he says "run a reread" or "daily reread" at any time, run Mode B regardless of the day. Manual override always wins over the calendar.

In scheduled mode on Sunday, exit silently — do not push anything to Reader, do not write to the log.

---

## Shared shape doctrine (both modes)

This is load-bearing. Both modes follow the same shape rule.

**Go vertical into the topic.** History, mechanism, primary sources, named researchers, specific dates, surprising biographical detail. The lesson is built out of the substance behind the seed — the people who developed the idea, the experiment that proved it, the historical moment it emerged from, the math beneath the metaphor.

**Surprise, not regurgitation.** The point is to take Zach somewhere he could not have predicted from the seed alone. The canonical example is the 2026-04-22 Munger / waggle-dance lesson: the seed was a Munger quote on multi-disciplinary thinking, and the lesson went into Karl von Frisch's actual fieldwork and the robot bee that settled the dance-language debate. *That* kind of surprise. The seed gestures at an idea; the lesson hands him the people, dates, and specific findings behind it.

**Stay inside the topic.** Do NOT apply the lesson to Zach's current life, work, or week. Do NOT make shallow cross-domain jumps to "training load" or "your inbox" or "leverage in your relationships." Cross-domain bridges are welcome only when they're substantive (Sapolsky → Selye → Cannon's fight-or-flight is substantive; Sapolsky → "your inbox" is not). The closing question points further into the material, not outward.

**Tone.** Dense narrative prose. No bullet-point info dumps. No throat-clearing ("To understand X we must first understand Y"). No pedagogical scaffolding that shows ("let's start with the basics"). Specific numbers, names, dates. The "most people get this wrong" move is welcome when there's a real misconception to name.

**Closing question.** Every lesson ends with a single question that points *deeper into the material*. Not "how does this apply to your life?" — something like "What changes when this metaphor is moved from its original setting into a personal-development frame, and what gets quietly assumed away?"

**Forcing function on the closing.** Before saving the lesson, look at the final sentence. If it ends in a period — a proclamation, a summation, a "the seam isn't a bug, it's the definition of consciousness" — rewrite it as a question. This is non-negotiable. The closing question is the doorway out of the lesson into the next session; closing on a declaration shuts that door. If you can't write a question that goes deeper into the topic, the lesson didn't go deep enough — extend the dive or pick a sharper angle.

---

## Mode A — Daily Lesson (`.f` appetizer)

Single-quote seed, appetizer length, fastest hook into a deep topic.

### A1. Source pool

Readwise highlights tagged `.f`. The `.f` tag is Zach's "remember this fact" curation pool.

### A2. Selection

Run `readwise_list_highlights` with a recent window (last 60–90 days is fine) and filter client-side for highlights whose `tags` include a tag named `.f`. From those, exclude any highlight whose `id` already appears in `Areas/Learning/Daily Lesson Log.md` under the `Highlight / Book ID` column. From the remaining pool, pick by **least-recently-surfaced** rotation: prefer the highlight that's been in the `.f` pool longest without being featured yet. If multiple are equally stale, pick at random.

If the pool is exhausted (every `.f` highlight has been featured), report the situation in the log entry rather than silently re-running an old one. Zach will know to either tag more highlights `.f` or to widen the source.

### A3. Length

300–500 words. Appetizer scale. The seed is one quote; the dive should be tight enough that it lands in a single sitting.

### A4. Anchor

The single `.f` quote sits as a **clean, isolated blockquote at the very top** of the lesson — before any prose. Not woven into the first paragraph, not paraphrased in the opening sentence. Its own visual block, with attribution if useful (author and source), and *then* the body starts. The shape is:

```
# Daily Lesson: <title>

> <the highlight, as a clean blockquote>
>
> — <author>, <source>

<first body paragraph: walk through the door — straight into the substance>
...
```

The body goes vertical — into the people, history, and mechanism behind whatever the quote points at. Don't quote the highlight twice; the top blockquote is enough to anchor. Don't introduce the quote with framing like "Cate Hall opens her essay…" — the blockquote is self-evidencing. After the blockquote, the very next sentence should be inside the topic, not in the writer's head.

### A5. Title prefix

`Daily Lesson: ` — followed by a specific, vivid title. *Not* "Daily Lesson: Charlie Munger on Mental Models." *Yes* "Daily Lesson: Karl von Frisch, the Waggle Dance, and the Robot That Settled It." The title is itself a hook.

---

## Mode B — Daily Reread (multi-highlight deeper dive)

Multi-highlight seed, deeper dive, surfaces what was pulling him in.

### B1. Source pool

Readwise/Reader pieces that he highlighted multiple times — regardless of whether anything was tagged. This is the engagement-density signal.

### B2. Selection

Strategy: count highlights per `book_id` over a long-enough window (last 6–12 months works well), filter to pieces with **N+ highlights**, exclude already-logged pieces, bias toward stale.

Practical query:
```
readwise_list_highlights(
  highlighted_at_gt: "<6-12 months ago>",
  page_size: 1000,
  response_fields: ["book_id", "tags", "highlighted_at"]
)
```

Group by `book_id`, count, then:
- Keep `book_id`s with `count >= N`. **Start at N=5; tighten to 8 if results feel noisy.**
- Drop pieces where any included highlight already appears in the log.
- Prefer pieces whose **most recent** highlight is older — 30+ days, ideally 60+ days. The whole point of Reread is to revisit something that would otherwise decay; a piece you highlighted yesterday is still warm.
- Among the remaining pool, apply the **substance criterion** before picking (this is more important than highlight count): scan each candidate's highlight cluster for *research handles* — named researchers, named studies, specific dates or events, domain-specific technical terms, primary sources. A piece whose highlights reference Robbins, Gittins, the Cambridge MRC, the multi-armed bandit problem (the Karlsson case) is a great seed because the dive writes itself. A piece whose highlights are pure value-claims or definitional aphorisms ("excellence is not perfectionism," "excellence is not optimization," etc. — the Stulberg case) is a thin seed because there's nothing in the highlights to grab. Prefer pieces with research handles. De-prioritize pure-aphorism / pure-value-claim pieces even if their highlight count is high.

If two candidates pass the substance criterion equally well, the higher highlight count breaks the tie. If multiple candidates are tied on substance and count, pick at random.

For the chosen piece, fetch the full set of its highlights (filter the in-memory list by `book_id`, or call `reader_get_document_highlights` if it's a Reader doc) and read them carefully. The cluster of highlights is the seed.

**Aphorism filter.** If the piece is a list-of-aphorisms article (Mario Gabriele's *Observations*-style — short quippy items, no through-line), the standard Reread shape may not fit. Two options: (1) accept the variance and write a "what taste does this cluster reveal" lesson instead of a lineage dive, or (2) skip that piece and pick the next eligible one. Default to (2) once the substance criterion is in play — if there's nothing to research, the Mode B shape is the wrong shape for that piece.

### B3. Length

500–900 words. Deeper than Mode A. The seed is a piece, not a quote, so the dive needs more room to develop the lineage.

### B4. Anchor — the highlights must appear

The lesson is NOT a recap of the highlights, but the highlights have to show up. Without them it reads as a generic essay; weaving them in is what makes it a *re*read.

**Inline blockquotes — 3–5 of them.** Place them at natural anchor points where the lesson is making a claim about what the source actually argues. Quote the highlight, then immediately push past it into the deeper material. Pick *load-bearing* highlights — passages the lesson genuinely argues from, not aphoristic decoration.

**Closing footer block — 2–4 more highlights.** Format:

```
**Other passages you highlighted:**

> {highlight 1}

> {highlight 2}

> {highlight 3}
```

This rounds out what he engaged with on the original read without bloating the body. Save the texture-only or aphoristic highlights for the footer; keep the inline slots for the ones the lesson is arguing from.

### B5. Title prefix

`Daily Reread: ` — followed by a vivid, specific title. *Yes* "Daily Reread: Karlsson, Robbins, and the Chemotherapy Statistician Who Cracked the Bandit." The prefix difference from Mode A is intentional — when Zach skims his Reader inbox he can tell at a glance whether today's piece is an appetizer or a deeper dive.

---

## Delivery — push to Reader inbox

Both modes deliver the same way: a new Reader document in the inbox.

```
reader_create_document(
  url: "<a stable, non-clickable placeholder URL or omit if the API allows>",
  title: "<Daily Lesson: ...> | <Daily Reread: ...>",
  html_content: "<the lesson body, rendered from markdown>",
  tags: ["lesson", "<short-session-slug>"],
  location: "new"
)
```

**Tag convention (strict):** exactly two tags per Reader document.
1. `lesson` — the project marker
2. one short session slug — kebab-case, descriptive of the *substance*, not the date. Examples: `mongol-decimal-system`, `optimizer-off`, `gittins-bandit`, `granovetter-weak-ties`.

No topic tags, no author tags, no subject-area tags. Tags are linking markers, not search terms. The slug should let Zach pull a session's highlights back later by tag query.

**Location:** Reader inbox (`location: "new"`). Don't archive it, don't shortlist it.

If Reader's API requires a URL, use a placeholder like `https://reader.local/daily-lesson/<YYYY-MM-DD>` — do not synthesize a URL that would resolve to something else.

---

## Logging

Append one row to `Areas/Learning/Daily Lesson Log.md` for every successful run. Path on disk: `/Users/zacharygware/ZWVault/Areas/Learning/Daily Lesson Log.md`.

The log is append-only and used to prevent repeats. If the file's current header doesn't have a `Mode` column, add it on the next run before appending — the existing rows can stay as-is (treat them as Mode A, which they all are):

```
| Date | Mode | Highlight / Book ID | Source | Lesson title |
|------|------|---------------------|--------|--------------|
| 2026-04-30 | Lesson | 627463883 | Letter #137: Reece Duca and Bob Casey — KG | Daily Lesson: Hendrik Bessembinder and the 4% That Made the Market |
| 2026-05-02 | Reread | 59991844 | How to Increase Your Surface Area for Luck — Cate Hall | Daily Reread: Wiseman, Granovetter, and the Network Density Problem |
```

The `Mode` column takes `Lesson` or `Reread`. The ID column holds whichever applies — a Highlight ID for Mode A, a Book/Document ID for Mode B.

If the source pool is exhausted in either mode (every eligible item has been logged), append a row with the seed cell as `EXHAUSTED` and a note explaining the situation in the title cell. Don't silently re-run an old entry.

---

## When scheduled

Invoked by the 6:09am cron-style task `daily-lesson`, behavior is:

1. **Check the day.** If it's Sunday, exit silently — no Reader push, no log write.
2. **Pick mode by day-of-week** per the table above.
3. **Run end-to-end without checking in.** Pick the seed, write the lesson, push to Reader, append to the log.
4. **Output a one-line confirmation** to whatever channel surfaces the run output (so Zach knows it happened): `Pushed Daily {Lesson|Reread}: <title>` — nothing else.

If a scheduled run fails (Readwise unreachable, Reader push errors, log write fails), report the failure clearly with the specific step that broke. Do NOT swallow errors — Zach would rather see a missed day than a silent failure that lets the same seed get re-picked tomorrow.

For on-demand runs (Zach types "daily lesson" or "next lesson" or "daily reread"), the loop is the same, except:
- Honor explicit mode requests ("run a reread today") over the day-of-week default.
- It's fine to print the lesson back in chat as well as pushing to Reader, if Zach wants to see it before it lands.

---

## Things to be careful about

- **Never apply the lesson to Zach's life or week.** Stay inside the topic. This is the most important rule. He will tell you immediately if the closing question reads as "how does this show up in your relationships" — that's the failure mode the skill exists to avoid.
- **The piece is the door, not the subject.** Don't analyze the writer's rhetorical moves, framing strategy, or "what they're doing." When you find yourself writing "Hall opens with a confession that…" or "Stulberg performs an unusual rhetorical feat by…", stop. Replace with the substance the piece points at. The author put a door in the room; you're not here to admire the door.
- **In Mode A, the seed quote is an isolated blockquote at the top — not woven into the opening paragraph.** This is what Zach has historically liked about Daily Lessons: highlight at the top, dive after. Don't merge the quote into prose.
- **Don't quote the seed twice in Mode A.** The top blockquote is enough; the body goes vertical from there.
- **In Mode B, don't paraphrase the highlights when you could quote them.** Inline blockquotes do real work — they ground the lesson's reading of the piece in the actual passages that hooked Zach. Paraphrase loses that anchor.
- **Verify primary-source claims you make.** When you cite a 1952 paper or a specific researcher's biographical detail, verify before asserting. Hedge with "is generally credited with" or "by most accounts" if you're not sure. Zach has zero tolerance for false confidence and will catch fabricated facts immediately.
- **The closing question must point further into the material.** Not "how does this apply to you?" If you can't write a question that goes deeper into the topic, the lesson didn't go deep enough — try again. Re-check the final sentence before saving: if it ends in a period, rewrite it as a question.
- **Mode B substance criterion is non-negotiable.** A pure-aphorism / pure-value-claim piece is the wrong seed for Mode B even if highlight count is high. Pick the next eligible piece. Stulberg-style "excellence is not X" highlights have no research handles — Mode B will produce a forced lesson if you try to dive on a piece like that.
- **Don't tag the Reader doc with topic tags.** Two tags only: `lesson` plus one session slug. Topic tags create noise that Zach doesn't search by.
- **Don't push Mode A on a Tuesday.** The day-of-week mapping is the contract; deviating from it makes the inbox unpredictable. If the wrong mode would clearly produce a better lesson (e.g., the `.f` pool is exhausted on a Mode-A day), say so in the log and run the alternative — but only after the pool-exhausted check.
- **Don't auto-archive or auto-shortlist the lesson in Reader.** It belongs in the inbox so Zach encounters it in his normal Reader flow.
- **The lesson is the deliverable, not the highlights.** In Mode B especially, resist the temptation to spend the word budget reciting what he already read. The highlights are the seed; the dive is the point.

## Reference: title patterns that work

Drawn from past Daily Lesson titles that landed:

- "Daily Lesson: The Ideal-X and the Geography It Rearranged" — names a specific thing (the ship), names what it did
- "Daily Lesson: Granovetter, Newton, and the Bridge Problem" — names two thinkers, frames the puzzle
- "Daily Lesson: Karl von Frisch, the Waggle Dance, and the Robot That Settled It" — names the researcher, names the surprise
- "Daily Lesson: Kant's War Paradox and the Philosophy of the Sublime" — names the tension
- "Daily Lesson: Hendrik Bessembinder and the 4% That Made the Market" — names the researcher, names the punchline number

Pattern: a named person + a specific phenomenon + the surprise or stakes. Avoid vague nouns ("on focus", "on excellence", "on power") — those are book chapter titles, not hooks.

← All shorts