diff --git a/presentation/learning-journey/index.html b/presentation/learning-journey/index.html index 2bc698e..7d2f3c8 100644 --- a/presentation/learning-journey/index.html +++ b/presentation/learning-journey/index.html @@ -106,6 +106,19 @@ .field-desc { font-size: 0.95rem; color: #555; } .field-required { font-size: 0.7rem; background: #ffcdd2; color: #c62828; padding: 1px 6px; border-radius: 3px; margin-left: 8px; font-weight: 600; text-transform: uppercase; } .field-recommended { font-size: 0.7rem; background: #fff9c4; color: #f57f17; padding: 1px 6px; border-radius: 3px; margin-left: 8px; font-weight: 600; text-transform: uppercase; } + /* TOC vertical list for Meet the Person */ + .toc-vertical { display: flex; flex-direction: column; gap: 14px; margin-top: 32px; max-width: 700px; } + .toc-vertical .toc-item { display: flex; align-items: flex-start; padding: 18px 24px; background: #f8f9fa; border-radius: 8px; cursor: pointer; transition: all 0.2s; } + .toc-vertical .toc-item:hover { background: #eee; } + .toc-vertical .toc-badge { font-size: 0.7rem; font-weight: 700; background: #e5e5e5; color: #777; border-radius: 10px; padding: 2px 8px; margin-left: 10px; white-space: nowrap; } + .toc-vertical .toc-name { font-size: 1rem; font-weight: 600; color: #1a1a1a; margin-bottom: 2px; } + .toc-vertical .toc-sub { font-size: 0.9rem; color: #666; } + /* File tree */ + .file-tree { font-family: 'SF Mono', Monaco, 'Courier New', monospace; font-size: 0.9rem; background: #f8f9fa; padding: 24px; border-radius: 8px; line-height: 1.9; } + .file-tree .dir { color: #1565c0; font-weight: 600; } + .file-tree .file { color: #444; } + .file-tree .highlight { color: #2e7d32; font-weight: 600; } + .file-tree .dim { color: #aaa; }
@@ -116,10 +129,10 @@From your first conversation to wiring your first workflow
+There is no one correct way of using Claude Code
An onboarding guide for non-engineers & engineers alike.
- +Built from the inside out: what Claude sees, what it always knows, who it becomes, what it's trained to do, how you trigger it, and how it all wires together.
-
+ Before anything else — before agents, before skills — there's Claude's brain. Everything Claude can see, remember, and reason about right now lives in that brain. If it's not in there, Claude doesn't know about it.
+Most people start by describing what they want in natural language. That works — but it's only the beginning. The next level is giving Claude a structure so it behaves the same way every time.
+Plain folder. Claude starts from zero every conversation. No memory, no structure, no specialist roles.
+Structure added. Claude walks in knowing the rules, the specialists, and the playbooks.
+You stop describing what you want every time and start configuring how Claude should behave. This session teaches you the five pieces that make the "After" column work.
+Claude is like a brilliant stranger you meet at a coffee shop — incredibly capable, but they know nothing about you, your project, or your preferences. Every conversation, you're re-introducing yourself. Vibe coding is just talking to this stranger and hoping they get it right.
+"Write me a weather report for Dubai."
+No source specified. No format agreed. No memory of last time. The output varies every run.
+Unpredictable. Hard to share. Hard to repeat.
+"/weather-orchestrator"
One keystroke. Claude knows the source (Open-Meteo), the format (SVG card), the agent (weather-reporter).
+Repeatable. Shareable. Same every time.
+Even before you set up any structure, how you prompt matters. Specific beats vague. Context beats assumption.
+"Give me the weather."
+Which city? Celsius or Fahrenheit? From a live API or training data? Claude guesses.
+"Fetch the current temperature for Dubai from Open-Meteo and return it in Celsius."
+Source named. Location named. Unit specified. No guessing needed.
+"Make this better."
+Better how? Shorter? More formal? Better structured? Claude will pick one at random.
+"Rewrite this in a warmer, less formal tone. Keep it under 100 words."
+Tone named. Length constrained. Unambiguous.
+You can encode good prompts permanently so you never have to write them again. That's what the next five topics are about.
+We're going to learn five concepts using one running example: a weather reporter agent that fetches Dubai's temperature and renders a weather card. Same person — five different angles.
+An agent is Claude playing a specific role. Meet the weather reporter — a specialist hired to fetch and report weather data for Dubai. Same Claude, different hat.
+Without an agent, you walk into a random kitchen and shout "make me pasta!" — whoever happens to hear you might boil instant noodles or make a five-course Italian meal. With an agent, you're walking up to a specific person with a specific job title. The Italian chef makes pasta the Italian-chef way. Every time.
+You ask Claude "What's the weather in Dubai?"
+It might guess from training data, search the web, or make something up.
+You don't know what it'll do.
+The weather-agent has a clear job description:
"Always check the Open-Meteo weather service. Always return temperature in a clean, consistent format."
+Same question, same approach, every time.
+The difference in one picture: prompting is asking a stranger on the street; using an agent is asking your dedicated specialist.
+| + | Prompting (stranger) | +Agent (specialist) | +
|---|---|---|
| Who answers | +Whoever happens to be there | +The person you hired for this exact job | +
| Source of truth | +Could be anywhere | +Always the official Open-Meteo weather service | +
| Format | +Whatever comes out | +Clean, consistent temperature + unit | +
| Twice in a row? | +Different each time | +Same method, same shape | +
Agents don't make Claude smarter — they make it predictable. Same question → same approach → same quality. That's what you need for anything you'll do more than once.
+"When Claude spawns an agent, that agent gets its own fresh brain. It can do as much work as it needs, then synthesize its results — only the final report comes back to you."
+This connects directly to the weather reporter: the weather-agent works in its own brain — all that web fetching, JSON parsing, and failed attempts stay out of yours. You just get the temperature back.
You don't write an agent from scratch — Claude helps you build one. Type /agents inside Claude Code and a guided menu opens.
Type /agents in Claude Code. A menu appears with your existing agents and an option to create a new one.
/agents
+ A menu opens listing your existing agents (including weather-agent) plus "Create new agent".
+ .claude/agents/weather-agent.md — job description, allowed tools, model. Edit it like any document.
+ Creating an agent is like writing a job description for a new hire. You say what the role is, what tools they get, and how they should behave. Claude drafts the JD; you review and adjust.
+Agents are just text files. Anyone on your team can create, share, or edit one. No coding required.
+The config block at the top of an agent file controls its identity and capabilities. Here's what the real weather-agent.md uses:
weather-agent
+ "PROACTIVELY" for auto-invocation
+ haiku, sonnet, opus, or inherit (default). weather-agent uses sonnet
+ WebFetch, Read, Write, etc.
+ weather-fetcher
+ 5
+ user, project, or local. weather-agent uses project
+ green
+ The skills: field is what makes the weather-agent special. It preloads weather-fetcher directly into the agent's brain at startup — before the agent has received a single instruction. The agent doesn't need to be told how to fetch weather; it already 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.
+When someone joins your team, they have a role (agent), but they also go through specific training modules — how to use the CRM, how to write a proposal, how to run a standup. Each training module is a skill.
+orchestration-workflow/weather.svg. This skill is invoked directly by the command.
+ Each skill has its own knowledge and methods. The reporter uses the right skill for the right step. Claude works the same way.
+"If you do something more than once a day, turn it into a skill."
+The rule is simple: anything you're explaining to Claude over and over is a skill waiting to be written down. The weather reporter's skills are a perfect example:
+weather-fetcher.
+ weather-svg-creator.
+ Skills are how repetition becomes reliability. Write it down once, and Claude does it the same way forever — or until you update the skill.
+The weather-agent is the person with the job title "Weather Reporter".
It defines the role and behavior: use Open-Meteo, return temperature, track history in memory.
+The weather-fetcher skill is the specific training on how to fetch weather data.
It contains exact instructions:
+current.temperature_2m from the responseOne agent can have multiple skills, and one skill can be used by multiple agents. Skills are reusable building blocks. Agents are the people who use them.
+Skills are plain markdown files. If you can write a recipe, you can write a skill.
+Create .claude/skills/<your-skill-name>/SKILL.md in your project. That's it.
.claude/skills/weather-fetcher/SKILL.md. Or ask Claude: "Turn this into a skill."
+ The skill contains instructions, not code. It tells Claude how to do something using its existing tools.
+The small config block at the top of a SKILL.md (the "frontmatter") controls how the skill behaves:
+/slash-command. Defaults to directory name
+ false to hide from / menu — weather-fetcher uses this because it's agent-only
+ haiku, sonnet, or opus
+ fork to run in isolated subagent context
+ User-invocable: appears in / menu, user runs it directly (like weather-svg-creator). Agent-preloaded: set user-invocable: false, then list it in an agent's skills: field — it becomes domain knowledge injected into that agent (like weather-fetcher).
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.
+Imagine Claude has a brain that holds everything it's aware of right now — your question, every file it's opened, every tool result, every word it's said back to you. Inside that brain is a small working area (picture a desk) where the actual thinking happens. If a thought isn't in the brain, Claude can't use it. Simple as that.
+Imagine Claude has a brain that holds everything it's aware of right now — your question, every file it's opened, every tool result, every word it's said back to you. If a thought isn't in the brain, Claude can't use it. Simple as that.
- Everything you give Claude in a conversation lands in its brain:
+When the weather-agent is dispatched, it gets its own fresh brain — and weather-fetcher is pinned into it at startup via the skills: field. Everything you give Claude in a conversation lands in its brain:
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.
-
+
weather-fetcher; the full content loads when the agent runs.
Only the descriptions of skills and agents are loaded at startup — the rest is fetched on-demand. That's progressive disclosure. MCPs work the same way when set up for deferred loading.
-The brain has a fixed budget (~1M tokens). Loading every skill, agent, and external tool upfront would burn the budget before you've typed a word. Progressive disclosure keeps the brain light. Run /context any time to see exactly what's currently loaded.
Only descriptions of skills and agents are loaded at startup — the rest is fetched on-demand. That's progressive disclosure. It keeps the brain light.
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.
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.
/context is checking how cluttered the desk is. /compact is filing the paperwork into a one-page summary. /clear is walking the assistant out of the room and back in for a fresh one. Same person, same skills — just a tidier workspace.
If context is Claude's brain, CLAUDE.md is the standing instructions pinned in that brain at the start of every chat — rules Claude has memorized before you've said a word.
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.
Imagine hiring a brilliant new assistant every single morning — someone who forgets everything at 5pm. You'd get tired of re-explaining "we say clients, not customers" and "always CC my manager" over and over. So you pin those rules into their brain before the day starts. That's CLAUDE.md: a short list of standing instructions Claude reads first, every time.
It's just a plain-text file at the top of your project. Here's a CLAUDE.md a non-engineer might write:
+For the weather reporter, CLAUDE.md might contain: "Always report in Celsius unless asked. Always cite Open-Meteo as the source." Here's a non-technical example:
You don't need to write CLAUDE.md by hand. Claude can look at your project and draft one for you.
You'll keep improving it over time (Boris's tip on the next slide). But /init gets you to a working draft in under a minute.
You'll keep improving it over time. But /init gets you to a working draft in under a minute.
Claude Code uses two mechanisms to find CLAUDE.md files:
An agent is Claude playing a specific role, with a specific job title — a weather reporter, a copy editor, a research analyst. Same Claude, different hat.
-Without an agent, you walk into a random kitchen and shout "make me pasta!" — whoever happens to hear you might boil instant noodles or make a five-course Italian meal. With an agent, you're walking up to a specific person with a specific job title. The Italian chef makes pasta the Italian-chef way. Every time.
-You ask Claude "What's the weather in Dubai?"
-It might guess from its training data, search the web, or make something up.
-You don't know what it'll do.
-A weather-agent has a clear job description:
"Always check the official Open-Meteo weather service. Always return the temperature in a clean, consistent format."
-Same question, same approach, every time.
-The difference in one picture: prompting is asking a stranger on the street; using an agent is asking your dedicated specialist.
-| - | Prompting (stranger) | -Agent (specialist) | -
|---|---|---|
| Who answers | -Whoever happens to be there | -The person you hired for this exact job | -
| Source of truth | -Could be anywhere | -Always the official weather service | -
| Format | -Whatever comes out | -Clean, consistent temperature + unit | -
| Twice in a row? | -Different each time | -Same method, same shape | -
Agents don't make Claude smarter — they make it predictable. Same question → same approach → same quality. That's what you need for anything you'll do more than once.
-"When Claude spawns an agent, that agent gets its own fresh brain. It can do as much work as it needs, then synthesize its results — only the final report comes back to you."
-This is quietly one of the most useful things about agents, and it connects directly to what we learned about context:
-Just ask. "Spin up an agent to read through these ten PDFs and summarize them." Claude will dispatch a specialist, they'll churn through the work in their own brain, and come back with just the summary.
-You don't write an agent from scratch — Claude helps you build one. Type /agents inside Claude Code and a guided menu opens.
Type /agents in Claude Code. A menu appears with your existing agents and an option to create a new one.
/agents
- A menu opens listing your existing agents plus "Create new agent".
- Creating an agent is like writing a job description for a new hire. You say what the role is, what tools they get, and how they should behave. Claude drafts the JD; you review and adjust.
-Agents are just text files. Anyone on your team can create, share, or edit one. No coding required.
-The config block at the top of an agent file controls its identity and capabilities:
-"PROACTIVELY" for auto-invocation
- haiku, sonnet, opus, or inherit (default)
- user, project, or local
- red, blue, green, etc.
- If an agent is a person with a job title, a skill is a specific thing they've been trained to do — a certification, a how-to, a recipe.
-When someone joins your team, they have a role (agent), but they also go through specific training modules — how to use the CRM, how to write a proposal, how to run a standup. Each training module is a skill.
-Shayan has many skills:
-Each skill has its own knowledge and methods. Shayan uses the right skill for the right task. Claude works the same way.
-"If you do something more than once a day, turn it into a skill."
-The rule is simple: anything you're explaining to Claude over and over is a skill waiting to be written down. A few examples from real teams:
-Skills are how repetition becomes reliability. Write it down once, and Claude does it the same way forever — or until you update the skill.
-The weather-agent is the person with the job title "Weather Reporter".
It defines the role and behavior.
-The weather-fetcher skill is the specific training on how to fetch weather data.
It contains exact instructions:
-One agent can have multiple skills, and one skill can be used by multiple agents. Skills are reusable building blocks. Agents are the people who use them.
-Skills don't have a slash-command creator — they're plain markdown files you create directly. The pattern is simple enough that you can write your first one in a minute.
-Create .claude/skills/<your-skill-name>/SKILL.md in your project. That's it.
.claude/skills/weekly-update/SKILL.md. Or ask Claude: "Turn this into a skill called weekly-update."
- Writing a skill is like writing a page in a recipe book. Title at the top, ingredients, steps. Anyone on the team can open it and follow along — Claude included.
-The skill contains instructions, not code. It tells Claude how to do something using its existing tools. The next slide shows the small config block at the top.
-The small config block at the top of a SKILL.md (the "frontmatter") controls how the skill behaves:
-/slash-command. Defaults to directory name
- false to hide from / menu — becomes background knowledge only
- haiku, sonnet, or opus
- fork to run in isolated subagent context
- User-invocable: appears in / menu, user runs it directly. Agent-preloaded: set user-invocable: false, then list it in an agent's skills: field — it becomes domain knowledge injected into that agent.
If CLAUDE.md is what Claude always knows, a command is what Claude does when you press one specific button. Slash commands turn a multi-step workflow into a single keystroke.
One word kicks off the whole chain. /weather-orchestrator → agent → skill → SVG card. Commands are the entry point into any workflow.
If agents are employees and skills are their training, a command is the manager's playbook — "when someone asks for a weather report, first ask them Celsius or Fahrenheit, then dispatch the weather team, then create the visual."
You've already seen five built-in commands in this presentation:
+You've already seen built-in commands in this presentation:
/init
- Drafts a CLAUDE.md for your project (Topic 2)
+ Drafts a CLAUDE.md for your project (Topic 4)
/agents
- Opens the agent creator menu (Topic 3)
+ Opens the agent creator menu (Topic 1)
/context
- Shows how full Claude's brain is right now (Topic 1)
+ Shows how full Claude's brain is right now (Topic 3)
/clear & /compact
- Reset or summarize the brain (Topic 1)
+ Reset or summarize the brain (Topic 3)
Commands are markdown files too. If you can write a recipe, you can write a command.
.claude/commands/status-report.md. The filename becomes the command name.
+ Path: .claude/commands/weather-orchestrator.md. The filename becomes the command name.
Five pieces, one orchestrated flow: a command kicks it off, an agent does the work using its preloaded skill, then another skill takes the result and turns it into output.
+ +Watch the weather reporter example run from one keystroke to SVG card output. Five concepts, one orchestrated flow.
This is the core architecture pattern of Claude Code workflows — demonstrated in this very repo by the weather example:
The weather workflow demonstrates both skill patterns in a single flow:
A workflow isn't a separate file type. It emerges when one command calls one or more agents and skills in sequence. Here's how the weather workflow in this repo wires itself together — your own can follow the same shape.
+A workflow isn't a separate file type. It emerges when one command calls agents and skills in sequence.
One command at the top. One agent with a skill preloaded for fetching. One skill at the end for output. Wire them in the command file.
@@ -1139,12 +1259,20 @@ To fetch the current temperature for Dubai:Six topics, one continuous arc
-From understanding Claude's brain to wiring a complete Command → Agent → Skill workflow. The same six pieces compose every workflow you'll ever build.
-The learning continues — hooks, MCP servers, settings, and more.
+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.
+👤 Agents — the specialist with a job title
+🎓 Skills — the training they carry
+🧠 Context — the brain that resets each session
+📋 CLAUDE.md — the pocket rulebook that survives resets
+⚡ Commands & 🎼 Workflow — the trigger that wires it all
+github.com/shanraisshan/claude-code-best-practice