Treat Claude like an intern, not a tool
The most useful shift you can make right now is to stop treating Claude like a search bar.
Search bars take a question and return an answer. Claude can do that, but it is not where the value lives. The value lives in collaboration: giving Claude context, letting it ask you questions, iterating with feedback, building something together.
The mental model that works: Claude is an intern. A sharp, eager intern who has not yet met you, does not know your business, does not know your taste, and wants to help if you let it in. Your job is not to ask the perfect question. Your job is to give Claude enough to think with you.
What this looks like in practice
Instead of: "Write me a LinkedIn post about my new offer."
Try: "Read my brand voice file in mind/work/content/brand/, then ask me three questions about what feels true for this offer right now, then draft something."
The first prompt is a vending machine. The second is a real collaboration. The output will not even be comparable.
Ask Claude to reflect back what it understood
Asking Claude to summarise what it just understood, before it starts working, makes the output noticeably better. Try this on any complex request:
"Before you start, tell me in two sentences what you understood
I'm asking for, and what assumptions you're making."This catches misunderstandings before they cost you ten minutes of wrong output.
The shift in one line
Stop asking Claude for answers. Start working with Claude on outcomes.
cd first, then claude
Order matters when you start a Claude Code session. Navigate into your system folder first, then start Claude. Not the other way around.
The wrong order
# Open Terminal, immediately type: claude # Then try to talk about files Claude can't see.
If Claude is started from outside your system folder (your home folder, your Desktop, anywhere else), it cannot see your files. Asking it to read your CLAUDE.md or update a skill will not work, because those files are not in the directory Claude is looking at.
The right order
# Go into your folder first: cd ~/Downloads/four-languages-part-1 # Then start Claude: claude
Now Claude is "inside" your folder. It can see your files, your skills, and your memory system. Everything works.
What does cd mean?
cd stands for "change directory". A directory is just the technical word for a folder. So cd ~/Downloads/four-languages-part-1 means "go into your system folder, inside Downloads". That is all it does.
If you ever lose track of which folder you are currently in, type pwd (print working directory). It will tell you.
Why this matters
The most common reason a Claude session "doesn't work" is that it was started from the wrong folder. If Claude says it cannot find a file you know exists, exit the conversation, cd into the right folder, and start again. This fixes it almost every time.
Don't tell Claude where, ask Claude where
You will hit small structural decisions all the time. Where should this folder go? What should this file be called? Is this the right place to save this? Is this format better than that one?
It is tempting to try to figure these out yourself. The faster move is to hand them to Claude.
The pattern
Instead of asking yourself: "Where should I move this folder?"
Type to Claude: "Can you move this to a location on my computer that makes it easiest for us to access and work with?"
Claude knows where its working directory should live. It knows which paths are short, which are stable, which are easiest to navigate to. It will move the folder, tell you where it went, and explain why.
Where this pattern shows up
- Folder structure: "Where do you think this client should live in my system?"
- File naming: "Suggest a name for this skill that fits how the others are named."
- Format choice: "Which format works best here, YAML or markdown? Pick one and tell me why."
- Architecture: "Look at what we have. Should this be split into two files? You decide."
The deeper move
You do not need to own every small decision in your system. Own the decisions only you can make: voice, values, who you serve, what you charge, how you want to feel in your business. Let Claude own the rest. That is what an intern is for.
Screenshot debugging
If you only take one trick from this whole page, take this one. It will save you more time than any other technique in the course.
The terminal is hard to copy text from. You cannot easily select multiple lines, errors wrap in confusing ways, and pasting them into Claude often loses the formatting that contained the actual error. Trying to manually copy a stack trace will frustrate anyone.
The move
1. Press Cmd + Shift + 4 (Windows: Win + Shift + S)
2. Drag a box around the part of the terminal you want to share
3. Drag the screenshot file straight into your Claude conversation
4. Type "what is happening?"
5. Press EnterClaude reads the screenshot, identifies the error, and tells you the next step. It is faster, more accurate, and less frustrating than any other approach.
This works for almost anything visual
- Terminal errors that are hard to read
- Browser console errors
- Confusing app screens or settings pages
- Diagrams or charts you want explained
- Receipts or invoices you want logged
- Anything visual you do not want to retype
The rule is simple: if you cannot copy it, screenshot it and drag it. You never need to retype anything from a screen. You never need to "explain what you see" to Claude. Just show it.
Why this works so well
Claude reads errors better than humans do. Red text and stack traces look intimidating, but they are usually one line of useful information surrounded by a wall of noise. Claude finds that one line and tells you what to do about it.
"Press 2" and what permissions actually mean
The first time Claude asks for permission to do something (run a command, edit a file, push to git), the options will look something like this:
Do you want to allow this?
1. Yes
2. Yes, and don't ask again for this in this conversation
3. NoIt is tempting to pick option 1 every time, because option 2 sounds like it might allow something dangerous. It does not.
What option 2 actually does
Option 2 means "yes, and stop asking me about this kind of action". How long that lasts depends on what Claude is doing.
For file edits (creating, editing, or deleting files), it lasts for this conversation only. Start a new session and Claude asks again, fresh.
For shell commands (things Claude runs in the terminal), it sticks. Claude writes the rule to a settings file in your project and stops asking for that command in future sessions too. Handy, but the rules build up, so it is worth reviewing now and then with /permissions.
When to press 2 (most of the time)
- Editing files inside your own system folder
- Reading files inside your own system folder
- Running standard git commands like
git statusorgit add - Running skills you have already used before
When to slow down and pick 1
- The first time you see a brand new kind of action you have never authorised before. Pick 1 the first time, watch what happens, then press 2 next time if it was fine.
- Anything that touches outside your system folder, like installing software at the OS level.
- Anything that posts to a public place: social posts, public repos, anything other people will see.
The mental model
None of this touches your account or any other project. A saved rule lives in this project's settings and only covers the exact action you approved. You are not signing a contract, and you can clear the list any time with /permissions.
Where Claude's knowledge actually comes from
You might think Claude "just knows" things in a conversation. It does not. Everything Claude knows in any given session came from somewhere specific, and there are exactly four sources. Once you can see the four sources, the way your root system is organised stops feeling arbitrary and starts feeling obvious.
The four sources of context in any conversation
1. The prompt
What you type in this conversation. The most powerful source while a session is open. Your conversation does get saved as a transcript file on your computer, but new sessions do not read past transcripts unless you go back and /resume that exact conversation. So anything you tell Claude in chat is effectively unused next time, unless you save it to a file your system actually reads.
2. Files Claude Code auto-loads (every session)
Three files. Same in every session. Loaded before you type your first message. CLAUDE.md (your root file), MEMORY.md (Claude's built-in auto-memory), and anything in .claude/rules/. This is the only layer Claude Code reads natively without being told. These three files together ARE the map.
3. Files loaded on demand
Anything Claude reads when you reference it or when a skill needs it. Fact files, skills in .claude/commands/, content folders, history. These cost context only when used, then go away. This is where most of your knowledge lives, and it is the terrain the map points to.
4. Context your system actively curates
The slice your morning protocol pulls in (last 3-5 entries from learnings.md, recent confirmed entries from patterns.md). The fact files the strategic thinking trigger reads when you ask a hard "what should I do about" question. Your system does not just load files passively. It actively constructs the working state for the conversation you are about to have.
The map and the terrain
Here is the frame that makes all four sources click. The three auto-loaded files (CLAUDE.md, MEMORY.md, and your rules) together ARE the map. Everything else is the terrain: your fact files, your skills, your content folders, your history. The map points to where things live and when to load them. The terrain is where the actual detail lives.
The map needs to stay small because it loads in every single conversation. The terrain can be infinite because each piece only loads when you actually need it.
Why a bloated map causes more mistakes (not fewer)
It is tempting to put more and more into the map because "Claude will see it every session." That instinct is wrong, and it actively makes Claude worse. Here is why.
Attention dilution
Claude has finite attention. The more rules and instructions in the always-loaded layer, the thinner that attention spreads. The specific rule that mattered for THIS task gets less weight.
Conflicting signals
More rules means more chances for two of them to point in different directions. Claude has to pick. Under pressure it picks badly. A small map with a few sharp rules is more reliable than a long one with many soft suggestions.
Lost in the middle
There is real research on this. Language models pay the most attention to the start and end of long contexts and miss things in the middle. A bloated map hides the rules that matter most in the section Claude is least likely to read carefully. Short maps do not have a middle.
Less room for the actual work
Every conversation has a finite working memory. If half of it is gone before you type your first message, there is less room for the back-and-forth, less room for files Claude needs to read for the current task, and less room for Claude's own reasoning chain. The output gets thinner because the room for thinking shrank.
This is why discipline about what goes in the always-loaded layer is not pedantic. It is the single biggest lever you have over the quality of every future conversation.
On the desk: the three files always loaded in every session (your map). The drawers: everything you pull out when you need it (the terrain, your fact files, skills, and content). The notebook your system slides onto the desk every morning: the curated slice your morning protocol brings in (recent learnings and confirmed patterns). What you write today: the prompt itself. If the desk is covered in papers, there is no room for the work you sat down to do. Keep the desk clear. Use the drawers. Trust your system to slide the right notebook over each morning.
A practical test
Next time you are about to add a line to CLAUDE.md, ask yourself: "Could a skill or task do its job without reading this line?" If yes, it belongs in the terrain (a skill, a fact file, a content folder), not the map.
Next time you tell Claude something in a conversation, ask: "If I close this terminal and open it tomorrow without resuming this exact session, will Claude still know this?" If no, and it matters, save it to the right layer based on how often it should load. Permanent truth about you = a fact file. A lesson learned today = learnings.md. An observation about how you work = patterns.md. A draft you want to come back to = a scratchpad in context/pad/.
The rest of the course is built on this. Once you can feel the difference between the map and the terrain, every other architectural decision in your root system becomes obvious.
That is the six.
None of these are technical. All of them are mindset. Together they will save you more time than every technical lesson in this course combined.
If you ever feel stuck, come back to this page. The answer is almost always one of these six.
One more, on the next tab: a single safety habit that protects everything you just built, keeping your keys and passwords safe.
Keep your keys and passwords safe
Sooner or later your system holds real secrets: an API key for Stripe, your database key, a password, an access token for your email service. They are the most dangerous thing your system holds. Anyone who has one can act as you, charge cards, read your data, send email from your name. So they get handled differently from everything else.
The one rule: every secret lives in one file
Every secret your system uses lives in a single file called .env, in your system folder. That is the only place a raw key is ever written down.
You do not set this up. Your system ships with the .env already there, alongside a .gitignore that keeps it out of your saved history and the deny rule further down that blocks Claude from reading it. The plumbing comes ready. You only add your keys.
.env starts with a dot, which makes it hidden by default. To see it in Finder, press Cmd + Shift + . (the full stop) to show hidden files. Or just ask Claude to open your .env.
Add your keys, and refer to them by name
When a service gives you a key, open your .env and add it with a name:
STRIPE_SECRET_KEY=sk_live_... RESEND_API_KEY=re_...
Add it in the file yourself rather than pasting it into the chat. From then on you refer to a key by its name, never its value. To have Claude use it, you say "the Stripe key is in .env as STRIPE_SECRET_KEY". Claude or your code reads the value from the file at the moment a command needs it, so the raw key never lands in your conversation.
Why it matters: your conversation gets saved as a transcript file on your computer. A key you type into chat sits in that history for good. A key in .env, called by name, never lands there.
How your system keeps Claude out of it
There is one catch. .env is a normal file. Claude can open it like any other, unless something tells it not to. Your system already carries that instruction: one line in .claude/settings.json that denies Claude read access to .env.
{
"permissions": {
"deny": ["Read(./.env)"]
}
}So Claude Code refuses to pull .env into a conversation. Your commands can still use a key when they genuinely need one, Claude just never opens the raw file. This ships in place too. To check it is there, open .claude/settings.json and look for that deny line.
The three places a secret must never go
- Your saved history. Committed keys travel to anyone you ever share the system with. Keeping
.envin.gitignoreprevents it. - Your website's code. Anything on a public page can be read by anyone who opens View Source. Secret keys stay out of the pages you publish.
- Anywhere other people can see. A screenshot, a shared doc, a group chat. Once a secret is public, treat it as burned.
Two kinds of keys
Some keys are meant to be public. A "publishable" or "anon" key allows only safe, limited actions and is fine in your website code. A "service" or "secret" key can do anything, so it lives in .env and never touches a public page. When a service hands you a key, check which it is. If you are unsure, ask Claude: "is this safe to use in the browser, or does it belong in .env only?"
If a key ever leaks, rotate it
If a secret ends up somewhere it should not, do not try to quietly hide it. Go to that service, delete the old key, generate a new one, and put the new one in .env. It takes two minutes and it is the only real fix. A leaked key you "meant to keep private" is still live in someone else's hands.
The habit in one line
Secrets live in .env, kept out of git, called by name, and blocked from Claude with a deny rule. You never type a raw key into a chat, into your code, or onto a page.