Przejdź do głównej zawartości

Tworzenie Nowych Projektów z Terminala

Właśnie dostałeś zielone światło na nowy projekt. Znasz stack, którego chcesz — może Next.js z Prisma, może usługę Python FastAPI, może aplikację Phoenix LiveView. W przeszłości spędziłbyś pierwszy dzień na okablowaniu boilerplate: strukturę projektu, konfigurację lintera, połączenia z bazą danych, zmienne środowiskowe, pipeline CI. To cały dzień pracy, zanim napiszesz pojedynczą linię logiki biznesowej.

Claude Code kompresuje to do pojedynczej sesji terminalowej. Opisujesz, co chcesz, a Claude buduje szkielet projektu, konfiguruje narzędzia i tworzy CLAUDE.md, który czyni każdą przyszłą sesję bardziej produktywną. Kluczem jest wiedza, jak poprowadzić tę pierwszą rozmowę, aby otrzymać szkielet produkcyjnej jakości zamiast generycznego szablonu.

  • Powtarzalny proces bootstrapowania dowolnego typu projektu z CLI
  • Dobrze zorganizowany plik CLAUDE.md, który działa jako trwała pamięć projektu
  • Prompty copy-paste dla popularnych stacków (Next.js, FastAPI, Phoenix, Express)
  • Przepływ pracy /init, który analizuje istniejące projekty i generuje kontekst automatycznie

Najskuteczniejsza inicjalizacja projektu następuje według trzyfazowego wzorca: opisz projekt, pozwól Claude zbudować szkielet, następnie utrwal konwencje w CLAUDE.md.

  1. Stwórz katalog projektu i uruchom Claude Code

    Okno terminala
    mkdir my-saas-app && cd my-saas-app
    git init
    claude

    Rozpoczęcie od git init ma znaczenie. Claude Code jest git-aware i będzie tworzył commity w logicznych punktach kontrolnych podczas procesu scaffoldingu. Bez repozytorium git tracisz możliwość cofnięcia, jeśli coś pójdzie nie tak podczas konfiguracji.

  2. Opisz projekt z wystarczającą szczegółowością, aby uniknąć generycznego outputu

    Niejasny prompt jak “stwórz aplikację webową” daje generyczny szablon. Specyficzny prompt daje coś, na czym możesz faktycznie budować. Uwzględnij stack, główne funkcje i swoje konwencje.

  3. Przejrzyj wygenerowaną strukturę przed kontynuowaniem

    Claude utworzy pliki i zrobi commity. Przed kontynuowaniem poproś go o weryfikację, że konfiguracja faktycznie działa.

    Uruchom serwer deweloperski i potwierdź, że startuje bez błędów.
    Następnie uruchom linter i napraw wszelkie problemy. Pokaż mi
    ostateczną strukturę projektu jako drzewo.
  4. Wygeneruj plik CLAUDE.md

    To jest krok, który większość ludzi pomija, a jest najważniejszy. CLAUDE.md daje każdej przyszłej sesji Claude kontekst potrzebny do efektywnej pracy w twoim projekcie.

    /init

    Komenda /init analizuje strukturę twojego projektu, wykrywa frameworki i narzędzia, i generuje startowy CLAUDE.md. Przejrzyj go i dodaj wszystko specyficzne dla projektu, czego Claude nie może wywnioskować wyłącznie z kodu.

Komenda /init daje dobry punkt startowy, ale najlepsze pliki CLAUDE.md są dopracowywane w czasie. Oto co uwzględnić, a co pominąć.

# Komendy budowania i testowania
npm run dev # Start dev server na porcie 3000
npm run build # Production build
npm run test # Uruchom vitest
npm run lint # Sprawdzenie ESLint
npm run db:migrate # Uruchom migracje Prisma
npm run db:seed # Seed danych deweloperskich
# Konwencje kodu
- Używaj server components domyślnie, client components tylko dla interaktywności
- Tylko named exports, bez default exports oprócz page.tsx i layout.tsx
- Umieszczaj testy obok plików źródłowych: Button.tsx / Button.test.tsx
- Używaj Zod do całej walidacji runtime, nigdy nie ufaj inputowi klienta
# Decyzje architektoniczne
- Auth: NextAuth.js z sesjami bazodanowymi (nie JWT)
- State: Server state przez React Server Components, client state przez Zustand tylko gdzie potrzeba
- API: Server Actions do mutacji, Route Handlers tylko dla webhooków
# Typowe pułapki
- Klient Prisma musi być zainicjalizowany jako singleton (zobacz src/lib/db.ts)
- Middleware działa na Edge Runtime -- brak dostępnych API Node.js
- WAŻNE: Nigdy nie commituj plików .env. Używaj .env.example dla szablonów.

Nie uwzględniaj rzeczy, które Claude może wywnioskować czytając twój kod: standardowe konwencje TypeScript, jak działają hooki React, czy co robi npm install. Nie uwzględniaj dokumentacji, która często się zmienia — linkuj do niej zamiast tego. Jeśli twój CLAUDE.md ma więcej niż około 50 linii, Claude zaczyna tracić ślad poszczególnych zasad. Utrzymuj go zwięzłym.

Nie każdy projekt zaczyna się od zera. Gdy dołączasz do istniejącej bazy kodu, komenda /init Claude Code staje się twoim narzędziem onboardingowym.

  1. Przejdź do roota projektu i uruchom Claude Code

    Okno terminala
    cd /path/to/existing-project
    claude
  2. Wygeneruj CLAUDE.md z istniejącej bazy kodu

    /init

    Claude czyta twój package.json (lub odpowiednik), bada strukturę katalogów, wykrywa frameworki testowe i generuje CLAUDE.md dostosowany do projektu.

  3. Poproś Claude o uzupełnienie tego, co /init pominął

    Przeczytaj README, konfigurację CI i ostatnie 20 commitów.
    Zaktualizuj CLAUDE.md o wszelkie konwencje, pułapki lub wzorce
    przepływu pracy, które możesz zidentyfikować, a które nie są jeszcze uchwycone.
  4. Waliduj, zadając pytanie, na które tylko dobrze skonfigurowana sesja mogłaby odpowiedzieć

    Jak uruchomić tylko testy jednostkowe dla modułu auth?
    Jaki jest proces wdrożenia?

    Jeśli Claude odpowie poprawnie z CLAUDE.md bez czytania dodatkowych plików, twoja konfiguracja działa.

Hooki to skrypty, które uruchamiają się automatycznie w określonych punktach przepływu pracy Claude. W przeciwieństwie do instrukcji CLAUDE.md (które są doradcze), hooki wykonują się deterministycznie za każdym razem.

.claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "npx eslint --fix $FILE_PATH"
}
]
}
}

Ten hook uruchamia ESLint z auto-fix po każdej edycji pliku przez Claude. Koniec z przeglądaniem kodu i znajdowaniem problemów stylistycznych, które powinny być złapane automatycznie.

Gdy twój projekt jest skonfigurowany, możesz zakodować przepływy pracy specyficzne dla zespołu jako skills, które każdy może wywołać.

.claude/skills/new-feature/SKILL.md
---
name: new-feature
description: Zbuduj szkielet nowej funkcji ze wszystkimi wymaganymi plikami
---
Stwórz nową funkcję: $ARGUMENTS
1. Stwórz nowy branch o nazwie feature/$ARGUMENTS
2. Dodaj route handler w src/app/api/$ARGUMENTS/route.ts
3. Dodaj service w src/services/$ARGUMENTS.service.ts
4. Dodaj schematy Zod w src/schemas/$ARGUMENTS.schema.ts
5. Dodaj testy w src/services/$ARGUMENTS.service.test.ts
6. Zaktualizuj CLAUDE.md, jeśli wprowadzono nowe konwencje

Wywołaj to za pomocą /new-feature user-preferences, a Claude zbuduje całą strukturę funkcji zgodnie z konwencjami twojego zespołu.

Claude generuje generyczny szablon zamiast tego, co opisałeś. Twój prompt był zbyt niejasny. Dodaj konkretne wersje frameworków, preferencje struktury katalogów i konwencje. Im bardziej konkretny jest twój pierwszy prompt, tym mniej korekcji robisz później.

Wygenerowany projekt ma konflikty zależności. Claude czasami pobiera niezgodne wersje pakietów. Zawsze uwzględniaj “uruchom serwer deweloperski i napraw wszelkie błędy” jako część promptu scaffoldingowego. Claude doskonale radzi sobie z rozwiązywaniem problemów z zależnościami, gdy może zobaczyć faktyczny output błędu.

CLAUDE.md jest ignorowany w późniejszych sesjach. Jeśli plik przekracza około 50 linii lub zawiera niejasne instrukcje jak “pisz czysty kod”, Claude przestaje zwracać uwagę na poszczególne zasady. Utrzymuj każdą linię konkretną i wykonalną. Jeśli usunięcie linii nie zmieniłoby zachowania Claude, usuń ją.

/init pomija konwencje projektu. Komenda analizuje strukturę kodu, ale nie może odczytać niepisanych zasad twojego zespołu. Zawsze uzupełniaj output /init o konwencje, które istnieją tylko w głowach twojego zespołu: nazewnictwo branchy, proces PR, procedury wdrożeniowe.

Twój projekt ma szkielet, twój CLAUDE.md jest skonfigurowany, a twoje hooki są na miejscu. Teraz czas nauczyć się, jak Claude Code nawiguje po kodzie, którego nie napisałeś.