This guide is built to be handed to an AI assistant, which then walks you through it one step at a time. Claude Code in a terminal, Claude Desktop, and Codex all work. Save this page to your machine, open a fresh assistant session, give it this file, and paste this:
Walk me through Session 2.1 one step at a time.
Give me only the current step. Stop after each step and wait for me to say it's done.
Before each step, check whether it's already done on this machine, and skip it if it is.
Tell me what each command does before I run it.
Start at the beginning.
Then work through it together. Tell the assistant when a step is finished, or paste the error when one isn’t.
If you don’t have an assistant on this machine yet. This session installs one. Do Step 1 and Step 2 below by hand, then come back and hand this file to what you just installed. If you already have Claude or Codex available anywhere else, on a work laptop or the web app, hand it this file now and let it drive the installs too.
Assistant: the rules below govern this whole session. They override any default habit of reading a document and summarizing it.
CLAUDE.md or
AGENTS.md records which one; if it does not, ask once and
do not ask again. Where a step below has a ### Claude Code
version and a ### Codex version, deliver only theirs and do
not mention the other exists. Everywhere else the work is identical, so
say “your assistant” rather than assuming Claude. This is about the tool
the learner installs and works in, not about which assistant is reading
this guide.Welcome. This is a 10-week curriculum to get you working with Claude Code at a level where “synthesize this, draft that, automate the other” stops being a multi-day chore and becomes a one-session task. You’re not learning to code — you’re learning a workflow.
This session takes about 45 minutes. Setup is the first 20; the rest is posture, organization, and a short conversation so the next nine sessions can be tailored to what you actually need.
You’re running this on your own personal laptop — the machine where you have admin privileges and can install software freely. Step 0 covers what should and shouldn’t land here.
Already done? If you already have a GitHub account, skip the numbered steps below.
Create a GitHub account if you don’t have one. We’ll lean on it starting Session 2.6 (when you build a corpus pipeline) and again in the bonus website-build session.
Two minutes. You won’t need it today, but having it ready means Session 2.6 doesn’t stall on account-creation friction.
By the end of this session you will have:
claude or
codex.~/ai-training/ (or whatever name
you pick) with an instructions file inside it: CLAUDE.md
for Claude Code, AGENTS.md for Codex.wikipedia-summary.md — a one-paragraph summary of a
Wikipedia article you choose.recent-event.md — the date and headline of one public
event from the last 30 days.Two outputs is the bar. They prove the loop works: you ask, your assistant pulls real data, writes it to disk, you read it back. Everything in this curriculum is some elaboration of that loop.
A production version of this setup looks similar — Homebrew, Node, the CLI, plus Gmail and Calendar MCP servers running as launchd jobs that auto-restart on crash. You’re not doing the MCPs today (Session 2.5 covers that), but the destination is the same: a laptop that’s a real workstation for AI-assisted work, not a chat window.
Most of the work in this curriculum happens in a terminal, not in Claude’s web UI or desktop app. Three reasons it’s worth the upfront friction:
claude sessions side-by-side in split panes — one
drafting, one running headless jobs. The web UI doesn’t do split
panes.That’s the why. The rest is mechanics.
Before you install anything, read
POLICY-personal-laptop.md in the v2 folder (one level up
from this guide, at ../POLICY-personal-laptop.md). It’s one
page. The single rule: public, synthetic, or personal data only
on this machine. Nothing belonging to your employer or a client
should land here.
This is the load-bearing rule of the whole curriculum. It’s how you learn the shape of the work without dragging sensitive material onto a personal machine. The workflow you build here transfers cleanly to wherever your work material is authorized to live.
When you’ve read it, come back.
Already done? Open Spotlight and type Wispr. If it launches, skip to Step 2.
Voice input. Faster than typing, especially when you’re describing what you want while your hands are on the keyboard.
This curriculum runs on either Claude Code or Codex. Pick one now. The examples are written against Claude Code, and everything in them transfers; where the two genuinely differ, the guide gives you both versions and your assistant hands you only the one you picked.
Already done? Run claude --version,
then codex --version. If either prints a version number,
you already have that one. Tell your assistant which, and skip to Step
2.5.
In your terminal:
curl -fsSL https://claude.ai/install.sh | bash
What this does. curl downloads the
installer script from Anthropic. The | pipe hands that
script straight to bash, which runs it without ever saving
it to disk. The script puts the claude binary in
~/.local/bin and adds that folder to your PATH, the list of
places your shell looks when you type a command.
Close and reopen the terminal, then:
claude
It opens a browser to authenticate. Sign in with your personal Claude account. Pro and Max both work; Max is worth it once you’re using this daily.
In your terminal:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
What this does. Same shape as the Claude installer.
curl downloads the script from OpenAI, the |
pipe hands it to sh, which runs it without ever saving it
to disk, and the script puts the codex binary on your PATH,
the list of places your shell looks when you type a command.
Close and reopen the terminal, then:
codex
It prompts you to sign in with ChatGPT the first time.
Worth knowing. Both installers pipe a script straight from the internet into a shell, which runs whatever that URL serves at the moment you run it. Do it only for vendors you trust. Anthropic and OpenAI qualify; the install one-liner in a random blog post does not.
Whichever you installed, the reopened terminal is the part that matters. Your open terminal read its PATH when it started, so it will not find the new command until you close it and open a fresh one.
Quick smoke test inside the session:
What files are in my home directory? Just a quick summary.
That one is a prompt, not a shell command. You’re checking that your assistant can actually see your filesystem, which is the whole reason this curriculum uses a CLI.
/exit when done.
Already done? Run ls ~/ai-training. If
it exists, skip to Step 3.
Make a single home for this work now, before you hand your assistant this guide. Doing this up front means every future session opens in the right folder, and the instructions file you’ll write later gets picked up automatically.
mkdir -p ~/ai-training
cd ~/ai-training
What this does. mkdir -p creates the
folder and doesn’t complain if it already exists. cd moves
your shell into it, so everything you run next happens there.
The directory name is up to you — ai-training matches
the rest of this curriculum, but if you prefer something else
(briefings, workbench, anything), use it.
Whatever you pick, be consistent: cd into it before every
session.
Optional alias. If you’d rather skip the
cd step every time, add a one-word shortcut to your shell.
Name it whatever you want — goclaude,
briefings, work, anything you’ll remember:
echo "alias goclaude='cd ~/ai-training && claude'" >> ~/.zshrc
source ~/.zshrc
What this does. ~/.zshrc is your
shell’s startup file. It runs every time you open a new terminal, which
is why it’s the right place for aliases and PATH changes.
echo "..." >> ~/.zshrc appends that one line to the
end of the file without touching what’s already there.
source ~/.zshrc re-reads the file into your current
terminal, so the alias works now instead of waiting for the next
window.
Now goclaude from any new terminal jumps you into the
working directory and starts Claude in one step.
The rest of this session runs through Claude. From inside
~/ai-training, start claude and follow “How to
run this session” at the top of this guide if you haven’t already.
Claude takes over from here.
Claude: the sections below are for you. Walk the user through them in order. The user is a curious professional setting up Claude Code for their own work — could be a researcher, lawyer, manager, founder, analyst, anyone whose job involves synthesizing sources and producing written deliverables. Write peer-to-peer, terse, no over-explanation. They have not lived in a terminal day-to-day, so concepts that touch shell, file paths, or version control may be new; the workflow framing is not.
Hard rule throughout this entire 10-week curriculum: every example uses public sources, synthetic / hypothetical scenarios, or the user’s own personal material. Never ask the user to paste internal work-product. If the user volunteers something internal, redirect: “let’s abstract that one level — what’s a public-data analogue we can work with?” Reinforce whenever relevant.
Interaction rules: - Don’t over-explain the user’s domain. They know their work. You’re teaching the workflow. - The user is likely on Terminal.app and has not customized their shell. Walk them through any terminal upgrade. - If something fails, debug with the user directly — don’t hand off to a documentation page.
The structure below: confirm posture → upgrade terminal → produce the two practice-task outputs → write CLAUDE.md → conversation → wrap-up. The two outputs are the spine of the session — everything else supports landing them.
Before any setup work, confirm out loud that the user has read
POLICY-personal-laptop.md and understands the
public/synthetic/personal-only rule. If they haven’t, pause and read it
together now (one page, at ../POLICY-personal-laptop.md
relative to this guide). Don’t skip past it.
Then ask one question to make sure it landed: “Quick check — if a colleague forwards you a confidential work document this afternoon and you want me to summarize it, what’s the right move?” Correct answer: don’t paste it on this machine. Use the right channel for that material. The wrong answer doesn’t disqualify the user — but it tells you to spend an extra minute on the rule before moving on.
Ask the user what terminal they use.
The terminal you use is your call. The one feature this curriculum
relies on is split panes — starting Session 2.3 the
user runs two claude sessions side-by-side. Any modern
terminal handles that. iTerm2, Ghostty, and stock Terminal.app all work;
Anup uses iTerm2 and recommends it for first-time users because the
splits are dead-simple. Ghostty (newer, GPU-accelerated, ghostty.org) is
a fine alternative for users who already prefer it.
If the user is on Terminal.app and wants to upgrade, walk them through iTerm2:
Already done? Open Spotlight and type iTerm. If it launches, skip the install and go straight to setting it as default.
brew install --cask iterm2
What this does. Homebrew is the package manager for
macOS. It installs command-line tools and casks (full apps like iTerm2)
into a spot the system doesn’t manage, so you’re not fighting macOS
permissions. brew install --cask iterm2 downloads and
installs the iTerm2 app the same way the App Store installed Wispr Flow
in Step 1.
(If Homebrew isn’t installed:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
first.)
Open iTerm2, set as default terminal (iTerm2 menu → Make iTerm2 Default Term). Key shortcuts: Cmd+D vertical split, Cmd+Shift+D horizontal, Cmd+T new tab.
If the user wants to stay on Terminal.app or move to Ghostty, don’t push iTerm2; just confirm their choice supports split panes and move on.
This is the core beat of the session. The point is to give the user a tangible “the loop works” moment by leaving real files on disk. Built-in tools only — no MCP servers (those come in 2.5).
Output 1 — Wikipedia summary. Pick a topic the user
actually cares about (a public-policy issue they follow, a sport, a
research area, an industry). Don’t pick a generic example; ask them.
Then, from ~/ai-training:
Inside claude:
Use WebFetch to pull the Wikipedia article on <topic the user picked>. Write
a one-paragraph summary plus three open questions a careful reader would
still have, and save the result to wikipedia-summary.md in this directory.
WebFetch goes out to the live web, returns the article body,
Claude summarizes, and the Write tool drops the file into
~/ai-training/.
Codex’s built-in search returns snippets rather than whole pages, so fetch the page to disk first and have Codex read it from there. In your terminal:
curl -L -o article.html "<the Wikipedia URL for the topic the user picked>"
What this does. Same curl from Step 2,
in a different role. -L follows redirects, which Wikipedia
uses. -o article.html writes the page to that file instead
of printing it to the screen.
Then, inside codex:
Read article.html. Write a one-paragraph summary plus three open questions a
careful reader would still have, and save the result to wikipedia-summary.md
in this directory.
This is the better version of the beat, so don’t apologize for it. The user watches a file arrive from the internet, then watches their assistant read that file and write another one. The loop is visible in two discrete moves instead of one opaque one.
Either way: after it lands, cat wikipedia-summary.md
so the user sees the file is real and on disk. That’s the
moment.
Output 2 — recent event. This one works the same on both tools. Inside your assistant:
Find one significant public event from the last 30 days in <topic area or
related space>. Save to recent-event.md: the date, the one-line headline,
the source URL, and a single sentence on why it matters.
If the user is on Codex and the result looks stale, its search
defaults to a cached snapshot. --search on the command
line, or web_search = "live" in
~/.codex/config.toml, switches it to live results.
Same beat: file lands on disk, user reads it. They now have two real files produced by their assistant pulling real data.
Tell the user: “Half the workflows in this curriculum are some shape of that loop — your assistant pulls real data, writes it down, you read it back. Nothing on your machine that wasn’t already public; everything from public sources.”
Optional, defer if the user wants: MCP servers (third-party tool plugins that extend an assistant beyond search, file, and shell access) come in Session 2.5. For now the built-ins are enough for several real workflows.
The working directory was already created in Step 2.5. Now write
the instructions file inside it — the file the assistant reads
automatically every time the user starts a session in this folder.
Claude Code reads CLAUDE.md; Codex reads
AGENTS.md. Same job, same content, different
filename.
Already done? Run
ls ~/ai-training/CLAUDE.md ~/ai-training/AGENTS.md. If
either exists, read it back to the user and ask if they want to revise
it instead of starting over.
Write the file for the user, then have them review and adjust. Use the filename matching their tool.
# Working Directory
## Tooling
- CLI: [Claude Code | Codex], installed Session 2.1.
- Use the matching path in every session guide from here on.
## Posture
- Personal laptop. Public, synthetic, or personal data ONLY.
- Never paste internal work-product, real client/colleague names, or
confidential material into this directory.
- See POLICY-personal-laptop.md.
## Background
- Role: [the user fills in: actual job title / domain].
- Comfortable with: [the user fills in].
- New to: terminal-driven workflows, this CLI, MCP servers.
## Goals for this curriculum
- Build a recurring custom briefing tool by Week 10 — topic of the user's choice.
- Synthesize a long source document into a one-page brief in a single session.
- Automate a weekly scan that lands a fresh briefing in the user's inbox or a
Drive folder.
## Tools available on this machine
- CLI built-ins: web search, file and shell access
- pandoc, markitdown, marker-pdf (document round-trip — installed Session 2.3)
- Standard Python, Git
- MCP servers: added incrementally starting Session 2.5
## Working style
- Peer-level technical explanation. No over-scaffolding.
- Surface the why, not just the how.
- When I propose something internal-sounding, redirect to a public/synthetic analogue.
The ## Tooling line matters more than it looks.
Every later session’s guide has a Claude path and a Codex path; the
assistant reads this file at session start, so it already knows which
one to hand the user instead of asking again every week.
Tell the user: every time they open a session in
~/ai-training, the assistant reads this file first. It’s
how it remembers who they are and what the rules are.
One difference worth flagging if the user is on Codex: Codex
also reads a global ~/.codex/AGENTS.md and concatenates it
with every AGENTS.md between the git root and the current
directory, closest one winning. Claude Code reads the one in the
directory the session started from. Same idea, wider net.
Run this as a real conversation, not a form. The point is to learn enough about the user to tailor Sessions 2.2 through 2.10. Keep it under 10 minutes.
Ask:
Based on their answers, build a 3-bullet “Suggested Session 2.2 Focus” — note it for the wrap-up. The curriculum is the same shape for everyone, but the public examples should hit closest to what the user will actually want to do.
Mention these explicitly so the user has names for what they just did. They’ll come back in later sessions:
claude is on the
machine.claude mcp list at session start. Once
MCPs are in play (2.5+), this is the sanity check that takes 1 second
and saves 30 minutes of debugging.Three concrete things for the user to try this week. Tailor to their answers above. Defaults if needed:
Feedback.
The user submits feedback at https://docs.google.com/forms/d/e/1FAIpQLSfQAOdEBjUnfkTGjbQ4uf-6vyKd74_gUyLQ6R5F2t4qYKKKDA/viewform.
Claude: paste the URL into chat. The form mirrors the questions below. Collect answers conversationally first, then have the user click through and submit.
Tell the user: “Your instructor uses these to tailor next week’s session.”
Downloading this guide. If you’re viewing this guide
as a hosted HTML page and want a local copy: open Terminal and run
curl -L -o guide.html "URL" (replacing URL with the page
address). That saves it to your current directory.
Personal Claude account. This curriculum runs entirely on your personal Claude subscription. No employer auth, no commercial agreement.
Pro vs Max. Pro ($20/mo) is fine for the early sessions. By Session 2.6 (corpus pipelines with parallel sub-agents), Max ($100/mo) starts to pay for itself — agent fan-outs eat tokens.
/fast. Type /fast in any
session for faster Opus 4.6 output when full 4.7 is overkill.
When Claude is wrong about a fact. Claude trained on a snapshot. Live web tools (WebSearch, WebFetch) are real-time. When they disagree, trust the live tools.
When in doubt about content posture, ask before pasting. A 30-second sanity check costs nothing. A piece of work-internal material landing on a personal machine — even briefly — costs a lot.