Skip to main content

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. /status answers even while Claude is working.
  • /doctor: full diagnostic, with proposed fixes. It flags duplicate installs, PATH issues, unreadable settings files, unused skills, dormant MCP servers eating context, and offers to slim down a bloated CLAUDE.md by migrating content to skills and nested CLAUDE.md files (v2.1.206+). From the terminal, claude doctor prints the same information read-only.
  • /init: generates a starter CLAUDE.md by exploring the repo. With CLAUDE_CODE_NEW_INIT=1, /init switches to an interactive multi-phase flow that also proposes skills and hooks.
  • /model: switch model. Without an argument, it opens a picker; s on 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=value writes a key directly, for instance /config theme=dark or /config model=sonnet.
  • /theme: picks a theme, including auto which follows the terminal background, colorblind variants, or a custom theme from ~/.claude/themes/.
  • /terminal-setup: installs the right key combination for newline (Shift+Enter in VS Code, Cursor, Alacritty, Zed; Option+Enter on 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:

  • sonnet for daily use.
  • opus for complex reasoning.
  • fable for very long tasks that span multiple sittings; as of September 2026, fable points to Fable 5.1 by default.
  • haiku for 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] and opus[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.

Choose without agonizing

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 modelPricing has 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

  • Tab in the input: accepts the autocomplete suggestion, notably after /, @file or :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, then bypassPermissions and auto when 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.
  • \ then Enter: portable newline. Ctrl+J does the same without configuration. Shift+Enter works natively in iTerm2, WezTerm, Kitty, Ghostty, Warp, Apple Terminal and Windows Terminal; elsewhere, /terminal-setup handles 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.

Do not overestimate /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 status answers in JSON.
  • Five startup commands: /help, /status, /doctor, /init, /usage; also keep /model, /effort and /config in mind.
  • Five shortcuts to know: Tab, Esc, Esc Esc, Shift+Tab, Ctrl+O.
  • The CLAUDE.md from /init is 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.