Rozpoczynanie nowego projektu używając Cursor Agent
Twój PM rzuca wiadomość na Slack: “Potrzebujemy czegoś jak Trello, ale prostszego, skupionego na codziennych standupach. Możesz mieć prototyp do czwartku?” Żadnej specyfikacji. Żadnych wireframe’ów. Żadnego dokumentu architektury. Tylko zdanie i deadline. Masz dwa dni i pusty katalog.
To jest moment, w którym większość developerów zaczyna googlować repozytoria boilerplate i spędza pół popołudnia debatując, czy użyć Next.js czy Remix. Z Cursor możesz pominąć bikeshedding i mieć działającą aplikację — z uwierzytelnianiem, bazą danych, aktualizacjami w czasie rzeczywistym i testami — w jednej skupionej sesji. Kluczem jest wiedza, po które funkcje Cursor sięgnąć na każdym etapie.
Co wyniesiesz
Dział zatytułowany „Co wyniesiesz”- Powtarzalny workflow do przekształcania niejasnych wymagań w ustrukturyzowany PRD używając trybu Ask
- Prompt do tworzenia rusztowania projektu, który generuje pliki konfiguracyjne, strukturę folderów i początkową konfigurację jednym strzałem
- Plik
.cursor/rules, który utrzymuje AI spójnym przez dziesiątki kolejnych promptów - Dyscyplinę checkpointów, która pozwala swobodnie eksperymentować bez obawy o utratę postępu
- Technikę używania trybu Plan do dekompozycji złożonych funkcji zanim Agent napisze jedną linię
Workflow
Dział zatytułowany „Workflow”Krok 1: Wydobycie wymagań z trybem Ask
Dział zatytułowany „Krok 1: Wydobycie wymagań z trybem Ask”Zanim napiszesz kod, użyj trybu Ask, aby przekształcić tę niejasną wiadomość Slack w coś, przeciw czemu faktycznie możesz budować. Tryb Ask jest tylko do odczytu — nie może edytować plików ani uruchamiać poleceń — co czyni go odpowiednim narzędziem do planowania. Naciśnij Cmd+., aby przełączyć tryby.
Model będzie kwestionować zakres i sugerować kompromisy. To jest dokładnie to, czego chcesz. Dobra sesja planowania AI przypomina rozmowę z senior engineerem, który zbudował już ten rodzaj aplikacji. Zadawaj pytania uzupełniające, aż będziesz miał jasny obraz tego, jak wygląda “zrobione”.
Zapisz wynik. Będziesz się do niego odwoływać przez cały projekt.
Krok 2: Wygeneruj PRD jako plik
Dział zatytułowany „Krok 2: Wygeneruj PRD jako plik”Przełącz się do trybu Agent (Cmd+. ponownie) i pozwól Cursor stworzyć ustrukturyzowany dokument, do którego możesz się później odwoływać za pomocą symboli @.
Tryb Agent utworzy plik i katalog docs/. Teraz każdy przyszły prompt może odwoływać się do @docs/prd.md dla kontekstu, co zapobiega dryfowaniu AI od Twoich wymagań, gdy rozmowa się wydłuża.
Krok 3: Skonfiguruj reguły projektu przed jakimkolwiek kodem
Dział zatytułowany „Krok 3: Skonfiguruj reguły projektu przed jakimkolwiek kodem”To jest krok, który większość ludzi pomija, i kosztuje ich godziny później. Przed wygenerowaniem jednej linii kodu, utwórz katalog .cursor/rules z instrukcjami specyficznymi dla projektu. Te reguły są automatycznie dołączane do każdej interakcji Agent i Ask.
Katalog .cursor/rules z plikami .mdc jest obecnym standardem Cursor dla reguł projektu. Każdy plik reguł może określać, do jakich wzorców plików się stosuje poprzez pole frontmatter globs, więc Twoje reguły TypeScript aktywują się tylko przy edycji plików .ts.
Krok 4: Utwórz rusztowanie projektu z trybem Agent
Dział zatytułowany „Krok 4: Utwórz rusztowanie projektu z trybem Agent”Teraz pozwól trybowi Agent zrobić ciężką pracę. Odwołaj się zarówno do PRD, jak i reguł, aby wygenerowany kod był spójny od początku.
Tryb Agent wykona polecenia terminala, utworzy pliki i będzie iterować, jeśli coś się nie uda. Z włączonym auto-run w Twoich ustawieniach Cursor (Settings > Cursor Settings > Agents > Auto-Run), agent może uruchamiać narzędzia build i naprawiać błędy bez pytania o pozwolenie za każdym razem.
Checkpoint teraz. Po tym jak rusztowanie się uda i serwer dev wystartuje, to jest Twój pierwszy bezpieczny punkt przywracania. Cursor tworzy checkpointy automatycznie, ale powinieneś także commitować do git:
git add -A && git commit -m "Initial project scaffolding with database schema"Krok 5: Buduj funkcje z trybem Plan
Dział zatytułowany „Krok 5: Buduj funkcje z trybem Plan”Dla złożonych funkcji, użyj trybu Plan zanim pozwolisz Agent pisać kod. Tryb Plan bada Twoją bazę kodu, zadaje pytania wyjaśniające i generuje przeglądowy plan implementacji. Naciśnij Shift+Tab z inputu czatu, aby przełączyć się do trybu Plan.
Jest to szczególnie wartościowe dla pierwszej głównej funkcji, ponieważ tryb Plan wyłapie decyzje architektoniczne, które możesz przegapić — jak to, czy tablica zadań potrzebuje połączeń WebSocket czy SSE jest wystarczające, lub czy stan drag-and-drop powinien żyć w URL czy w stanie lokalnym.
@docs/prd.md @src/db/schema.ts
Zaplanuj implementację funkcji tablicy zadań:- Kolumny w stylu Kanban (Do zrobienia, W trakcie, Zrobione)- Przeciąganie i upuszczanie kart między kolumnami- Aktualizacje w czasie rzeczywistym, gdy inny użytkownik przesuwa kartę- Optymistyczne aktualizacje UI z wycofaniem przy błędzie serwera
Rozważ: Czy powinniśmy używać WebSockets, SSE czy polling? Jakie jest minimalne praktyczne podejście dla prototypu 2-dniowego?Przejrzyj plan. Edytuj go, jeśli nie zgadzasz się z podejściem. Następnie kliknij “Build”, aby pozwolić Agent go wykonać.
Krok 6: Iteruj ze skupionymi follow-upami
Dział zatytułowany „Krok 6: Iteruj ze skupionymi follow-upami”Gdy główna funkcja działa, iteruj z małymi, skupionymi promptami. Każdy prompt powinien robić jedną rzecz dobrze, zamiast pytać o pięć funkcji naraz.
@src/components/task-board.tsx @src/db/schema.ts
Przeciąganie i upuszczanie działa, ale nie ma wizualnej informacji zwrotnej podczas przeciągania.Dodaj cień i lekką rotację do przeciąganej karty, przyciemnijkolumnę źródłową i pokaż podświetloną strefę upuszczania w kolumnie docelowej.Używaj tylko klas Tailwind -- żadnego CSS-in-JS.Utrzymuj rozmowy krótkie. Gdy rozmowa przekracza 15-20 wymian, kontekst się degraduje. Rozpocznij nowy czat, odwołaj się do konkretnych plików z symbolami @, i kontynuuj stamtąd.
Krok 7: Dodaj uwierzytelnianie i przygotowanie do wdrożenia
Dział zatytułowany „Krok 7: Dodaj uwierzytelnianie i przygotowanie do wdrożenia”@docs/prd.md @src/db/schema.ts
Dodaj NextAuth.js z GitHub OAuth:1. Utwórz konfigurację auth w src/lib/auth.ts2. Dodaj route API w src/app/api/auth/[...nextauth]/route.ts3. Utwórz middleware.ts, który chroni wszystkie route'y poza /login4. Dodaj stronę logowania w src/app/login/page.tsx5. Zaktualizuj tablicę zadań, aby pokazywała nazwę obecnego użytkownika6. Dodaj tabelę users do schematu, jeśli nie istnieje
Użyj adaptera Drizzle dla NextAuth. Zmienne środowiskowe idą do .env.local.example(nie .env.local -- nigdy nie commituj sekretów).Kiedy to się psuje
Dział zatytułowany „Kiedy to się psuje”Agent generuje przestarzały stos technologiczny. Model czasami sugeruje wzorce routera pages/ lub przestarzałe API NextAuth v4. Napraw to wyraźnymi ograniczeniami wersji w swoim prompcie: “Użyj Next.js 15 App Router” lub “Użyj Auth.js v5 (NextAuth v5).” Jeszcze lepiej, dodaj przypinanie wersji do swoich .cursor/rules.
Projekt staje się niespójny po 20+ promptach. Długie rozmowy tracą kontekst. Gdy zauważysz, że AI generuje kod, który zaprzecza wcześniejszym wzorcom (różne konwencje nazewnictwa, różna obsługa błędów), rozpocznij świeży czat. Odwołaj się do plików reguł i kluczowych plików źródłowych z symbolami @, aby przywrócić kontekst.
Agent tworzy pliki w złych lokalizacjach. Dzieje się to, gdy Twoja struktura projektu nie jest oczywista z drzewa plików. Dodaj plik reguł structure.mdc, który opisuje Twój układ katalogów: “Komponenty idą do src/components/, zapytania do bazy danych idą do src/db/queries/, route’y API idą do src/app/api/.”
Agent uruchamia polecenie, które psuje Twoją konfigurację. Użyj checkpointów do przywrócenia. Kliknij przycisk “Restore Checkpoint” przy dowolnej poprzedniej wiadomości w czacie Agent. Dla bezpieczeństwa na poziomie git, commituj po każdej udanej fazie.
Tryb Plan generuje zbyt złożoną architekturę. Model czasami over-engineeruje prototypy z mikroserwisami, kolejkami wiadomości lub skomplikowanymi warstwami cachowania. Dodaj ograniczenia: “To jest prototyp 2-dniowy dla 12 użytkowników. Optymalizuj pod kątem szybkości dostarczenia, nie skali. Użyj SQLite, nie Postgres. Monolit, nie mikroserwisy.”