added 3 main pages
This commit is contained in:
@@ -173,3 +173,4 @@ After completing changes, report to the user:
|
||||
- **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 slide 6 jargon-cloud tier reshuffle**: `vibe coding` demoted from hero-blue to small-orange (top: 91% / left: 22%); `harness` and `compaction` promoted from purple to hero-blue (kept positions, upgraded padding/font/shadow); `context window` added as new hero-blue pill (top: 32% / left: 5%); `context engineering` deleted (pill + legend row both removed). Legend rebalanced: left column = 8 blue + 2 purple (10 rows), right column = 4 green + 5 orange (9 rows) — slight asymmetry because green dropped from 5 to 4 after context-engineering removal; acceptable. Key verification method: Python script extracting all `background: #HEX` pill texts and all `color: #HEX; font-weight: 700` legend texts per color — confirmed exact match for all 4 tiers. Total slides and data-level dividers unchanged (51 / 21,27,33,38,44,47).
|
||||
- **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`.
|
||||
- **2026-04-24 three concept-intro slides inserted at 27-29 (51 → 54 slides)**: new slides 27 (CLAUDE.md), 28 (Skills), 29 (Context) inserted immediately before the old Skills section opener (now at 30). All three use `class="slide section-slide"` with NO `data-level` — they are concept intros, not arc-level openers, so the journey bar should not advance on them. Pill choices: CLAUDE.md uses `CLAUDE.md` as the filename (monospace yellow pill — no slash command exists); Skills uses `.claude/skills/` as the filesystem path (no `/skills` slash command exists — verified against CLAUDE.md which shows skills are file-based, not command-invoked); Context uses `/context` — this IS a real Claude Code command (shows current token usage breakdown). Slide 29 (Context) intentionally has NO file-tree because context is a runtime concept, not a filesystem artifact. Renumber method: sentinel technique with 3-phase Python script — (1) replace all `data-slide="27"` through `"51"` with `##SEN27##` through `##SEN51##`, (2) restore the FIRST occurrence of sentinels 27/28/29 (the new slides) back to their correct values using `str.replace(..., 1)`, (3) resolve remaining sentinels N→N+3. Section-divider positions after insert: **Agents=23, Skills=30, Context=36, CLAUDE.md=41, Commands=47, Workflow=50**. Total slides: **54**.
|
||||
|
||||
@@ -1104,19 +1104,82 @@ todoapp/
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- NEW SLIDE 27: CLAUDE.md concept intro -->
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide: CLAUDE.md -->
|
||||
<div class="slide section-slide" data-slide="27">
|
||||
<h1>📝 CLAUDE.md</h1>
|
||||
<div style="text-align: center; margin: 12px auto 20px auto;">
|
||||
<span style="background: #fff3cd; color: #7a5c00; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; font-family: 'SF Mono', Monaco, 'Courier New', monospace; box-shadow: 0 2px 8px rgba(122,92,0,0.18);">CLAUDE.md</span>
|
||||
</div>
|
||||
<p class="section-desc">Your project's persistent <strong>memory</strong> — what Claude reads every session.</p>
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 28px;">
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">✅ Loaded into every session</span>
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">📚 Project knowledge, persisted</span>
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">👥 Team-shareable via git</span>
|
||||
</div>
|
||||
<pre class="file-tree" style="max-width: 440px; margin: 32px auto 0 auto; font-size: 0.9rem; line-height: 1.8; padding: 16px 24px; text-align: left;">root/
|
||||
├── CLAUDE.md
|
||||
└── README.md</pre>
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- NEW SLIDE 28: Skills concept intro -->
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide: Skills -->
|
||||
<div class="slide section-slide" data-slide="28">
|
||||
<h1>🎓 Skills</h1>
|
||||
<div style="text-align: center; margin: 12px auto 20px auto;">
|
||||
<span style="background: #fff3cd; color: #7a5c00; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; font-family: 'SF Mono', Monaco, 'Courier New', monospace; box-shadow: 0 2px 8px rgba(122,92,0,0.18);">.claude/skills/</span>
|
||||
</div>
|
||||
<p class="section-desc">Reusable <strong>instructions</strong> — progressive disclosure, loaded only when relevant.</p>
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 28px;">
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">✅ Loaded on demand</span>
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">🎯 Scoped to a task</span>
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">♻️ Reusable across agents</span>
|
||||
</div>
|
||||
<pre class="file-tree" style="max-width: 440px; margin: 32px auto 0 auto; font-size: 0.9rem; line-height: 1.8; padding: 16px 24px; text-align: left;">root/
|
||||
├── .claude/
|
||||
│ └── skills/
|
||||
│ └── weather-fetcher/
|
||||
│ └── SKILL.md
|
||||
└── README.md</pre>
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- NEW SLIDE 29: Context concept intro -->
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide: Context -->
|
||||
<div class="slide section-slide" data-slide="29">
|
||||
<h1>🧠 Context</h1>
|
||||
<div style="text-align: center; margin: 12px auto 20px auto;">
|
||||
<span style="background: #fff3cd; color: #7a5c00; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; font-family: 'SF Mono', Monaco, 'Courier New', monospace; box-shadow: 0 2px 8px rgba(122,92,0,0.18);">/context</span>
|
||||
</div>
|
||||
<p class="section-desc">The model's <strong>working memory</strong> — what it can see in this moment.</p>
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 28px;">
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">🪟 Limited budget</span>
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">📂 Fill it intentionally</span>
|
||||
<span style="background: #2e7d32; color: #fff; padding: 8px 20px; border-radius: 999px; font-size: 1rem; font-weight: 600; white-space: nowrap; box-shadow: 0 2px 8px rgba(46,125,50,0.35);">🧹 Compact at ~50%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- TOPIC 2: SKILLS (Slides 15-20) -->
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 14: Skills Section Divider -->
|
||||
<div class="slide section-slide" data-slide="27" data-level="skills">
|
||||
<div class="slide section-slide" data-slide="30" data-level="skills">
|
||||
<div class="section-number">Topic 2</div>
|
||||
<h1>🎓 Skills — 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="28">
|
||||
<div class="slide" data-slide="31">
|
||||
<h1>The Training Manual</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -1143,7 +1206,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 16: When to Turn Something Into a Skill -->
|
||||
<div class="slide" data-slide="29">
|
||||
<div class="slide" data-slide="32">
|
||||
<h1>When to Turn Something Into a Skill</h1>
|
||||
<div class="info-box">
|
||||
<h4>Tip from Boris Cherny (creator of Claude Code) — Feb 1, 2026</h4>
|
||||
@@ -1180,7 +1243,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 17: Why Separate Agents and Skills? -->
|
||||
<div class="slide" data-slide="30">
|
||||
<div class="slide" data-slide="33">
|
||||
<h1>Why Separate Agents and Skills?</h1>
|
||||
<div class="two-col">
|
||||
<div>
|
||||
@@ -1206,7 +1269,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 18: How to Create Your Own Skill -->
|
||||
<div class="slide" data-slide="31">
|
||||
<div class="slide" data-slide="34">
|
||||
<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">
|
||||
@@ -1259,7 +1322,7 @@ Fetch the current temperature for Dubai, UAE.
|
||||
</div>
|
||||
|
||||
<!-- Slide 19: Skill Config Fields -->
|
||||
<div class="slide" data-slide="32">
|
||||
<div class="slide" data-slide="35">
|
||||
<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;">
|
||||
@@ -1299,14 +1362,14 @@ Fetch the current temperature for Dubai, UAE.
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 20: Context Section Divider -->
|
||||
<div class="slide section-slide" data-slide="33" data-level="context">
|
||||
<div class="slide section-slide" data-slide="36" data-level="context">
|
||||
<div class="section-number">Topic 3</div>
|
||||
<h1>🧠 Context — 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 — including the weather reporter — gets its own fresh brain.</p>
|
||||
</div>
|
||||
|
||||
<!-- Slide 21: Claude's Brain -->
|
||||
<div class="slide" data-slide="34">
|
||||
<div class="slide" data-slide="37">
|
||||
<h1>Claude's Brain</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -1344,7 +1407,7 @@ Fetch the current temperature for Dubai, UAE.
|
||||
</div>
|
||||
|
||||
<!-- Slide 22: What Loads at Session Start -->
|
||||
<div class="slide" data-slide="35">
|
||||
<div class="slide" data-slide="38">
|
||||
<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 — 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;" />
|
||||
@@ -1378,7 +1441,7 @@ Fetch the current temperature for Dubai, UAE.
|
||||
</div>
|
||||
|
||||
<!-- Slide 23: Keep the Brain Clear -->
|
||||
<div class="slide" data-slide="36">
|
||||
<div class="slide" data-slide="39">
|
||||
<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> — performance drops as the brain gets crowded.</p>
|
||||
<div class="info-box">
|
||||
@@ -1422,7 +1485,7 @@ Fetch the current temperature for Dubai, UAE.
|
||||
</div>
|
||||
|
||||
<!-- Slide 24: How to Manage Your Context -->
|
||||
<div class="slide" data-slide="37">
|
||||
<div class="slide" data-slide="40">
|
||||
<h1>How to Manage Your Context</h1>
|
||||
<p>You can't <em>create</em> the context — 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">
|
||||
@@ -1467,14 +1530,14 @@ Fetch the current temperature for Dubai, UAE.
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 25: CLAUDE.md Section Divider -->
|
||||
<div class="slide section-slide" data-slide="38" data-level="claude-md">
|
||||
<div class="slide section-slide" data-slide="41" data-level="claude-md">
|
||||
<div class="section-number">Topic 4</div>
|
||||
<h1>📋 CLAUDE.md — The Reporter's Pocket Rulebook</h1>
|
||||
<p class="section-desc">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.</p>
|
||||
</div>
|
||||
|
||||
<!-- Slide 26: The Employee Handbook -->
|
||||
<div class="slide" data-slide="39">
|
||||
<div class="slide" data-slide="42">
|
||||
<h1>The Employee Handbook</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -1502,7 +1565,7 @@ This is the Q2 marketing campaign brief — targeting small business owners.
|
||||
</div>
|
||||
|
||||
<!-- Slide 27: How to Create CLAUDE.md -->
|
||||
<div class="slide" data-slide="40">
|
||||
<div class="slide" data-slide="43">
|
||||
<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">
|
||||
@@ -1547,7 +1610,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="41">
|
||||
<div class="slide" data-slide="44">
|
||||
<h1>Grow CLAUDE.md With Every Mistake</h1>
|
||||
<div class="info-box">
|
||||
<h4>Tip from Boris Cherny (creator of Claude Code) — Feb 1, 2026</h4>
|
||||
@@ -1584,7 +1647,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="42">
|
||||
<div class="slide" data-slide="45">
|
||||
<h1>What Goes in CLAUDE.md</h1>
|
||||
<div class="code-block"><span class="comment"># CLAUDE.md</span>
|
||||
|
||||
@@ -1612,7 +1675,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
|
||||
</div>
|
||||
|
||||
<!-- Slide 30: How CLAUDE.md Loads -->
|
||||
<div class="slide" data-slide="43">
|
||||
<div class="slide" data-slide="46">
|
||||
<h1>How CLAUDE.md Loads</h1>
|
||||
<p>Claude Code uses two mechanisms to find CLAUDE.md files:</p>
|
||||
<div class="two-col">
|
||||
@@ -1645,14 +1708,14 @@ This is a TodoApp with a FastAPI backend and React frontend.
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 31: Commands Section Divider -->
|
||||
<div class="slide section-slide" data-slide="44" data-level="commands">
|
||||
<div class="slide section-slide" data-slide="47" data-level="commands">
|
||||
<div class="section-number">Topic 5</div>
|
||||
<h1>⚡ Commands — The Trigger</h1>
|
||||
<p class="section-desc">One word kicks off the whole chain. <code>/weather-orchestrator</code> → agent → skill → SVG card. Commands are the entry point into any workflow.</p>
|
||||
</div>
|
||||
|
||||
<!-- Slide 32: Commands — The Entry Point -->
|
||||
<div class="slide" data-slide="45">
|
||||
<div class="slide" data-slide="48">
|
||||
<h1>Commands — The Entry Point</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -1696,7 +1759,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="46">
|
||||
<div class="slide" data-slide="49">
|
||||
<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">
|
||||
@@ -1751,14 +1814,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="47" data-level="workflow">
|
||||
<div class="slide section-slide" data-slide="50" data-level="workflow">
|
||||
<div class="section-number">Putting It All Together</div>
|
||||
<h1>🎼 Workflow — 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="48">
|
||||
<div class="slide" data-slide="51">
|
||||
<h1>Command → Agent → Skill</h1>
|
||||
<p>This is the <strong>core architecture pattern</strong> of Claude Code workflows — demonstrated in this very repo by the weather example:</p>
|
||||
<div class="code-block"><span class="comment">The Orchestration Flow</span>
|
||||
@@ -1785,7 +1848,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="49">
|
||||
<div class="slide" data-slide="52">
|
||||
<h1>Two Ways Skills Are Used</h1>
|
||||
<p>The weather workflow demonstrates both skill patterns in a single flow:</p>
|
||||
<div class="two-col">
|
||||
@@ -1808,7 +1871,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="50">
|
||||
<div class="slide" data-slide="53">
|
||||
<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">
|
||||
@@ -1859,7 +1922,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 40: Closing -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide title-slide" data-slide="51">
|
||||
<div class="slide title-slide" data-slide="54">
|
||||
<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 → Agent → Skill</strong> chain. The same five pieces compose every workflow you'll ever build.</p>
|
||||
|
||||
Reference in New Issue
Block a user