Przejdź do głównej zawartości

Budowanie pierwszej funkcji z Claude Code

Masz zainstalowany, skonfigurowany Claude Code połączony z twoimi narzędziami. Twój CLAUDE.md opisuje twój projekt. Teraz czas faktycznie coś zbudować. Nie zabawkowy przykład — prawdziwą funkcję, która dotyka wielu plików, potrzebuje testów i musi przejść twój pipeline CI.

Ten poradnik prowadzi przez pełny cykl rozwoju: zrozumienie wymagania, implementację w wielu plikach, uruchamianie testów, debugowanie błędów i przygotowanie czystego PR. Zobaczysz dokładne prompty, które utrzymują Claude skupionego i produktywnego.

  • Powtarzalny workflow dla rozwoju funkcji z Claude Code
  • Prompty produkujące kod jakości produkcyjnej, nie prototypy
  • Strategie utrzymywania Claude na właściwej ścieżce podczas zmian w wielu plikach
  • Wzorce przyrostowej implementacji z weryfikacją na każdym kroku

Każda funkcja podąża za tym samym podstawowym cyklem:

  1. Zrozum — Niech Claude przeanalizuje wymaganie i dotknięty kod
  2. Zaplanuj — Uzyskaj ustrukturyzowany plan implementacji przed jakimikolwiek edycjami
  3. Zaimplementuj — Buduj przyrostowo, jeden komponent na raz
  4. Zweryfikuj — Uruchamiaj testy, sprawdzaj typy i lintuj po każdej zmianie
  5. Przejrzyj — Niech Claude przejrzy swoją własną pracę pod kątem problemów
  6. Commituj — Twórz czyste, opisowe commity

Przejdźmy przez każdy krok z prawdziwym przykładem: dodawaniem endpointu wyszukiwania do REST API.

Zacznij każdą funkcję od dania Claude pełnego kontekstu:

Claude przeczyta twoją bazę kodu, zidentyfikuje odpowiednie wzorce i da ci podsumowanie. Ten krok zapobiega najczęstszemu błędowi: Claude generuje kod, który nie pasuje do twoich istniejących wzorców.

Gdy Claude zrozumie bazę kodu, poproś o plan:

Na podstawie twojej analizy stwórz plan implementacji endpointu
wyszukiwania. Chcę:
1. Ścieżkę routu i metodę HTTP
2. Schemat walidacji danych wejściowych
3. Podejście do zapytania bazodanowego
4. Format odpowiedzi pasujący do istniejących endpointów
5. Obsługę błędów zgodną z obecnymi wzorcami
6. Przypadki testowe, które potrzebujemy
Ponumeruj każdy krok. Nie pisz kodu, dopóki nie zatwierdzę.

Przejrzyj plan. Odrzuć tam, gdzie potrzeba:

Zmień zapytanie bazodanowe na użycie indeksu GIN zamiast LIKE.
Również dodaj paginację do odpowiedzi -- nasze inne endpointy
listy używają paginacji opartej na kursorze, nie offset.

Nie proś Claude o implementację wszystkiego naraz. Buduj jeden element na raz:

Zaimplementuj krok 1 z planu: stwórz schemat walidacji Zod
dla endpointu wyszukiwania w istniejącym pliku validatorów.

Po dokonaniu zmiany przez Claude, zweryfikuj:

Uruchom type checker, aby upewnić się, że nowy schemat jest prawidłowy.

Następnie przejdź do kolejnego kroku:

Teraz zaimplementuj krok 2: funkcję zapytania bazodanowego. Użyj
istniejących wzorców zapytań z modułu users jako odniesienia.

To przyrostowe podejście wychwytuje problemy wcześnie. Jeśli zapytanie bazodanowe Claude ma błąd typu, wychwytasz go przed zbudowaniem handlera routu na jego podstawie.

Uczyń weryfikację nawykiem, nie przemyśleniem:

Okno terminala
# Po każdej zmianie poproś Claude o uruchomienie sprawdzeń
Uruchom npm run type-check i npm run lint. Napraw wszelkie błędy przed kontynuowaniem.
Okno terminala
# Po implementacji logiki uruchom testy
Uruchom testy dla modułu wyszukiwania. Jeśli jakieś się nie powiodą, przeanalizuj
awarię i napraw przed dalszym postępem.
Okno terminala
# Po zakończeniu całej implementacji uruchom pełny zestaw
Uruchom pełny zestaw testów i lintera. Pokaż mi podsumowanie
wszelkich awarii.

Zanim commitniesz, niech Claude przejrzy swoje własne zmiany:

Claude często wychwytuje problemy, które sam wprowadził — brakujące sprawdzenia null, niespójne formaty błędów lub testy, które nie pokrywają przypadków brzegowych. Napraw te przed PR.

Gdy jesteś zadowolony z implementacji:

Commitnij te zmiany z opisowym komunikatem wyjaśniającym, co
zostało dodane i dlaczego. Użyj formatu conventional commit.

Lub użyj dedykowanej komendy commit:

Okno terminala
claude commit

Claude generuje komunikat commit na podstawie faktycznego diff, nie ogólnego opisu.

Długie sesje prowadzą do dryfowania. Jeśli Claude zaczyna tracić kontekst o twoich wzorcach:

Przeczytaj ponownie nasz CLAUDE.md i istniejący moduł wyszukiwania w
@src/modules/search/. Następnie kontynuuj implementację formatera
odpowiedzi używając tych samych wzorców.

Dla funkcji zajmujących więcej niż 30-40 minut, podziel je na wiele sesji:

  • Sesja 1: Schemat i zmiany bazodanowe
  • Sesja 2: Ruta API i logika biznesowa
  • Sesja 3: Testy i integracja
  • Sesja 4: Review, dopracowanie i PR

Użyj claude -c do kontynuowania najnowszej rozmowy lub zacznij na świeżo z claude, jeśli chcesz czysty kontekst.

Jeśli odpowiedzi Claude zaczynają się pogarszać lub wydaje się zapominać wcześniejsze decyzje:

/compact

To podsumowuje rozmowę i zwalnia miejsce kontekstowe. Śledź to krótkim przypomnieniem, nad czym pracujesz.

Zamiast niejasnych żądań, wskaż Claude na dokładne pliki:

# Zamiast tego:
Zaktualizuj moduł wyszukiwania, aby dodać filtrowanie
# Zrób to:
Dodaj parametr filtra kategorii do @src/api/routes/search.ts
według wzorca użytego w @src/api/routes/products.ts

Dla aplikacji webowych Claude może uruchomić twój serwer deweloperski i sprawdzić wyniki:

Uruchom serwer deweloperski, następnie wykonaj żądanie curl do nowego
endpointu wyszukiwania z zapytaniem "typescript". Pokaż mi odpowiedź.

Proszenie o wszystko naraz — “Zbuduj kompletną funkcję wyszukiwania z testami, paginacją, cachowaniem i monitoringiem” wyprodukuje przeciętny kod. Rozłóż to.

Brak weryfikacji między krokami — Jeśli pozwolisz Claude zaimplementować pięć plików przed uruchomieniem type checkera, spędzisz więcej czasu na naprawianiu kaskadowych błędów niż zaoszczędziłeś.

Akceptowanie kodu bez jego zrozumienia — Claude wyjaśni swoje zmiany, jeśli zapytasz. Jeśli nie rozumiesz, dlaczego coś zostało zrobione w określony sposób, zapytaj: “Dlaczego użyłeś kursora zamiast offsetu dla paginacji?”

Ignorowanie CLAUDE.md — Jeśli Claude ciągle generuje kod niezgodny z twoimi wzorcami, twój CLAUDE.md brakuje kluczowych informacji. Zaktualizuj go i powiedz Claude, aby go ponownie przeczytał.

Claude modyfikuje złe pliki — Bądź precyzyjny co do ścieżek plików. Używaj wzmianek @ do odnoszenia się do dokładnych plików zamiast opisywania ich nazwą.

Wygenerowany kod się nie kompiluje — Uruchamiaj type checker po każdej zmianie. Jeśli Claude generuje błędy TypeScript, powiedz mu: “Type checker znalazł błędy. Napraw je przed kontynuowaniem.”

Testy przechodzą, ale funkcja nie działa — Testy mogą nie pokrywać faktycznego zachowania. Poproś Claude o przetestowanie funkcji end-to-end z prawdziwym żądaniem, nie tylko testami jednostkowymi.

Claude utyka w pętli — Jeśli Claude ciągle próbuje tego samego podejścia i zawodzi, przerwij nowym kierunkiem: “Stop. To podejście nie działa. Zamiast tego spróbuj [alternatywne podejście].” Czasami /clear i świeży start jest szybszy niż naprawianie zdezorientowanej sesji.

Mając zaimplementowaną funkcję, naucz się zarządzać branchami, tworzyć czyste commity i otwierać PR z integracją git Claude Code.