Module 1 — Install Claude Code and nail your first session
The course starts where many teams stop: the first session. Installing cleanly, authenticating cleanly, and knowing the six commands that make a session readable prevents three quarters of the errors you would otherwise see later. This module also opens the running example: the Kiosque repo, an order-taking app for food trucks that we will tool up module after module.
Claude Code is not an autocompleter
Claude Code is a coding agent that lives in your terminal: it reads your repo, edits files, runs commands, calls Git, and corrects itself from the output it observes. It runs around an agentic loop — gather context, act, verify — that module 2 unpacks. Unlike inline completions, Claude sees your entire project, reads several files in the same turn, runs your tests, and proposes a coherent fix across the whole codebase.
The same library runs on multiple surfaces: the CLI, a VS Code extension (and Cursor), a JetBrains plugin, a Desktop app for macOS and Windows, Claude Code on the web at claude.ai/code, a Chrome integration to drive a browser, and Remote Control to resume a local session from a phone. Every surface plugs into the same engine: your CLAUDE.md, your settings and your MCP servers behave the same way everywhere.
Install
On macOS, Linux and WSL, the native install is a one-liner:
curl -fsSL https://claude.ai/install.sh | bash
On Windows, two paths:
# PowerShell
irm https://claude.ai/install.ps1 | iex
:: cmd.exe
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
The native install updates itself in the background. On macOS and Linux, brew install --cask claude-code provides a stable channel and claude-code@latest a fast channel; neither self-updates, you have to run brew upgrade. On Windows, winget install Anthropic.ClaudeCode does the equivalent. On Debian, Fedora, RHEL and Alpine, apt, dnf and apk are supported.
Verify with claude --version: the command prints a version number followed by (Claude Code). On native Windows, installing Git for Windows is recommended, otherwise Claude Code uses PowerShell as its shell, which limits script portability. Under WSL, no extra Windows package is required.
Authentication and provider choice
On the first session, claude opens the browser to sign you in. Three main options coexist:
- Claude subscription (Pro, Max, Team, Enterprise): the primary account for individual developers and teams. Cost tracking lives in the claude.ai account.
- Claude Console: usage-based billing with prepaid credits; on first sign-in, a "Claude Code" workspace is created to centralize costs.
- Enterprise cloud providers: Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or a self-hosted Claude apps gateway to wire in your corporate SSO.
If ANTHROPIC_API_KEY is already set, Claude Code skips the sign-in screen and simply asks you to approve the key. To switch accounts later, type /login then /logout in a session. claude auth status prints the authentication state as JSON and exits with 0 when signed in, 1 otherwise — handy in a script.
The first claude inside a repo
Move into the project folder and run the command with no argument:
cd ~/code/kiosque
claude
The first time a folder hosts Claude Code, a trust dialog asks you to authorize execution. This is not a formality: project hooks and settings only fire after that consent. Once approved, the prompt shows the version, the current model and the working directory. Type /help to see the filtered list of available commands.
The commands of the first minutes
These ten commands are enough to understand what happens in a new session; every one of them exists in the built-in corpus and is documented in detail in module 4.
/help: lists the commands and skills available to your account. The menu filters as you type and highlights the best match since Claude Code v2.1.236./status: opens the Status tab of Settings; it shows the version, the active model, the account and the connectivity state./statusanswers even while Claude is working./doctor: full diagnostic, with proposed fixes. It flags duplicate installs,PATHissues, unreadable settings files, unused skills, dormant MCP servers eating context, and offers to slim down a bloatedCLAUDE.mdby migrating content to skills and nestedCLAUDE.mdfiles (v2.1.206+). From the terminal,claude doctorprints the same information read-only./init: generates a starterCLAUDE.mdby exploring the repo. WithCLAUDE_CODE_NEW_INIT=1,/initswitches to an interactive multi-phase flow that also proposes skills and hooks./model: switch model. Without an argument, it opens a picker;son a line applies the choice to the current session only./effort: sets the reasoning effort level (low,medium,high,xhigh,max,ultracode,auto,status)./config: opens the Settings UI. Since v2.1.181,/config key=valuewrites a key directly, for instance/config theme=darkor/config model=sonnet./theme: picks a theme, includingautowhich follows the terminal background, colorblind variants, or a custom theme from~/.claude/themes/./terminal-setup: installs the right key combination for newline (Shift+Enterin VS Code, Cursor, Alacritty, Zed;Option+Enteron Apple Terminal)./release-notes: opens a version picker to read the changelog in the transcript, without polluting the conversation.
/powerup rounds out the picture: interactive lessons with animated demos to discover one feature per day, without entering the conversation.
Available models and effort levels
The /model picker accepts stable aliases rather than shifting version names:
sonnetfor daily use.opusfor complex reasoning.fablefor very long tasks that span multiple sittings; as of September 2026,fablepoints to Fable 5.1 by default.haikufor speed on simple tasks.opusplan: a special mode that uses Opus during plan mode then switches to Sonnet for execution.best: the best available on your account (Fable if accessible, otherwise Opus).sonnet[1m]andopus[1m]: the same models with a one-million-token context window, useful on large repos.
The effort levels available depend on the model. On Opus 5, Sonnet 5, Opus 4.8, Opus 4.7, Fable 5.1 and Fable 5, the five levels low, medium, high, xhigh and max are accepted. On Opus 4.6 and Sonnet 4.6, xhigh does not exist — Claude Code falls back to high. ultracode is not a model effort level but a Claude Code setting that sends xhigh and asks Claude to orchestrate a dynamic workflow for substantial tasks.
Start every session in sonnet with high effort. Switch to opus only for a complex plan, to fable for a task that runs longer than two hours. Changing models mid-session invalidates the cache: module 2 explains why.
What a session costs: /usage
/usage (aliases /cost and /stats) opens the cost screen. The Session block shows:
- total cost in dollars, computed locally at the public rate unless a negotiated
modelPricinghas been pushed by your organization; - cumulative API call time and wall-clock time;
- lines added and removed;
- usage per model: input tokens, output tokens, cache read, cache write.
On a Pro, Max, Team or Enterprise subscription, /usage adds a plan breakdown: share of skills, subagents, plugins and MCP servers over 24 hours or 7 days (toggle d / w). Module 15 comes back to it; for now, remember that these totals reset at /clear.
Keyboard shortcuts you use in every session
Tabin the input: accepts the autocomplete suggestion, notably after/,@fileor:emoji:.Esc: interrupts Claude mid-turn. Queued messages then fire; work already done is kept.Esc Esc: on an empty input, opens the rewind menu to restore code and conversation to a checkpoint. On a non-empty input, it clears the draft while saving it to history.Shift+Tab: cycles permission modes (default,acceptEdits,plan, thenbypassPermissionsandautowhen available).Ctrl+C: interrupts an operation. On empty input, a second press quits Claude Code.Ctrl+O: switches to the transcript viewer to see tool calls, timestamps and the model used on each response in detail.Ctrl+R: reverse search in the command history.\thenEnter: portable newline.Ctrl+Jdoes the same without configuration.Shift+Enterworks natively in iTerm2, WezTerm, Kitty, Ghostty, Warp, Apple Terminal and Windows Terminal; elsewhere,/terminal-setuphandles it.
The file ~/.claude/keybindings.json (opened by /keybindings) lets you rebind most of these actions.
Running example: the first Kiosque session
Kiosque is a small order-taking app for food trucks: a FastAPI API in app/ (commandes.py, menu.py, paiements.py, notifications.py), pytest tests at 41% coverage with one flaky test (test_paiements_delai), a small React front-end in web/, tooling with ruff, mypy and a Makefile. The team is Nadia (lead), Karim (backend) and Lea (front-end); you are tooling this whole crew with Claude Code.
First session, in order:
git clone git@github.com:kiosque/kiosque.git
cd kiosque
claude
Once the folder is trusted and /help has been consulted, ask Claude to describe what it sees:
Explore the repo and give me, in 15 lines: the folder structure,
how to run the tests, what each module of app/ does, and the three
places where the code looks most fragile to you.
Claude calls Read, Grep and Glob, opens Makefile, pyproject.toml, a few files in app/, and answers. Next:
/init
Claude analyzes the repo and proposes a CLAUDE.md. It picks up the Makefile, proposes "Run make test before committing" and guesses a handful of conventions. Let it write, then read the generated file: it is correct but a bit chatty, it duplicates what the code already says (folder tree, dependencies) and misses what it could not guess (mixed FR/EN naming, .env still at the root, the flaky test_paiements_delai). Module 3 will rewrite this CLAUDE.md properly.
Finally, look at the cost:
/usage
The Session block shows a few hundred thousand tokens read (most cached after the first turn) and a cost of a few cents. That is the normal rhythm of an exploration.
/init/init produces a good draft, never a production CLAUDE.md. Treat it as the output of an eager intern: essential to bootstrap, always reworked before you push it to the team. Module 3 shows how.
Common mistake: forgetting /terminal-setup
On many terminals, attempting a newline with Enter sends the message instead. You then type your prompts as one endless line and end up believing Claude Code is poorly designed. Run /terminal-setup once per machine; on iTerm2 it also enables the clipboard access that /copy needs.
Summary
- Claude Code is a terminal-based agent, not an autocompleter: it sees the whole project, runs commands, and corrects itself.
- Install: native script (macOS/Linux/WSL/Windows), Homebrew, WinGet or Linux packages; the native install is the only one that self-updates.
- Authenticate: Claude subscription, Console API, or an enterprise cloud provider;
claude auth statusanswers in JSON. - Five startup commands:
/help,/status,/doctor,/init,/usage; also keep/model,/effortand/configin mind. - Five shortcuts to know:
Tab,Esc,Esc Esc,Shift+Tab,Ctrl+O. - The
CLAUDE.mdfrom/initis a draft: module 3 rewrites it for Kiosque.
Next module: The agentic loop, built-in tools and the context window — understand what fills the context so you stop paying twice for the same prompt.