Setup & Foundation
Everything you need to go from zero to building real tools with Claude Code. This page gets you installed, authenticated, and thinking the right way about how to work with an AI coding partner.
Sign in to start the tutorial
This tutorial keeps score while you work. Sign in with Google and:
- A timer starts the moment you sign in — pause it anytime from the widget in the corner.
- Every step you check off gets a timestamp.
- When you finish, you'll receive a congratulations email with your total time and section-by-section splits.
Claude Code is an AI coding assistant made by Anthropic. It runs right in your terminal (that black window with the blinking cursor) and you talk to it in plain English. You describe what you want to build, and it writes the code, creates the files, runs commands, and debugs problems — all while you watch.
What you'll build in this tutorial series:
- Exercise 1 of 3: An Eisenhower Matrix — a personal task prioritizer you open in your browser
- Exercise 2 of 3: A client homework form that emails responses to you via Google
- Exercise 3 of 3 (The Big One): A middleware app that pushes data into a business system via API. This one comes in two versions and you only do one of them — take the QuickBooks version if your books are in QuickBooks Online, or the Contractors Cloud version if your jobs live in that CRM.
- Then, page 5 — Harness & Memory: the settings, memory files, and habits that make every project after this one go faster
Each one is harder than the last. By the end, you'll be dangerous.
What you need to get started:
- A Windows computer (you're on one — good)
- Internet access
- A Gmail account — if you don't have one, make one now at accounts.google.com/signup (free)
- A credit card for a Claude subscription (flat monthly fee — no surprises)
Anthropic is the company that makes Claude. You need a Claude account with a subscription plan so Claude Code knows who you are. This is a flat monthly fee — no metering, no token tracking, no surprises on your credit card.
Claude Code is built on Node.js, which is a tool that lets JavaScript (a programming language) run on your computer. You don't need to learn JavaScript — you just need Node.js installed so Claude Code has something to run on.
v20.x.x or higher.
Now that Node.js is installed, you can install Claude Code with a single command. This downloads it from the internet and sets it up on your machine.
npm, which arrives with Node.js. The official write-up of this step lives at docs.claude.com → Claude Code setup if you ever want the reference version.- Close every Command Prompt window, open a fresh one, and run
claude --versionagain. A window opened before the install can't see it. - Confirm the install actually landed: run
npm list -g @anthropic-ai/claude-code. If it prints nothing, run the install command above once more and read the output for red text. - Still stuck? The official install and troubleshooting pages are docs.claude.com/claude-code/setup and .../troubleshooting.
Before you start building, you need a home base. Every project you build will live under one root folder: C:\dev. This keeps things organized and gives Claude Code a consistent place to work.
C:\dev. When you open a terminal and type cd C:\dev\MyProject, you're in your project. Clean and simple.
C:\dev already exists, skip this step. If Windows won't let you create folders on C:\, create dev in your user folder instead (like C:\Users\YourName\dev) and use that path everywhere in this tutorial.
C:\dev.This is the moment. You're about to open a terminal, navigate to your project folder, and start talking to an AI that writes code. Don't worry — the terminal is just a text box where you type commands. Nothing scary.
The first time you run Claude Code, it will open a browser window and ask you to log in to your Claude account — the same one you just created. Log in, authorize Claude Code, and the browser will confirm you're connected. Switch back to the terminal.
You should now see Claude's prompt — a cursor waiting for you to type. Try saying hello:
claude — Start a conversation (from your project folder)/help — See all available commands/clear — Clear the conversation context (do this often — it prevents crashes)Escape or Ctrl+C — Cancel what Claude is doingexit — End the conversation and go back to the terminalUp arrow — Recall your previous message
Take a minute to play around. Ask Claude some questions. When you're done exploring, type exit to leave. We'll come back to Claude in a moment with a plan.
Make a one-click launcher (no more typing)
You just opened Command Prompt, typed cd C:\dev\Sandbox, then typed claude. You'll do that every single time you sit down to work. A batch file is a tiny text file that types those same commands for you. Double-click it and Claude opens, already standing in your project folder. No syntax to remember.
.bat.Build it. Open Notepad (Start menu → type notepad → Enter) and paste these three lines. If your project lives somewhere other than C:\dev\Sandbox, change the middle line right here in the box before you copy it — that's the only line you ever change.
Line by line: @echo off keeps the window tidy, cd /d moves into your project folder (the /d lets it switch drives too), and claude starts Claude — exactly what you typed by hand.
Save it the right way. In Notepad choose File → Save As, then:
- Go to your
C:\devfolder (or your Desktop, if you'd rather it lived there). - Set Save as type to All files (*.*).
- Type the file name
Launch Claude.batand click Save.
.txt on the end. If you leave Save as type on "Text documents", Notepad quietly saves Launch Claude.bat.txt, and double-clicking it just opens Notepad again. With file extensions turned on you'll spot it right away: rename the file and delete the .txt.Test it. Double-click Launch Claude.bat. A black window opens and Claude starts, already in your project folder. Type exit when you're done, same as before.
Continue Claude.bat, and change the last line so Claude reopens your most recent conversation in that folder instead of starting fresh:
Make it nice (all optional):
- Desktop shortcut: right-click
Launch Claude.bat→ Send to → Desktop (create shortcut). On Windows 11, click Show more options first to find Send to. - Pin it to the taskbar: Windows won't pin a
.batfile directly, so make a shortcut that runs it. Right-click an empty spot on the Desktop → New → Shortcut, paste the line below as the location, click Next, name it, and click Finish. Then right-click the new shortcut → Pin to taskbar (Windows 11: Show more options → Pin to taskbar).
- Give it an icon: right-click the shortcut → Properties → Change Icon, and pick one you like.
- Give it a friendly name: right-click the shortcut → Rename → call it Ask Claude.
- One launcher per project: when you start a new project, copy the
.batfile, rename the copy after the project, and change the folder line. One double-click per project.
.command file. Paste this one line into Terminal — it writes the launcher into your dev folder and marks it as something you're allowed to run. Change Sandbox if your folder is named differently. Then double-click Launch Claude.command in Finder.
#!/bin/bash, then cd ~/dev/Sandbox, then claude) as ~/dev/launch-claude.sh, run chmod +x ~/dev/launch-claude.sh once, and run it from your file manager's "Run in Terminal" option. If you want it in your app menu, a small .desktop file with Terminal=true and Exec=bash -c "cd ~/dev/Sandbox && claude" does the job.
- The window flashes and closes: either
claudeisn't installed where Windows can find it (go back to Section 4 and checkclaude --version), or the folder name in the middle line has a typo. - It says "'claude' is not recognized": same fix — Section 4.
- Your folder name has spaces in it: keep the quotes around the path, exactly as shown. Without them, Windows stops reading at the first space.
Git is your undo button and a free offsite backup. Set it up once — from here on, you just tell Claude to handle the Git work.
--scope user to the end of each command to install without administrator rights. If that's blocked too, ask IT to install Git and the GitHub CLI.
winget itself, it ships with Microsoft's App Installer — details at Microsoft's winget page.)
Now let Claude do the rest. From your project folder, start claude again — just like the last section — and say:
Keep working in C:\dev and let Claude keep a copy in OneDrive. From C:\dev, start claude and say:
C:\dev itself into the OneDrive folder. OneDrive grabs files while they're being written, and tools that write thousands of small files will grind the sync to a halt.One more thing lives outside C:\dev: your global Claude folder, C:\Users\[you]\.claude. It holds your CLAUDE.md (next section), your settings and what Claude has learned about each project. Back up only C:\dev and a dead laptop gives you your work back with a Claude that has never met you. So add:
.claude folder stays put. It also holds your sign-in and files that change every second, so it should never be moved into OneDrive or synced whole. A copy of the handful of files above is all you need.Here's the most important concept in this entire tutorial:
claude and start a new conversation, it's like meeting a brilliant contractor who has total amnesia. It has no idea who you are, what you've built before, or how you like to work. CLAUDE.md fixes that.
A CLAUDE.md is a plain text file Claude Code reads automatically when it starts — before you say a word. It's your instruction manual for Claude, and it comes in two levels. The global one lives in your user profile (C:\Users\[you]\.claude\CLAUDE.md) and applies to every project on your machine — who you are and how you work belongs there, written once. A project CLAUDE.md sits at a project's root and adds rules for that one project only ("this app is a single HTML file, no server") — you'll create your first of those in Exercise 1. Right now, we're making the global one.
Without a CLAUDE.md, Claude is a generic assistant. With one, Claude is your assistant.
What goes in a CLAUDE.md?
Write this one in your own words. CLAUDE.md is how Claude learns who you actually are, so a file copied from somebody else quietly teaches Claude to expect somebody else — that's worse than having no file at all. The builder below asks you a few plain questions and assembles the file out of your answers. Nothing is filled in for you; the grey text inside each box is only an example of the kind of answer, and it disappears the moment you start typing.
A sentence or two. This is what makes Claude's answers fit your world instead of a generic one.
Be honest here. It changes how much Claude explains.
Even a rough answer helps. You can rewrite this later.
One rule per line. These become your standards.
One rule per line. These are the guardrails.
The folder you set up earlier in this tutorial, if you haven't picked another one.
Your answers save on this device as you type.
See a filled-in example
This is somebody else's file — a landscaper who wanted help with scheduling spreadsheets. It's here to show the shape and the tone, not to be copied. Yours should sound like you, because that's the entire point of the file.
# Marisol — How I Work With Claude ## Who I Am I run a landscaping company with three crews. Most of my day is routing trucks, quoting jobs, and keeping the crew schedule from falling apart when someone calls out. I am not a developer and I do not read code. Explain things in plain language and do not assume I know the jargon. ## What I Am Working On Our crew schedule is a whiteboard that gets erased every Friday. I want a spreadsheet that shows who is on which job, and prints clean enough to hand to a foreman. ## How We Work Explain what you are doing as you go, so I learn while we build. 1. I give you the requirements. 2. You propose a plan and wait for my approval. 3. On approval, you deliver complete working files. 4. I test it and confirm. Ask first, do not run ahead. When something breaks, gather information before changing code. ## Always - Show me the whole file, not just the part that changed - Use the crew names we actually use, not Crew A and Crew B - Tell me when something did not work ## Never - Never delete a file without asking me first - Never hand me something half finished and call it done ## Where My Files Live C:\dev ## Session Management - Update context/JOURNAL.md before I end a session. - Tell me to use /clear after heavy work or big file reads. - When in doubt, /clear. Ten seconds beats losing the session.
What a mature CLAUDE.md looks like:
A mature CLAUDE.md has all of the above plus some extras that evolve out of daily use:
- A "Brown M&M" rule — a small test at the top of your file that forces Claude to prove it actually read the instructions. (Van Halen used to put "no brown M&Ms" in their concert riders to verify promoters read the whole contract. Same idea.) If Claude skips the test, you know it skipped the file.
- Naming conventions — rules about how to name variables and database fields so everything stays consistent
- "Archive, don't delete" — instead of deleting old files, move them to an archive folder. You never lose work.
- "Claude runs commands" — Claude executes terminal commands itself instead of telling you to do it. You shouldn't have to touch the terminal for routine tasks.
Other consultants might add rules like:
- "All client-facing documents use our company letterhead"
- "Use metric units, not imperial"
- "My clients speak Spanish — build bilingual interfaces"
- "I'm working on a Mac, not Windows"
The CLAUDE.md grows over time. Every time Claude does something you don't like, add a rule. Every time it does something great, add a rule to keep doing it. It's a living document.
Let's create your global one now. Start Claude Code in your Sandbox folder and ask it to create the file for you — you'll be standing in Sandbox, but the file lands in your user profile, so every future project inherits it. Hit Copy on the preview panel above to put your CLAUDE.md on the clipboard, then paste the short instruction below into Claude, press Enter twice for a new line, and paste your file right after it:
C:\Users\[your username]\.claude\CLAUDE.md. The name is exactly CLAUDE.md — capital letters, .md on the end. Claude will create the .claude folder if it isn't there yet. Don't worry about typing the path yourself; Claude knows your username and will fill it in.context/JOURNAL.md in there? That folder is covered in the next section. You don't need to create it now — the rule just tells Claude where the journal lives once you start keeping one./clear (this restarts the conversation so Claude re-reads the CLAUDE.md). Then ask Claude: "What do you know about me?" Claude should repeat back the details from your CLAUDE.md. If it does, the file is working.
Your global CLAUDE.md tells Claude who YOU are. Now you need to tell Claude what you're BUILDING and what's HAPPENED so far. Both of those live in a single folder called context/ at the root of your project.
context/PROJECT.md— the project brief. What are you building, who is it for, what's the stack, what's done, what's next.context/JOURNAL.md— the running log. At the end of every session, you ask Claude to add a dated entry: what we did, what worked, what's next.
Why two files instead of one? PROJECT.md is the current state — short, kept up to date, rewritten as the project evolves. JOURNAL.md is the history — dated entries that pile up, newest first. One file would either get too long for Claude to read every session, or lose the history every time you updated the scope. Two files keep each one focused.
Here's a simple PROJECT.md. Don't create this one — we'll make real ones in the exercises.
And here's a JOURNAL.md after a few sessions:
How to maintain JOURNAL.md: at the end of every session, before you type exit, say this to Claude:
That's it. Claude appends a dated entry. Next session, Claude reads both files and picks up exactly where you left off.
context/ folder and renames MEMORY.md to JOURNAL.md — that's because Claude has its own built-in memory system in your user profile (covered on the harness page) with a file also called MEMORY.md, and the collision was confusing. Same idea, sharper boundary: project state lives in the project (context/); facts about you live in the harness.
Every project you build will have a CLAUDE.md at the root for project rules and a context/ folder with PROJECT.md and JOURNAL.md — while your global CLAUDE.md covers who you are. That's the foundation. You'll add other folders (source/, output/, reference/, archive/) as projects grow. Everything else is just typing.
Once Claude can see your bank activity, it can do things like check your books against the bank, flag a charge you don't recognize, or tell you what cleared last week, without you downloading a single statement. The service that makes that possible is called SimpleFIN Bridge.
- A small paid service at simplefin.org that lets your Claude read your bank and card activity: balances and transactions.
- It is read-only. Nobody can move money, pay a bill or change anything with it.
- It costs around 50 cents per bank per month. Prices change, so check their pricing page before you sign up.
- It refreshes about once a day. It is not a live, to-the-minute feed.
- It only has data from the day you connect forward. It cannot go back and fetch last year. Connect early if you want history to build up.
- Your bank password is typed into SimpleFIN Bridge when you connect, and is not inside the link your Claude uses.
Keep an access log
Here's the habit that makes this safe: your Claude never talks to SimpleFIN directly. Every call goes through one small program, simplefin_pull.py, that writes a row in a log on your computer before each call: the time, the computer's name, your internet address, who asked and why, and what was pulled. If you ever wonder "was that me?", the log answers it.
1. Make a folder for it. Inside your project folder, make a folder named simplefin (so it ends up as C:\dev\<your project>\simplefin\). Or just tell Claude:
2. Save the program into that folder as simplefin_pull.py, exactly as written. Click Download (then move the file from your Downloads folder into simplefin), or open the code, click Copy, paste it into Notepad and save it with Save as type: All files, the same way you made the launcher. It uses plain Python with nothing extra to install. If you don't have Python yet, ask Claude to check and install it for you.
Show the code (simplefin_pull.py)
The program also keeps the data each pull brings back in a pulls folder next to it, so Claude can work from a saved copy instead of calling the bank again.
3. Keep the link out of GitHub and out of the cloud. The access link will live in a file called .env in the simplefin folder. Tell Claude:
4. Teach Claude the rule, so it holds in every future session. Tell Claude:
Connect your bank
- Open your own account at simplefin.org and follow their sign-up.
- Connect each bank and card you want Claude to see, one at a time. You type the bank login into SimpleFIN Bridge yourself; Claude never sees it. If this is for your business, connect business accounts only.
- Make a setup token in your SimpleFIN Bridge account. A setup token is a long code that works once: the program trades it for the access link.
Claim the token yourself, not through the chat. Open a fresh Command Prompt (Start menu → type cmd → Enter), go to the simplefin folder, and run the claim. Change Sandbox if your project has a different name.
Paste the setup token when it asks and press Enter. Nothing shows while you paste. That's on purpose. It says "Done" and saves the access link in .env. Neither you nor Claude ever needs to look at that link again. (On a Mac, type python3 instead of python.)
Test one pull. Back in Claude, say:
You should see each account and its balance, then a log with two rows (the claim and the test pull), each saying ok. Every call from now on adds a row, before it happens.
"SimpleFIN emailed me that my data was accessed"
SimpleFIN can email you when your data is read. Most of the time it was you. To check:
- Open the log. Ask Claude: "show me the SimpleFIN log" (it runs
python simplefin_pull.py log). - Find a row at the time in the email. The email may use a different time zone; every log row shows its time zone.
- Compare the internet address in the email with the
public_ipin that row. - They match: it was you. Nothing to do.
- No row at that time, or a different address: treat it as someone else. Turn the link off now and make a new one (next part).
Lock it and make a new link
Use this if the log doesn't explain an email, or any time you want a fresh link. Nothing is lost, and because the link is read-only, nobody could have moved money with the old one.
- Turn off the old link. Log in to your SimpleFIN Bridge account, find the app connection this link belongs to, and revoke or disable it. That ends the old link at once.
- Make a new setup token, the same way you made the first one.
- Claim it with the program in your own Command Prompt, in the simplefin folder:
- Test one pull through Claude, the same as before, with
--why "Test after making a new link". - Look at the log and check the new rows say ok.
The weekly habit
Once a week, ask Claude "show me this week's SimpleFIN log" and read it: how many calls, from which computer, for what. Anything you don't recognize, run the email check above. Look at it every week and an alert email is never a surprise.