Przejdź do głównej zawartości

Dokumentacja jako efektywny kontekst AI

Dokumentacja jako kontekst oznacza zakodowanie wiedzy specyficznej dla projektu — komend budowania, stylu kodu, decyzji architektonicznych — w plikach takich jak CLAUDE.md, .cursor/rules i AGENTS.md, które AI czyta automatycznie na początku każdej sesji, zamiast odkrywać ją na nowo, czytając kod. Skuteczne wersje pozostają konkretne, zwięzłe i aktualne, bo rozdęty lub nieaktualny plik bywa ignorowany albo aktywnie wprowadza asystenta w błąd.

Właśnie wdrożyłeś nowego programistę. Spędza pierwszy tydzień zadając te same pytania: “Jak uruchomię testy?” “Jaki jest proces wdrażania?” “Dlaczego używamy tego wzorca zamiast tamtego?” Teraz wyobraź sobie, że ten programista zadaje te same pytania każdego ranka, bo zapomina przez noc.

Tak wygląda praca z asystentem AI do kodowania bez dokumentacji-jako-kontekstu. Każda nowa sesja AI zaczyna od zera. Nie zna twoich komend budowania, konwencji zespołu ani decyzji architektonicznych. Odkrywa je ponownie czytając pliki — paląc tokeny kontekstu na informacje, które mógłbyś mu podać w 10 liniach.

Co wyniesiesz z tej sekcji o dokumentacji jako kontekście

Dział zatytułowany „Co wyniesiesz z tej sekcji o dokumentacji jako kontekście”
  • Szablon dla pliku konfiguracyjnego każdego narzędzia (CLAUDE.md, .cursor/rules, AGENTS.md)
  • Wskazówki, co uwzględniać, a co pomijać
  • Prompty do bootstrapowania dokumentacji z istniejącej bazy kodu
  • Strategia utrzymywania aktualności dokumentacji w miarę ewolucji projektu

Każde narzędzie ma własny mechanizm trwałej dokumentacji na poziomie sesji. Mimo różnych nazw, służą temu samemu celowi: przekazywanie AI wiedzy specyficznej dla projektu, której nie może wywnioskować z samego kodu.

Project Rules znajdują się w .cursor/rules/ jako pliki markdown. Mogą być ograniczone wzorcem plików, stosowane zawsze lub wywoływane ręcznie. Cursor obsługuje zarówno .md (zwykły tekst, zawsze stosowany), jak i .mdc (niesie frontmatter dla description, globs i alwaysApply). Tylko pliki .mdc honorują te metadane — w zwykłej regule .md frontmatter jest ignorowany, a plik jest stosowany w niezmienionej postaci.

.cursor/rules/
code-style.mdc # alwaysApply: true we frontmatter
testing.mdc # Stosowane do plików testowych (przez globs)
api-conventions.mdc # Agent decyduje (przez description)
deployment.md # Zwykła reguła, @-wzmianka do ręcznego wywołania

Cursor obsługuje również User Rules (globalne preferencje w Cursor Settings) oraz AGENTS.md jako prostszą alternatywę dla .cursor/rules. Cursor czyta AGENTS.md natywnie w katalogu głównym projektu i w dowolnym podkatalogu, stosując go automatycznie przy pracy z plikami w tym katalogu lub jego dzieciach.

Kluczowe możliwości:

  • Reguły ograniczone globami: Stosowane tylko przy pracy z pasującymi plikami
  • Reguły decydowane przez agenta: Stosowane gdy Cursor uzna je za istotne
  • Team Rules: Reguły organizacyjne zarządzane z dashboardu (plany Team/Enterprise)
  • Zdalne reguły: Import reguł z repozytoriów GitHub, które są synchronizowane

Złota zasada: jeśli usunięcie tej linii spowodowałaby, że AI popełni błąd, zachowaj ją. Jeśli AI już robi to poprawnie bez tej linii, usuń ją.

KategoriaPrzykład
Komendy budowanianpm run build, make test, docker compose up
Komendy testowenpm test -- --testPathPattern=auth, pytest -x
Reguły stylu kodu odbiegające od domyślnych“Używaj pojedynczych cudzysłowów”, “2-spacjowe wcięcia”
Wzorce architektoniczne“Wzorzec Repository do dostępu do danych”, “Wszystkie route API w src/pages/api/”
Nieoczywiste ograniczenia“Redis musi być uruchomiony do testów integracyjnych”, “Używaj pnpm, nie npm”
Konfiguracja środowiska“Uruchom cp .env.example .env przed pierwszym budowaniem”
KategoriaDlaczego
Standardowe konwencje językoweAI już je zna
Opisy plik po plikuAI może przeczytać pliki
Długie tutoriale lub wyjaśnieniaZa dużo tekstu sprawia, że AI ignoruje ważne reguły
Informacje, które często się zmieniająStaną się przestarzałe i zmylą AI
Oczywiste praktyki“Pisz czysty kod” nic nie wnosi

Różnica między dokumentacją, która działa, a dokumentacją ignorowaną przez AI, sprowadza się do konkretności i zwięzłości.

# Code Quality
We care deeply about code quality. Always write clean, maintainable,
well-documented code that follows best practices. Make sure to handle
errors properly and write tests for your code.
# Code Style
- Use ES modules (import/export), not CommonJS (require)
- Prefer async/await over .then() chains
- Error responses: { error: string, code: number } shape
# Testing
- Run single tests with: npm test -- --testPathPattern=<name>
- Never mock the database in integration tests
- Test file location: src/**/__tests__/<name>.test.ts
# Workflow
- Run npm run type-check after making code changes
- NEVER commit to main directly. Always create a branch.

Dziel reguły na skupione pliki. Aby kontrolować, kiedy reguła jest stosowana, przez description lub globs, plik musi mieć rozszerzenie .mdc (np. api-conventions.mdc) — frontmatter w zwykłej regule .md jest ignorowany:

---
description: "API endpoint conventions"
globs:
- "src/api/**/*.ts"
- "src/routes/**/*.ts"
---
# API Conventions
- All endpoints return { data: T } on success, { error: string } on failure
- Use Zod for request validation
- Include rate limiting middleware on all public endpoints
- Reference @src/api/users.ts as the canonical example

Dokumentacja, która staje się przestarzała, jest gorsza niż brak dokumentacji — aktywnie wprowadza AI w błąd.

  1. Przeglądaj co miesiąc, a ponownie przy każdej zmianie modelu. To zmiana modelu jest wyzwalaczem, który naprawdę ma znaczenie — mocniejszy model potrzebuje mniej rusztowania niż ten, pod który pisałeś plik, a tańszy potrzebuje więcej.
  2. Traktuj jak kod. Commituj pliki instrukcji do git. Przeglądaj zmiany w PR. Pozwól zespołowi kontrybuować.
  3. Dodawaj regułę dopiero, gdy ten sam błąd powtórzy się dwa razy. Po trudnej sesji debugowania kusi, żeby od razu poprosić AI o napisanie reguły, ale pojedyncza wpadka to szum. Każda linia jest czytana przy każdej turze, na zawsze, więc reguła dopisana na wyrost kosztuje cię trwale za problem, którego być może nie masz.
  4. Kasuj więcej, niż dodajesz. Przycinaj według harmonogramu, a nie tylko wtedy, gdy coś się zepsuje. Własny wpis Anthropic o inżynierii kontekstu dla generacji Claude 5 opisuje usunięcie ponad 80% promptu systemowego Claude Code bez mierzalnej straty, a członkom zespołu przypisuje się rekomendację, by okresowo kasować pliki instrukcji w całości i dopisywać z powrotem wyłącznie to, co bez nich w sposób sprawdzalny się psuje. Tę mocniejszą wersję traktuj jako relacjonowaną rekomendację, a nie udokumentowaną politykę — oficjalna dokumentacja nadal ujmuje to jako dopisanie reguły po drugim wystąpieniu tego samego błędu. Pełny protokół, tak czy inaczej, znajdziesz w Przycinanie CLAUDE.md i AGENTS.md.
  5. Obserwuj ignorowane reguły. Jeśli AI wciąż łamie regułę, plik jest prawdopodobnie za długi i reguła gubi się. Przycinaj agresywnie.

Plik jest za długi i reguły są ignorowane. To najczęstszy problem, a rozwiązanie jest wbrew intuicji: skróć plik, nie dokładaj wyróżnień. Przepisanie reguły pogrubieniem i słowem “IMPORTANT” z przodu to odruch, który rzadko działa, bo dokładanie instrukcji pogarsza przestrzeganie wszystkich, nie tylko nowej. Właściwą poprawką jest zwykle skasowanie czterech innych reguł. Przenoś szczegółowe wytyczne do plików tematycznych (.claude/rules/ z globem paths, ograniczone .cursor/rules/), a jeśli reguła naprawdę musi być przestrzegana, a nie tylko rozważona, zrób z niej hook zamiast zdania.

Różni członkowie zespołu dodają sprzeczne reguły. Traktuj pliki instrukcji jak kod: przeglądaj zmiany, rozwiązuj konflikty, utrzymuj jedno źródło prawdy. W Claude Code użyj głównego CLAUDE.md do reguł zespołowych i CLAUDE.local.md do osobistych preferencji.

AI stosuje przestarzałe reguły. Jeśli twój framework testowy się zmienił, ale plik instrukcji wciąż odwołuje się do starego, AI będzie używać złych komend i się pogubi. Regularnie audytuj.

Za dużo plików reguł w monorepo. Przy zagnieżdżonych plikach instrukcji w pakietach, łączny kontekst może przekroczyć limity. W Codex project_doc_max_bytes (domyślnie 32 KiB) ogranicza sumę plików projektowych — plik przekraczający limit jest ucinany od przodu, a każdy po nim pomijany, bez żadnego ostrzeżenia w TUI. Ponieważ pliki są konkatenowane od katalogu głównego, cięte są te najbliższe katalogowi startowemu, więc tracisz najbardziej szczegółowe instrukcje, a ogólne z korzenia przeżywają. W Claude Code tylko pierwsze 200 linii auto-pamięci MEMORY.md jest ładowanych. Utrzymuj każdy plik skupiony.