Lewati ke konten utama

Cursor Rules: Cara Menjaga AI Tetap Selaras dengan Codebase Anda

Pelajari bagaimana aturan Cursor memandu AI saat menulis kode, dari mendefinisikan konteks tingkat proyek dan pola pencocokan file hingga menjaga aturan tetap akurat dan mutakhir seiring waktu.
Diperbarui 28 Sep 2026  · 8 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Anda membuka chat baru di Cursor dan menempelkan blok instruksi yang sama seperti ratusan kali sebelumnya. Stack Anda, konvensi penamaan Anda, dan struktur folder yang terus salah dipahami AI. Lalu AI menghasilkan kelas 40 baris dengan tiga lapisan abstraksi untuk sesuatu yang sebenarnya hanya butuh sebuah fungsi.

Saatnya bangun dari mimpi buruk ini. Aturan Cursor adalah file proyek yang membuat kegiatan menempelkan instruksi menjadi tidak perlu. Tulis konvensi Anda sekali, dan output AI akan selaras dengan codebase Anda alih-alih melawannya.

Tutorial ini membangun serangkaian file aturan .mdc untuk proyek web Python menggunakan FastAPI dan pytest, mencakup konteks proyek, kesederhanaan kode, dan pemformatan kesalahan API. Jika Anda baru di Cursor, saya sarankan mengikuti kursus Software Development with Cursor kami terlebih dahulu, lalu buka sebuah proyek dan ikuti langkah-langkahnya.

Apa Itu Aturan Cursor?

Aturan Cursor adalah file markdown dengan frontmatter khusus MDC yang berada di proyek Anda pada .cursor/rules/. Sebelum prompt Anda mencapai model, Cursor memeriksa aturan mana yang cocok dan menambahkan kontennya ke awal context window. Instruksi Anda selalu mendarat terlebih dahulu.

Setiap file .mdc memiliki tiga field frontmatter yang mengontrol aktivasi: description, globs, dan alwaysApply. Sebuah aturan bisa aktif di setiap percakapan atau hanya ketika file tertentu terbuka. Opsi ketiga, Apply Intelligently, memungkinkan agen membaca deskripsi dan memutuskan sendiri apakah aturan relevan. Bagian berikut membahas tiap jenis secara praktis.

Diagram alur yang menunjukkan bagaimana Cursor mengevaluasi setiap file aturan mdc melalui tiga titik keputusan: pemeriksaan alwaysApply, pencocokan pola glob terhadap file yang terbuka, dan penilaian relevansi deskripsi berbasis agen

Cursor mendukung empat kategori aturan:

Jenis

Lokasi

Cakupan

Dibagikan via

Terbaik untuk

Project Rules

.cursor/rules/*.mdc

Repo saat ini

Git

Perilaku AI tingkat tim per proyek

User Rules

Cursor Settings > Rules

Semua proyek

Tidak dibagikan

Preferensi pribadi

Team Rules

Dasbor Cursor

Semua anggota tim

Dasbor (paket berbayar)

Penegakan tingkat organisasi

AGENTS.md

Root proyek atau subdirektori

Repo saat ini

Git

Proyek sederhana, kompatibilitas lintas alat

Aturan proyek menggantikan file lama .cursorrules, sebuah file tunggal di level root tanpa cakupan atau metadata, dengan memecah aturan menjadi beberapa file .mdc yang memiliki frontmatter.

AGENTS.md adalah alternatif yang lebih sederhana untuk proyek yang tidak memerlukan cakupan glob. Ini adalah markdown biasa yang dikenali oleh alat pengodean AI di luar Cursor, dan file yang lebih dalam di subdirektori akan menimpa file induknya.

Pengaturan Cursor menampilkan halaman Rules, Skills, Subagents dengan daftar aturan proyek termasuk nama aturan dan pola glob

Anda dapat mempelajari lebih lanjut tentang bagaimana workflow berbasis agen terhubung ke proses pengembangan Anda dalam jalur keterampilan AI Agent Fundamentals kami.

Membuat dan Mengonfigurasi Aturan Proyek Cursor

Sisa tutorial ini membuat file aturan untuk proyek FastAPI menggunakan pytest. Polanya dapat diterapkan ke stack apa pun.

Menyiapkan direktori dan file aturan

Buat direktori .cursor/rules/ di root proyek Anda. Setiap file .mdc yang Anda letakkan di sini akan menjadi aturan yang langsung diambil oleh Cursor, tanpa perlu restart.

File aturan pertama, project-context.mdc, memberi AI kesadaran persisten tentang stack dan tata letak folder Anda:

---
description: ""
alwaysApply: true
globs:
---
 
# Project Context
 
This is a FastAPI web application with pytest for testing.
 
## Tech Stack
- Python 3.12, FastAPI, Pydantic v2, SQLAlchemy 2.0
- pytest with pytest-asyncio for async test support
- Alembic for database migrations
 
## Project Structure
- app/main.py: FastAPI application entry point
- app/routers/: API route handlers
- app/models/: SQLAlchemy models
- app/schemas/: Pydantic request/response schemas
- tests/: pytest test files mirroring app/ structure
 
## Patterns
- All endpoints are async
- Use dependency injection for database sessions
- Response models are always Pydantic schemas, not raw dicts

Mengetik /create-rule di chat Agent adalah cara lain: Cursor akan membuat draf untuk Anda melalui panel chat.

Panel pembuatan aturan Cursor yang menampilkan pertanyaan tentang apa yang harus ditegakkan aturan dengan opsi gaya pengodean, konvensi bahasa, dan pola framework

Frontmatter alwaysApply: true berarti aturan ini dimuat di setiap percakapan. Namai file dalam kebab-case berdasarkan bahasan (project-context.mdc, simplicity.mdc, error-responses.mdc) dan jaga setiap file di bawah 500 baris. File aturan yang gemuk memakan ruang context window yang Anda butuhkan untuk kode dan prompt sebenarnya. Commit direktori .cursor/rules/ ke git.

Mengonfigurasi metadata aturan untuk pencocokan yang akurat

Aturan project-context.mdc di atas menggunakan alwaysApply: true, mode paling sederhana: setiap percakapan memuatnya terlepas dari file apa yang sedang Anda kerjakan. Itu pilihan yang tepat untuk konteks tingkat proyek.

Beberapa aturan hanya berlaku untuk bagian tertentu dari codebase. Setel alwaysApply: false dan tambahkan pola glob sebagai daftar dipisahkan koma untuk membatasi cakupannya. Aturan dengan globs: app/routers/**/*.py hanya aktif ketika file yang cocok (di sini: file Python di app/routers/ atau subfoldernya) muncul dalam konteks, sehingga konvensi API tidak mengganggu chat yang tidak terkait.

Apply Intelligently melewati pola file sepenuhnya. Anda membiarkan globs kosong dan menulis description yang terperinci, lalu agen memutuskan apakah aturan relevan untuk percakapan saat ini. Kualitas deskripsi penting: "Error handling rules" terlalu samar untuk dicocokkan secara andal oleh agen, tetapi "Conventions for FastAPI error responses including HTTP status codes, error body structure, and exception handler patterns" memiliki sinyal yang jelas.

Aturan tanpa glob, tanpa deskripsi bermakna, dan alwaysApply: false menjadi hanya manual, dimuat saat Anda mengetik @rule-name di chat. Cocok untuk materi referensi yang Anda panggil sesuai kebutuhan.

File aturan Cursor .mdc terbuka di editor dengan menu dropdown jenis penerapan diperluas menampilkan opsi Always Apply, Apply Intelligently, Apply to Specific Files, dan Apply Manually

Aturan yang ditulis dengan bahasa lunak ("usahakan fungsi tetap kecil," "lebih suka endpoint async") memberi AI izin untuk mengabaikannya. Tulis perintah sebagai gantinya: "Fungsi harus di bawah 30 baris. Semua endpoint harus async."

Pendahuluan menyebutkan AI yang menghasilkan kelas 40 baris dengan tiga lapisan abstraksi. Aturan yang menghentikan perilaku itu adalah simplicity.mdc:

---
description: ""
alwaysApply: true
globs:
---
 
# Code Simplicity
 
Write the simplest code that solves the problem. Every abstraction must earn its place.
 
## Constraints
- No base classes with one child class
- No interfaces or abstract classes with one implementation
- No factory or strategy patterns when an if statement works
- No wrapper functions that just call another function
- No configurable parameters that nothing passes
- No "just in case" error handling for impossible conditions
 
## When modifying existing code
- Match the patterns already in the codebase
- Do not refactor surrounding code unless asked
- Do not add type annotations to unchanged code
- Do not add docstrings to unchanged functions
 
## Code size
- Functions under 30 lines
- If a function needs a comment explaining what a block does, extract that block into a named function instead

Perbedaannya langsung terasa. AI berhenti memilih abstract base class ketika hanya ada satu implementasi, dan menggunakan if-statement ketika hanya ada dua kasus.

Aturan ketiga, error-responses.mdc, dibatasi dengan glob agar hanya aktif saat bekerja dengan file route API:

---
description: "Standard error response format for all API endpoints"
alwaysApply: false
globs: app/routers/**/*.py
---
 
# API Error Responses
 
All error responses must follow this structure:
 
{
  "detail": "Human-readable error message",
  "code": "MACHINE_READABLE_CODE",
  "field": "optional_field_name"
}
 
## Rules
- Never return raw exception messages to clients
- Use HTTPException with a detail dict matching the structure above
- 400 for validation errors, 404 for missing resources, 409 for conflicts
- Log the full traceback server-side before returning the sanitized response

Bila memungkinkan, arahkan ke file yang sudah ada di codebase Anda alih-alih menyalin kode ke dalam aturan. Kalimat seperti "Lihat app/routers/users.py untuk struktur endpoint baku" akan tetap akurat seiring kode berkembang, sementara cuplikan yang disalin akan usang begitu seseorang me-refactor aslinya.

Menguji dan memverifikasi keterikatan aturan

Cursor tidak memiliki indikator bawaan yang menunjukkan aturan mana yang aktif dalam percakapan. Anda memverifikasinya dengan menguji perilaku.

Buka chat Agent baru dan tulis prompt yang seharusnya memicu salah satu aturan Anda. Untuk error-responses.mdc, coba: "Tambahkan endpoint DELETE untuk menghapus pengguna berdasarkan ID di app/routers/users.py." Jika penanganan kesalahan yang dihasilkan tidak mirip dengan struktur JSON aturan Anda atau melewatkan HTTPException dengan detail dict, ada sesuatu yang keliru dalam pencocokan.

Aturan yang dibatasi glob memerlukan file yang cocok disebutkan dalam prompt Anda atau terbuka di editor. Menguji error-responses.mdc tanpa menyebut file apa pun di bawah app/routers/ berarti aturan tersebut tidak pernah aktif. 

Aturan "Apply Intelligently" berbasis topik: cobalah prompt yang terkait dengan deskripsi aturan, lalu yang tidak terkait, dan bandingkan outputnya. Agen seharusnya mengikuti aturan pada yang pertama dan mengabaikannya pada yang kedua.

Menjaga Aturan Cursor Tetap Efektif

Aturan yang berhasil bulan lalu bisa menyesatkan AI setelah refactor atau penggantian nama folder.

Siklus hidup aturan Cursor yang menunjukkan lima tahap dari Menulis ke Menguji ke Memperkuat ke Memelihara ke Memangkas dengan loop umpan balik kembali ke penulisan aturan baru ketika kesalahan berulang

Mengatasi kegagalan pencocokan

Alasan paling umum sebuah aturan tidak aktif adalah ekstensi file: aturan harus menggunakan .mdc, dan file .md biasa di .cursor/rules/ akan diabaikan tanpa pemberitahuan.

Selain itu:

  • Glob yang terlalu luas seperti **/*.py akan menautkan aturan ke setiap file Python di proyek. Persempit ke app/routers/**/*.py atau tests/**/*.py, sehingga aturan hanya aktif di tempat yang semestinya.

  • Anda akan melihat aturan "Apply Intelligently" sering terlewat dalam percakapan ketika deskripsinya terlalu generik. Contoh deskripsi baik/buruk dari bagian metadata di atas berlaku di sini juga.

  • Aturan yang saling bertentangan lebih sulit dikenali. Saat dua aturan memberikan instruksi yang berlawanan untuk file yang sama, AI akan memilih salah satunya (biasanya yang dimuat terakhir). Perbaiki dengan mempersempit cakupan glob agar aturan tidak tumpang tindih, atau gabungkan panduan terkait ke dalam satu file.

Satu keunikan yang patut diketahui: perubahan pada file .mdc kadang menghilang tanpa tersimpan. Jika suntingan tidak tersimpan, tutup Cursor sepenuhnya, pilih "Override" pada pop-up perubahan yang belum disimpan, lalu buka kembali.

Membuat aturan tetap diikuti di tengah percakapan

Sebuah aturan bisa aktif dengan benar di awal percakapan namun tetap diabaikan lima pesan kemudian. Bias konteks terhadap pesan terbaru adalah penyebabnya: seiring percakapan bertambah panjang, model memprioritaskan pesan terbaru dibanding instruksi yang disuntikkan di bagian atas. Ini adalah keluhan paling umum di komunitas Cursor, dan tidak ada pengaturan yang bisa memperbaikinya.

Diagram yang membandingkan biaya token antara aturan Cursor yang ramping versus aturan yang gemuk, menunjukkan bagaimana 20 aturan always-apply mengonsumsi ruang context window enam kali lebih banyak daripada tiga file mdc yang fokus

Solusinya adalah penguatan. Ketika output mulai melenceng dari aturan Anda, tambahkan kalimat seperti "ikuti aturan proyek untuk respons error" ke prompt berikutnya. Itu memindahkan instruksi kembali ke konteks terbaru model. 

Untuk aturan yang penting di setiap respons (formatting, penamaan), frasa yang lebih singkat dan langsung lebih tahan terhadap percakapan panjang daripada paragraf detail.

Aturan dengan contoh kode juga lebih tahan terhadap penyimpangan dibanding instruksi berbasis teks saja. Alih-alih menulis "gunakan early return untuk penanganan error," sertakan blok sebelum/sesudah yang pendek yang menunjukkan pola yang Anda inginkan. Model lebih mudah berlabuh pada kode nyata daripada deskripsi prosa, terutama saat konteks bertambah.

Memelihara dan memangkas aturan

Tinjau aturan setelah refactor besar, peningkatan dependensi, atau restrukturisasi folder. Aturan yang merujuk API usang atau file yang dihapus akan memberi AI instruksi yang salah. Glob yang usang bahkan lebih senyap kegagalannya: ganti nama app/api/ menjadi app/routers/ dan aturan yang dibatasi ke path lama akan berhenti aktif tanpa peringatan.

Pemangkasan juga berlaku sebaliknya. Seiring model membaik, model mulai menangkap konvensi umum tanpa perlu diberi tahu. Jika AI sudah mengikuti panduan sebuah aturan tanpa dipicu, hapus aturannya dan rebut kembali token. Kumpulan aturan yang sehat cenderung menyusut seiring waktu, bukan hanya bertambah.

Menskalakan aturan untuk lingkungan tim

Perlakukan aturan seperti kode aplikasi. Perubahan melalui pull request, dan tim menyepakati pola sebelum mendarat di .cursor/rules/.

Untuk organisasi pada paket Business atau Enterprise, Team Rules memungkinkan admin menegakkan aturan di seluruh anggota dari dasbor Cursor. "Enable immediately" membuat aturan aktif secara default sambil mengizinkan pengguna menonaktifkannya. "Enforce this rule" menghapus opsi keluar, yang mencakup konvensi tak bisa ditawar seperti praktik keamanan dan persyaratan kepatuhan.

Kesimpulan

Mulailah dengan satu atau dua aturan untuk pola yang paling sering Anda koreksi. Jika Anda terus mengedit jenis output AI yang sama di setiap sesi (format error yang salah, abstraksi yang tidak perlu), itu adalah aturan yang menunggu untuk ditulis. Tambahkan lebih banyak saat Anda melihat kesalahan berulang, dan pangkas yang tidak lagi memberikan manfaat.

File .mdc dalam tutorial ini cocok untuk proyek FastAPI. Punya Anda akan terlihat berbeda untuk frontend Next.js atau alat CLI Rust, dan itulah intinya: file tersebut merekam konvensi tim Anda, bukan praktik terbaik generik. 

Jika Anda ingin mendalami Cursor, lihat panduan Cursor 2.0 kami. Untuk perbandingan dengan asisten pengodean AI lainnya, saya sarankan membaca artikel perbandingan kami:

Cursor Rules FAQs

Apa itu aturan Cursor, dan bagaimana cara kerjanya?

Aturan Cursor adalah file markdown dengan YAML frontmatter yang disimpan di .cursor/rules/ dalam proyek Anda. Sebelum prompt Anda mencapai model, Cursor memeriksa aturan mana yang cocok dan menambahkan kontennya ke context window. Setiap file .mdc memiliki tiga field frontmatter (description, globs, alwaysApply) yang mengontrol kapan aturan tersebut aktif.

Jenis aturan Cursor apa saja yang tersedia?

Cursor mendukung empat kategori aturan: 

  • Project Rules berada di .cursor/rules/*.mdc dan dibagikan melalui git.
  • User Rules disetel di Cursor Settings dan berlaku untuk semua proyek.
  • Team Rules dikelola dari dasbor Cursor pada paket berbayar.
  • AGENTS.md adalah alternatif yang lebih sederhana menggunakan markdown biasa di root proyek atau subdirektori.

Bagaimana memilih antara aturan Cursor Always Apply, Apply Intelligently, dan yang dibatasi glob?

Gunakan alwaysApply: true untuk konteks tingkat proyek, seperti stack teknologi dan struktur folder Anda. Gunakan pola glob (misalnya, app/routers/**/*.py) untuk aturan yang hanya berlaku pada jenis file tertentu. Gunakan Apply Intelligently dengan deskripsi terperinci saat aturan berbasis topik alih-alih berbasis file. Aturan yang tidak menyertakan salah satu dari ini menjadi hanya manual, dimuat melalui @rule-name di chat.

Mengapa aturan Cursor berhenti berfungsi di tengah percakapan?

Bias konteks terhadap pesan terbaru menyebabkan aturan memudar saat percakapan bertambah panjang. Model memprioritaskan pesan terbaru daripada instruksi yang disuntikkan di bagian atas. Solusinya adalah penguatan: tambahkan baris seperti "ikuti aturan proyek" ke prompt Anda saat output mulai melenceng. Aturan yang lebih singkat dengan contoh kode lebih tahan terhadap penyimpangan ini dibanding deskripsi prosa yang panjang.

Bagaimana saya harus memelihara aturan Cursor dari waktu ke waktu?

Tinjau aturan setelah refactor, peningkatan dependensi, atau penggantian nama folder. Aturan yang merujuk file yang dihapus atau path lama akan memberikan instruksi yang salah atau diam-diam berhenti aktif. Selain itu, pangkas aturan yang sudah diinternalisasi model: jika AI sudah mengikuti sebuah konvensi tanpa aturan tersebut, hapus untuk merebut kembali token context window.


Bexruz (Bex) Tuychiev's photo
Author
Bexruz (Bex) Tuychiev
LinkedIn

Saya adalah kreator konten data science dengan pengalaman lebih dari 2 tahun dan salah satu dengan jumlah pengikut terbesar di Medium. Saya suka menulis artikel mendalam tentang AI dan ML dengan sedikit gaya sarkastik—karena harus ada sesuatu untuk membuatnya tidak terlalu membosankan. Saya telah menghasilkan lebih dari 130 artikel dan satu kursus di DataCamp, dengan satu lagi sedang dalam proses. Konten saya telah dilihat oleh lebih dari 5 juta pasang mata, dan 20 ribu di antaranya menjadi pengikut di Medium dan LinkedIn. 

Topik
Kecerdasan Buatan
Large Language Models

Kursus AI Teratas

{count, plural, one {Kursus} other {Kursus}}

Pengembangan Perangkat Lunak dengan Cursor

{hours} jam {minutes} menit
4.3K
Bangun kode yang siap produksi dengan Cursor. Pelajari prompt AI, refactoring, pengujian, dan alur kerja lanjutan.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

{count, plural, one {blog} other {blogs}}

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

{count, plural, one {blog} other {blogs}}

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

{count, plural, one {blog} other {blogs}}

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

{count, plural, one {blog} other {blogs}}

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

Lihat SelengkapnyaLihat Selengkapnya