Najlepsze praktyki zespołowego CLAUDE.md
- Dokumentuj uzgodnione wzorce
- Uwzględniaj decyzje architektoniczne
- Określ obszary skupienia przeglądu kodu
- Wylistuj wspólne komendy i przepływy pracy
- Aktualizuj na podstawie retrospektyw
Jeden członek zespołu osiąga znakomite wyniki z Claude Code. Następny kopiuje konfigurację ze Slacka, serwery MCP po cichu się nie ładują i taka osoba dochodzi do wniosku, że „to tak naprawdę nie działa”. Problemem nigdy nie jest model — chodzi o to, że nic w waszej konfiguracji nie jest współdzielone, wersjonowane ani domyślnie bezpieczne. Rozwiązaniem jest traktowanie CLAUDE.md, .mcp.json, własnych komend i reguł uprawnień jak infrastruktury zespołowej, która żyje w git.
CLAUDE.md + .mcp.json, dzięki któremu świeży klon jest produktywny pierwszego dnia.mcp.json (ten, który Claude Code faktycznie czyta)permissions allow/ask/deny zamiast niebezpiecznych flag „na wszystko”Stwórz wspólną bazę wiedzy, która przynosi korzyści wszystkim:
Struktura do użycia zespołowego
project/├── CLAUDE.md # Standardy zespołowe├── CLAUDE.local.md # Osobiste preferencje (git-ignored)├── docs/│ └── claude/│ ├── onboarding.md # Przewodnik nowego członka│ ├── patterns.md # Wspólne wzorce│ └── troubleshooting.md # Znane problemyIntegracja kontroli wersji
# Dodaj pliki zespołowe do gitgit add CLAUDE.mdgit add .claude/commands/git add .claude/settings.jsongit add .mcp.json
# Ignoruj pliki osobisteecho "CLAUDE.local.md" >> .gitignoreecho ".claude/personal/" >> .gitignoreRegularne aktualizacje — przeprowadzaj retrospektywę CLAUDE.md po każdym sprincie, aby plik nadążał za tym, jak baza kodu faktycznie się rozwija.
Najlepsze praktyki zespołowego CLAUDE.md
Przykład sekcji zespołowego CLAUDE.md:
# Standardy kodowania zespołu
## TypeScript- ZAWSZE używaj trybu strict- PREFERUJ interfejsy nad typami dla obiektów- WYMAGAJ jawnych typów zwracanych- UŻYWAJ branded types dla ID
## Testowanie- MINIMUM 80% pokrycia dla nowego kodu- ZAWSZE testuj ścieżki błędów- UŻYWAJ data-testid dla testów E2E- MOCKUJ usługi zewnętrzne# Decyzje architektoniczne
## Projektowanie API (poglądowy fragment ADR)- REST nad GraphQL dla publicznych endpointów- Wersjonowanie via ścieżka URL (/v1/, /v2/)- Standardowy format błędów (RFC 7807)- Rate limiting na wszystkich endpointach
## Baza danych- PostgreSQL dla głównych danych- Redis tylko do cache'owania- Brak bezpośredniego SQL, używaj Prisma- Soft deletes dla ścieżki audytuStandardyzuj wspólne przepływy pracy za pomocą współdzielonych komend:
Start a new feature following team process:
Feature: $ARGUMENTS
1. Create branch from latest main2. Update project board3. Create feature flag (if needed)4. Set up monitoring5. Create initial tests6. Draft PR description
Follow our feature development checklist.Więcej przykładów komend zespołowych:
# .claude/commands/hotfix.md# .claude/commands/release.md# .claude/commands/incident-response.md# .claude/commands/performance-check.mdClaude Code czyta uprawnienia z obiektu permissions w .claude/settings.json, który zawiera trzy tablice — allow, ask i deny — oraz opcjonalne defaultMode. Reguły mają postać Tool lub Tool(specyfikator), a specyfikatory Bash to globy ze spacjami (Bash(git diff *)), nigdy rozdzielane dwukropkiem. Reguły są oceniane najpierw deny, potem ask, potem allow. Nie istnieje klucz allowedTools/autoAllow/requireApproval/blocked, a narzędzia to Read/Edit/Write/Bash — nie View/Create/Delete.
{ "permissions": { "defaultMode": "acceptEdits", "allow": [ "Read", "Edit", "Write", "Bash(git status)", "Bash(git diff *)", "Bash(npm run test *)", "Bash(npm run lint)" ], "ask": [ "Bash(git push *)", "Bash(npm install *)" ], "deny": [ "Bash(rm -rf *)", "Read(./.env)", "Read(./.env.*)" ] }}{ "permissions": { "defaultMode": "default", "allow": [ "Read", "Bash(git status)", "Bash(git diff *)", "Bash(npm run test *)" ], "ask": [ "Edit", "Write", "Bash(git push *)" ], "deny": [ "Bash(npm run deploy *)", "Bash(rm -rf *)", "Read(./.env)" ] }}{ "permissions": { "defaultMode": "default", "allow": [ "Read", "Bash(git status)", "Bash(git log *)" ], "ask": [], "deny": [ "Edit", "Write", "Bash(git push *)", "Bash(rm -rf *)", "Read(./.env)", "Read(./secrets/**)" ] }}Dokumentuj uzasadnienie uprawnień:
# Wytyczne uprawnień
## Środowisko deweloperskie- Pełne uprawnienia do szybkiego rozwoju- Auto-zezwalaj na bezpieczne operacje odczytu- Ręczne zatwierdzenie dla operacji destrukcyjnych
## Środowisko stagingowe- Ograniczone do testowania i debugowania- Brak bezpośrednich modyfikacji bazy danych- Wdrożenie wymaga zatwierdzenia
## Środowisko produkcyjne- Dostęp tylko do odczytu- Wszystkie zmiany przez CI/CD- Dostęp awaryjny wymaga dwóch zatwierdzeńUżywaj CLAUDE.md do wymuszania spójności:
# Standardy kodowania zespołu
## Konwencje nazewnictwa- Komponenty: PascalCase (UserProfile, LoginForm)- Narzędzia: camelCase (formatDate, validateEmail)- Stałe: UPPER_SNAKE_CASE (MAX_RETRIES)- Pliki: kebab-case (user-service.ts)
## Organizacja kodu\`\`\`src/├── components/ # Komponenty UI├── services/ # Logika biznesowa├── utils/ # Współdzielone narzędzia├── types/ # Typy TypeScript└── constants/ # Stałe aplikacji\`\`\`
## Obsługa błędów\`\`\`typescript// ZAWSZE używaj niestandardowych klas błędówclass ValidationError extends AppError { constructor(field: string, message: string) { super(`Validation failed for ${field}: ${message}`); }}
// ZAWSZE obsługuj błędy jawnietry { await riskyOperation();} catch (error) { logger.error('Operation failed', { error, context }); throw new OperationError('User-friendly message');}\`\`\`
## Standardy testowe- Nazewnictwo plików testowych: *.test.ts lub *.spec.ts- Bloki describe dla klasy/modułu- Bloki it dla konkretnych zachowań- Wzorzec AAA: Arrange, Act, AssertStandardyzuj dostęp do narzędzi w zespole:
// .mcp.json (commitowane do git){ "mcpServers": { "github": { "command": "npx", "args": ["@modelcontextprotocol/server-github"], "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" } }, "atlassian": { "url": "https://mcp.atlassian.com/v1/mcp", "headers": { "Authorization": "Bearer ${ATLASSIAN_API_TOKEN}" } }, "slack": { "command": "npx", "args": ["@modelcontextprotocol/server-slack"], "env": { "SLACK_TOKEN": "${SLACK_TOKEN}" } } }}Korzyści zespołowego MCP
Pomóż nowym członkom zespołu szybko stać się produktywnymi:
# Przewodnik wdrożenia Claude Code
## Początkowa konfiguracja (30 minut)1. Zainstaluj Claude Code: `npm install -g @anthropic-ai/claude-code`2. Skonfiguruj uwierzytelnianie: uruchom `claude` i użyj `/login` w REPL3. Sklonuj repozytorium zespołu4. Uruchom skrypt konfiguracji: `./scripts/claude-setup.sh`
## Zadania pierwszego dnia1. Przeczytaj plik CLAUDE.md zespołu2. Wypróbuj przykładowe komendy: - `/feature-start my-first-feature` - `/team-standards`3. Sparuj z członkiem zespołu na prawdziwym zadaniu4. Dołącz do kanału #claude-code Slack
## Najlepsze praktyki- Używaj zespołowej listy dozwolonych uprawnień w .claude/settings.json (allow/ask/deny)- Rezerwuj --dangerously-skip-permissions wyłącznie dla środowisk sandboxowych/jednorazowych, nigdy dla współdzielonej maszyny deweloperskiej ani niczego, co dotyka produkcji- Czyść kontekst między niepowiązanymi zadaniami- Sprawdzaj /cost codziennie, aby zrozumieć użycie- Używaj komend zespołowych z .claude/commands/
## Częste problemy- Zbyt wiele monitów o uprawnienia: rozszerz listę allow w settings.json, nie pomijaj uprawnień- MCP nie działa: uruchom `claude mcp list`, a następnie sprawdź zmienne środowiskowe w .mcp.json- Nowy serwer w .mcp.json wciąż wyświetla monit: `claude mcp reset-project-choices`- Wysokie koszty: używaj Sonnet 4.6 do rutynowych zadań, Opus 4.8 do trudnych, Fable 5 (`/model fable`) tylko gdy szczytowa inteligencja uzasadnia koszt (zob. [porównanie modeli](/pl/appendices/model-comparison/))
## Zasoby- Baza wiedzy zespołu: /docs/claude/- Tutoriale wideo: /onboarding/claude-code/- Kanał Slack: #claude-codeZintegruj Claude Code z procesem przeglądu:
Oficjalna akcja to anthropics/claude-code-action@v1 (repozytorium: github.com/anthropics/claude-code-action). Steruj zakresem przeglądu przez wejście prompt, a wszelkie opcje CLI przekazuj przez claude_args. Nie istnieje akcja claude-code-review ani wejścia focus:/ignore:.
name: Claude Code Review
on: pull_request: types: [opened, synchronize]
jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} prompt: | Review this PR for security vulnerabilities, logic errors, performance issues, and missing tests. Be specific and suggest fixes. Ignore style, naming, and documentation — linting owns those. claude_args: "--max-turns 10 --model claude-opus-4-8"Zapisz komendę przeglądu wielokrotnego użytku w .claude/commands/review-pr.md i uruchom ją jako /review-pr 1234 w REPL:
Review the PR at $ARGUMENTS focusing on:
1. Business logic correctness2. Security vulnerabilities3. Performance implications4. Test coverage5. Error handling
Ignore style issues - those are handled by linting.Be specific about issues and suggest fixes.Traktuj automatyczny przegląd jako pierwsze przejście, a nie bramkę: Claude Code niezawodnie wychwytuje brakujące testy i luki w obsłudze błędów, podczas gdy ludzie wciąż odpowiadają za osąd architektoniczny i produktowy.
Stwórz kulturę ciągłego doskonalenia:
Cotygodniowe sesje wskazówek
# Cotygodniowe wskazówki Claude Code- 15-minutowy standup zespołowy- Jedna osoba dzieli się odkrytą techniką- Dokumentuj w bazie wiedzy zespołu- Wypróbuj technikę razemPokaz przepływu pracy — w REPL uruchom /export session.md, aby zapisać rozmowę do pliku (pomiń nazwę pliku, aby skopiować ją do schowka), a następnie umieść ją w bazie wiedzy zespołu. Pamiętaj, że /export to komenda slash wewnątrz REPL, więc przyjmuje argument z nazwą pliku, a nie przekierowanie powłoki.
Przeglądy optymalizacji kosztów — przeglądaj użycie za pomocą /cost w REPL oraz panelu analityki twojej organizacji, a następnie dobieraj odpowiednie modele do zadań.
Wydobywanie wzorców — przeprowadzaj kwartalne przejście, aby włączać powtarzające się wzorce do CLAUDE.md.
Używaj wielu członków zespołu z Claude Code do dużych projektów:
# Plan migracji mikrousług
## Przydzielenie zespołu- Alicja: Serwis użytkowników (Terminal 1)- Bob: Serwis zamówień (Terminal 2)- Karol: Serwis płatności (Terminal 3)- Danuta: Testy integracyjne (Terminal 4)
## Koordynacja1. Poranne synchronizowanie przydziału serwisów2. Współdzielone definicje interfejsów w .claude/shared/3. Godzinne sprawdzenia na Slack4. Końcowy test integracyjny
## Konfiguracja Claude Code\`\`\`bash# Każdy programistaclaude --add-dir ./services/[assigned-service]\`\`\`
## Współdzielone zasoby- Kontrakty API: .claude/shared/api/- Narzędzia testowe: .claude/shared/testing/- Przewodnik migracji: .claude/shared/migration.mdNarzędzia koordynacji
Opracuj komendy dopasowane do przepływu pracy twojego zespołu. Zapisz to jako .claude/commands/team/standup.md, a następnie uruchom /team:standup w REPL, aby wygenerować dzienną aktualizację z prawdziwej historii git.
Więcej komend zespołowych:
# Planowanie sprintu.claude/commands/team/sprint-plan.md
# Reakcja na incydenty.claude/commands/team/incident.md
# Notatki wydania.claude/commands/team/release-notes.md
# Śledzenie długu technicznego.claude/commands/team/tech-debt.mdUdana adopcja zespołowa wymaga więcej niż tylko konfiguracji technicznej:
Tydzień 1: Indywidualna eksploracjaTydzień 2: Dzielenie się odkryciamiTydzień 3: Standardyzacja przepływów pracyTydzień 4: Pełna adopcja zespołowa
Skupienie: Szybkie eksperymentowanieMiesiąc 1: Pilot z wczesnymi adoptoramiMiesiąc 2: Opracowanie standardów zespołowychMiesiąc 3: Stopniowe wdrażanieMiesiąc 4: Pełna adopcja
Skupienie: StandardyzacjaKwartał 1: Zespoły pilotażoweKwartał 2: Wdrożenie departamentoweKwartał 3: OgólnoorganizacyjneKwartał 4: Optymalizacja
Skupienie: Zarządzanie i skalaŚledź te wskaźniki udanej adopcji zespołowej:
Współdzielona konfiguracja zawodzi na kilka przewidywalnych sposobów. Oto jak rozpoznać każdy z nich i się z niego wydostać.
Serwery z .mcp.json członka zespołu się nie ładują. Niemal zawsze to zły klucz najwyższego poziomu — Claude Code czyta mcpServers, a nie servers. Potwierdź działające serwery za pomocą claude mcp list. Jeśli klucz jest poprawny, ale serwera brakuje, przyczyną zwykle jest nierozwinięta zmienna środowiskowa (${GITHUB_TOKEN}) — zobacz następny punkt.
Nowy serwer w zasięgu projektu wciąż prosi o zatwierdzenie albo zatwierdziłeś go raz i chcesz zdecydować ponownie. Claude Code pyta, zanim zaufa serwerom z projektowego .mcp.json. Uruchom claude mcp reset-project-choices, aby wyczyścić te decyzje, a następnie ponownie otwórz projekt i zatwierdź świadomie.
.mcp.json działa na jednej maszynie, a na innej nie. Konfiguracja odwołuje się do zmiennych środowiskowych (${GITHUB_TOKEN}, ${SLACK_TOKEN}), które istnieją w jednym profilu powłoki, a w drugim nie. Udokumentuj wymagane zmienne we wdrożeniu i niech każdy programista wyeksportuje je w swoim pliku rc powłoki; nigdy nie zakodowuj sekretów na sztywno w commitowanym .mcp.json.
Konflikty scalania CLAUDE.md przy każdym PR. Podziel go: trzymaj stabilne, rzadko zmieniające się standardy w commitowanym CLAUDE.md, a osobiste lub szybko zmieniające się notatki przenieś do ignorowanego przez git CLAUDE.local.md. Rozwiązuj konflikty sekcjami, a nie wierszami — to plik prozą, więc preferuj zachowanie obu reguł, chyba że są sprzeczne.
Członek zespołu działa na --dangerously-skip-permissions i zedytował coś, czego nie powinien. Przestań rekomendować tę flagę dla współdzielonych maszyn. Wdróż politykę permissions allow/ask/deny ze Wskazówki 88 w .claude/settings.json i ustaw disableBypassPermissionsMode na "disable" w zarządzanych ustawieniach dla wszystkiego blisko produkcji.
Po opanowaniu współpracy zespołowej jesteś gotowy na ostatni zestaw wskazówek. Przejdź do Rozwiązywanie problemów i najlepsze praktyki po częste problemy i sprawdzone wzorce długoterminowego sukcesu.