updated presentation

This commit is contained in:
Shayan Rais
2026-04-24 12:16:54 +05:00
parent fa1b4998c1
commit 7174ae2ad3
3 changed files with 127 additions and 49 deletions
@@ -171,3 +171,4 @@ After completing changes, report to the user:
- **2026-04-22 deck relocated + GDG Kolachi re-topic of slide 1**: deck moved from `presentation/learning-journey/` to `presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/`. This agent's `description` frontmatter already reflects the new path. Slide 1 was replaced with a conference title slide for GDG Kolachi (Apr 25, 2026). New elements: (1) pill-shaped event badge using `linear-gradient(90deg, #1a73e8 0%, #4285f4 55%, #ea4335 100%)` — GDG blue-to-red — with `border-radius: 999px` and a blue drop-shadow; (2) h1 "Agentic Engineering in the CLI" at 3.2rem with tight letter-spacing; (3) `.subtitle` with inline `<strong style="color:#1a73e8">Claude Code</strong>` and `<em style="color:#ea4335;font-style:normal">Gemini CLI</em>` brand tints; (4) two 140px round avatar cards side-by-side (gap: 72px) for Shayan Rais and Syed Umaid Ahmed — avatar hover uses blue glow for Shayan and red glow for Umaid to mirror the GDG gradient. Umaid's photo resolves at `../assets/introduction/Umaid/umaid.png` (verified). The `../../!/claude-jumping.svg` mascot path resolves correctly from the new deck folder (the `!/` dir is at repo root, two levels up from `presentation/<deck-name>/`) — but the mascot was deliberately dropped because the GDG title slide doesn't need it. Slide count: 40. `data-slide="1"` wrapper unchanged. Slides 2-40 untouched. TOC goToSlide targets: Agents=9, Skills=15, Context=21, CLAUDE.md=26, Commands=32. **Color convention for GDG-brand elements**: use `#1a73e8` (Google blue) and `#ea4335` (Google red) consistently — these are the two poles of the event-badge gradient and the subtitle tints. Do not substitute `#4285f4` (the midpoint blue) for either named role.
- **2026-04-23 slide deletion + renumber (51 → 49)**: deleted old slides 3 ("Umaid on Shark Tank Pakistan") and 5 ("#1 Repository Of The Day"), then renumbered to fill gaps. The correct tool for renumbering after a deletion of non-consecutive slides is a Python sentinel-replacement script, NOT a descending-order sed chain. Sed applies all expressions in a single pass per line, so a value can be transformed by multiple expressions (e.g. `data-slide="9"``"7"``"5"``"3"`) — the result is catastrophic collision. The safe pattern: (1) replace each `data-slide="N"` with `data-slide="##N##"` for all N to be changed (in any order), (2) replace each sentinel `data-slide="##N##"` with the final value. Because sentinel strings are unique and never match final-value strings, there are zero collisions. After sentinel replacement, check `grep '##'` but be aware that legitimate `## Section` headings in code blocks will trigger false-positive matches — use `grep 'data-slide="##'` instead. The `goToSlide` function is defined but never called with hardcoded slide numbers in this deck — no TOC updates were needed. `totalSlides` is auto-computed from DOM, also no update needed. Section-divider positions after deletion: Agents=19, Skills=25, Context=31, CLAUDE.md=36, Commands=42, Workflow=45.
- **2026-04-22 global dual-mascot pattern (Claude top-left, Gemini top-right)**: the deck now renders two persistent corner mascots on every slide via a pair of fixed-position `<div class="header-logo">` elements just before the `.navigation` block. CSS: `.header-logo` is `position: fixed; top: 20px; left: 40px; width: 100px; height: 65px; z-index: 50` (Claude, top-left). `.header-logo.right` adds `left: auto; right: 40px` to flip it to top-right (Gemini). Assets: `../../!/claude-jumping.svg` and `../../!/gemini-jumping.svg` — both verified present at repo root `!/`. The Gemini jumping mascot pairs with the Claude one for the GDG dual-CLI deck. Per-slide mascot `<img>` tags that were hardcoded on slide 1 (with `position: absolute`) are now deleted — use global divs only. The `style="position: relative;"` that was on the slide 1 wrapper was removed because it only existed to anchor those absolute-positioned per-slide mascots. **z-index safety**: mascots at z-index 50 sit below `.journey-bar` (99) and `.navigation` / `.progress` (100) — no overlap. The journey bar is at `right: 62px; top: 95px`, which is far enough below `top: 20px` that the right mascot and the bar track do not visually collide. **Rule**: for any GDG dual-CLI deck, always use this two-div global pattern rather than per-slide mascots — it guarantees consistent placement across all 40 slides without per-slide maintenance.
- **2026-04-24 restore-original + keep-new insert at slot 9 (50 → 51 slides)**: the "Can answer / Can't answer" grid (commit `61a847c`) was restored at slot 9 and the Stochastic Parrots slide (authored in `fa1b499`) was shifted to slot 10. Recovery method: `git show 61a847c:...index.html | sed -n 'LINE,LINEp'` to extract the exact pre-edit markup, then Edit tool to insert it before the current slot-9 comment block, then a Python sentinel-replacement script to renumber old slides 10-50 → 11-51. The sentinel approach is mandatory here because Python `str.replace` applies all substitutions, so descending-order alone is insufficient for a multi-value renumber (unlike sed's single-expression-per-call mode). No `goToSlide` hardcoded calls exist in this deck — only the function definition — so no TOC update was needed. `totalSlides` is DOM-computed, no hardcoded bump. New section-divider positions: **Agents=21, Skills=27, Context=33, CLAUDE.md=38, Commands=44, Workflow=47**. Total slides: **51**. git ref for the original slide 9 content: `61a847c`.
@@ -484,31 +484,108 @@
</div>
<!-- ============================================================ -->
<!-- SLIDE 8: Models &mdash; Brain, Knowledge Cut-off -->
<!-- SLIDE 9: Models — Can answer / Can't answer -->
<!-- ============================================================ -->
<div class="slide" data-slide="9">
<h1>&#x1F9E0; Models &mdash; e.g. Opus, GPT</h1>
<!-- Headline -->
<div style="text-align: center; margin-bottom: 36px;">
<div style="font-size: 3.2rem; line-height: 1; margin-bottom: 12px;">&#x1F99C;</div>
<h1 style="border-bottom: none; padding-bottom: 0; font-size: 2.8rem; margin-bottom: 8px;">&ldquo;Stochastic Parrots&rdquo;</h1>
<p style="font-size: 1.1rem; color: #777; margin: 0;"><strong>Stochastic</strong> means random/probabilistic &mdash; models don&rsquo;t <em>know</em> the answer, they <em>sample</em> from a probability distribution.</p>
</div>
<!-- Probability distribution visual -->
<div style="max-width: 720px; margin: 0 auto 32px; background: #f8f9fa; border-radius: 12px; padding: 28px 36px;">
<p style="font-size: 1rem; color: #555; margin: 0 0 20px; text-align: center;">Prompt: &nbsp;<code style="font-size: 1.1rem; background: #fff; border: 1px solid #ddd; padding: 4px 12px; border-radius: 6px;">&ldquo;The sky is ___&rdquo;</code></p>
<!-- bar: blue 62% -->
<div style="display: flex; align-items: center; gap: 14px; margin-bottom: 10px;">
<div style="width: 120px; text-align: right; font-size: 0.95rem; color: #333; font-family: 'SF Mono', Monaco, monospace; flex-shrink: 0;">blue</div>
<div style="flex: 1; background: #e8eaf6; border-radius: 4px; height: 32px; position: relative; overflow: hidden;">
<div style="position: absolute; left: 0; top: 0; height: 100%; width: 62%; background: linear-gradient(90deg, #3949ab, #5c6bc0); border-radius: 4px; transition: width 0.6s ease;"></div>
</div>
<div style="width: 48px; font-size: 1rem; font-weight: 700; color: #3949ab; flex-shrink: 0;">62%</div>
</div>
<!-- bar: clear 14% -->
<div style="display: flex; align-items: center; gap: 14px; margin-bottom: 10px;">
<div style="width: 120px; text-align: right; font-size: 0.95rem; color: #333; font-family: 'SF Mono', Monaco, monospace; flex-shrink: 0;">clear</div>
<div style="flex: 1; background: #e8eaf6; border-radius: 4px; height: 32px; position: relative; overflow: hidden;">
<div style="position: absolute; left: 0; top: 0; height: 100%; width: 14%; background: linear-gradient(90deg, #1e88e5, #42a5f5); border-radius: 4px;"></div>
</div>
<div style="width: 48px; font-size: 1rem; font-weight: 700; color: #1e88e5; flex-shrink: 0;">14%</div>
</div>
<!-- bar: dark 8% -->
<div style="display: flex; align-items: center; gap: 14px; margin-bottom: 10px;">
<div style="width: 120px; text-align: right; font-size: 0.95rem; color: #333; font-family: 'SF Mono', Monaco, monospace; flex-shrink: 0;">dark</div>
<div style="flex: 1; background: #e8eaf6; border-radius: 4px; height: 32px; position: relative; overflow: hidden;">
<div style="position: absolute; left: 0; top: 0; height: 100%; width: 8%; background: linear-gradient(90deg, #546e7a, #78909c); border-radius: 4px;"></div>
</div>
<div style="width: 48px; font-size: 1rem; font-weight: 700; color: #546e7a; flex-shrink: 0;">8%</div>
</div>
<!-- bar: falling 0.3% -->
<div style="display: flex; align-items: center; gap: 14px;">
<div style="width: 120px; text-align: right; font-size: 0.95rem; color: #aaa; font-family: 'SF Mono', Monaco, monospace; flex-shrink: 0;">falling</div>
<div style="flex: 1; background: #e8eaf6; border-radius: 4px; height: 32px; position: relative; overflow: hidden;">
<div style="position: absolute; left: 0; top: 0; height: 100%; width: 0.3%; background: #ef9a9a; border-radius: 4px;"></div>
</div>
<div style="width: 48px; font-size: 0.9rem; font-weight: 700; color: #aaa; flex-shrink: 0;">0.3%</div>
</div>
<p style="font-size: 0.8rem; color: #aaa; margin: 16px 0 0; text-align: center; font-style: italic;">Each run the model <em>samples</em> &mdash; temperature controls how widely it samples.</p>
</div>
<!-- Attribution -->
<p style="font-size: 0.78rem; color: #bbb; text-align: center; margin: 0;">Bender, Gebru, McMillan-Major, Mitchell &mdash; <em>On the Dangers of Stochastic Parrots</em> (2021)</p>
</div>
<!-- ============================================================ -->
<!-- SLIDE 10: Model Limitations &mdash; Real-time access -->
<!-- ============================================================ -->
<div class="slide" data-slide="10">
<h1>&#x1F9E0; Models &mdash; e.g. Opus, GPT, Gemini</h1>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin: 40px 0;">
<div class="col-card" style="border-left: 4px solid #4caf50;">
<h4 style="color: #2e7d32; text-transform: none; letter-spacing: 0; margin-bottom: 10px;">&#x2705; Can answer</h4>
<p style="font-size: 1.05rem; color: #333; margin: 0;"><em>&ldquo;What is the capital of Japan?&rdquo;</em></p>
<p style="font-size: 1.05rem; color: #333; margin: 0 0 8px;"><em>&ldquo;What is the capital of Japan?&rdquo;</em></p>
<p style="font-size: 1.05rem; color: #333; margin: 0 0 8px;"><em>&ldquo;When did Pakistan gain independence?&rdquo;</em></p>
<p style="font-size: 1.05rem; color: #333; margin: 0;"><em>&ldquo;Who wrote Romeo and Juliet?&rdquo;</em></p>
</div>
<div class="col-card" style="border-left: 4px solid #f44336;">
<h4 style="color: #c62828; text-transform: none; letter-spacing: 0; margin-bottom: 10px;">&#x274C; Can&rsquo;t answer</h4>
<p style="font-size: 1.05rem; color: #333; margin: 0;"><em>&ldquo;Who won yesterday&rsquo;s match?&rdquo;</em></p>
<p style="font-size: 1.05rem; color: #333; margin: 0 0 8px;"><em>&ldquo;Who won yesterday&rsquo;s match?&rdquo;</em></p>
<p style="font-size: 1.05rem; color: #333; margin: 0 0 8px;"><em>&ldquo;What&rsquo;s today&rsquo;s USD &rarr; PKR rate?&rdquo;</em></p>
<p style="font-size: 1.05rem; color: #333; margin: 0;"><em>&ldquo;What did Anthropic release yesterday?&rdquo;</em></p>
</div>
</div>
<div class="trigger-box">
<h4>Example: Opus 4.7</h4>
<p style="margin: 0 0 4px;">Knowledge cut-off: <strong>January 2026</strong>.</p>
<p style="font-size: 0.8rem; color: #888; margin: 0; font-style: italic;">Probabilistic by nature.</p>
<p style="font-size: 1rem; color: #555; margin: 0 0 16px;">Every model &mdash; no matter how new &mdash; has a knowledge cut-off. Events after that date simply do not exist inside the model.</p>
<div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin: 0;">
<div class="trigger-box" style="margin: 0;">
<h4>Opus 4.7 &mdash; Anthropic</h4>
<p style="margin: 0 0 4px;">Knowledge cut-off: <strong>January 2026</strong></p>
<p style="font-size: 0.82rem; color: #666; margin: 0;">Released 2026-04-17</p>
</div>
<div class="trigger-box" style="margin: 0;">
<h4>GPT-5.5 &mdash; OpenAI</h4>
<p style="margin: 0 0 4px;">Knowledge cut-off: <strong>August 2025*</strong></p>
<p style="font-size: 0.82rem; color: #666; margin: 0;">Released 2026-04-23 &mdash; brand-new, but still has a cut-off.</p>
</div>
<div class="trigger-box" style="margin: 0;">
<h4>Gemini 3.1 Pro &mdash; Google</h4>
<p style="margin: 0 0 4px;">Knowledge cut-off: <strong>January 2025</strong></p>
<p style="font-size: 0.82rem; color: #666; margin: 0;">Released 2026-02-19</p>
</div>
</div>
<p style="font-size: 0.7rem; color: #aaa; font-style: italic; margin: 10px 0 0;">*OpenAI has not officially published GPT-5.5&rsquo;s cutoff; shown value is the published cutoff of GPT-5.4 (released 6 weeks earlier), used as best-available proxy.</p>
</div>
<!-- ============================================================ -->
<!-- SLIDE 9: Model Limitations &mdash; Real-time access -->
<!-- ============================================================ -->
<div class="slide" data-slide="10">
<div class="slide" data-slide="11">
<h1>&#x1F9E0; Limitations</h1>
<p>The raw model has <strong>no real-time access</strong> &mdash; no internet, no files, no clock.</p>
<div style="text-align: center; margin: 24px 0;">
@@ -519,7 +596,7 @@
<!-- ============================================================ -->
<!-- SLIDE 10: Harness (1 of 2) &mdash; mind, methods, memory -->
<!-- ============================================================ -->
<div class="slide" data-slide="11">
<div class="slide" data-slide="12">
<h1>&#x1F4AA; Harness &mdash; the body around the brain</h1>
<div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 18px; margin: 28px 0;">
<div class="col-card" style="flex: 0 1 calc(33.333% - 12px); border-left: 4px solid #009688; text-align: center;">
@@ -571,7 +648,7 @@
<!-- ============================================================ -->
<!-- SLIDE 11: Harness (2 of 2) &mdash; senses, rules, reflexes -->
<!-- ============================================================ -->
<div class="slide" data-slide="12">
<div class="slide" data-slide="13">
<h1>&#x1F4AA; Harness &mdash; the body around the brain</h1>
<div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 18px; margin: 28px 0;">
<div class="col-card" style="flex: 0 1 calc(33.333% - 12px); border-left: 4px solid #4caf50; text-align: center;">
@@ -601,7 +678,7 @@
<!-- ============================================================ -->
<!-- SLIDE 12: Problem solved with harness &mdash; success case -->
<!-- ============================================================ -->
<div class="slide" data-slide="13">
<div class="slide" data-slide="14">
<h1>&#x1F389; Yayyyyy! Problem solved with harness</h1>
<p>The harness reaches out via <strong>WebSearch</strong> and fetches a real answer from live sources.</p>
<div style="text-align: center; margin: 24px 0;">
@@ -612,7 +689,7 @@
<!-- ============================================================ -->
<!-- SLIDE 13: Suspense / transition &mdash; But...? -->
<!-- ============================================================ -->
<div class="slide" data-slide="14">
<div class="slide" data-slide="15">
<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 75vh; text-align: center;">
<div style="font-size: 12rem; color: #3f51b5; line-height: 1; font-weight: 700;">?</div>
<p style="font-size: 1.6rem; color: #555; margin: 24px 0 0; max-width: 900px; font-weight: 600;">Really?</p>
@@ -622,7 +699,7 @@
<!-- ============================================================ -->
<!-- SLIDE 14: Non-determinism 1 &mdash; Refuses to use tools -->
<!-- ============================================================ -->
<div class="slide" data-slide="15">
<div class="slide" data-slide="16">
<h1>&#x1F4AA; Non-determinism &mdash; Doesn&rsquo;t always use its tools</h1>
<p>Similar prompt &mdash; but this time <strong>the model decided not to use the tool</strong>.</p>
<div style="text-align: center; margin: 24px 0;">
@@ -633,7 +710,7 @@
<!-- ============================================================ -->
<!-- SLIDE 15: Non-determinism 2 &mdash; Tools can fail -->
<!-- ============================================================ -->
<div class="slide" data-slide="16">
<div class="slide" data-slide="17">
<h1>&#x1F4AA; Non-determinism &mdash; Tools can fail</h1>
<p>The model first tried <strong>one source</strong> &mdash; it <strong>failed (403)</strong> &mdash; so it fell back to <strong>another</strong>.</p>
<div style="text-align: center; margin: 24px 0;">
@@ -644,7 +721,7 @@
<!-- ============================================================ -->
<!-- SLIDE 18: The Two Problems &mdash; what we're solving -->
<!-- ============================================================ -->
<div class="slide" data-slide="17">
<div class="slide" data-slide="18">
<h1>The Two Problems</h1>
<p style="text-align: center; color: #666; font-style: italic; margin: 0 0 40px; font-size: 1.1rem;">These are the two problems we&rsquo;re trying to solve.</p>
<div style="max-width: 900px;">
@@ -662,7 +739,7 @@
<!-- ============================================================ -->
<!-- SLIDE 19: Vibe Coding &mdash; Karpathy&rsquo;s original tweet -->
<!-- ============================================================ -->
<div class="slide" data-slide="18">
<div class="slide" data-slide="19">
<h1>Vibe Coding</h1>
<p style="text-align: center; color: #666; margin: 0 0 20px; font-size: 1.05rem;"><strong>Andrej Karpathy</strong> &mdash; OpenAI founding team &middot; former Director of AI at Tesla &middot; founder of Eureka Labs.</p>
<div style="text-align: center; margin: 16px 0;">
@@ -673,7 +750,7 @@
<!-- ============================================================ -->
<!-- SLIDE 6: Vibe Coding vs Agentic Engineering -->
<!-- ============================================================ -->
<div class="slide" data-slide="19">
<div class="slide" data-slide="20">
<h1>Vibe Coding vs Agentic Engineering</h1>
<div class="two-col">
<div>
@@ -744,14 +821,14 @@ todoapp/
<!-- ============================================================ -->
<!-- Slide 8: Agents Section Divider -->
<div class="slide section-slide" data-slide="20" data-level="agents">
<div class="slide section-slide" data-slide="21" data-level="agents">
<div class="section-number">Topic 1</div>
<h1>&#x1F464; Agents &mdash; The Weather Reporter</h1>
<p class="section-desc">An agent is Claude playing a specific role. Meet the <strong>weather reporter</strong> &mdash; a specialist hired to fetch and report weather data for Dubai. Same Claude, different hat.</p>
</div>
<!-- Slide 9: The Restaurant Kitchen -->
<div class="slide" data-slide="21">
<div class="slide" data-slide="22">
<h1>The Restaurant Kitchen</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -774,7 +851,7 @@ todoapp/
</div>
<!-- Slide 10: Prompting vs Agent table -->
<div class="slide" data-slide="22">
<div class="slide" data-slide="23">
<h1>Prompting vs. Agent &mdash; Side by Side</h1>
<p>The difference in one picture: <strong>prompting is asking a stranger on the street; using an agent is asking your dedicated specialist.</strong></p>
<table>
@@ -815,7 +892,7 @@ todoapp/
</div>
<!-- Slide 11: Agents Get Their Own Brain -->
<div class="slide" data-slide="23">
<div class="slide" data-slide="24">
<h1>Agents Get Their Own Brain</h1>
<div class="info-box">
<h4>Tip from Thariq (Anthropic) &mdash; Apr 16, 2026</h4>
@@ -848,7 +925,7 @@ todoapp/
</div>
<!-- Slide 12: How to Create an Agent -->
<div class="slide" data-slide="24">
<div class="slide" data-slide="25">
<h1>How to Create Your Own Agent</h1>
<p>You don't write an agent from scratch &mdash; Claude helps you build one. Type <code>/agents</code> inside Claude Code and a guided menu opens.</p>
<div class="how-to-trigger">
@@ -891,7 +968,7 @@ todoapp/
</div>
<!-- Slide 13: Agent Config Fields -->
<div class="slide" data-slide="25">
<div class="slide" data-slide="26">
<h1>Agent Config Fields</h1>
<p>The config block at the top of an agent file controls its identity and capabilities. Here's what the real <code>weather-agent.md</code> uses:</p>
<div style="margin: 24px 0;">
@@ -939,14 +1016,14 @@ todoapp/
<!-- ============================================================ -->
<!-- Slide 14: Skills Section Divider -->
<div class="slide section-slide" data-slide="26" data-level="skills">
<div class="slide section-slide" data-slide="27" data-level="skills">
<div class="section-number">Topic 2</div>
<h1>&#x1F393; Skills &mdash; What the Weather Reporter Knows</h1>
<p class="section-desc">Skills are the specific things the reporter has been trained to do. Our reporter has two: <strong>fetch the data</strong>, and <strong>render it as a card</strong>.</p>
</div>
<!-- Slide 15: The Training Manual -->
<div class="slide" data-slide="27">
<div class="slide" data-slide="28">
<h1>The Training Manual</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -973,7 +1050,7 @@ todoapp/
</div>
<!-- Slide 16: When to Turn Something Into a Skill -->
<div class="slide" data-slide="28">
<div class="slide" data-slide="29">
<h1>When to Turn Something Into a Skill</h1>
<div class="info-box">
<h4>Tip from Boris Cherny (creator of Claude Code) &mdash; Feb 1, 2026</h4>
@@ -1010,7 +1087,7 @@ todoapp/
</div>
<!-- Slide 17: Why Separate Agents and Skills? -->
<div class="slide" data-slide="29">
<div class="slide" data-slide="30">
<h1>Why Separate Agents and Skills?</h1>
<div class="two-col">
<div>
@@ -1036,7 +1113,7 @@ todoapp/
</div>
<!-- Slide 18: How to Create Your Own Skill -->
<div class="slide" data-slide="30">
<div class="slide" data-slide="31">
<h1>How to Create Your Own Skill</h1>
<p>Skills are plain markdown files. If you can write a recipe, you can write a skill.</p>
<div class="how-to-trigger">
@@ -1089,7 +1166,7 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- Slide 19: Skill Config Fields -->
<div class="slide" data-slide="31">
<div class="slide" data-slide="32">
<h1>Skill Config Fields</h1>
<p>The small config block at the top of a SKILL.md (the "frontmatter") controls how the skill behaves:</p>
<div style="margin: 24px 0;">
@@ -1129,14 +1206,14 @@ Fetch the current temperature for Dubai, UAE.
<!-- ============================================================ -->
<!-- Slide 20: Context Section Divider -->
<div class="slide section-slide" data-slide="32" data-level="context">
<div class="slide section-slide" data-slide="33" data-level="context">
<div class="section-number">Topic 3</div>
<h1>&#x1F9E0; Context &mdash; The Reporter's Brain</h1>
<p class="section-desc">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 &mdash; including the weather reporter &mdash; gets its own fresh brain.</p>
</div>
<!-- Slide 21: Claude's Brain -->
<div class="slide" data-slide="33">
<div class="slide" data-slide="34">
<h1>Claude's Brain</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -1174,7 +1251,7 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- Slide 22: What Loads at Session Start -->
<div class="slide" data-slide="34">
<div class="slide" data-slide="35">
<h1>What Loads at Session Start</h1>
<p>The moment you open Claude Code, certain things land in Claude's brain <strong>before you've typed a word</strong>. The rest waits in the wings &mdash; only loaded when you actually need it. This is called <strong>progressive disclosure</strong>.</p>
<img src="../assets/concepts/context.jpg" alt="Diagram showing what loads into Claude's context window at session start" style="width: 100%; max-width: 800px; margin: 24px auto; display: block; border-radius: 8px;" />
@@ -1208,7 +1285,7 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- Slide 23: Keep the Brain Clear -->
<div class="slide" data-slide="35">
<div class="slide" data-slide="36">
<h1>Keep the Brain Clear</h1>
<p>The more stuff crammed into Claude's brain, the harder it is to focus on what matters. This is called <strong>context rot</strong> &mdash; performance drops as the brain gets crowded.</p>
<div class="info-box">
@@ -1252,7 +1329,7 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- Slide 24: How to Manage Your Context -->
<div class="slide" data-slide="36">
<div class="slide" data-slide="37">
<h1>How to Manage Your Context</h1>
<p>You can't <em>create</em> the context &mdash; it's just there, the moment you open a chat. But you can <strong>see</strong> how full it is, <strong>trim</strong> it down, or <strong>wipe</strong> it clean. Three commands give you full control.</p>
<div class="how-to-trigger">
@@ -1297,14 +1374,14 @@ Fetch the current temperature for Dubai, UAE.
<!-- ============================================================ -->
<!-- Slide 25: CLAUDE.md Section Divider -->
<div class="slide section-slide" data-slide="37" data-level="claude-md">
<div class="slide section-slide" data-slide="38" data-level="claude-md">
<div class="section-number">Topic 4</div>
<h1>&#x1F4CB; CLAUDE.md &mdash; The Reporter's Pocket Rulebook</h1>
<p class="section-desc">The weather reporter consults this at the start of every shift &mdash; even though their brain resets overnight. It's the standing instructions pinned in that brain before you've said a word.</p>
</div>
<!-- Slide 26: The Employee Handbook -->
<div class="slide" data-slide="38">
<div class="slide" data-slide="39">
<h1>The Employee Handbook</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -1332,7 +1409,7 @@ This is the Q2 marketing campaign brief &mdash; targeting small business owners.
</div>
<!-- Slide 27: How to Create CLAUDE.md -->
<div class="slide" data-slide="39">
<div class="slide" data-slide="40">
<h1>How to Create Your CLAUDE.md</h1>
<p>You don't need to write CLAUDE.md by hand. Claude can look at your project and draft one for you.</p>
<div class="how-to-trigger">
@@ -1377,7 +1454,7 @@ open, edit, save <span class="comment"># Tweak it like any doc</span><
</div>
<!-- Slide 28: Grow CLAUDE.md With Every Mistake -->
<div class="slide" data-slide="40">
<div class="slide" data-slide="41">
<h1>Grow CLAUDE.md With Every Mistake</h1>
<div class="info-box">
<h4>Tip from Boris Cherny (creator of Claude Code) &mdash; Feb 1, 2026</h4>
@@ -1414,7 +1491,7 @@ open, edit, save <span class="comment"># Tweak it like any doc</span><
</div>
<!-- Slide 29: What Goes in CLAUDE.md -->
<div class="slide" data-slide="41">
<div class="slide" data-slide="42">
<h1>What Goes in CLAUDE.md</h1>
<div class="code-block"><span class="comment"># CLAUDE.md</span>
@@ -1442,7 +1519,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
<!-- Slide 30: How CLAUDE.md Loads -->
<div class="slide" data-slide="42">
<div class="slide" data-slide="43">
<h1>How CLAUDE.md Loads</h1>
<p>Claude Code uses two mechanisms to find CLAUDE.md files:</p>
<div class="two-col">
@@ -1475,14 +1552,14 @@ This is a TodoApp with a FastAPI backend and React frontend.
<!-- ============================================================ -->
<!-- Slide 31: Commands Section Divider -->
<div class="slide section-slide" data-slide="43" data-level="commands">
<div class="slide section-slide" data-slide="44" data-level="commands">
<div class="section-number">Topic 5</div>
<h1>&#x26A1; Commands &mdash; The Trigger</h1>
<p class="section-desc">One word kicks off the whole chain. <code>/weather-orchestrator</code> &rarr; agent &rarr; skill &rarr; SVG card. Commands are the entry point into any workflow.</p>
</div>
<!-- Slide 32: Commands — The Entry Point -->
<div class="slide" data-slide="44">
<div class="slide" data-slide="45">
<h1>Commands &mdash; The Entry Point</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -1526,7 +1603,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
<!-- Slide 33: How to Create Your Own Command -->
<div class="slide" data-slide="45">
<div class="slide" data-slide="46">
<h1>How to Create Your Own Command</h1>
<p>Commands are markdown files too. If you can write a recipe, you can write a command.</p>
<div class="how-to-trigger">
@@ -1581,14 +1658,14 @@ This is a TodoApp with a FastAPI backend and React frontend.
<!-- ============================================================ -->
<!-- Slide 34: Workflow Sub-Section (Putting It All Together) -->
<div class="slide section-slide" data-slide="46" data-level="workflow">
<div class="slide section-slide" data-slide="47" data-level="workflow">
<div class="section-number">Putting It All Together</div>
<h1>&#x1F3BC; Workflow &mdash; All Five Pieces Together</h1>
<p class="section-desc">Watch the weather reporter example run from one keystroke to SVG card output. Five concepts, one orchestrated flow.</p>
</div>
<!-- Slide 35: Command → Agent → Skill -->
<div class="slide" data-slide="47">
<div class="slide" data-slide="48">
<h1>Command &rarr; Agent &rarr; Skill</h1>
<p>This is the <strong>core architecture pattern</strong> of Claude Code workflows &mdash; demonstrated in this very repo by the weather example:</p>
<div class="code-block"><span class="comment">The Orchestration Flow</span>
@@ -1615,7 +1692,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
<!-- Slide 36: Two Ways Skills Are Used -->
<div class="slide" data-slide="48">
<div class="slide" data-slide="49">
<h1>Two Ways Skills Are Used</h1>
<p>The weather workflow demonstrates both skill patterns in a single flow:</p>
<div class="two-col">
@@ -1638,7 +1715,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
<!-- Slide 37: How to Wire Your Own Workflow -->
<div class="slide" data-slide="49">
<div class="slide" data-slide="50">
<h1>How to Wire Your Own Workflow</h1>
<p>A workflow isn't a separate file type. It <em>emerges</em> when one command calls agents and skills in sequence.</p>
<div class="how-to-trigger">
@@ -1689,7 +1766,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
<!-- ============================================================ -->
<!-- SLIDE 40: Closing -->
<!-- ============================================================ -->
<div class="slide title-slide" data-slide="50">
<div class="slide title-slide" data-slide="51">
<h1>Journey So Far</h1>
<p class="subtitle">Five concepts, one running example</p>
<p style="margin-top: 20px; font-size: 1.1rem; color: #666; max-width: 640px;">From meeting the weather reporter to wiring the full <strong>Command &rarr; Agent &rarr; Skill</strong> chain. The same five pieces compose every workflow you'll ever build.</p>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 KiB

After

Width:  |  Height:  |  Size: 302 KiB