diff --git a/.claude/agents/presentation-learning-journey.md b/.claude/agents/presentation-learning-journey.md index adb90a2..21df218 100644 --- a/.claude/agents/presentation-learning-journey.md +++ b/.claude/agents/presentation-learning-journey.md @@ -179,3 +179,5 @@ After completing changes, report to the user: - **2026-04-24 content-slide heading centering fix (slides 24/25/26)**: the `.slide-viewport-content` wrapper (`min-height: 100vh; display: flex; align-items: center`) was centering headings vertically even with `justify-content: flex-start` inline override — `align-items: center` acts on the cross-axis (horizontal in a column flex), but the real problem is that the full-viewport-height flex container pushes content away from the top edge. Fix: removed `.slide-viewport-content` entirely from slides 24 and 26 (plain content slides with substantial content), letting them flow exactly like slide 22 — h1 at top, content below, no wrapper at all. Slide 25 (Demo — nearly empty body) uses a plain `
` spacer wrapping only the h1, so the footer is pushed below the fold without any flex centering. Section-divider slides 23/27/28/29 keep their `.slide-viewport-content` wrapper unchanged — they are supposed to be viewport-centered. **Rule**: for content slides with a pillar-footer, do NOT wrap in `.slide-viewport-content`. Use a bare spacer div only on near-empty content slides (less than ~3 elements of body content) to push the footer below the fold. - **2026-04-24 image-only tips slides inserted at 31 and 32 (57 → 59 slides)**: two new slides inserted after slide 29 (the last agents-section content slide) before slide 30 (the CLAUDE.md section intro). Both slides are plain content slides with `data-level="agents"` so the journey bar stays on the agents level without re-firing. Layout: bare `

` (no wrapper) + flex-centered `
` containing the ``. The `-200px` calculation (h1 ~100px + pillar-footer ~100px gap) matches slide 26's pattern for full-bleed image slides. Pillar-footer is included with Agents as the active card (matching the active pattern on slides 26-29). Renumber method: Python sentinel script — each `data-slide="N"` for N=31-57 replaced via `##SENTINELN##` intermediates, then resolved to N+2. No `goToSlide` hardcoded calls exist in this deck; `totalSlides` is DOM-computed. Section-divider positions after insertion: **agents=23 (unchanged), skills=35, context=41, claude-md=46, commands=52, workflow=55**. Total slides: **59**. Images at `../assets/concepts/agents/agent-tips-1.png` and `agent-tips-2.png` — both verified present before insertion. - **2026-04-24 Skills emoji updated + 2 new slides inserted at 38-39 (63 → 65 slides)**: Edit 1 — slide 37's h1 emoji changed from `🎓` (graduation cap) to `🎯` (target) to match the Skills pillar-footer card emoji established on slide 14 and used across all 12 pillar footers. Edit 2 — new slide 38 ("Create your first skill", `data-level="skills"`) inserted with a `.two-col` layout: two `.col-card` divs (both green `#4caf50` border-left) for Method 1 (write by prompting) and Method 2 (use Anthropic's `skill-creator`), followed by an inline amber warning box (`background: #fff3e0; border-left: 4px solid #ff9800`) flagging the wrong-structure gotcha of Method 1. Edit 3 — new slide 39 ("Skill config fields with frontmatter", `data-level="skills"`) mirrors slide 29's agent field-table pattern exactly: 8 field rows using `.field-row` / `.field-name` / `.field-desc` / `.field-enforced` / `.pill-harness` / `.pill-prompt` CSS classes, italic intro sentence, and a centered `.fafafa` footnote callout for `description`. Old slides 38-63 renumbered to 40-65 via Python sentinel replacement (descending-order sentinel phase + resolve phase). **Redundancy flag**: old Skills section opener (was slide 39, now slide 41 — `data-level="skills"`, `section-slide` class, "Topic 2 — What the Weather Reporter Knows") is now downstream of the new teaching slides 38-39 which already fire `→ skills` earlier. Same pattern as the CLAUDE.md dual-fire situation at slides 33 and 52. Recommended: keep slide 41 as a breathing-space divider into the weather-reporter narrative arc; the journey bar will not re-fire (same level). Final section-divider positions: **Agents=23, Skills=38 (first skills data-level), Context=47, CLAUDE.md=52, Commands=58, Workflow=61**. Total slides: **65**. +- **2026-04-24 context-section concept-intro enrichment (65 → 68 slides)**: (1) Green pill `✅ Fresh every chat` (bg `#2e7d32`) added to slide 41 as the first pill before the 2 existing red pills — visual order green/property first, red/pitfalls after. (2) New slide 42 ("Claude's Brain", `data-level="context"`) and slide 43 ("What Loads at Session Start", `data-level="context"`) inserted between slide 41 and the old Skills section opener (old 42 → 44). Both new slides pull content forward from the old deep-dive slides 49/50 (which become slides 51/52 after the +2 renumber). Both carry full pillar-footers with Context active. Renumber technique: Python sentinel with per-occurrence targeting — `data-slide="42" data-level="skills"` and `data-slide="43">` were each targeted individually before the bulk 44-66→46-68 sweep, because slides 42/43 now have two occurrences each (new context + old skills). The CSS rule `.slide[data-slide="1"]` creates a false-positive when counting `data-slide` occurrences via regex — use `Counter` + ignore the CSS line, or grep for `
` with 3 items). Yellow callout div (`background: #fff8e1; border-left: 4px solid #f9a825`) at bottom of right column ties the academic finding to the "dumb-zone problem" vocabulary already established. Image file did NOT exist at insertion time — placeholder path used; user must drop `lost-in-middle.png` into `presentation/assets/concepts/context/`. Renumber method: Python sentinel replacing `data-slide="44"` through `"68"` → `"45"` through `"69"`, with a first-occurrence restore for the new slide's own `"44"` sentinel. New section-divider positions: **agents=23 (unchanged), skills=45, context=51, claude-md=56, commands=62, workflow=65**. Total slides: **69**. diff --git a/presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html b/presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html index 698a89b..35b6445 100644 --- a/presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html +++ b/presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html @@ -2212,19 +2212,93 @@ todoapp/
+ +
+
+

📄 Lost in the Middle

+

by Nelson F. Liu · Stanford University · 2023

+ +
+ +
+ Lost in the Middle paper illustration showing U-shaped attention curve across context positions +
+ + +
+
    +
  1. + Primacy & recency work. + Information at the start of the context (what Claude sees first) and at the end (what Claude saw most recently) gets strong attention. These are the safe zones. +
  2. +
  3. + The middle is the dumb zone. + Content buried in the middle of a long context effectively disappears. The model has the tokens, but doesn't weight them strongly during generation. It's in the working memory — but not really read. +
  4. +
  5. + Practical implication. + Keep critical instructions either at the very top (in CLAUDE.md) or near the user's most recent message. A bigger context window doesn't help if your payload lands in the middle. +
  6. +
+ +
+

This is the "dumb-zone problem" the deck has been warning about — now you know where it came from.

+
+
+
+
+ +
+ -
+
Topic 2

🎓 Skills — What the Weather Reporter Knows

Skills are the specific things the reporter has been trained to do. Our reporter has two: fetch the data, and render it as a card.

-
+

The Training Manual

Think of it like this

@@ -2251,7 +2325,7 @@ todoapp/
-
+

When to Turn Something Into a Skill

Tip from Boris Cherny (creator of Claude Code) — Feb 1, 2026

@@ -2288,7 +2362,7 @@ todoapp/
-
+

Why Separate Agents and Skills?

@@ -2314,7 +2388,7 @@ todoapp/
-
+

How to Create Your Own Skill

Skills are plain markdown files. If you can write a recipe, you can write a skill.

@@ -2367,7 +2441,7 @@ Fetch the current temperature for Dubai, UAE.
-
+

Skill Config Fields

The small config block at the top of a SKILL.md (the "frontmatter") controls how the skill behaves:

@@ -2407,14 +2481,14 @@ Fetch the current temperature for Dubai, UAE. -
+
Topic 3

🧠 Context — The Reporter's Brain

Now that you've met the reporter and know their skills, let's understand what they can actually hold in mind at once. Every agent — including the weather reporter — gets its own fresh brain.

-
+

Claude's Brain

Think of it like this

@@ -2452,7 +2526,7 @@ Fetch the current temperature for Dubai, UAE.
-
+

What Loads at Session Start

The moment you open Claude Code, certain things land in Claude's brain before you've typed a word. The rest waits in the wings — only loaded when you actually need it. This is called progressive disclosure.

Diagram showing what loads into Claude's context window at session start @@ -2486,7 +2560,7 @@ Fetch the current temperature for Dubai, UAE.
-
+

Keep the Brain Clear

The more stuff crammed into Claude's brain, the harder it is to focus on what matters. This is called context rot — performance drops as the brain gets crowded.

@@ -2530,7 +2604,7 @@ Fetch the current temperature for Dubai, UAE.
-
+

How to Manage Your Context

You can't create the context — it's just there, the moment you open a chat. But you can see how full it is, trim it down, or wipe it clean. Three commands give you full control.

@@ -2575,14 +2649,14 @@ Fetch the current temperature for Dubai, UAE. -
+
Topic 4

📋 CLAUDE.md — The Reporter's Pocket Rulebook

The weather reporter consults this at the start of every shift — even though their brain resets overnight. It's the standing instructions pinned in that brain before you've said a word.

-
+

The Employee Handbook

Think of it like this

@@ -2610,7 +2684,7 @@ This is the Q2 marketing campaign brief — targeting small business owners.
-
+

How to Create Your CLAUDE.md

You don't need to write CLAUDE.md by hand. Claude can look at your project and draft one for you.

@@ -2655,7 +2729,7 @@ open, edit, save # Tweak it like any doc<
-
+

Grow CLAUDE.md With Every Mistake

Tip from Boris Cherny (creator of Claude Code) — Feb 1, 2026

@@ -2692,7 +2766,7 @@ open, edit, save # Tweak it like any doc<
-
+

What Goes in CLAUDE.md

# CLAUDE.md @@ -2720,7 +2794,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
-
+

How CLAUDE.md Loads

Claude Code uses two mechanisms to find CLAUDE.md files:

@@ -2753,14 +2827,14 @@ This is a TodoApp with a FastAPI backend and React frontend. -
+
Topic 5

⚡ Commands — The Trigger

One word kicks off the whole chain. /weather-orchestrator → agent → skill → SVG card. Commands are the entry point into any workflow.

-
+

Commands — The Entry Point

Think of it like this

@@ -2804,7 +2878,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
-
+

How to Create Your Own Command

Commands are markdown files too. If you can write a recipe, you can write a command.

@@ -2859,14 +2933,14 @@ This is a TodoApp with a FastAPI backend and React frontend. -
+
Putting It All Together

🎼 Workflow — All Five Pieces Together

Watch the weather reporter example run from one keystroke to SVG card output. Five concepts, one orchestrated flow.

-
+

Command → Agent → Skill

This is the core architecture pattern of Claude Code workflows — demonstrated in this very repo by the weather example:

The Orchestration Flow @@ -2893,7 +2967,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
-
+

Two Ways Skills Are Used

The weather workflow demonstrates both skill patterns in a single flow:

@@ -2916,7 +2990,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
-
+

How to Wire Your Own Workflow

A workflow isn't a separate file type. It emerges when one command calls agents and skills in sequence.

@@ -2967,7 +3041,7 @@ This is a TodoApp with a FastAPI backend and React frontend. -
+

Journey So Far

Five concepts, one running example

From meeting the weather reporter to wiring the full Command → Agent → Skill chain. The same five pieces compose every workflow you'll ever build.

diff --git a/presentation/assets/concepts/context/lost-in-the-middle.png b/presentation/assets/concepts/context/lost-in-the-middle.png new file mode 100644 index 0000000..68cee76 Binary files /dev/null and b/presentation/assets/concepts/context/lost-in-the-middle.png differ