added shayan introduction
This commit is contained in:
@@ -165,3 +165,5 @@ After completing changes, report to the user:
|
||||
- **2026-04-19 hero-tier chip visual hierarchy**: when a word-cloud slide needs a dominant/supporting split, introduce a hero tier by: (1) increasing font-size to ~1.5-1.6rem and font-weight to 800, (2) adding more padding (14px 28px vs 8px 16px), (3) using a stronger box-shadow with a colored glow (`0 4px 18px rgba(R,G,B,0.45), 0 0 0 2px rgba(R,G,B,0.2)` — the outer ring acts as a subtle halo), and (4) slightly increasing border-radius (28px vs 20px so the pill looks "fatter"). Supporting chips use padding 7-8px 14-16px, font-size 0.9-1.0rem, weight 600, and a plain `0 2px 6px rgba(0,0,0,0.18)` shadow. No new CSS classes are needed — all styling is inline on each `<span>`. When squinting, the hero chips should be immediately readable as headlines; supporting chips recede into background. Color rebalancing rule when switching chip tiers: confirm each chip's target tier/color before editing — "harness" and "compaction" moved from blue hero to purple supporting; "agentic engineering", "orchestration", "dumb zone" moved from their previous colors to blue hero. Position re-scatter tip: space hero chips ~15-20% apart vertically and distribute them across left/right/centre columns so no two heroes are adjacent; fill gaps between heroes with supporting chips at 8-12% vertical spacing.
|
||||
- **2026-04-19 chip-splitting pattern (slide 2 jargon cloud)**: when splitting one combined-jargon chip into two, keep the first chip at the original position (slightly smaller font/padding to fit), and place the second chip in a new "Row Nb" at a top offset ~6-8% lower and a left offset ~2-4% inward from the right edge. This creates a natural staggered sub-cluster. Color rebalancing rule: when removing amber chips and adding replacements, assign new chips to whichever colors are below the median count — target no color exceeding 5 chips. Final distribution for 17 chips: 4 blue / 4 purple / 5 green / 4 amber. The `progressive disclosure` chip was nudged 2% left (60%→58%) to avoid visual crowding with the newly inserted `prompt engineering` chip in Row 1b.
|
||||
- **2026-04-19 chip overlap check method**: after any chip insertion, mentally walk each new chip's bounding box against its neighbors — chip height is roughly `padding-top + padding-bottom + font-size * line-height` ≈ 38-46px at 0.9-1.3rem. A 6-9% vertical gap on a 480px min-height container is ~29-43px which is tight but sufficient for same-column chips with different left offsets. If left offsets are within 15% of each other, require at least 8% vertical gap.
|
||||
- **2026-04-22 About Me slide (slide 2) insertion — interactive fact-card pattern**: new slide inserted at position 2; all slides 2-39 renumbered to 3-40 (total now 40). Slide 2 has no `data-level` — journey bar shows visible but 0% fill (correct for pre-arc slides, bar is only hidden for slide 1). Interactive elements: circular avatar with `onmouseover` scale+glow effect; three `.fact-card` divs (Role, Education, Repo) using `translateY(-5px)` lift + colored box-shadow on hover; repo card is an `<a>` with `target="_blank" rel="noopener"` opening `https://github.com/shanraisshan/claude-code-best-practice`; star icon uses `animation: pulse-star 2s ease-in-out infinite` keyframe. The `@keyframes pulse-star` was placed in the `<head>` `<style>` block (not inline in the slide div). Image path `../assets/shayan.png` resolves to `presentation/assets/shayan.png` — verified file exists. **Gotcha**: the initial sed renumber pass had a typo that changed slide 33 to 36 instead of 34; fix required a targeted line-number-based `sed -i '' -e '1226s/...'` call before running the 2-32 batch. **Rule**: always verify the sed substitution list before running — check that each `s/"N"/"N+1"/` matches the intended slide, not a mis-typed number.
|
||||
- **2026-04-22 About Me slide (slide 2) redesigned — horizontal-to-vertical card rework**: replaced the 3-column horizontal grid with 3 stacked vertical cards (max-width 660px, flex-direction column, gap 16px). Card 1 (Role, blue): flex row with `disrupt-logo.png` (56px contain) + text. Card 2 (Education, purple): two-row logo+text layout inside one card, separated by a thin `border-top: 1px solid #e0d4ec` divider — `uni-fast-logo.png` for Master's (FAST NUCES 2019) and `uni-ned-logo.png` for Bachelor's (NED 2014), both 48px contain. Card 3 (Achievement, amber): flex row with `claude-mascot.svg` (56px contain) + text + inline GitHub badge (`<img src="github.svg" style="filter: invert(1)">` on dark `#24292e` background pill). All 5 logo paths verified against `presentation/assets/logo/`. Hover effects preserved: `translateY(-3px)` lift + colored box-shadow per card. Repo card is `<a href="..." target="_blank" rel="noopener">`. `@keyframes pulse-star` removed from `<style>` block — no longer used (star emoji replaced by claude-mascot.svg). No new CSS classes added — all styling inline. Slide count (40), data-slide numbering, goToSlide targets, and level transitions are untouched.
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 82" width="160" height="82">
|
||||
<style>
|
||||
.right-arm {
|
||||
animation: arm-idle 2s ease-in-out infinite;
|
||||
transform-origin: 86px 40px;
|
||||
}
|
||||
.eye {
|
||||
animation: blink 3s ease-in-out infinite;
|
||||
}
|
||||
.right-leg {
|
||||
animation: kick-leg 2s ease-in-out infinite;
|
||||
transform-origin: 70px 60px;
|
||||
}
|
||||
.football {
|
||||
animation: ball-travel 2s ease-in-out infinite;
|
||||
}
|
||||
@keyframes arm-idle {
|
||||
0%, 100% { transform: rotate(-2deg); }
|
||||
50% { transform: rotate(2deg); }
|
||||
}
|
||||
@keyframes blink {
|
||||
0%, 45%, 55%, 100% { transform: scaleY(1); }
|
||||
50% { transform: scaleY(0.1); }
|
||||
}
|
||||
@keyframes kick-leg {
|
||||
0%, 10% { transform: rotate(0deg); }
|
||||
20%, 25% { transform: rotate(-25deg); }
|
||||
35%, 100% { transform: rotate(0deg); }
|
||||
}
|
||||
@keyframes ball-travel {
|
||||
0%, 10% { transform: translate(0, 0); }
|
||||
20% { transform: translate(5px, -2px); }
|
||||
45% { transform: translate(55px, -5px); }
|
||||
50% { transform: translate(55px, -5px); }
|
||||
80% { transform: translate(5px, -2px); }
|
||||
90%, 100% { transform: translate(0, 0); }
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- Gradient definitions -->
|
||||
<defs>
|
||||
<!-- 3D gradient for ball -->
|
||||
<radialGradient id="ballGradient" cx="35%" cy="35%" r="60%" fx="30%" fy="30%">
|
||||
<stop offset="0%" style="stop-color:#ffffff;stop-opacity:1" />
|
||||
<stop offset="70%" style="stop-color:#e8e8e8;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#c0c0c0;stop-opacity:1" />
|
||||
</radialGradient>
|
||||
<!-- Gradient for black pentagons -->
|
||||
<linearGradient id="pentagonGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#333333;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#000000;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- Shadow -->
|
||||
<ellipse cx="50" cy="82" rx="22" ry="5" fill="#000" opacity="0.25"/>
|
||||
|
||||
<!-- Claude Character Group -->
|
||||
<g class="claude-body">
|
||||
<!-- Claude Orange: #E07C4C -->
|
||||
|
||||
<!-- Left ear -->
|
||||
<rect x="22" y="10" width="8" height="14" fill="#E07C4C"/>
|
||||
|
||||
<!-- Right ear -->
|
||||
<rect x="70" y="10" width="8" height="14" fill="#E07C4C"/>
|
||||
|
||||
<!-- Main body - top row (narrower) -->
|
||||
<rect x="18" y="24" width="64" height="4" fill="#E07C4C"/>
|
||||
|
||||
<!-- Main body - full block -->
|
||||
<rect x="14" y="28" width="72" height="32" fill="#E07C4C"/>
|
||||
|
||||
<!-- Eyes looking right (with blink animation) -->
|
||||
<rect class="eye" x="38" y="34" width="8" height="10" fill="#000000" style="transform-origin: 42px 39px;"/>
|
||||
<rect class="eye" x="68" y="34" width="8" height="10" fill="#000000" style="transform-origin: 72px 39px;"/>
|
||||
|
||||
<!-- Left arm at side -->
|
||||
<rect x="2" y="36" width="12" height="8" fill="#E07C4C"/>
|
||||
|
||||
<!-- Right arm at side (no stick) -->
|
||||
<rect class="right-arm" x="86" y="36" width="14" height="8" fill="#E07C4C"/>
|
||||
|
||||
<!-- Left leg -->
|
||||
<rect x="24" y="60" width="12" height="10" fill="#E07C4C"/>
|
||||
<!-- Left shoe -->
|
||||
<rect x="22" y="70" width="16" height="6" rx="1" fill="#1a1a1a"/>
|
||||
|
||||
<!-- Right leg (kicking) -->
|
||||
<g class="right-leg">
|
||||
<rect x="64" y="60" width="12" height="10" fill="#E07C4C"/>
|
||||
<!-- Right shoe -->
|
||||
<rect x="62" y="70" width="16" height="6" rx="1" fill="#1a1a1a"/>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- Football (soccer ball, in front of mascot) -->
|
||||
<g class="football">
|
||||
<!-- Shadow under ball -->
|
||||
<ellipse cx="88" cy="82" rx="9" ry="3" fill="#000" opacity="0.2"/>
|
||||
<!-- White base with gradient for 3D effect -->
|
||||
<circle cx="88" cy="67" r="12" fill="url(#ballGradient)" stroke="#555" stroke-width="0.5"/>
|
||||
<!-- Clip path to keep pentagons inside the ball -->
|
||||
<clipPath id="ballClip">
|
||||
<circle cx="88" cy="67" r="11.5"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#ballClip)">
|
||||
<!-- Center black pentagon (smaller) -->
|
||||
<path d="M88,64 L90,65.5 L89.5,68 L86.5,68 L86,65.5 Z" fill="url(#pentagonGradient)"/>
|
||||
<!-- Top pentagon (partial) -->
|
||||
<path d="M88,56 L90,57.5 L89.5,60 L86.5,60 L86,57.5 Z" fill="url(#pentagonGradient)"/>
|
||||
<!-- Right pentagon (partial) -->
|
||||
<path d="M97,62 L99,65 L98,68 L95.5,67 L96,63.5 Z" fill="url(#pentagonGradient)"/>
|
||||
<!-- Bottom-right pentagon (partial) -->
|
||||
<path d="M95,72 L97,75 L94,77.5 L91,75 L93,72 Z" fill="url(#pentagonGradient)"/>
|
||||
<!-- Bottom-left pentagon (partial) -->
|
||||
<path d="M81,72 L83,75 L80,77.5 L77,75 L79,72 Z" fill="url(#pentagonGradient)"/>
|
||||
<!-- Left pentagon (partial) -->
|
||||
<path d="M79,62 L80,63.5 L79.5,67 L77,68 L76,65 Z" fill="url(#pentagonGradient)"/>
|
||||
<!-- Panel lines -->
|
||||
<line x1="88" y1="64" x2="88" y2="56" stroke="#666" stroke-width="0.4"/>
|
||||
<line x1="90" y1="65.5" x2="97" y2="62" stroke="#666" stroke-width="0.4"/>
|
||||
<line x1="89.5" y1="68" x2="95" y2="72" stroke="#666" stroke-width="0.4"/>
|
||||
<line x1="86.5" y1="68" x2="81" y2="72" stroke="#666" stroke-width="0.4"/>
|
||||
<line x1="86" y1="65.5" x2="79" y2="62" stroke="#666" stroke-width="0.4"/>
|
||||
<!-- Highlight shine -->
|
||||
<ellipse cx="84" cy="61" rx="3" ry="2" fill="#fff" opacity="0.6"/>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 177 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
|
||||
<path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" fill="#333"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 781 B |
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 121 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 544 KiB |
@@ -119,7 +119,7 @@
|
||||
.file-tree .file { color: #444; }
|
||||
.file-tree .highlight { color: #2e7d32; font-weight: 600; }
|
||||
.file-tree .dim { color: #aaa; }
|
||||
</style>
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="progress" id="progress"></div>
|
||||
@@ -151,9 +151,82 @@
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 2: AI Jargon Word Cloud -->
|
||||
<!-- SLIDE 2: About Me — Shayan Rais -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide" data-slide="2">
|
||||
<div style="display: flex; flex-direction: column; align-items: center; text-align: center; padding-top: 0;">
|
||||
|
||||
<!-- Avatar -->
|
||||
<div style="position: relative; margin-bottom: 12px;">
|
||||
<img
|
||||
src="../assets/shayan.png"
|
||||
alt="Shayan Rais"
|
||||
style="width: 280px; height: 280px; border-radius: 50%; object-fit: cover; border: 4px solid #e5e5e5; box-shadow: 0 8px 32px rgba(0,0,0,0.12); display: block; transition: transform 0.3s ease, box-shadow 0.3s ease;"
|
||||
onmouseover="this.style.transform='scale(1.07)'; this.style.boxShadow='0 12px 40px rgba(21,101,192,0.35), 0 0 0 6px rgba(21,101,192,0.12)';"
|
||||
onmouseout="this.style.transform='scale(1)'; this.style.boxShadow='0 8px 32px rgba(0,0,0,0.12)';"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- Name + tagline -->
|
||||
<h1 style="font-size: 2.6rem; font-weight: 700; margin-bottom: 6px; border-bottom: none; padding-bottom: 0; color: #1a1a1a;">Shayan Rais</h1>
|
||||
<p style="font-size: 1.2rem; color: #444; margin-bottom: 18px; font-weight: 500; display: flex; align-items: center; justify-content: center; gap: 10px;">Software Architect at <img src="../assets/logo/disrupt-logo.png" alt="disrupt.com" style="height: 28px; width: auto; object-fit: contain; vertical-align: middle;" /></p>
|
||||
|
||||
<!-- Side-by-side cards (2-column grid) -->
|
||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px; width: 100%; max-width: 900px; align-items: stretch;">
|
||||
|
||||
<!-- Card 1: Education (two degrees) -->
|
||||
<div
|
||||
style="background: #f8f9fa; border-radius: 12px; padding: 20px 24px; border-left: 4px solid #7b1fa2; cursor: default; transition: transform 0.25s ease, box-shadow 0.25s ease;"
|
||||
onmouseover="this.style.transform='translateY(-3px)'; this.style.boxShadow='0 8px 28px rgba(123,31,162,0.18)';"
|
||||
onmouseout="this.style.transform='translateY(0)'; this.style.boxShadow='none';"
|
||||
>
|
||||
<div style="font-size: 0.72rem; text-transform: uppercase; letter-spacing: 1.5px; color: #7b1fa2; font-weight: 700; margin-bottom: 14px; text-align: left;">Education</div>
|
||||
<!-- Master's row -->
|
||||
<div style="display: flex; align-items: center; gap: 16px; margin-bottom: 12px;">
|
||||
<img src="../assets/logo/uni-fast-logo.png" alt="FAST NUCES logo" style="width: 44px; height: 44px; object-fit: contain; flex-shrink: 0;" />
|
||||
<div style="text-align: left;">
|
||||
<div style="font-size: 0.98rem; font-weight: 600; color: #1a1a1a; line-height: 1.3;">Master’s in Computer Science</div>
|
||||
<div style="font-size: 0.87rem; color: #666; margin-top: 2px;">FAST NUCES — 2019</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- thin divider -->
|
||||
<div style="border-top: 1px solid #e0d4ec; margin: 4px 0 12px 0;"></div>
|
||||
<!-- Bachelor's row -->
|
||||
<div style="display: flex; align-items: center; gap: 16px;">
|
||||
<img src="../assets/logo/uni-ned-logo.png" alt="NED University logo" style="width: 44px; height: 44px; object-fit: contain; flex-shrink: 0;" />
|
||||
<div style="text-align: left;">
|
||||
<div style="font-size: 0.98rem; font-weight: 600; color: #1a1a1a; line-height: 1.3;">Bachelor’s in Computer Information Systems</div>
|
||||
<div style="font-size: 0.87rem; color: #666; margin-top: 2px;">NED University — 2014</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card 3: Achievement (clickable → GitHub) -->
|
||||
<a
|
||||
href="https://github.com/shanraisshan/claude-code-best-practice"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
style="background: #f8f9fa; border-radius: 12px; padding: 20px 24px; border-left: 4px solid #e65100; display: flex; align-items: center; gap: 20px; text-decoration: none; color: inherit; transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;"
|
||||
onmouseover="this.style.transform='translateY(-3px)'; this.style.boxShadow='0 8px 28px rgba(230,81,0,0.22)'; this.style.background='#fff3e0';"
|
||||
onmouseout="this.style.transform='translateY(0)'; this.style.boxShadow='none'; this.style.background='#f8f9fa';"
|
||||
>
|
||||
<img src="../assets/logo/claude-mascot.svg" alt="Claude mascot" style="width: 56px; height: 56px; object-fit: contain; flex-shrink: 0;" />
|
||||
<div style="text-align: left; flex: 1;">
|
||||
<div style="font-size: 0.72rem; text-transform: uppercase; letter-spacing: 1.5px; color: #e65100; font-weight: 700; margin-bottom: 4px;">Achievement</div>
|
||||
<div style="font-size: 1.0rem; font-weight: 600; color: #1a1a1a; line-height: 1.3;">Creator of <code style="background: rgba(0,0,0,0.06); padding: 1px 5px; border-radius: 4px; font-size: 0.93rem;">claude-code-best-practice</code></div>
|
||||
<div style="font-size: 0.87rem; color: #666; margin-top: 3px;">The most-starred AI repo from Pakistan — over 50,000 stars <span style="color: #e65100;">★</span></div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 3: AI Jargon Word Cloud -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide" data-slide="3">
|
||||
<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 — for now, just let them wash over you.</p>
|
||||
<div style="position: relative; width: 100%; min-height: calc(100vh - 130px); overflow: hidden;">
|
||||
@@ -257,9 +330,9 @@
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 3: Boris Three-Tweets GIF -->
|
||||
<!-- SLIDE 4: Boris Three-Tweets GIF -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide" data-slide="3">
|
||||
<div class="slide" data-slide="4">
|
||||
<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);" />
|
||||
@@ -272,9 +345,9 @@
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 4: What is Claude Code? -->
|
||||
<!-- SLIDE 5: What is Claude Code? -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide" data-slide="4">
|
||||
<div class="slide" data-slide="5">
|
||||
<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> — 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;">
|
||||
@@ -302,9 +375,9 @@
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 5: Vibe Coding vs Agentic Engineering -->
|
||||
<!-- SLIDE 6: Vibe Coding vs Agentic Engineering -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide" data-slide="5">
|
||||
<div class="slide" data-slide="6">
|
||||
<h1>Vibe Coding vs Agentic Engineering</h1>
|
||||
<div class="two-col">
|
||||
<div>
|
||||
@@ -371,9 +444,9 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 6: What is Vibe Coding? -->
|
||||
<!-- SLIDE 7: What is Vibe Coding? -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide" data-slide="6">
|
||||
<div class="slide" data-slide="7">
|
||||
<h1>What is Vibe Coding?</h1>
|
||||
<div class="two-col" style="margin-top: 28px;">
|
||||
<div class="col-card bad">
|
||||
@@ -400,9 +473,9 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 7: Good vs Bad Prompts -->
|
||||
<!-- SLIDE 8: Good vs Bad Prompts -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide" data-slide="7">
|
||||
<div class="slide" data-slide="8">
|
||||
<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;">
|
||||
@@ -436,41 +509,41 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 8: Meet the Person — TOC -->
|
||||
<!-- SLIDE 9: Meet the Person — TOC -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide" data-slide="8">
|
||||
<div class="slide" data-slide="9">
|
||||
<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 — five different angles.</p>
|
||||
<div class="toc-vertical">
|
||||
<div class="toc-item" onclick="goToSlide(9)">
|
||||
<div class="toc-item" onclick="goToSlide(10)">
|
||||
<span class="toc-number">1</span>
|
||||
<div style="flex: 1;">
|
||||
<div class="toc-name">👤 Agents — The Person (job title: weather reporter)</div>
|
||||
<div class="toc-sub">A specialist hired for a specific role — same Claude, different hat</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="toc-item" onclick="goToSlide(15)">
|
||||
<div class="toc-item" onclick="goToSlide(16)">
|
||||
<span class="toc-number">2</span>
|
||||
<div style="flex: 1;">
|
||||
<div class="toc-name">🎓 Skills — What the Person Can Do</div>
|
||||
<div class="toc-sub">do reporting on weather • play a game • read a book</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="toc-item" onclick="goToSlide(21)">
|
||||
<div class="toc-item" onclick="goToSlide(22)">
|
||||
<span class="toc-number">3</span>
|
||||
<div style="flex: 1;">
|
||||
<div class="toc-name">🧠 Context — The Person's Brain (storage — the 1M-token space)</div>
|
||||
<div class="toc-sub">where knowledge gets loaded in — resets each session</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="toc-item" onclick="goToSlide(26)">
|
||||
<div class="toc-item" onclick="goToSlide(27)">
|
||||
<span class="toc-number">4</span>
|
||||
<div style="flex: 1;">
|
||||
<div class="toc-name">📋 CLAUDE.md — 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(32)">
|
||||
<div class="toc-item" onclick="goToSlide(33)">
|
||||
<span class="toc-number">5</span>
|
||||
<div style="flex: 1;">
|
||||
<div class="toc-name">🎼 Workflow — The Trigger</div>
|
||||
@@ -485,14 +558,14 @@ todoapp/
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 8: Agents Section Divider -->
|
||||
<div class="slide section-slide" data-slide="9" data-level="agents">
|
||||
<div class="slide section-slide" data-slide="10" data-level="agents">
|
||||
<div class="section-number">Topic 1</div>
|
||||
<h1>👤 Agents — The Weather Reporter</h1>
|
||||
<p class="section-desc">An agent is Claude playing a specific role. Meet the <strong>weather reporter</strong> — 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="10">
|
||||
<div class="slide" data-slide="11">
|
||||
<h1>The Restaurant Kitchen</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -515,7 +588,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 10: Prompting vs Agent table -->
|
||||
<div class="slide" data-slide="11">
|
||||
<div class="slide" data-slide="12">
|
||||
<h1>Prompting vs. Agent — 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>
|
||||
@@ -556,7 +629,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 11: Agents Get Their Own Brain -->
|
||||
<div class="slide" data-slide="12">
|
||||
<div class="slide" data-slide="13">
|
||||
<h1>Agents Get Their Own Brain</h1>
|
||||
<div class="info-box">
|
||||
<h4>Tip from Thariq (Anthropic) — Apr 16, 2026</h4>
|
||||
@@ -589,7 +662,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 12: How to Create an Agent -->
|
||||
<div class="slide" data-slide="13">
|
||||
<div class="slide" data-slide="14">
|
||||
<h1>How to Create Your Own Agent</h1>
|
||||
<p>You don't write an agent from scratch — Claude helps you build one. Type <code>/agents</code> inside Claude Code and a guided menu opens.</p>
|
||||
<div class="how-to-trigger">
|
||||
@@ -632,7 +705,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 13: Agent Config Fields -->
|
||||
<div class="slide" data-slide="14">
|
||||
<div class="slide" data-slide="15">
|
||||
<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;">
|
||||
@@ -680,14 +753,14 @@ todoapp/
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 14: Skills Section Divider -->
|
||||
<div class="slide section-slide" data-slide="15" data-level="skills">
|
||||
<div class="slide section-slide" data-slide="16" 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="16">
|
||||
<div class="slide" data-slide="17">
|
||||
<h1>The Training Manual</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -714,7 +787,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 16: When to Turn Something Into a Skill -->
|
||||
<div class="slide" data-slide="17">
|
||||
<div class="slide" data-slide="18">
|
||||
<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>
|
||||
@@ -751,7 +824,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 17: Why Separate Agents and Skills? -->
|
||||
<div class="slide" data-slide="18">
|
||||
<div class="slide" data-slide="19">
|
||||
<h1>Why Separate Agents and Skills?</h1>
|
||||
<div class="two-col">
|
||||
<div>
|
||||
@@ -777,7 +850,7 @@ todoapp/
|
||||
</div>
|
||||
|
||||
<!-- Slide 18: How to Create Your Own Skill -->
|
||||
<div class="slide" data-slide="19">
|
||||
<div class="slide" data-slide="20">
|
||||
<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">
|
||||
@@ -830,7 +903,7 @@ Fetch the current temperature for Dubai, UAE.
|
||||
</div>
|
||||
|
||||
<!-- Slide 19: Skill Config Fields -->
|
||||
<div class="slide" data-slide="20">
|
||||
<div class="slide" data-slide="21">
|
||||
<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;">
|
||||
@@ -870,14 +943,14 @@ Fetch the current temperature for Dubai, UAE.
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 20: Context Section Divider -->
|
||||
<div class="slide section-slide" data-slide="21" data-level="context">
|
||||
<div class="slide section-slide" data-slide="22" 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="22">
|
||||
<div class="slide" data-slide="23">
|
||||
<h1>Claude's Brain</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -915,7 +988,7 @@ Fetch the current temperature for Dubai, UAE.
|
||||
</div>
|
||||
|
||||
<!-- Slide 22: What Loads at Session Start -->
|
||||
<div class="slide" data-slide="23">
|
||||
<div class="slide" data-slide="24">
|
||||
<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/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;" />
|
||||
@@ -949,7 +1022,7 @@ Fetch the current temperature for Dubai, UAE.
|
||||
</div>
|
||||
|
||||
<!-- Slide 23: Keep the Brain Clear -->
|
||||
<div class="slide" data-slide="24">
|
||||
<div class="slide" data-slide="25">
|
||||
<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">
|
||||
@@ -993,7 +1066,7 @@ Fetch the current temperature for Dubai, UAE.
|
||||
</div>
|
||||
|
||||
<!-- Slide 24: How to Manage Your Context -->
|
||||
<div class="slide" data-slide="25">
|
||||
<div class="slide" data-slide="26">
|
||||
<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">
|
||||
@@ -1038,14 +1111,14 @@ Fetch the current temperature for Dubai, UAE.
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 25: CLAUDE.md Section Divider -->
|
||||
<div class="slide section-slide" data-slide="26" data-level="claude-md">
|
||||
<div class="slide section-slide" data-slide="27" 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="27">
|
||||
<div class="slide" data-slide="28">
|
||||
<h1>The Employee Handbook</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -1073,7 +1146,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="28">
|
||||
<div class="slide" data-slide="29">
|
||||
<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">
|
||||
@@ -1118,7 +1191,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="29">
|
||||
<div class="slide" data-slide="30">
|
||||
<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>
|
||||
@@ -1155,7 +1228,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="30">
|
||||
<div class="slide" data-slide="31">
|
||||
<h1>What Goes in CLAUDE.md</h1>
|
||||
<div class="code-block"><span class="comment"># CLAUDE.md</span>
|
||||
|
||||
@@ -1183,7 +1256,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
|
||||
</div>
|
||||
|
||||
<!-- Slide 30: How CLAUDE.md Loads -->
|
||||
<div class="slide" data-slide="31">
|
||||
<div class="slide" data-slide="32">
|
||||
<h1>How CLAUDE.md Loads</h1>
|
||||
<p>Claude Code uses two mechanisms to find CLAUDE.md files:</p>
|
||||
<div class="two-col">
|
||||
@@ -1216,14 +1289,14 @@ This is a TodoApp with a FastAPI backend and React frontend.
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<!-- Slide 31: Commands Section Divider -->
|
||||
<div class="slide section-slide" data-slide="32" data-level="commands">
|
||||
<div class="slide section-slide" data-slide="33" 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="33">
|
||||
<div class="slide" data-slide="34">
|
||||
<h1>Commands — The Entry Point</h1>
|
||||
<div class="analogy-box">
|
||||
<h4>Think of it like this</h4>
|
||||
@@ -1267,7 +1340,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="34">
|
||||
<div class="slide" data-slide="35">
|
||||
<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">
|
||||
@@ -1322,14 +1395,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="35" data-level="workflow">
|
||||
<div class="slide section-slide" data-slide="36" 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="36">
|
||||
<div class="slide" data-slide="37">
|
||||
<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>
|
||||
@@ -1356,7 +1429,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="37">
|
||||
<div class="slide" data-slide="38">
|
||||
<h1>Two Ways Skills Are Used</h1>
|
||||
<p>The weather workflow demonstrates both skill patterns in a single flow:</p>
|
||||
<div class="two-col">
|
||||
@@ -1379,7 +1452,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="38">
|
||||
<div class="slide" data-slide="39">
|
||||
<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">
|
||||
@@ -1428,9 +1501,9 @@ This is a TodoApp with a FastAPI backend and React frontend.
|
||||
</div>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
<!-- SLIDE 39: Closing -->
|
||||
<!-- SLIDE 40: Closing -->
|
||||
<!-- ============================================================ -->
|
||||
<div class="slide title-slide" data-slide="39">
|
||||
<div class="slide title-slide" data-slide="40">
|
||||
<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