diff --git a/.claude/agents/presentation-learning-journey.md b/.claude/agents/presentation-learning-journey.md index fe77463..87898e3 100644 --- a/.claude/agents/presentation-learning-journey.md +++ b/.claude/agents/presentation-learning-journey.md @@ -176,3 +176,4 @@ After completing changes, report to the user: - **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**. - **2026-04-24 pillar-footer strip added to slides 23-29**: compact 5-card reference bar added below the viewport fold on slides 23-29. Implementation uses Option A: each slide's existing content is wrapped in a `.slide-viewport-content` div (`min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%`) and a `.pillar-footer` sibling div (flex row, `gap: 10px; justify-content: center; max-width: 1000px; margin: 60px auto 40px auto`) is appended after the wrapper. Each footer contains 5 `.pillar-mini-card` divs (flex row, `padding: 10px 14px`, `border-radius: 8px`, `box-shadow: 0 2px 6px rgba(0,0,0,0.08)`) with emoji + title only — no body text. Active-pillar highlighting is implemented: the current topic's card has `border-left: 5px solid ` and no `.inactive` class; the other four have `border-left: 3px solid ` and class `pillar-mini-card inactive` (`opacity: 0.45`). Active assignments: slides 23-26 → Agents, slide 27 → CLAUDE.md, slide 28 → Skills, slide 29 → Context. Section-dividers (slides 23, 27, 28, 29) kept `justify-content: center` for `.slide-viewport-content`; content slides (24, 25, 26) use `justify-content: flex-start; padding-top: 60px` on `.slide-viewport-content` to keep the h1 near top. Scroll reset (`window.scrollTo(0, 0)` in `showSlide()`) was already present from a prior session — no JS change needed. The 5 pillar colors exactly match slide 14's card borders: Agents `#009688`, Skills `#4caf50`, Workflows `#ef6c00`, CLAUDE.md `#9c27b0`, Context `#3f51b5`. Total slide count (54) and all data-level positions unchanged. **At 1024px width**: each mini-card is `~18%` of 1000px = ~180px. With `flex: 1` and `min-width: 0`, cards compress gracefully — the 12-char "CLAUDE.md" title at `font-size: 0.82rem` is ~96px, well within 180px. No wrapping expected at standard presentation viewports. - **2026-04-24 content-slide heading centering fix (slides 24/25/26)**: the `.slide-viewport-content` wrapper (`min-height: 100vh; display: flex; align-items: center`) was centering headings vertically even with `justify-content: flex-start` inline override — `align-items: center` acts on the cross-axis (horizontal in a column flex), but the real problem is that the full-viewport-height flex container pushes content away from the top edge. Fix: removed `.slide-viewport-content` entirely from slides 24 and 26 (plain content slides with substantial content), letting them flow exactly like slide 22 — h1 at top, content below, no wrapper at all. Slide 25 (Demo — nearly empty body) uses a plain `
` spacer wrapping only the h1, so the footer is pushed below the fold without any flex centering. Section-divider slides 23/27/28/29 keep their `.slide-viewport-content` wrapper unchanged — they are supposed to be viewport-centered. **Rule**: for content slides with a pillar-footer, do NOT wrap in `.slide-viewport-content`. Use a bare spacer div only on near-empty content slides (less than ~3 elements of body content) to push the footer below the fold. +- **2026-04-24 image-only tips slides inserted at 31 and 32 (57 → 59 slides)**: two new slides inserted after slide 29 (the last agents-section content slide) before slide 30 (the CLAUDE.md section intro). Both slides are plain content slides with `data-level="agents"` so the journey bar stays on the agents level without re-firing. Layout: bare `

` (no wrapper) + flex-centered `
` containing the ``. The `-200px` calculation (h1 ~100px + pillar-footer ~100px gap) matches slide 26's pattern for full-bleed image slides. Pillar-footer is included with Agents as the active card (matching the active pattern on slides 26-29). Renumber method: Python sentinel script — each `data-slide="N"` for N=31-57 replaced via `##SENTINELN##` intermediates, then resolved to N+2. No `goToSlide` hardcoded calls exist in this deck; `totalSlides` is DOM-computed. Section-divider positions after insertion: **agents=23 (unchanged), skills=35, context=41, claude-md=46, commands=52, workflow=55**. Total slides: **59**. Images at `../assets/concepts/agents/agent-tips-1.png` and `agent-tips-2.png` — both verified present before insertion. diff --git a/presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html b/presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html index ed52448..0fb308d 100644 --- a/presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html +++ b/presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html @@ -1393,12 +1393,102 @@ todoapp/

+ +
+

Claude Code Best Practice Tips & Tricks

+
+ Claude Code tips and tricks — part 1 +
+ +
+ + +
+

Claude Code Best Practice Tips & Tricks

+
+ Claude Code tips and tricks — part 2 +
+ +
+ - -
+ +

📝 CLAUDE.md

@@ -1458,7 +1548,7 @@ todoapp/ -
+

🎓 Skills

@@ -1520,7 +1610,7 @@ todoapp/ -
+

🧠 Context

@@ -1577,14 +1667,14 @@ todoapp/ -
+
Topic 2

🎓 Skills — What the Weather Reporter Knows

Skills are the specific things the reporter has been trained to do. Our reporter has two: fetch the data, and render it as a card.

-
+

The Training Manual

Think of it like this

@@ -1611,7 +1701,7 @@ todoapp/
-
+

When to Turn Something Into a Skill

Tip from Boris Cherny (creator of Claude Code) — Feb 1, 2026

@@ -1648,7 +1738,7 @@ todoapp/
-
+

Why Separate Agents and Skills?

@@ -1674,7 +1764,7 @@ todoapp/
-
+

How to Create Your Own Skill

Skills are plain markdown files. If you can write a recipe, you can write a skill.

@@ -1727,7 +1817,7 @@ Fetch the current temperature for Dubai, UAE.
-
+

Skill Config Fields

The small config block at the top of a SKILL.md (the "frontmatter") controls how the skill behaves:

@@ -1767,14 +1857,14 @@ Fetch the current temperature for Dubai, UAE. -
+
Topic 3

🧠 Context — The Reporter's Brain

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.

-
+

Claude's Brain

Think of it like this

@@ -1812,7 +1902,7 @@ Fetch the current temperature for Dubai, UAE.
-
+

What Loads at Session Start

The moment you open Claude Code, certain things land in Claude's brain before you've typed a word. The rest waits in the wings — only loaded when you actually need it. This is called progressive disclosure.

Diagram showing what loads into Claude's context window at session start @@ -1846,7 +1936,7 @@ Fetch the current temperature for Dubai, UAE.
-
+

Keep the Brain Clear

The more stuff crammed into Claude's brain, the harder it is to focus on what matters. This is called context rot — performance drops as the brain gets crowded.

@@ -1890,7 +1980,7 @@ Fetch the current temperature for Dubai, UAE.
-
+

How to Manage Your Context

You can't create the context — it's just there, the moment you open a chat. But you can see how full it is, trim it down, or wipe it clean. Three commands give you full control.

@@ -1935,14 +2025,14 @@ Fetch the current temperature for Dubai, UAE. -
+
Topic 4

📋 CLAUDE.md — The Reporter's Pocket Rulebook

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.

-
+

The Employee Handbook

Think of it like this

@@ -1970,7 +2060,7 @@ This is the Q2 marketing campaign brief — targeting small business owners.
-
+

How to Create Your CLAUDE.md

You don't need to write CLAUDE.md by hand. Claude can look at your project and draft one for you.

@@ -2015,7 +2105,7 @@ open, edit, save # Tweak it like any doc<
-
+

Grow CLAUDE.md With Every Mistake

Tip from Boris Cherny (creator of Claude Code) — Feb 1, 2026

@@ -2052,7 +2142,7 @@ open, edit, save # Tweak it like any doc<
-
+

What Goes in CLAUDE.md

# CLAUDE.md @@ -2080,7 +2170,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
-
+

How CLAUDE.md Loads

Claude Code uses two mechanisms to find CLAUDE.md files:

@@ -2113,14 +2203,14 @@ This is a TodoApp with a FastAPI backend and React frontend. -
+
Topic 5

⚡ Commands — The Trigger

One word kicks off the whole chain. /weather-orchestrator → agent → skill → SVG card. Commands are the entry point into any workflow.

-
+

Commands — The Entry Point

Think of it like this

@@ -2164,7 +2254,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
-
+

How to Create Your Own Command

Commands are markdown files too. If you can write a recipe, you can write a command.

@@ -2219,14 +2309,14 @@ This is a TodoApp with a FastAPI backend and React frontend. -
+
Putting It All Together

🎼 Workflow — All Five Pieces Together

Watch the weather reporter example run from one keystroke to SVG card output. Five concepts, one orchestrated flow.

-
+

Command → Agent → Skill

This is the core architecture pattern of Claude Code workflows — demonstrated in this very repo by the weather example:

The Orchestration Flow @@ -2253,7 +2343,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
-
+

Two Ways Skills Are Used

The weather workflow demonstrates both skill patterns in a single flow:

@@ -2276,7 +2366,7 @@ This is a TodoApp with a FastAPI backend and React frontend.
-
+

How to Wire Your Own Workflow

A workflow isn't a separate file type. It emerges when one command calls agents and skills in sequence.

@@ -2327,7 +2417,7 @@ This is a TodoApp with a FastAPI backend and React frontend. -
+

Journey So Far

Five concepts, one running example

From meeting the weather reporter to wiring the full Command → Agent → Skill chain. The same five pieces compose every workflow you'll ever build.

diff --git a/presentation/assets/concepts/agents/agent-tips-1.png b/presentation/assets/concepts/agents/agent-tips-1.png new file mode 100644 index 0000000..b6bc50d Binary files /dev/null and b/presentation/assets/concepts/agents/agent-tips-1.png differ diff --git a/presentation/assets/concepts/agents/agent-tips-2.png b/presentation/assets/concepts/agents/agent-tips-2.png new file mode 100644 index 0000000..dbb10fb Binary files /dev/null and b/presentation/assets/concepts/agents/agent-tips-2.png differ