Kurs vibe coding z AI · Moduł 15: Claude Code CLI

Poznaj Claude Code - Twój AI w terminalu

14 min czytania
W tej lekcji10

Witaj na pokładzie ostatniego modułu! Kapitan Redbeard zostawił na sam koniec najpotężniejszy kompas całej floty: Claude Code - oficjalne narzędzie CLI od Anthropic, które zamienia zwykły terminal w agentowego członka załogi.

Czym jest Claude Code?

Claude Code to agentowe narzędzie wiersza poleceń (CLI - Command Line Interface) od Anthropic. To nie jest kolejne okienko czatu - Claude Code samodzielnie czyta i edytuje pliki w Twoim projekcie, uruchamia komendy w terminalu i prowadzi złożone zadania na wielu plikach naraz.

Warto powiedzieć to wprost, bo poradniki potrafią tu namieszać: Claude Code nie jest wtyczką do przeglądarki Chrome, nie jest biblioteką frontendową do budowy interfejsów i tym bardziej nie jest systemem operacyjnym dla serwerów. To program, który uruchamiasz z wiersza poleceń i który pracuje na Twoim prawdziwym kodzie.

Różnica jest taka jak między mapą skarbów a żywym nawigatorem, który sam staje za sterem i prowadzi statek tam, gdzie trzeba.

Claude Code vs Cursor

Obie załogi pływają po tym samym morzu AI, ale każda steruje inaczej:

Cursor:

  • Edytor kodu oparty na AI (AI-powered editor), zbudowany jako fork VS Code
  • Graficzny interfejs (GUI)
  • Inline edits, autouzupełnianie klawiszem Tab, tryb Agent/Composer, wzmianki przez @
  • Świetny do pisania kodu "na żywo", prosto w edytorze

Claude Code:

  • Agentowe narzędzie wiersza poleceń (CLI) i SDK
  • Działa w terminalu
  • Świetny do autonomicznych zmian na wielu plikach, automatyzacji, CI/CD i łączenia z innymi komendami shella
  • Współpracuje z dowolnym edytorem (plus rozszerzenia do VS Code i JetBrains)

Całą różnicę da się zamknąć w jednym zdaniu: Claude Code to narzędzie CLI działające w terminalu, a Cursor to edytor kodu oparty na AI z graficznym interfejsem (GUI). To nie są dwie nazwy tego samego narzędzia i Claude Code wcale nie zastępuje Cursora. Te dwa narzędzia się uzupełniają - możesz używać OBU naraz!

Instalacja Claude Code

Wymagania

  • System: macOS 13+, Windows 10 (1809+), Ubuntu 20.04+, Debian 10+ albo Alpine 3.19+, co najmniej 4 GB RAM
  • Konto: subskrypcja Claude (Pro, Max, Team albo Enterprise) albo konto Anthropic Console z kredytami API
  • Node.js potrzebujesz tylko przy instalacji przez npm: wtedy w wersji 22 lub nowszej (wersję sprawdzisz komendą node --version)

Instalacja (zalecana: instalator natywny)

Anthropic zaleca instalator natywny: jedna komenda pobiera gotowy program, który potem sam się aktualizuje. Wybierz linię dla swojego systemu:

1# macOS, Linux, WSL
2curl -fsSL https://claude.ai/install.sh | bash
3
4# Windows PowerShell
5irm https://claude.ai/install.ps1 | iex

Po instalacji otwórz nowe okno terminala i wpisz claude --version. Jeśli terminal nie zna komendy claude, katalog instalacji nie trafił jeszcze do zmiennej PATH - dokumentacja Claude Code ma na to osobną stronę o problemach z instalacją. Na Macu możesz też użyć Homebrew (brew install --cask claude-code), a na Windowsie WinGet (winget install Anthropic.ClaudeCode).

Instalacja przez npm

Claude Code jest też paczką npm. Nazwę paczki czytaj uważnie: siedzi w przestrzeni nazw Anthropic i brzmi @anthropic-ai/claude-code, nigdy samo claude ani claude-code. Instaluje ją npm, i to pod pełną nazwą, więc ani npm install claude, ani yarn add claude-code, ani pip install claude (pip pływa po zupełnie innym oceanie) nie przyniosą Ci niczego na pokład. Kolejność członów też ma znaczenie: najpierw npm, potem install, potem -g, a na samym końcu @anthropic-ai/claude-code:

1# Instalacja przez npm (wymaga Node.js 22 lub nowszego)
2npm install -g @anthropic-ai/claude-code
3
4# Następnie uruchom Claude Code w katalogu swojego projektu
5claude

Flaga -g to właśnie ta, która czyni instalację globalną: komenda claude staje się dostępna w każdym katalogu, nie tylko w tym jednym. Nie dopisuj sudo przed npm install - to prosta droga do kłopotów z uprawnieniami. Możesz też uruchomić Claude Code bez instalowania czegokolwiek na stałe - przez npx. Tutaj kolejność jest jeszcze prostsza: najpierw npx, a zaraz po nim pełna nazwa paczki:

1npx @anthropic-ai/claude-code

npx pobiera paczkę na żądanie, na czas jednego rejsu (też potrzebuje Node.js 22 lub nowszego). To wygodne, kiedy testujesz narzędzie na pożyczonej maszynie, ale do codziennej pracy wybierz instalator natywny albo instalację globalną. Kiedy wszystko wejdzie na pokład, claude --version potwierdzi, że narzędzie jest gotowe do wypłynięcia.

Logowanie

Przy pierwszym uruchomieniu Claude Code poprosi Cię o zalogowanie. Wszystkie komendy w sesji budujesz tak samo: wpisujesz ukośnik /, a zaraz po nim nazwę - / plus help daje pomoc, / plus login otwiera logowanie:

1/login

W przeglądarce otworzy się logowanie przez OAuth: uwierzytelniasz się subskrypcją Claude Pro/Max albo kontem Anthropic Console zasilonym kredytami API. I na tym koniec - /login nie tworzy żadnego konta GitHub, nie wylogowuje Cię z systemu operacyjnego i nie instaluje brakujących zależności npm. Loguje Cię do Claude, nic ponadto. Jeśli wolisz uwierzytelniać się kluczem API z Anthropic Console, ustaw go w zmiennej środowiskowej ANTHROPIC_API_KEY. Claude Code nie czyta kluczy z pliku .env w projekcie - taki plik lepiej wręcz chronić przed Claude, który potrafi czytać pliki projektu. Zmienną ustawisz tak:

1# macOS/Linux - dopisz tę linię do ~/.zshrc albo ~/.bashrc
2export ANTHROPIC_API_KEY="sk-ant-..."
3
4# Windows PowerShell - zapisz zmienną na stałe dla swojego konta
5[Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-ant-...", "User")

Klucza nie wkleja się do package.json ani do commitowanego config.json - takie pliki płyną prosto do repozytorium, a wyciekły klucz to wyciekła skrzynia skarbów. Nie łudź się też, że dostęp obejdzie się zupełnie bez poświadczeń: albo logujesz się subskrypcją przez /login, albo podajesz klucz w zmiennej środowiskowej. Po zapisaniu zmiennej otwórz nowy terminal - od tej pory klucz wczyta się sam przy każdej sesji, a przy pierwszym uruchomieniu Claude Code zapyta, czy ma go używać.

Pierwszy rejs

Instalacja gotowa, papiery podpisane - czas wezwać pierwszego oficera naprawdę. Masz dwie drogi: otworzyć pustą sesję i dopiero potem zacząć rozmowę albo od razu wypłynąć z pierwszym poleceniem na pokładzie:

1# Uruchom interaktywną sesję (REPL) w terminalu
2claude
3
4# Albo od razu z pierwszym poleceniem
5claude "Wyjaśnij, czym jest TypeScript"

Obie linie startują Claude Code w bieżącym katalogu, a ten katalog staje się projektem, który Claude widzi i po którym się porusza. Druga forma oszczędza Ci jeden krok, bo pierwsze pytanie przekazujesz od razu, bez czekania na znak zachęty. Te dwie linijki to esencja całego narzędzia - wszystko, czego nauczysz się dalej, dobudowuje się wokół nich.

Modele Claude

Claude Code działa na rodzinie modeli Claude, a każdy z nich nadaje się na inny rejs. Najwygodniej wybierać je po krótkich nazwach (aliasach), które zawsze wskazują aktualną wersję:

  • fable - najmocniejszy, do największych i najdłuższych zadań (dziś Claude Fable 5.1; na części planów zużywa dodatkowe kredyty)
  • opus - bardzo mocny model do złożonej pracy, domyślny na planach Pro, Max, Team i Enterprise (dziś Claude Opus 5.5)
  • sonnet - zbalansowany model do codziennego kodowania (dziś Claude Sonnet 5.5)
  • haiku - najszybszy, do prostych zapytań (dziś Claude Haiku 4.5)

Model zmieniasz najczęściej na dwa sposoby: komendą /model w sesji albo flagą --model przy starcie. Na stałe ustawisz go też polem model w pliku ustawień albo zmienną środowiskową ANTHROPIC_MODEL. Nie ma natomiast żadnej komendy /temperature ani suwaka temperatury i nie ma najmniejszego sensu grzebać w node_modules. Przy starcie kolejność członów wygląda tak: claude, potem --model, potem krótka nazwa modelu:

1# Uruchom Claude z modelem Sonnet
2claude --model sonnet

Krótka nazwa w zupełności wystarczy - sonnet, opus, haiku albo fable. Wybór nie jest wyryty w kamieniu: w trakcie pracy przestawiasz go komendą /model, więc typowy rejs wygląda tak, że proste pytania odbijasz Haiku, codzienną pracę oddajesz Sonnetowi albo Opusowi, a po Fable sięgasz przy największych wyzwaniach. Drugim pokrętłem jest poziom wysiłku (effort): flaga --effort albo komenda /effort z wartością low, medium, high, xhigh lub max decyduje, jak długo model myśli nad każdym krokiem (na modelach, które to obsługują).

Tryby uruchamiania

Claude Code ma dwa główne tryby: tryb interaktywny, czyli claude (także z pierwszym poleceniem: claude "pytanie"), oraz tryb nieinteraktywny, jednorazowy, czyli claude -p "pytanie", który odpowiada raz i kończy działanie. Trybu "GUI" w CLI nie znajdziesz: graficzne wersje Claude Code (aplikacja desktopowa i rozszerzenia do edytorów, o których powiem na końcu modułu) to osobne aplikacje i wtyczki, a nie tryb uruchamiania.

Tryb interaktywny (REPL)

To tryb domyślny: prawdziwa rozmowa w terminalu, w której Claude pamięta wszystko, co dotąd padło.

1# Rozpocznij sesję w terminalu
2claude
3
4# Z początkowym poleceniem
5claude "Pomóż mi zbudować formularz logowania"

W takiej sesji Claude trzyma kontekst całej rozmowy, więc doprecyzowujesz polecenie krok po kroku - "teraz dodaj walidację", "teraz napisz testy" - i nie musisz za każdym razem tłumaczyć wszystkiego od nowa. To jak praca z członkiem załogi, który zna już plan statku, a nie z przypadkowym gościem z portu. Dopóki sesja jest otwarta, budujesz na tym, co zostało powiedziane wcześniej.

Tryb nieinteraktywny (-p / --print)

Flaga -p (albo jej pełna nazwa --print) sprawia, że Claude wypisuje odpowiedź i kończy działanie - idealne do skryptów i pipe'ów. Litera "p" pochodzi od wypisywania na terminal, a nie od fizycznej drukarki, i po drodze nic nie znika: ta flaga nie włącza żadnego trybu graficznego i na pewno nie usuwa trwale historii rozmów. Najczęściej zapisuje się to w tej kolejności: claude, potem -p, a na końcu polecenie w cudzysłowie:

1# Zadaj pytanie, dostań odpowiedź, koniec
2claude -p "Wyjaśnij, czym są React hooks"
3
4# To samo, pełna nazwa flagi
5claude --print "Podsumuj zasady działania useEffect"

Skoro proces kończy się z chwilą wypisania odpowiedzi, takie polecenia wkładasz do skryptu shellowego, do Makefile'a albo do pipeline'u CI i traktujesz Claude'a jak każde inne narzędzie wiersza poleceń. To właśnie ta flaga zamienia rozmowę w automat: bez niej Claude czekałby na kolejne pytanie, a skrypt stałby w miejscu, wpatrzony w migający kursor.

Kontynuowanie rozmów

Zamknięta sesja nie przepada - Claude Code zapisuje historię automatycznie, osobno dla każdego katalogu. Nie musisz o nic dbać ręcznie: nie ma flagi --save, którą trzeba by cokolwiek zapisywać, ani --restore-all, którą coś by się odzyskiwało. Te flagi po prostu nie istnieją. Do rozmowy wracasz dwiema krótkimi flagami:

1# Kontynuuj ostatnią rozmowę w tym katalogu
2claude -c
3
4# Wybierz wcześniejszą rozmowę do wznowienia
5claude -r

Ostatnią rozmowę w bieżącym katalogu wznawiasz komendą claude -c - sięgasz po nią, gdy zamknąłeś terminal w połowie zadania i chcesz podjąć wątek dokładnie tam, gdzie go zostawiłeś. Flaga -r działa inaczej: pokazuje listę wcześniejszych sesji, z której wybierasz tę właściwą. Jedna wraca do najświeższej rozmowy bez pytania, druga daje Ci wybór spośród wszystkich.

Praca z plikami - referencja przez @

Jest prawda, którą warto wytatuować sobie na przedramieniu: w Claude Code nie ma osobnej flagi do dołączania plików. Plik wskazujesz w treści samego polecenia - wpisujesz @ przed ścieżką, na przykład @src/auth.ts - a Claude odczyta go sam. Flaga, która dołączałaby plik do polecenia, nie istnieje (claude --file src/auth.ts nie zadziała), zawartości pliku nie wkleja się do package.json, i nie jest prawdą, że Claude nie potrafi czytać Twoich plików. Potrafi, i to jest jego największa siła. Kolejność członów: claude, -p, a potem polecenie, w którym siedzi referencja:

1# Claude odczyta plik src/auth.ts i zrobi jego recenzję
2claude -p "Zrecenzuj @src/auth.ts"
3
4# Możesz wskazać kilka plików naraz
5claude -p "Porównaj @src/old-api.ts i @src/new-api.ts"

Znak @ siedzi po prostu wewnątrz zdania, które piszesz - jest częścią polecenia, a nie osobnym argumentem. Claude potrafi też sam przeszukiwać i czytać pliki w projekcie za pomocą swoich narzędzi, więc rzadko musisz wyliczać wszystko ręcznie: nazwij te pliki, które są kluczowe, a resztę pozwól mu znaleźć. Zasięg ma jednak ograniczony do katalogu, w którym go uruchomiłeś. Żeby dorzucić mu katalog spoza projektu, sięgasz po flagę --add-dir. Uważaj na kolejność: --add-dir przyjmuje kilka ścieżek naraz i wszystko, co stoi po niej, uznaje za kolejne katalogi. Dlatego polecenie w cudzysłowie piszesz przed flagą: claude, polecenie, --add-dir i dopiero na końcu ścieżka katalogu:

1claude "Przejrzyj wspólny kod" --add-dir ../shared-library

Od tej chwili wspólna biblioteka jest częścią mapy: Claude może czytać i edytować także tamtejsze pliki. Dokładnie tego potrzebujesz w monorepo albo wtedy, gdy dwa projekty dzielą jedną paczkę. Bez tej flagi Claude nawet nie wie, że taki katalog istnieje, więc zamiast czytać kod - zgaduje, a zgadywanie kończy się poprawkami, których nikt nie zamawiał.

Przekazywanie danych przez pipe

Skoro Claude Code mieszka w terminalu, łączy się z każdą inną komendą przez potok (|): wyjście jednego programu staje się wejściem Claude'a. Takie polecenie składasz z czterech członów - najpierw cat, potem nazwa pliku, potem pionowa kreska |, a na końcu claude -p z treścią polecenia:

1# Przekaż zawartość pliku do recenzji
2cat code.ts | claude -p "Zrób review tego kodu"
3
4# Przekaż diff Git do podsumowania
5git diff | claude -p "Podsumuj te zmiany"

To właśnie zastępuje fałszywą flagę, która straszy w starych poradnikach: zamiast niedziałającego claude --file X "Y" piszesz cat X | claude -p "Y" albo claude -p "Y @X". Ten sam mechanizm napędza automatyczną recenzję kodu. Mały skrypt code-review.sh, podpięty jako hook pre-commit, wysyła do Claude'a zmiany ze staging area poleceniem git diff --cached | claude -p "...", a Claude zgłasza błędy, problemy z bezpieczeństwem i odstępstwa od dobrych praktyk, zanim commit w ogóle opuści pokład. Za chwilę napiszesz taki skrypt własnoręcznie - to Twój czujny bosman na wachcie.

Pas narzędziowy kapitana - prawdziwe flagi

Garść flag załatwia niemal wszystko, co robisz z wiersza poleceń, i najlepiej nauczyć się ich w komplecie:

1# Wybierz model
2claude --model sonnet
3
4# Dodaj katalog do kontekstu
5claude --add-dir ./packages
6
7# Steruj sposobem przyznawania uprawnień
8claude --permission-mode plan
9
10# Ogranicz narzędzia, których Claude może użyć
11claude --allowedTools "Read,Edit"
12
13# Zmień format wyjścia (świetne do skryptów i CI)
14claude -p "zrecenzuj @src/app.ts" --output-format json

Te są prawdziwe. Uważaj natomiast na krakena zmyślonych flag: poradniki w sieci beztrosko pokazują flagę "temperature", "max-tokens" albo "output" i flagę "file" do dołączania plików - żadna z nich tak nie działa. Jeśli poradnik płynie według takiej mapy, wsadzi Cię na mieliznę. Zapamiętaj prostą zasadę: pliki wskazujesz przez @ albo potokiem, model wybierasz przez --model, wysiłek przez --effort, a temperatury ani limitu tokenów w Claude Code po prostu nie ustawisz.

Slash commands - komendy w sesji

Kiedy jesteś już w sesji interaktywnej (claude), sterujesz slash commands - komendami zaczynającymi się od /. Wpisujesz ukośnik, a zaraz po nim nazwę: / plus help daje /help, czyli listę dostępnych komend i pomoc - bramę do wszystkich pozostałych. Oto te prawdziwe:

  • /help - lista dostępnych komend i pomoc
  • /clear - wyczyść kontekst i zacznij od nowa
  • /compact - streść dotychczasową rozmowę i kontynuuj (oszczędza kontekst)
  • /init - wygeneruj plik CLAUDE.md dla projektu
  • /model - zmień model Claude
  • /config - ustawienia
  • /login - zaloguj się
  • /usage - pokaż koszt sesji i zużycie limitów planu (/cost to jego alias)
  • /context - pokaż, ile kontekstu zajmuje rozmowa
  • /code-review (alias /review) - recenzja zmian na gałęzi albo Pull Requesta o podanym numerze
  • /mcp - zarządzaj serwerami MCP
  • /memory - edytuj plik CLAUDE.md

Twoje własne skille też się tutaj pojawiają, jako /<nazwa-skilla> - skill o nazwie deploy uruchomisz komendą /deploy.

Uwaga: komendy /file i /save nie istnieją w Claude Code. Stare poradniki opisywały workflow w czterech krokach - uruchom claude, dołącz plik przez /file code.ts, poproś o recenzję, a wynik zapisz przez /save review.md - ale obie komendy zostały zmyślone. Dziś pliki wskazujesz przez @, kontekstem zarządzasz przez /clear i /compact, a /context pokaże Ci, ile go zużywasz.

Plik CLAUDE.md - pamięć projektu

CLAUDE.md to plik markdown w katalogu głównym projektu, w którym spisujesz swoje konwencje, architekturę i komendy, których załoga używa na co dzień. Claude Code wczytuje go automatycznie w każdej sesji, dzięki czemu Twój pierwszy oficer zna statek już od pierwszej wiadomości i nie dopytuje w kółko o to samo. Nie musisz nawet pisać go ręcznie:

1# Wygeneruj CLAUDE.md automatycznie
2# (wpisz tę komendę wewnątrz sesji claude)
3/init

Komenda /init przegląda projekt i pisze szkic pliku, który potem poprawiasz i uzupełniasz o zasady znane tylko Tobie. Możesz też trzymać globalny ~/.claude/CLAUDE.md, obowiązujący we wszystkich projektach, oraz zagnieżdżone pliki CLAUDE.md w podkatalogach - dla reguł dotyczących tylko jednej części kodu. To pierwsza rzecz, jaką dokłada się do projektu przed poważną pracą z Claude Code, a osobna lekcja tego modułu pokaże Ci, jak napisać naprawdę dobry CLAUDE.md.

Podsumowanie

Claude Code - agentowe CLI od Anthropic (czyta i edytuje pliki, uruchamia komendy) Instalacja - instalator natywny (curl -fsSL https://claude.ai/install.sh | bash, na Windowsie irm https://claude.ai/install.ps1 | iex) albo npm install -g @anthropic-ai/claude-code, potem claude Logowanie - /login (Claude Pro/Max albo Console) lub zmienna ANTHROPIC_API_KEY Tryby - interaktywny (claude) kontra jednorazowy i nieinteraktywny (claude -p "...") Pliki - wskazuj przez @plik, łącz przez pipe (cat plik | claude -p "...") Slash commands - /help, /clear, /compact, /init, /model, /code-review CLAUDE.md - pamięć projektu generowana komendą /init

Otwórz edytor poniżej i prześledź przykładowe komendy - każda z nich to prawdziwa forma, której właśnie się nauczyłeś. W następnym ćwiczeniu wypłyniesz z praktycznym workflow prawdziwego Claude Code!

Do zobaczenia na pokładzie, marynarzu!

Kod do tej lekcji: example-usage.sh
1#!/bin/bash
2# Przykład: podstawowe użycie Claude Code
3
4# Instalacja (raz) - zalecany instalator natywny (macOS, Linux, WSL)
5curl -fsSL https://claude.ai/install.sh | bash
6# ...albo przez npm (wymaga Node.js 22 lub nowszego)
7npm install -g @anthropic-ai/claude-code
8
9# Tryb interaktywny (sesja w terminalu)
10claude
11
12# Tryb interaktywny z początkowym poleceniem
13claude "Pomóż mi zbudować formularz logowania"
14
15# Tryb nieinteraktywny: wypisz odpowiedź i zakończ (-p / --print)
16claude -p "Wyjaśnij, czym są React hooks"
17
18# Referencja pliku w treści przez @ (Claude sam go odczyta)
19claude -p "Zrecenzuj @src/index.ts pod kątem błędów"
20
21# Kilka plików naraz przez @
22claude -p "Porównaj @src/old-api.ts i @src/new-api.ts"
23
24# Przekazanie danych przez pipe
25cat src/index.ts | claude -p "Zrecenzuj ten kod"
26git diff | claude -p "Podsumuj te zmiany"
27
28# Wybór modelu
29claude --model sonnet "Szybkie pytanie"
30
31# Kontynuacja ostatniej rozmowy
32claude -c

Widzisz błąd w tej lekcji?

Sprawdź się

Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.

  1. 1. Główna różnica Claude Code vs Cursor?

  2. 2. Czym jest Claude Code?

To 2 z 10 pytań do tej lekcji. Pozostałe rozwiążesz w grze.

Zadania praktyczne w grze

  • Klikanie w kolejności

    Kliknij elementy w kolejności, aby zbudować komendę globalnej instalacji Claude Code:

  • Klikanie w kolejności

    Kliknij elementy w kolejności, aby uruchomić Claude Code bez instalacji globalnej:

  • Układanie w poziomie

    Ułóż polecenie, które przekazuje plik do Claude Code do recenzji:

  • Układanie w poziomie

    Ułóż polecenie zadające pytanie w trybie nieinteraktywnym (print):

  • Klikanie w kolejności

    Kliknij elementy w kolejności, aby wpisać komendę listy dostępnych komend i pomocy:

  • Klikanie w kolejności

    Kliknij elementy w kolejności, aby zbudować polecenie recenzji pliku przez referencję @:

  • Edytor kodu

    W pliku commands.sh napisz skrypt code-review.sh: pobierz zmiany ze staging area (git diff --cached), przekaż je potokiem do claude -p i poproś o wskazanie błędów oraz problemów z bezpieczeństwem.

  • Klikanie w kolejności

    Kliknij elementy w kolejności, aby uruchomić Claude z modelem Sonnet:

  • Układanie w poziomie

    Ułóż polecenie dające Claude dostęp do dodatkowego katalogu:

Przydatne artykuły