Bekerja dengan codebase berskala besar menghadirkan serangkaian tantangan baru dibanding proyek yang lebih kecil. Berdasarkan pengalaman kami menskalakan codebase Cursor sendiri dan wawasan dari pelanggan yang mengelola codebase masif, kami menemukan beberapa pola berguna untuk menangani kompleksitas yang meningkat. Di panduan ini, kita bakal ngebahas beberapa teknik yang kami temukan berguna buat codebase berskala besar.

Gunakan Chat untuk cepat paham kode yang belum familiar

Menavigasi codebase besar, apalagi kalau masih baru buat kamu, bisa jadi menantang. Kamu sering grep, search, dan klik sana-sini buat nemuin bagian spesifik dari codebase yang kamu cari. Dengan Chat, kamu bisa mulai nanya buat nemuin yang kamu butuhin dan dapetin penjelasan detail tentang cara kerjanya. Di sini kita minta bantuan buat nemuin detail implementasi pengindeksan codebase di Cursor, dan bahkan minta beberapa contoh biar lebih gampang dipahami.

Tulis aturan untuk pengetahuan spesifik domain

Kalau kamu lagi onboarding kolaborator baru ke codebase, konteks apa yang bakal kamu kasih supaya mereka bisa langsung bikin kontribusi yang berarti? Jawaban kamu buat pertanyaan ini kemungkinan besar juga berguna buat Cursor. Di setiap organisasi atau proyek, selalu ada pengetahuan tersirat yang mungkin belum sepenuhnya terdokumentasi. Memakai rules secara efektif adalah cara terbaik buat memastikan Cursor dapet gambaran yang lengkap. Misalnya, kalau kamu lagi nulis instruksi tentang cara mengimplementasikan fitur atau service baru, pertimbangkan buat nulis rule singkat biar terdokumentasi dengan rapi.
Boilerplate
---
description: Add a new VSCode frontend service
---

1. **Interface Definition:**
   - Define a new service interface using `createDecorator` and ensure `_serviceBrand` is included to avoid errors.

2. **Service Implementation:**
   - Implement the service in a new TypeScript file, extending `Disposable`, and register it as a singleton with `registerSingleton`.

3. **Service Contribution:**
   - Create a contribution file to import and load the service, and register it in the main entrypoint.

4. **Context Integration:**
   - Update the context to include the new service, allowing access throughout the application.
Kalau ada pola formatting umum yang kamu pengin Cursor patuhi, pertimbangkan buat auto-attach rules berdasarkan glob pattern.
Formatting
---
globs: *.ts
---
- Use bun as package manager. See [package.json](mdc:backend/reddit-eval-tool/package.json) for scripts
- Use kebab-case for file names
- Use camelCase for function and variable names
- Use UPPERCASE_SNAKE_CASE for hardcoded constants
- Prefer `function foo()` over `const foo = () =>`
- Use `Array<T>` instead of `T[]`
- Use named exports over default exports, e.g (`export const variable ...`, `export function `)

Tetap dekat dengan proses pembuatan rencana

Untuk perubahan yang lebih besar, meluangkan pemikiran lebih dari rata-rata untuk menyusun rencana yang presisi dan terdefinisi jelas bisa secara signifikan meningkatkan output Cursor. Kalau lo belum dapet hasil yang lo mau setelah beberapa variasi dari prompt yang sama, coba zoom out dan bikin rencana yang lebih detail dari nol, seolah-olah lo lagi bikin PRD buat rekan kerja. Sering kali bagian tersulit adalah menentukannya—apa perubahan yang perlu dibuat, tugas yang memang lebih cocok buat manusia. Dengan instruksi yang tepat, kita bisa mendelegasikan sebagian implementasi ke Cursor. Salah satu cara pakai AI buat memperkuat proses pembuatan rencana adalah dengan Ask mode. Untuk bikin rencana, nyalain Ask mode di Cursor dan masukin semua konteks yang lo punya dari sistem manajemen proyek, dokumen internal, atau catatan dan ide yang masih acak. Pikirin file dan dependency apa yang ada di codebase yang udah lo tahu mau disertakan. Ini bisa berupa file yang berisi potongan kode yang mau lo integrasikan, atau bahkan satu folder penuh. Berikut contoh prompt:
Planning prompt
- create a plan for how we shoud create a new feature (just like @existingfeature.ts)
- ask me questions (max 3) if anything is unclear
- make sure to search the codebase

@Past Chats (my earlier exploration prompts)

here's some more context from [project management tool]:
[pasted ticket description]
Kita minta model untuk menyusun rencana dan mengumpulkan konteks dengan bertanya ke manusia, merujuk ke prompt eksplorasi sebelumnya, dan juga deskripsi tiket. Menggunakan thinking model seperti claude-3.7-sonnet, gemini-2.5-pro, atau o3 direkomendasikan karena mereka bisa memahami intent perubahan dan menyintesis rencana dengan lebih baik. Dari sini, lo bisa menyusun rencana secara iteratif dengan bantuan Cursor sebelum mulai implementasi.

Pilih tool yang tepat untuk tugasnya

Salah satu skill terpenting buat make Cursor secara efektif adalah milih tool yang tepat buat tugasnya. Pikirin apa yang lagi mau kamu capai dan pilih pendekatan yang bikin kamu tetap dalam flow.
ToolUse caseStrengthLimitation
TabPerubahan cepat, manualKontrol penuh, cepatSingle-file
Inline EditPerubahan terfokus di satu fileEdit terfokusSingle-file
ChatPerubahan besar multi-fileAuto-ngumpulin konteks, edit mendalamLebih lambat, konteks berat
Setiap tool punya sweet spot:
  • Tab jadi andalan buat edit cepat saat kamu pengin pegang kendali penuh
  • Inline Edit paling cocok saat kamu perlu bikin perubahan terfokus di bagian kode tertentu
  • Chat pas banget buat perubahan yang lebih besar saat kamu perlu Cursor paham konteks yang lebih luas
Waktu kamu pakai mode Chat (yang mungkin terasa sedikit lebih lambat tapi sangat powerful), bantu dengan kasih konteks yang bagus. Gunakan @files buat nunjukin kode serupa yang pengin kamu tiru, atau @folder buat kasih pemahaman lebih baik tentang struktur proyek kamu. Dan jangan ragu buat mecah perubahan besar jadi bagian-bagian kecil — mulai chat baru bantu tetap fokus dan efisien.

Inti Utama

  • Persempit perubahan dan jangan coba melakukan terlalu banyak sekaligus
  • Sertakan konteks yang relevan kapan pun bisa
  • Gunakan Chat, Inline Edit, & Tab sesuai keunggulan masing-masing
  • Sering buat chat baru
  • Rencanakan dengan Ask mode, terapkan dengan Agent mode