Przejdź do głównej zawartości

Niestandardowe reguły i szablony

Twój zespół liczy pięciu deweloperów korzystających z Cursora. Jeden z nich zawsze dostaje czyste, dobrze zorganizowane wyniki. Pozostali otrzymują niespójne rezultaty — różne konwencje nazewnictwa, różne wzorce obsługi błędów, różna organizacja plików. Różnica nie polega na umiejętności promptowania. Deweloper z konsekwentnymi wynikami ma katalog .cursor/rules/ z 12 starannie opracowanymi plikami reguł, które uczą agenta, jak twój zespół pisze kod.

Reguły to najskuteczniejsza inwestycja w produktywność z Cursorem. Zachowują się pomiędzy sesjami czatu, stosują się automatycznie na podstawie wzorców plików i zapewniają, że każdy deweloper w zespole otrzymuje tę samą jakość wyników AI.

  • Framework do podejmowania decyzji, co zakodować jako reguły, a co pozostawić jako doraźne prompty
  • Strukturę plików reguł z frontmatterem dla wzorców glob, opisów i ustawień automatycznego stosowania
  • Gotową bibliotekę reguł przetestowanych w produkcji, które możesz dostosować do swojego projektu
  • Techniki organizowania, komponowania i utrzymywania reguł na dużą skalę

Cursor wspiera cztery tryby stosowania reguł:

TypFrontmatterKiedy stosowanyUżyj do
Zawsze stosujalwaysApply: trueKażda sesja czatuPodstawowe standardy kodowania, konwencje plików
Stosuj inteligentniealwaysApply: false + descriptionAgent decyduje na podstawie trafnościWzorce domenowe, przewodniki workflow
Zakres globglobs: "src/api/**/*.ts"Gdy pasujące pliki są w kontekścieKonwencje specyficzne dla katalogów
RęcznyBrak frontmatteru lub alwaysApply: false bez opisuGdy wspomniano @rule-nameSpecjalistyczne workflow, szablony

Zadaj sobie pytanie: “Czy każdy pojedynczy prompt korzysta z tej informacji?”

  • Tak -> Zawsze stosuj (nazewnictwo plików, styl kodu, struktura projektu)
  • Tylko przy pracy w konkretnym obszarze -> Zakres glob (konwencje backendu, wzorce frontendu)
  • Tylko dla pewnych typów zadań -> Stosuj inteligentnie (przewodnik migracji, kroki tworzenia API)
  • Rzadko, ale krytyczne gdy potrzebne -> Ręczny (checklista audytu bezpieczeństwa, proces wydania)

Każdy projekt powinien mieć jedną regułę zawsze stosowaną, która daje agentowi niezbędny kontekst:

---
globs: "*.ts,*.tsx"
alwaysApply: true
---
TypeScript conventions for this project:
- Use `interface` for object shapes, `type` for unions and intersections
- Prefer `async/await` over `.then()` chains
- Use `unknown` instead of `any`
- Destructure function parameters when there are more than 2
- All exported functions must have JSDoc comments
- Prefer early returns over nested conditionals

Reguła 3: Przewodnik implementacji funkcji (decyzja agenta)

Dział zatytułowany „Reguła 3: Przewodnik implementacji funkcji (decyzja agenta)”
---
description: Step-by-step guide for implementing a new feature end-to-end
alwaysApply: false
---
When implementing a new feature:
1. Database: Create migration in src/db/migrations/ using Drizzle
2. Types: Add TypeScript types in src/types/
3. API: Create route handler in src/app/api/
4. Service: Add business logic in src/lib/services/
5. UI: Build components in src/components/ and page in src/app/
6. Tests: Write tests adjacent to the source files
Always check for existing patterns before creating new ones.
Reference @src/app/api/users/route.ts as the canonical API example.
Reference @src/components/UserProfile.tsx as the canonical component example.
---
globs: "**/*.test.ts,**/*.test.tsx,**/*.spec.ts"
---
Testing conventions:
- Use Vitest with happy-dom for DOM tests
- Test file lives adjacent to source: foo.ts -> foo.test.ts
- Use descriptive test names: "should return 401 when token is expired"
- Mock external services, never make real HTTP calls in unit tests
- Use factory functions for test data, not inline object literals
- Test error paths, not just happy paths
See @src/lib/services/__tests__/user-service.test.ts for a complete example.

Reguły mogą odwoływać się do innych plików za pomocą składni @filename. Jest to znacznie lepsze niż kopiowanie kodu do reguły, ponieważ referencja zawsze wskazuje na aktualną wersję:

---
description: Create a new API endpoint
alwaysApply: false
---
Follow the pattern in @src/app/api/users/route.ts exactly:
- Same error handling structure
- Same response format
- Same middleware chain
- Same validation approach using Zod schemas from @src/lib/validators/
Do not copy the user-specific logic. Only copy the structural patterns.

Plany Team i Enterprise wspierają scentralizowane reguły zarządzane z panelu Cursor. Reguły te stosują się we wszystkich projektach dla każdego członka zespołu.

Reguły zespołowe są przydatne do:

  • Standardów kodowania obowiązujących w całej organizacji
  • Polityk bezpieczeństwa
  • Wymagań compliance
  • Wspólnych konwencji obejmujących wiele repozytoriów

Gdy reguły są sprzeczne, stosowane są w następującej kolejności:

  1. Reguły zespołowe (najwyższy priorytet)
  2. Reguły projektowe (.cursor/rules/)
  3. Reguły użytkownika (osobiste preferencje)

Oznacza to, że administrator zespołu może wymuszać standardy, których indywidualni deweloperzy nie mogą nadpisać.

Importuj reguły bezpośrednio z repozytoriów GitHub:

  1. Otwórz Cursor Settings > Rules, Commands
  2. Kliknij + Add Rule obok Project Rules
  3. Wybierz Remote Rule (GitHub)
  4. Wklej URL repozytorium

Zaimportowane reguły są synchronizowane z repozytorium źródłowym. Aktualizacje zdalnej reguły są automatycznie odzwierciedlane w twoim projekcie.

Cursor może ładować reguły z Agent Skills, otwartego standardu rozszerzania agentów AI. Włącz je w Cursor Settings > Rules > Import Settings > Agent Skills. Są traktowane jako reguły decydowane przez agenta — Cursor określa, kiedy są istotne na podstawie kontekstu.

Reguły nie są stosowane. Sprawdź, czy plik reguły znajduje się w .cursor/rules/ z poprawnym rozszerzeniem (.md lub .mdc). Dla plików .mdc zweryfikuj składnię frontmatteru. Podgląd stosowanych reguł uzyskasz, najeżdżając kursorem na wskaźnik kontekstu w polu promptu.

Reguły są ze sobą sprzeczne. Podziel sprzeczne reguły na bardziej szczegółowe wzorce glob. Reguła dla src/api/**/*.ts i reguła dla src/frontend/**/*.tsx nigdy nie będą kolidować, ponieważ celują w różne pliki.

Reguły są zbyt ogólne, by były przydatne. Najczęstszy błąd: pisanie reguł, które brzmią jak przewodnik po stylu bez konkretnych przykładów. Zamiast “stosuj prawidłową obsługę błędów” napisz “opakuj wszystkie wywołania bazy danych w try/catch i rzuć AppError z @src/lib/errors.ts z odpowiednim kodem statusu HTTP.”

Agent ignoruje reguły. Reguły decydowane przez agenta (alwaysApply: false z opisem) zależą od oceny trafności przez agenta. Jeśli reguła nie jest pobierana dla odpowiednich zadań, ustaw ją jako zawsze stosowaną lub dodaj bardziej szczegółowe wzorce glob.