Generowanie i weryfikacja dokumentacji z agentem Cursora
Agent Cursora pisze dokumentację, czytając kod, który ta dokumentacja opisuje: TSDoc dla każdego publicznego eksportu, przewodnik „pierwsze kroki” zbudowany z przechodzących testów, diagramy architektury w Mermaid i przewodnik migracji oparty na git diff. Agent wykonuje ekstrakcję. Poprawności dowodzą mechaniczne bramki — walidacja TypeDoc, kompilowane przykłady, renderowane diagramy i sprawdzone linki — więc człowiek redaguje tylko „dlaczego”.
Ta strona jest dla programistów i tech leadów, którzy utrzymują bibliotekę albo serwis z dokumentacją nienadążającą za kodem. Wersja 2.0 wychodzi w przyszłym tygodniu z 40 zmianami łamiącymi kompatybilność, README wciąż pokazuje przykład z v1, a architektura istnieje tylko w głowie jednego seniora. Nie napiszesz czterech dokumentów ręcznie przed wydaniem, ale nie przeczytasz też linijka po linijce czterech wygenerowanych.
Co zyskujesz dzięki temu workflow
Dział zatytułowany „Co zyskujesz dzięki temu workflow”- Prompt audytowy tylko do odczytu, który szereguje nieudokumentowane eksporty według liczby importów w Twoim własnym kodzie.
- Prompty do TSDoc, przewodnika „pierwsze kroki”, przeglądu architektury i przewodnika migracji — każdy przywiązany do źródła prawdy, które agent musi przeczytać.
- Zadanie CI, które nie przechodzi, gdy eksport traci dokumentację, przykład przestaje się kompilować albo link się psuje.
- Jednolinijkowe sprawdzenie, że zmiana „tylko w dokumentacji” nie dotknęła kodu.
- Typowe awarie wygenerowanej dokumentacji i sposób wyjścia z każdej z nich.
Którą dokumentację powinien pisać agent i na podstawie czego?
Dział zatytułowany „Którą dokumentację powinien pisać agent i na podstawie czego?”Wygenerowana dokumentacja jest dokładnie tak wiarygodna jak źródło, z którego powstała. Zanim napiszesz prompt, zdecyduj, który artefakt jest źródłem prawdy dla każdego dokumentu i która bramka udowodni, że dokument nadal się z nim zgadza.
| Dokument | Źródło prawdy, które czyta agent | Bramka, która to dowodzi | Co nadal pisze człowiek |
|---|---|---|---|
| TSDoc publicznych eksportów | Implementacja i jej testy | TypeDoc --validation.notDocumented | Intencja: kiedy tego używać, a kiedy nie |
| Przewodnik „pierwsze kroki” | Przechodzące testy | Typy wyekstrahowanych przykładów się zgadzają | Kolejność pojęć dla nowej osoby |
| Przegląd architektury | Graf importów i punkty wejścia | Diagramy się renderują; każde twierdzenie cytuje plik | Decyzje projektowe i odrzucone opcje |
| Przewodnik migracji | git diff między tagami wydań | Zestaw testów z v1 uruchomiony na v2; każda porażka to udokumentowane złamanie kompatybilności | Zmiany zachowania przy niezmienionej sygnaturze |
Ostatnia kolumna to miejsce, na które idzie Twój czas przeglądu. Agent nie wie, po co istnieje dany moduł ani dlaczego odrzuciłeś oczywisty projekt, więc nie każ mu zgadywać. Każ mu zostawić oznaczoną lukę i uzupełnij ją sam.
Generowanie dokumentacji z agentem Cursora krok po kroku
Dział zatytułowany „Generowanie dokumentacji z agentem Cursora krok po kroku”Pracuj na gałęzi, jeden dokument na jedną rozmowę z agentem. Świeża rozmowa na każdy dokument utrzymuje mały kontekst, a każdy diff da się przejrzeć osobno.
Zrób audyt luk w dokumentacji, zanim cokolwiek wygenerujesz
Dział zatytułowany „Zrób audyt luk w dokumentacji, zanim cokolwiek wygenerujesz”Zacznij w Plan Mode, który Cursor opisuje jako tworzenie „detailed implementation plans before writing any code” (dokumentacja Cursora, sprawdzone 2026-08-28). Audyt czyta i raportuje bez zmieniania kodu, więc błędne założenie kosztuje Cię ponowne uruchomienie, a nie cofanie zmian.
Liczba importów to przybliżenie wpływu na użytkowników, które agent potrafi policzyć z kodu. Reguła „cytuj ścieżkę pliku” sprawia, że każde ustalenie da się sprawdzić: otwierasz wskazany plik i twierdzenie albo tam jest, albo nie.
Ustaw regułę dokumentacji, żeby każda rozmowa trzymała ten sam standard
Dział zatytułowany „Ustaw regułę dokumentacji, żeby każda rozmowa trzymała ten sam standard”Przed przebiegami generowania zapisz swoje konwencje jako regułę projektu, żeby druga i dziesiąta rozmowa pisały tak samo jak pierwsza. Gdzie przechowywane są reguły i jak Cursor je stosuje, opisuje strona o regułach projektu w Cursorze, a wersje dla całego zespołu — własne reguły i szablony.
# Documentation standard
- Document exported symbols only. Never document private helpers.- One-sentence summary in the present tense, then @param, @returns, @throws.- Every @example imports from the package name, not from a relative path, and must compile as written.- Never change executable code while documenting. If the code looks wrong, add a line to docs/doc-questions.md and move on.- Where intent cannot be read from code, write TODO(docs-why) instead of guessing.Zapisz to jako regułę projektu w ustawieniach reguł Cursora; lokalizację pliku podaje strona o regułach projektu.
Najważniejsze są dwie ostatnie linie. Pierwsza nie pozwala, by commity „z dokumentacją” ukrywały zmiany zachowania. Druga zamienia martwe pole agenta w listę, którą człowiek przeszuka podczas swojego przebiegu.
Wygeneruj TSDoc dla publicznego API
Dział zatytułowany „Wygeneruj TSDoc dla publicznego API”Do przebiegu zapisującego przełącz się na agenta i przekaż mu uszeregowaną listę z audytu.
TypeDoc 0.28 (sprawdzone 2026-09-26) ostrzega o każdym nieudokumentowanym eksporcie, gdy przekażesz --validation.notDocumented, a --treatValidationWarningsAsErrors zamienia te ostrzeżenia w niezerowy kod wyjścia. --emit none pomija generowanie strony HTML, więc polecenie działa jako bramka.
Następnie sprawdź, czy przebieg zmienił wyłącznie komentarze. Uruchom w terminalu na gałęzi agenta, po jego commicie:
git diff -U0 main...HEAD -- src | grep -E '^[+-][^+-]' | grep -vE '^[+-][[:space:]]*(\*|/\*\*|\*/|//)' || echo "comments only"Każda wypisana linia to zmieniona linia kodu wewnątrz commitu „z dokumentacją”. Cofnij ten fragment albo przenieś go do osobnej, przejrzanej zmiany. To szybki filtr, nie dowód: pomija zmienione linie zaczynające się od + lub - (np. ++i;), więc i tak przejrzyj diff.
Zamień przechodzące testy w przewodnik „pierwsze kroki”
Dział zatytułowany „Zamień przechodzące testy w przewodnik „pierwsze kroki””Twój zestaw testów zawiera już działające wywołania z realistycznymi danymi. To lepsze źródło przykładów do tutorialu niż wyobraźnia agenta.
Komentarz ze źródłem pozwala recenzentowi sprawdzić przykład bez czytania go: otwiera wskazany test i potwierdza, że wywołanie się zgadza. Reguła o bloku kodu oznaczonym ts wyznacza to, co wyciąga sprawdzenie przykładów w CI opisane w następnej sekcji.
Wygeneruj przegląd architektury, który cytuje dowody
Dział zatytułowany „Wygeneruj przegląd architektury, który cytuje dowody”Dokumenty architektury starzeją się szybciej niż jakiekolwiek inne, bo żadna pojedyncza zmiana w kodzie nie wygląda na taką, która ich dotyczy. Generuj przegląd tak, żeby dało się go tanio wygenerować ponownie, i trzymaj go na tyle krótkim, żeby ludzie go czytali.
Wyrenderuj diagramy przed commitem. Mermaid CLI traktuje plik Markdown jako zbiór diagramów i renderuje każdy blok mermaid (@mermaid-js/mermaid-cli 12.0.0, sprawdzone 2026-09-26). Korzysta z bezgłowego Chrome’a przez Puppeteer, więc uruchamiaj je na maszynie albo obrazie CI, który go ma:
npx -p @mermaid-js/mermaid-cli mmdc -i docs/architecture.md -o /tmp/architecture-rendered.mdDiagram, który nie renderuje się tutaj, jest zepsuty dla większości czytelników — a dowiesz się o tym przed nimi. Głębszą pracę nad architekturą, w tym rekordy decyzji, opisuje strona o planowaniu architektury z Cursorem.
Zbuduj przewodnik migracji z diffu wydania
Dział zatytułowany „Zbuduj przewodnik migracji z diffu wydania”Uruchom to w agencie, nie w Plan Mode, bo prompt zapisuje plik docs/migration-v2.md. Zastąp oba tagi tagami swoich wydań.
To punkt 5 ratuje sytuację. Diff niezawodnie pokazuje zmiany sygnatur; funkcja, która zachowuje sygnaturę, a zwraca coś innego, to dokładnie to, co wygenerowany przewodnik przeoczy — dlatego prompt każe agentowi wypisać kandydatów, a Ty ich oceniasz. Duże aktualizacje własnych zależności, a nie zależności Twoich użytkowników, opisuje strona o migracjach frameworków i bibliotek z Cursorem.
Jak zweryfikować wygenerowaną dokumentację bez czytania każdej linii?
Dział zatytułowany „Jak zweryfikować wygenerowaną dokumentację bez czytania każdej linii?”Przeglądaj wygenerowany tekst tam, gdzie potrzebny jest osąd, a całą resztę zostaw maszynom. Umieść te bramki w CI, żeby działały przy każdym pull requeście, a nie tylko w dniu generowania.
- Pokrycie. Walidacja TypeDoc wywraca build, gdy nowy eksport trafia do kodu bez dokumentacji.
- Przykłady się kompilują. Mały skrypt wyciąga każdy blok kodu oznaczony
tszdocs/iREADME.mdi sprawdza jego typy względem źródeł pakietu (nazwa pakietu wskazuje nasrc/index.ts). - Linki działają.
markdown-link-checknie przechodzi przy martwym linku, także takim, który wskazuje plik lub kotwicę, których nazwę zmieniłeś. - Diagramy się renderują.
mmdcrenderuje każdy blok Mermaid (zobacz sekcję o przeglądzie architektury). - Akceptacja człowieka. Właściciel modułu przegląda tylko luki
TODO(docs-why), sekcję „Behaviour changes” i listę symboli, które według audytu już nie istnieją. To krótki, zawężony przegląd, a nie lektura każdej wygenerowanej strony.
Skrypt wyciągający przykłady zleć agentowi, bo to zwykły kod z jasnym kontraktem:
Następnie podepnij bramki pod workflow. To zadanie tylko czyta repozytorium, nie ma żadnych sekretów i nie uruchamia agenta:
name: docs-checkon: pull_requestpermissions: contents: readjobs: docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 with: persist-credentials: false - uses: actions/setup-node@v7 with: node-version: 22 - run: npm ci - run: npx typedoc --emit none --validation.notDocumented --treatValidationWarningsAsErrors src/index.ts - run: npx tsx scripts/check-doc-examples.ts - run: npx markdown-link-check -q -c .markdown-link-check.json README.md - run: find docs -name "*.md" -print0 | xargs -0 -n1 npx markdown-link-check -q -c .markdown-link-check.jsonmarkdown-link-check (3.15.0) domyślnie odpytuje też zewnętrzne adresy URL, przez co bramka w pull requeście bywa niestabilna. Daj mu plik .markdown-link-check.json z wpisem ignorePatterns dla ^https?://, żeby ta bramka sprawdzała tylko lokalne pliki i kotwice, a linki zewnętrzne sprawdzaj w osobnym, nieblokującym zadaniu uruchamianym według harmonogramu.
Powyższe zadanie pomija bramkę Mermaid; dodaj polecenie mmdc z sekcji o przeglądzie architektury jako osobny krok, gdy Chrome instalowany przez Puppeteera zacznie działać na Twoim runnerze. Do przeglądu samego pull requesta Bugbot sprawdza diff jak każdą inną zmianę; nie zastępuje bramek opisanych wyżej.
Kiedy dokumentacja pisana przez agenta się psuje
Dział zatytułowany „Kiedy dokumentacja pisana przez agenta się psuje”Agent opisuje zachowanie, którego kod nie ma. Wywnioskował znaczenie parametru z jego nazwy albo opisał ponawianie, którego nie ma. Naprawa: wymagaj ścieżki pliku przy każdym twierdzeniu, tak jak robią to powyższe prompty, i sprawdzaj wyrywkowo trzy cytowania na dokument. Jeśli jedno jest błędne, odrzuć sekcję i wygeneruj ją ponownie, podając w prompcie wprost plik z implementacją.
Przykłady wyglądają dobrze, ale się nie kompilują. Brakujące importy, ścieżki względne albo krok przygotowania, który test miał w beforeEach. Naprawa: skrypt sprawdzający przykłady podaje plik i linię; wklej jego wynik z powrotem agentowi z poleceniem „fix the documentation, not the code”.
Commit z dokumentacją zmienił kod. Agent „naprawił” błąd, który zauważył podczas czytania. Naprawa: opisane wyżej sprawdzenie „tylko komentarze” wypisze winne linie. Cofnij je, a podejrzewany błąd przenieś do docs/doc-questions.md jako osobną, przetestowaną zmianę.
Diagram architektury to nieczytelny kłębek. Pełny graf importów dużej bazy kodu ma setki krawędzi. Naprawa: ogranicz liczbę węzłów w prompcie, jak wyżej, i rysuj jeden diagram na podsystem zamiast jednego na wszystko.
Przewodnik migracji pomija zmianę zachowania. Sygnatura została ta sama, więc diff wyglądał niewinnie. Naprawa: uruchom zestaw testów z v1 na buildzie v2; każda porażka, która nie jest udokumentowanym złamaniem kompatybilności, należy do sekcji „Behaviour changes”.
Wygenerowana dokumentacja jest długa i nikt jej nie czyta. Agenci zapełniają miejsce, dopóki ich nie powstrzymasz. Naprawa: ustaw limit słów w każdym prompcie i przed scaleniem wytnij każdą sekcję, którą czytelnik by pominął.
Po trzech miesiącach dokumentacja znów się rozjeżdża. Naprawa: zostaw bramki CI włączone i generuj ponownie według harmonogramu. Automatyzacja w Cursorze (Automations) z wyzwalaczem Scheduled może co tydzień uruchamiać prompt audytowy; na tym, co wskaże, uruchom prompt TSDoc, a wynik przepuść przez te same bramki co zwykły pull request.
Co dalej z dokumentacją w Cursorze
Dział zatytułowany „Co dalej z dokumentacją w Cursorze”Jeśli Twój przewodnik opisuje integracje z zewnętrznymi bibliotekami, serwer MCP z dokumentacją dostarczy agentowi ich aktualną dokumentację zamiast tego, co pamięta model.