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.
Co wyniesiesz z tego poradnika
Dział zatytułowany „Co wyniesiesz z tego poradnika”- 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
Pętla rozwoju
Dział zatytułowany „Pętla rozwoju”Każda funkcja podąża za tym samym podstawowym cyklem:
- Zrozum — Niech Claude przeanalizuje wymaganie i dotknięty kod
- Zaplanuj — Uzyskaj ustrukturyzowany plan implementacji przed jakimikolwiek edycjami
- Zaimplementuj — Buduj przyrostowo, jeden komponent na raz
- Zweryfikuj — Uruchamiaj testy, sprawdzaj typy i lintuj po każdej zmianie
- Przejrzyj — Niech Claude przejrzy swoją własną pracę pod kątem problemów
- Commituj — Twórz czyste, opisowe commity
Przejdźmy przez każdy krok z prawdziwym przykładem: dodawaniem endpointu wyszukiwania do REST API.
Krok 1: Zrozumienie bazy kodu i wymagania
Dział zatytułowany „Krok 1: Zrozumienie bazy kodu i wymagania”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.
Krok 2: Planowanie przed kodowaniem
Dział zatytułowany „Krok 2: Planowanie przed kodowaniem”Gdy Claude zrozumie bazę kodu, poproś o plan:
Based on your analysis, create an implementation plan for the searchendpoint. I want:
1. The route path and HTTP method2. Input validation schema3. Database query approach4. Response format matching existing endpoints5. Error handling following current patterns6. Test cases we need
Number each step. Do not write code until I approve.Przejrzyj plan. Odrzuć tam, gdzie potrzeba:
Change the database query to use a GIN index instead of LIKE.Also, add pagination to the response -- our other list endpointsuse cursor-based pagination, not offset.Krok 3: Implementacja przyrostowa
Dział zatytułowany „Krok 3: Implementacja przyrostowa”Nie proś Claude o implementację wszystkiego naraz. Buduj jeden element na raz:
Implement step 1 from the plan: create the Zod validation schemafor the search endpoint in the existing validators file.Po dokonaniu zmiany przez Claude, zweryfikuj:
Run the type checker to make sure the new schema is valid.Następnie przejdź do kolejnego kroku:
Now implement step 2: the database query function. Use the existingquery patterns from the users module as a reference.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.
Krok 4: Weryfikacja na każdym kroku
Dział zatytułowany „Krok 4: Weryfikacja na każdym kroku”Uczyń weryfikację nawykiem, nie przemyśleniem. To są prompty, które dajesz Claude, a nie polecenia powłoki — Claude uruchamia za Ciebie odpowiednie narzędzia.
Po każdej zmianie poproś Claude o uruchomienie sprawdzeń:
Uruchom npm run type-check i npm run lint. Napraw wszelkie błędy przed kontynuowaniem.
Po zaimplementowaniu logiki uruchom odpowiednie testy:
Uruchom testy dla modułu wyszukiwania. Jeśli jakieś się nie powiodą, przeanalizuj awarię i napraw ją przed dalszym postępem.
Po zakończeniu całej implementacji uruchom pełny zestaw:
Uruchom kompletny zestaw testów i linter. Pokaż mi podsumowanie wszelkich awarii.
Krok 5: Autoreview
Dział zatytułowany „Krok 5: Autoreview”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.
Krok 6: Commit i czyszczenie
Dział zatytułowany „Krok 6: Commit i czyszczenie”Gdy jesteś zadowolony z implementacji, po prostu poproś Claude o commit w trakcie sesji:
Commit these changes with a descriptive message that explains whatwas added and why. Use conventional commit format.Claude generuje komunikat commit na podstawie faktycznego diff, nie ogólnego opisu. Nie ma podpolecenia claude commit — commituj, prosząc o to w sesji jak powyżej, uruchamiając git commit samodzielnie albo, dla jednorazowego polecenia z powłoki, w trybie bezgłowym:
claude -p "commit the staged changes with a conventional commit message"Praktyczne wskazówki dla zachowania produktywności
Dział zatytułowany „Praktyczne wskazówki dla zachowania produktywności”Utrzymuj Claude skupionego
Dział zatytułowany „Utrzymuj Claude skupionego”Długie sesje prowadzą do dryfowania. Jeśli Claude zaczyna tracić kontekst o twoich wzorcach:
Re-read our CLAUDE.md and the existing search module at@src/modules/search/. Then continue implementing the responseformatter using the same patterns.Dziel duże funkcje na sesje
Dział zatytułowany „Dziel duże funkcje na sesje”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, aby kontynuować jedną, ostatnią rozmowę, albo claude -r "<session-name>" "<query>", aby wznowić konkretną wcześniejszą sesję po ID lub nazwie (na przykład claude -r "schema-changes" "now add the migration"). Zacznij na świeżo z claude, jeśli chcesz czysty kontekst.
Używaj /compact gdy kontekst staje się ciężki
Dział zatytułowany „Używaj /compact gdy kontekst staje się ciężki”Jeśli odpowiedzi Claude zaczynają się pogarszać lub wydaje się zapominać wcześniejsze decyzje:
/compactTo podsumowuje rozmowę i zwalnia miejsce kontekstowe. Śledź to krótkim przypomnieniem, nad czym pracujesz.
Odnośniki do konkretnych plików
Dział zatytułowany „Odnośniki do konkretnych plików”Zamiast niejasnych żądań, wskaż Claude na dokładne pliki:
# Instead of this:Update the search module to add filtering
# Do this:Add a category filter parameter to @src/api/routes/search.tsfollowing the pattern used in @src/api/routes/products.tsPozwól Claude uruchomić twój serwer deweloperski
Dział zatytułowany „Pozwól Claude uruchomić twój serwer deweloperski”Dla aplikacji webowych Claude może uruchomić twój serwer deweloperski i sprawdzić wyniki:
Start the dev server, then make a curl request to the new searchendpoint with the query "typescript". Show me the response.Antywzorce
Dział zatytułowany „Antywzorce”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ł.
Kiedy to nie działa
Dział zatytułowany „Kiedy to nie działa”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.
Co dalej
Dział zatytułowany „Co dalej”Mając zaimplementowaną funkcję, naucz się zarządzać branchami, tworzyć czyste commity i otwierać PR z integracją git Claude Code.