This commit is contained in:
Shayan Rais
2026-04-23 23:56:33 +05:00
parent 61a847cc4d
commit 7d45d7e9ae
@@ -343,9 +343,26 @@
</div>
<!-- ============================================================ -->
<!-- SLIDE 6: AI Jargon Word Cloud -->
<!-- SLIDE 6: Agenda -->
<!-- ============================================================ -->
<div class="slide" data-slide="6">
<h1>Agenda</h1>
<div style="margin-top: 48px; max-width: 900px;">
<div style="display: flex; gap: 24px; margin-bottom: 32px; align-items: flex-start;">
<div style="font-size: 3rem; color: #3f51b5; font-weight: 700; line-height: 1; min-width: 60px;">1.</div>
<p style="font-size: 1.35rem; color: #333; margin: 0; padding-top: 10px; line-height: 1.5;">Fetch weather from a <strong>single source of truth</strong> &mdash; <strong>10 out of 10 times</strong>.</p>
</div>
<div style="display: flex; gap: 24px; align-items: flex-start;">
<div style="font-size: 3rem; color: #4caf50; font-weight: 700; line-height: 1; min-width: 60px;">2.</div>
<p style="font-size: 1.35rem; color: #333; margin: 0; padding-top: 10px; line-height: 1.5;">Learn different concepts of <strong>Claude Code</strong> along the way.</p>
</div>
</div>
</div>
<!-- ============================================================ -->
<!-- SLIDE 7: AI Jargon Word Cloud -->
<!-- ============================================================ -->
<div class="slide" data-slide="7">
<h1 style="font-size: 1.6rem; margin-bottom: 8px; color: #888; border-bottom: none; padding-bottom: 0; font-weight: 400; letter-spacing: 1px; text-transform: uppercase;">Jargon you'll hear</h1>
<p style="font-size: 1rem; color: #aaa; margin-bottom: 0; font-style: italic;">I'll unpack each of these as we go &mdash; for now, just let them wash over you.</p>
<div style="position: relative; width: 100%; min-height: calc(100vh - 130px); overflow: hidden;">
@@ -451,7 +468,7 @@
<!-- ============================================================ -->
<!-- SLIDE 4: Boris Three-Tweets GIF -->
<!-- ============================================================ -->
<div class="slide" data-slide="7">
<div class="slide" data-slide="8">
<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 80vh; text-align: center;">
<figure style="max-width: 900px; width: 100%;">
<img src="../../!/root/boris-slider.gif" alt="Boris Cherny slides showing the spectrum of Claude Code usage styles" style="width: 100%; border-radius: 12px; box-shadow: 0 4px 24px rgba(0,0,0,0.12);" />
@@ -466,7 +483,7 @@
<!-- ============================================================ -->
<!-- SLIDE 6: Model + Harness (Brain + Body) -->
<!-- ============================================================ -->
<div class="slide" data-slide="8">
<div class="slide" data-slide="9">
<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 75vh; text-align: center;">
<h1 style="border-bottom: none; padding-bottom: 0; font-size: 3rem; margin-bottom: 28px;">What is Claude Code?</h1>
<p style="font-size: 1.4rem; color: #555; margin: 0; max-width: 900px;"><strong>Model</strong> (Brain &#x1F9E0; &mdash; e.g. Opus, GPT) <span style="color: #999; margin: 0 10px;">+</span> <strong>Harness</strong> (Body &#x1F4AA; &mdash; e.g. tools, MCP, memory)</p>
@@ -476,7 +493,7 @@
<!-- ============================================================ -->
<!-- SLIDE 8: Models &mdash; Brain, Knowledge Cut-off -->
<!-- ============================================================ -->
<div class="slide" data-slide="9">
<div class="slide" data-slide="10">
<h1>&#x1F9E0; Models &mdash; e.g. Opus, GPT</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;">
@@ -498,7 +515,7 @@
<!-- ============================================================ -->
<!-- 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;">
@@ -509,7 +526,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;">
@@ -561,7 +578,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;">
@@ -591,7 +608,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;">
@@ -602,7 +619,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>
@@ -612,7 +629,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;">
@@ -623,7 +640,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;">
@@ -632,9 +649,27 @@
</div>
<!-- ============================================================ -->
<!-- SLIDE 17: Vibe Coding &mdash; Karpathy&rsquo;s original tweet -->
<!-- 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;">
<div style="display: flex; gap: 24px; margin-bottom: 32px; align-items: flex-start;">
<div style="font-size: 3rem; color: #c62828; font-weight: 700; line-height: 1; min-width: 60px;">1.</div>
<p style="font-size: 1.35rem; color: #333; margin: 0; padding-top: 10px; line-height: 1.5;">Models sometimes <strong>don&rsquo;t do</strong> the vibe coding.</p>
</div>
<div style="display: flex; gap: 24px; align-items: flex-start;">
<div style="font-size: 3rem; color: #c62828; font-weight: 700; line-height: 1; min-width: 60px;">2.</div>
<p style="font-size: 1.35rem; color: #333; margin: 0; padding-top: 10px; line-height: 1.5;">Models <strong>don&rsquo;t follow</strong> the single source of truth.</p>
</div>
</div>
</div>
<!-- ============================================================ -->
<!-- SLIDE 19: Vibe Coding &mdash; Karpathy&rsquo;s original tweet -->
<!-- ============================================================ -->
<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;">
@@ -645,7 +680,7 @@
<!-- ============================================================ -->
<!-- SLIDE 6: Vibe Coding vs Agentic Engineering -->
<!-- ============================================================ -->
<div class="slide" data-slide="18">
<div class="slide" data-slide="20">
<h1>Vibe Coding vs Agentic Engineering</h1>
<div class="two-col">
<div>
@@ -711,129 +746,19 @@ todoapp/
</div>
</div>
<!-- ============================================================ -->
<!-- SLIDE 7: What is Vibe Coding? -->
<!-- ============================================================ -->
<div class="slide" data-slide="19">
<h1>What is Vibe Coding?</h1>
<div class="two-col" style="margin-top: 28px;">
<div class="col-card bad">
<h4>Vibe Coding (ad-hoc)</h4>
<p>"Write me a weather report for Dubai."</p>
<p style="margin-top: 8px; font-size: 0.95rem; color: #888;">No source specified. No format agreed. No memory of last time. The output varies every run.</p>
<p style="margin-top: 12px; color: #c62828;"><strong>Unpredictable. Hard to share. Hard to repeat.</strong></p>
</div>
<div class="col-card good">
<h4>Agentic Engineering (structured)</h4>
<p>"<code>/weather-orchestrator</code>"</p>
<p style="margin-top: 8px; font-size: 0.95rem; color: #888;">One keystroke. Claude knows the source (Open-Meteo), the format (SVG card), the agent (weather-reporter).</p>
<p style="margin-top: 12px; color: #2e7d32;"><strong>Repeatable. Shareable. Same every time.</strong></p>
</div>
</div>
<div style="display: grid; grid-template-columns: 1fr; gap: 24px; margin-top: 28px; max-width: 720px; margin-left: auto; margin-right: auto;">
<img src="../assets/hallucination/hallucinations-opus-strawperry.jpg" alt="Claude Opus hallucinating the letter count in 'strawberry'" style="width: 100%; border-radius: 12px; box-shadow: 0 4px 24px rgba(0,0,0,0.12);" />
<img src="../assets/hallucination/hallucinations-opus-year.jpg" alt="Claude Opus hallucinating the current year" style="width: 100%; border-radius: 12px; box-shadow: 0 4px 24px rgba(0,0,0,0.12);" />
</div>
<div class="trigger-box" style="margin-top: 28px;">
<h4>The Fix Isn't Better Prompting</h4>
<p>Better prompting doesn't fix these. But giving Claude a <strong>tool to count letters</strong> and a <strong>file that says today's date</strong> does. That's what <strong>agents, skills, and CLAUDE.md</strong> are for &mdash; and that's what this session teaches.</p>
</div>
</div>
<!-- ============================================================ -->
<!-- SLIDE 8: Good vs Bad Prompts -->
<!-- ============================================================ -->
<div class="slide" data-slide="20">
<h1>Good vs Bad Prompts</h1>
<p>Even before you set up any structure, <strong>how you prompt</strong> matters. Specific beats vague. Context beats assumption.</p>
<div class="two-col" style="margin-top: 28px;">
<div class="col-card bad">
<h4>Weak Prompt</h4>
<p>"Give me the weather."</p>
<p style="margin-top: 8px; font-size: 0.95rem; color: #888;">Which city? Celsius or Fahrenheit? From a live API or training data? Claude guesses.</p>
</div>
<div class="col-card good">
<h4>Strong Prompt</h4>
<p>"Fetch the current temperature for Dubai from Open-Meteo and return it in Celsius."</p>
<p style="margin-top: 8px; font-size: 0.95rem; color: #888;">Source named. Location named. Unit specified. No guessing needed.</p>
</div>
</div>
<div class="two-col">
<div class="col-card bad">
<h4>Weak Prompt</h4>
<p>"Make this better."</p>
<p style="margin-top: 8px; font-size: 0.95rem; color: #888;">Better how? Shorter? More formal? Better structured? Claude will pick one at random.</p>
</div>
<div class="col-card good">
<h4>Strong Prompt</h4>
<p>"Rewrite this in a warmer, less formal tone. Keep it under 100 words."</p>
<p style="margin-top: 8px; font-size: 0.95rem; color: #888;">Tone named. Length constrained. Unambiguous.</p>
</div>
</div>
<div class="trigger-box">
<h4>But Here's the Bigger Move</h4>
<p>You can encode good prompts permanently so you never have to write them again. That's what the next five topics are about.</p>
</div>
</div>
<!-- ============================================================ -->
<!-- SLIDE 9: Meet the Person — TOC -->
<!-- ============================================================ -->
<div class="slide" data-slide="21">
<h1>Meet the Person</h1>
<p>We're going to learn five concepts using <strong>one running example</strong>: a weather reporter agent that fetches Dubai's temperature and renders a weather card. Same person &mdash; five different angles.</p>
<div class="toc-vertical">
<div class="toc-item" onclick="goToSlide(11)">
<span class="toc-number">1</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F464; Agents &mdash; The Person (job title: weather reporter)</div>
<div class="toc-sub">A specialist hired for a specific role &mdash; same Claude, different hat</div>
</div>
</div>
<div class="toc-item" onclick="goToSlide(17)">
<span class="toc-number">2</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F393; Skills &mdash; What the Person Can Do</div>
<div class="toc-sub">do reporting on weather &bull; play a game &bull; read a book</div>
</div>
</div>
<div class="toc-item" onclick="goToSlide(23)">
<span class="toc-number">3</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F9E0; Context &mdash; The Person's Brain (storage &mdash; the 1M-token space)</div>
<div class="toc-sub">where knowledge gets loaded in &mdash; resets each session</div>
</div>
</div>
<div class="toc-item" onclick="goToSlide(28)">
<span class="toc-number">4</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F4CB; CLAUDE.md &mdash; The Pocket Rulebook</div>
<div class="toc-sub">standing instructions read at the start of every shift</div>
</div>
</div>
<div class="toc-item" onclick="goToSlide(34)">
<span class="toc-number">5</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F3BC; Workflow &mdash; The Trigger</div>
<div class="toc-sub">one command kicks off the whole chain &mdash; commands are the entry point</div>
</div>
</div>
</div>
</div>
<!-- ============================================================ -->
<!-- TOPIC 1: AGENTS (Slides 9-14) -->
<!-- ============================================================ -->
<!-- Slide 8: Agents Section Divider -->
<div class="slide section-slide" data-slide="22" 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="23">
<div class="slide" data-slide="22">
<h1>The Restaurant Kitchen</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -856,7 +781,7 @@ todoapp/
</div>
<!-- Slide 10: Prompting vs Agent table -->
<div class="slide" data-slide="24">
<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>
@@ -897,7 +822,7 @@ todoapp/
</div>
<!-- Slide 11: Agents Get Their Own Brain -->
<div class="slide" data-slide="25">
<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>
@@ -930,7 +855,7 @@ todoapp/
</div>
<!-- Slide 12: How to Create an Agent -->
<div class="slide" data-slide="26">
<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">
@@ -973,7 +898,7 @@ todoapp/
</div>
<!-- Slide 13: Agent Config Fields -->
<div class="slide" data-slide="27">
<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;">
@@ -1021,14 +946,14 @@ todoapp/
<!-- ============================================================ -->
<!-- Slide 14: Skills Section Divider -->
<div class="slide section-slide" data-slide="28" 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="29">
<div class="slide" data-slide="28">
<h1>The Training Manual</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -1055,7 +980,7 @@ todoapp/
</div>
<!-- Slide 16: When to Turn Something Into a Skill -->
<div class="slide" data-slide="30">
<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>
@@ -1092,7 +1017,7 @@ todoapp/
</div>
<!-- Slide 17: Why Separate Agents and Skills? -->
<div class="slide" data-slide="31">
<div class="slide" data-slide="30">
<h1>Why Separate Agents and Skills?</h1>
<div class="two-col">
<div>
@@ -1118,7 +1043,7 @@ todoapp/
</div>
<!-- Slide 18: How to Create Your Own Skill -->
<div class="slide" data-slide="32">
<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">
@@ -1171,7 +1096,7 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- Slide 19: Skill Config Fields -->
<div class="slide" data-slide="33">
<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;">
@@ -1211,14 +1136,14 @@ Fetch the current temperature for Dubai, UAE.
<!-- ============================================================ -->
<!-- Slide 20: Context Section Divider -->
<div class="slide section-slide" data-slide="34" 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="35">
<div class="slide" data-slide="34">
<h1>Claude's Brain</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -1256,7 +1181,7 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- Slide 22: What Loads at Session Start -->
<div class="slide" data-slide="36">
<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;" />
@@ -1290,7 +1215,7 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- Slide 23: Keep the Brain Clear -->
<div class="slide" data-slide="37">
<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">
@@ -1334,7 +1259,7 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- Slide 24: How to Manage Your Context -->
<div class="slide" data-slide="38">
<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">
@@ -1379,14 +1304,14 @@ Fetch the current temperature for Dubai, UAE.
<!-- ============================================================ -->
<!-- Slide 25: CLAUDE.md Section Divider -->
<div class="slide section-slide" data-slide="39" 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="40">
<div class="slide" data-slide="39">
<h1>The Employee Handbook</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -1414,7 +1339,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="41">
<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">
@@ -1459,7 +1384,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="42">
<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>
@@ -1496,7 +1421,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="43">
<div class="slide" data-slide="42">
<h1>What Goes in CLAUDE.md</h1>
<div class="code-block"><span class="comment"># CLAUDE.md</span>
@@ -1524,7 +1449,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
<!-- Slide 30: How CLAUDE.md Loads -->
<div class="slide" data-slide="44">
<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">
@@ -1557,14 +1482,14 @@ This is a TodoApp with a FastAPI backend and React frontend.
<!-- ============================================================ -->
<!-- Slide 31: Commands Section Divider -->
<div class="slide section-slide" data-slide="45" 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="46">
<div class="slide" data-slide="45">
<h1>Commands &mdash; The Entry Point</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -1608,7 +1533,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="47">
<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">
@@ -1663,14 +1588,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="48" 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="49">
<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>
@@ -1697,7 +1622,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="50">
<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">
@@ -1720,7 +1645,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="51">
<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">
@@ -1771,7 +1696,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
<!-- ============================================================ -->
<!-- SLIDE 40: Closing -->
<!-- ============================================================ -->
<div class="slide title-slide" data-slide="52">
<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>