presentation/learning-journey: insert new slide 3 "What is Claude Code?" (Model + Harness + Tools)

Establishes the vocabulary (Model + Harness + Tools = Agent) before the deck
shows concrete examples. Three-column grid with color-coded cards explains
each layer for a non-technical audience, closed by a "Why This Matters"
callout with the Karachi time-zone example to make the harness/tools
distinction concrete.

Renumbers all subsequent slides (data-slide 3-37 → 4-38), updates all banner
comments, and shifts TOC goToSlide targets: Agents 7→8, Skills 13→14,
Context 19→20, CLAUDE.md 24→25, Commands 30→31. Total deck grew from 37 to
38 slides.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Shayan Rais
2026-04-18 22:07:48 +05:00
parent 3c4eded305
commit c3952d8e41
+110 -80
View File
@@ -166,9 +166,39 @@
</div>
<!-- ============================================================ -->
<!-- SLIDE 3: Vibe Coding vs Agentic Engineering -->
<!-- SLIDE 3: What is Claude Code? -->
<!-- ============================================================ -->
<div class="slide" data-slide="3">
<h1>What is Claude Code?</h1>
<p>Claude Code isn't just Claude. It's Claude (the model) wrapped in a <strong>harness</strong> with a set of <strong>tools</strong> &mdash; and that wrapper is what turns a chatbot into an agent.</p>
<div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 24px; margin: 32px 0;">
<div class="col-card" style="border-left: 4px solid #9c27b0; text-align: center;">
<div style="font-size: 2.2rem; margin-bottom: 12px;">&#x1F9E0;</div>
<h4 style="font-size: 1rem; color: #7b1fa2; text-transform: none; letter-spacing: 0; margin-bottom: 10px;"><strong>Model</strong></h4>
<p style="font-size: 0.95rem; color: #555; margin: 0;">The brain. Knows everything up to its training cutoff. Doesn&rsquo;t know today&rsquo;s date, can&rsquo;t read your files, can&rsquo;t search the web.</p>
</div>
<div class="col-card" style="border-left: 4px solid #2196f3; text-align: center;">
<div style="font-size: 2.2rem; margin-bottom: 12px;">&#x1F4AA;</div>
<h4 style="font-size: 1rem; color: #1565c0; text-transform: none; letter-spacing: 0; margin-bottom: 10px;"><strong>Harness</strong></h4>
<p style="font-size: 0.95rem; color: #555; margin: 0;">The body around the brain. Manages memory, permissions, how long conversations run, and how the brain talks to tools.</p>
</div>
<div class="col-card" style="border-left: 4px solid #4caf50; text-align: center;">
<div style="font-size: 2.2rem; margin-bottom: 12px;">&#x1F91C;</div>
<h4 style="font-size: 1rem; color: #2e7d32; text-transform: none; letter-spacing: 0; margin-bottom: 10px;"><strong>Tools</strong></h4>
<p style="font-size: 0.95rem; color: #555; margin: 0;">The hands. Read files, edit code, search the web, run commands, spawn helper agents.</p>
</div>
</div>
<p style="text-align: center; font-size: 1.3rem; font-weight: 600; color: #1a1a1a; margin: 24px 0;"><strong>Claude Code = Model + Harness + Tools</strong></p>
<div class="trigger-box">
<h4>Why This Matters</h4>
<p>Ask a bare model &ldquo;what&rsquo;s the capital of Pakistan?&rdquo; &mdash; it answers from training data. Ask it &ldquo;what time is it in Karachi right now?&rdquo; &mdash; it can&rsquo;t know. That second question needs a <strong>tool</strong>, exposed through a <strong>harness</strong>. That&rsquo;s the difference Claude Code makes &mdash; and the rest of this session teaches you how to configure it.</p>
</div>
</div>
<!-- ============================================================ -->
<!-- SLIDE 4: Vibe Coding vs Agentic Engineering -->
<!-- ============================================================ -->
<div class="slide" data-slide="4">
<h1>Vibe Coding vs Agentic Engineering</h1>
<div class="two-col">
<div>
@@ -235,9 +265,9 @@ todoapp/
</div>
<!-- ============================================================ -->
<!-- SLIDE 4: What is Vibe Coding? -->
<!-- SLIDE 5: What is Vibe Coding? -->
<!-- ============================================================ -->
<div class="slide" data-slide="4">
<div class="slide" data-slide="5">
<h1>What is Vibe Coding?</h1>
<div class="two-col" style="margin-top: 28px;">
<div class="col-card bad">
@@ -264,9 +294,9 @@ todoapp/
</div>
<!-- ============================================================ -->
<!-- SLIDE 5: Good vs Bad Prompts -->
<!-- SLIDE 6: Good vs Bad Prompts -->
<!-- ============================================================ -->
<div class="slide" data-slide="5">
<div class="slide" data-slide="6">
<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;">
@@ -300,41 +330,41 @@ todoapp/
</div>
<!-- ============================================================ -->
<!-- SLIDE 6: Meet the Person — TOC -->
<!-- SLIDE 7: Meet the Person — TOC -->
<!-- ============================================================ -->
<div class="slide" data-slide="6">
<div class="slide" data-slide="7">
<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(7)">
<div class="toc-item" onclick="goToSlide(8)">
<span class="toc-number">1</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F464; Agents &mdash; The Person</div>
<div class="toc-sub">A specialist with a job title: the weather reporter</div>
</div>
</div>
<div class="toc-item" onclick="goToSlide(13)">
<div class="toc-item" onclick="goToSlide(14)">
<span class="toc-number">2</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F393; Skills &mdash; What the Person Knows</div>
<div class="toc-sub">fetch temperature &bull; render SVG card &bull; write the script</div>
</div>
</div>
<div class="toc-item" onclick="goToSlide(19)">
<div class="toc-item" onclick="goToSlide(20)">
<span class="toc-number">3</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F9E0; Context &mdash; The Person's Brain</div>
<div class="toc-sub">finite working memory &mdash; ~1M tokens, resets each session</div>
</div>
</div>
<div class="toc-item" onclick="goToSlide(24)">
<div class="toc-item" onclick="goToSlide(25)">
<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(30)">
<div class="toc-item" onclick="goToSlide(31)">
<span class="toc-number">5</span>
<div style="flex: 1;">
<div class="toc-name">&#x1F3BC; Workflow &mdash; The Trigger</div>
@@ -345,18 +375,18 @@ todoapp/
</div>
<!-- ============================================================ -->
<!-- TOPIC 1: AGENTS (Slides 7-12) -->
<!-- TOPIC 1: AGENTS (Slides 8-13) -->
<!-- ============================================================ -->
<!-- Slide 7: Agents Section Divider -->
<div class="slide section-slide" data-slide="7" data-level="agents">
<!-- Slide 8: Agents Section Divider -->
<div class="slide section-slide" data-slide="8" 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 8: The Restaurant Kitchen -->
<div class="slide" data-slide="8">
<!-- Slide 9: The Restaurant Kitchen -->
<div class="slide" data-slide="9">
<h1>The Restaurant Kitchen</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -378,8 +408,8 @@ todoapp/
</div>
</div>
<!-- Slide 9: Prompting vs Agent table -->
<div class="slide" data-slide="9">
<!-- Slide 10: Prompting vs Agent table -->
<div class="slide" data-slide="10">
<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>
@@ -419,8 +449,8 @@ todoapp/
</div>
</div>
<!-- Slide 10: Agents Get Their Own Brain -->
<div class="slide" data-slide="10">
<!-- Slide 11: Agents Get Their Own Brain -->
<div class="slide" data-slide="11">
<h1>Agents Get Their Own Brain</h1>
<div class="info-box">
<h4>Tip from Thariq (Anthropic) &mdash; Apr 16, 2026</h4>
@@ -452,8 +482,8 @@ todoapp/
</div>
</div>
<!-- Slide 11: How to Create an Agent -->
<div class="slide" data-slide="11">
<!-- Slide 12: How to Create an Agent -->
<div class="slide" data-slide="12">
<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">
@@ -495,8 +525,8 @@ todoapp/
</div>
</div>
<!-- Slide 12: Agent Config Fields -->
<div class="slide" data-slide="12">
<!-- Slide 13: Agent Config Fields -->
<div class="slide" data-slide="13">
<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;">
@@ -540,18 +570,18 @@ todoapp/
</div>
<!-- ============================================================ -->
<!-- TOPIC 2: SKILLS (Slides 13-18) -->
<!-- TOPIC 2: SKILLS (Slides 14-19) -->
<!-- ============================================================ -->
<!-- Slide 13: Skills Section Divider -->
<div class="slide section-slide" data-slide="13" data-level="skills">
<!-- Slide 14: Skills Section Divider -->
<div class="slide section-slide" data-slide="14" 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 14: The Training Manual -->
<div class="slide" data-slide="14">
<!-- Slide 15: The Training Manual -->
<div class="slide" data-slide="15">
<h1>The Training Manual</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -577,8 +607,8 @@ todoapp/
<p>Each skill has its own knowledge and methods. The reporter uses the right skill for the right step. <strong>Claude works the same way.</strong></p>
</div>
<!-- Slide 15: When to Turn Something Into a Skill -->
<div class="slide" data-slide="15">
<!-- Slide 16: When to Turn Something Into a Skill -->
<div class="slide" data-slide="16">
<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>
@@ -614,8 +644,8 @@ todoapp/
</div>
</div>
<!-- Slide 16: Why Separate Agents and Skills? -->
<div class="slide" data-slide="16">
<!-- Slide 17: Why Separate Agents and Skills? -->
<div class="slide" data-slide="17">
<h1>Why Separate Agents and Skills?</h1>
<div class="two-col">
<div>
@@ -640,8 +670,8 @@ todoapp/
</div>
</div>
<!-- Slide 17: How to Create Your Own Skill -->
<div class="slide" data-slide="17">
<!-- Slide 18: How to Create Your Own Skill -->
<div class="slide" data-slide="18">
<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">
@@ -693,8 +723,8 @@ Fetch the current temperature for Dubai, UAE.
</div>
</div>
<!-- Slide 18: Skill Config Fields -->
<div class="slide" data-slide="18">
<!-- Slide 19: Skill Config Fields -->
<div class="slide" data-slide="19">
<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;">
@@ -730,18 +760,18 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- ============================================================ -->
<!-- TOPIC 3: CONTEXT (Slides 19-23) -->
<!-- TOPIC 3: CONTEXT (Slides 20-24) -->
<!-- ============================================================ -->
<!-- Slide 19: Context Section Divider -->
<div class="slide section-slide" data-slide="19" data-level="context">
<!-- Slide 20: Context Section Divider -->
<div class="slide section-slide" data-slide="20" 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 20: Claude's Brain -->
<div class="slide" data-slide="20">
<!-- Slide 21: Claude's Brain -->
<div class="slide" data-slide="21">
<h1>Claude's Brain</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -778,8 +808,8 @@ Fetch the current temperature for Dubai, UAE.
</div>
</div>
<!-- Slide 21: What Loads at Session Start -->
<div class="slide" data-slide="21">
<!-- Slide 22: What Loads at Session Start -->
<div class="slide" data-slide="22">
<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/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;" />
@@ -812,8 +842,8 @@ Fetch the current temperature for Dubai, UAE.
</div>
</div>
<!-- Slide 22: Keep the Brain Clear -->
<div class="slide" data-slide="22">
<!-- Slide 23: Keep the Brain Clear -->
<div class="slide" data-slide="23">
<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">
@@ -856,8 +886,8 @@ Fetch the current temperature for Dubai, UAE.
</div>
</div>
<!-- Slide 23: How to Manage Your Context -->
<div class="slide" data-slide="23">
<!-- Slide 24: How to Manage Your Context -->
<div class="slide" data-slide="24">
<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">
@@ -898,18 +928,18 @@ Fetch the current temperature for Dubai, UAE.
</div>
<!-- ============================================================ -->
<!-- TOPIC 4: CLAUDE.md (Slides 24-29) -->
<!-- TOPIC 4: CLAUDE.md (Slides 25-30) -->
<!-- ============================================================ -->
<!-- Slide 24: CLAUDE.md Section Divider -->
<div class="slide section-slide" data-slide="24" data-level="claude-md">
<!-- Slide 25: CLAUDE.md Section Divider -->
<div class="slide section-slide" data-slide="25" 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 25: The Employee Handbook -->
<div class="slide" data-slide="25">
<!-- Slide 26: The Employee Handbook -->
<div class="slide" data-slide="26">
<h1>The Employee Handbook</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -936,8 +966,8 @@ This is the Q2 marketing campaign brief &mdash; targeting small business owners.
</div>
</div>
<!-- Slide 26: How to Create CLAUDE.md -->
<div class="slide" data-slide="26">
<!-- Slide 27: How to Create CLAUDE.md -->
<div class="slide" data-slide="27">
<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">
@@ -981,8 +1011,8 @@ open, edit, save <span class="comment"># Tweak it like any doc</span><
</div>
</div>
<!-- Slide 27: Grow CLAUDE.md With Every Mistake -->
<div class="slide" data-slide="27">
<!-- Slide 28: Grow CLAUDE.md With Every Mistake -->
<div class="slide" data-slide="28">
<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>
@@ -1018,8 +1048,8 @@ open, edit, save <span class="comment"># Tweak it like any doc</span><
</div>
</div>
<!-- Slide 28: What Goes in CLAUDE.md -->
<div class="slide" data-slide="28">
<!-- Slide 29: What Goes in CLAUDE.md -->
<div class="slide" data-slide="29">
<h1>What Goes in CLAUDE.md</h1>
<div class="code-block"><span class="comment"># CLAUDE.md</span>
@@ -1046,8 +1076,8 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
</div>
<!-- Slide 29: How CLAUDE.md Loads -->
<div class="slide" data-slide="29">
<!-- Slide 30: How CLAUDE.md Loads -->
<div class="slide" data-slide="30">
<h1>How CLAUDE.md Loads</h1>
<p>Claude Code uses two mechanisms to find CLAUDE.md files:</p>
<div class="two-col">
@@ -1076,18 +1106,18 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
<!-- ============================================================ -->
<!-- TOPIC 5: COMMANDS (Slides 30-32) -->
<!-- TOPIC 5: COMMANDS (Slides 31-33) -->
<!-- ============================================================ -->
<!-- Slide 30: Commands Section Divider -->
<div class="slide section-slide" data-slide="30" data-level="commands">
<!-- Slide 31: Commands Section Divider -->
<div class="slide section-slide" data-slide="31" 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 31: Commands — The Entry Point -->
<div class="slide" data-slide="31">
<!-- Slide 32: Commands — The Entry Point -->
<div class="slide" data-slide="32">
<h1>Commands &mdash; The Entry Point</h1>
<div class="analogy-box">
<h4>Think of it like this</h4>
@@ -1130,8 +1160,8 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
</div>
<!-- Slide 32: How to Create Your Own Command -->
<div class="slide" data-slide="32">
<!-- Slide 33: How to Create Your Own Command -->
<div class="slide" data-slide="33">
<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">
@@ -1182,18 +1212,18 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
<!-- ============================================================ -->
<!-- TOPIC 6: WORKFLOW (Slides 33-36) -->
<!-- TOPIC 6: WORKFLOW (Slides 34-37) -->
<!-- ============================================================ -->
<!-- Slide 33: Workflow Sub-Section (Putting It All Together) -->
<div class="slide section-slide" data-slide="33" data-level="workflow">
<!-- Slide 34: Workflow Sub-Section (Putting It All Together) -->
<div class="slide section-slide" data-slide="34" 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 34: Command → Agent → Skill -->
<div class="slide" data-slide="34">
<!-- Slide 35: Command → Agent → Skill -->
<div class="slide" data-slide="35">
<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>
@@ -1219,8 +1249,8 @@ This is a TodoApp with a FastAPI backend and React frontend.
Creates: weather.svg + output.md</div>
</div>
<!-- Slide 35: Two Ways Skills Are Used -->
<div class="slide" data-slide="35">
<!-- Slide 36: Two Ways Skills Are Used -->
<div class="slide" data-slide="36">
<h1>Two Ways Skills Are Used</h1>
<p>The weather workflow demonstrates both skill patterns in a single flow:</p>
<div class="two-col">
@@ -1242,8 +1272,8 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
</div>
<!-- Slide 36: How to Wire Your Own Workflow -->
<div class="slide" data-slide="36">
<!-- Slide 37: How to Wire Your Own Workflow -->
<div class="slide" data-slide="37">
<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">
@@ -1292,9 +1322,9 @@ This is a TodoApp with a FastAPI backend and React frontend.
</div>
<!-- ============================================================ -->
<!-- SLIDE 37: Closing -->
<!-- SLIDE 38: Closing -->
<!-- ============================================================ -->
<div class="slide title-slide" data-slide="37">
<div class="slide title-slide" data-slide="38">
<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>