कोर्स
आप Cursor में एक नया चैट खोलते हैं और वही निर्देशों का ब्लॉक पेस्ट करते हैं जो आप सौ बार पेस्ट कर चुके हैं। आपका स्टैक, आपकी नामकरण परंपराएँ, और फ़ोल्डर संरचना—जिन्हें AI बार-बार गलत कर देता है। फिर वह किसी ऐसी चीज़ के लिए 40-पंक्तियों की एक क्लास बना देता है जिसे बस एक फ़ंक्शन चाहिए था।
अब इस बुरे सपने से जागने का समय है। Cursor नियम ऐसे प्रोजेक्ट फ़ाइलें हैं जो पेस्टिंग को अनावश्यक बना देती हैं। अपनी परंपराएँ एक बार लिखें, और AI का आउटपुट उनसे लड़ने के बजाय आपके कोडबेस से मेल खाए।
यह ट्यूटोरियल FastAPI और pytest का उपयोग करने वाले एक Python वेब प्रोजेक्ट के लिए .mdc नियम फ़ाइलों का सेट बनाता है, जिसमें प्रोजेक्ट संदर्भ, कोड की सादगी, और API त्रुटि स्वरूपण शामिल हैं। यदि आप Cursor के लिए नए हैं, तो मैं पहले हमारा Software Development with Cursor कोर्स करने की सलाह दूँगा, फिर कोई प्रोजेक्ट खोलें और साथ-साथ चलें।
Cursor नियम क्या हैं?
Cursor नियम MDC-विशिष्ट फ्रंटमैटर वाले मार्कडाउन फ़ाइलें हैं जो आपके प्रोजेक्ट में .cursor/rules/ पर रहती हैं। आपके प्रॉम्प्ट के मॉडल तक पहुँचने से पहले, Cursor जाँचता है कि कौन-से नियम मिलते हैं और उनकी सामग्री को context window में सबसे पहले जोड़ देता है। आपकी निर्देशाएँ हर बार सबसे आगे पहुँचती हैं।
हर .mdc फ़ाइल में सक्रियण नियंत्रित करने वाले तीन फ्रंटमैटर फ़ील्ड होते हैं: description, globs, और alwaysApply। कोई नियम हर बातचीत पर चल सकता है या केवल तब जब कुछ फ़ाइलें खुली हों। तीसरा विकल्प, Apply Intelligently, एजेंट को विवरण पढ़कर स्वयं तय करने देता है कि नियम प्रासंगिक है या नहीं। अगला खंड प्रत्येक प्रकार को हाथों-हाथ समझाता है।

Cursor चार श्रेणियों के नियमों का समर्थन करता है:
|
प्रकार |
स्थान |
क्षेत्र |
साझा करने का माध्यम |
सबसे उपयुक्त |
|
Project Rules |
|
वर्तमान रेपो |
Git |
प्रोजेक्ट-स्तर पर टीम-व्यापी AI व्यवहार |
|
User Rules |
Cursor Settings > Rules |
सभी प्रोजेक्ट |
साझा नहीं |
व्यक्तिगत प्राथमिकताएँ |
|
Team Rules |
Cursor डैशबोर्ड |
सभी टीम सदस्य |
डैशबोर्ड (पेड प्लान) |
संगठन-व्यापी प्रवर्तन |
|
|
प्रोजेक्ट रूट या सबडायरेक्टरी |
वर्तमान रेपो |
Git |
सरल प्रोजेक्ट, क्रॉस-टूल अनुकूलता |
प्रोजेक्ट नियमों ने पुराने .cursorrules फ़ाइल—जो बिना किसी स्कोपिंग या मेटाडेटा के एकल रूट-स्तरीय फ़ाइल थी—की जगह ले ली है, नियमों को फ्रंटमैटर वाली कई .mdc फ़ाइलों में बाँटकर।
AGENTS.md उन प्रोजेक्ट्स के लिए सरल विकल्प है जिन्हें ग्लोब स्कोपिंग की ज़रूरत नहीं। यह साधारण मार्कडाउन है जिसे Cursor से आगे अन्य AI कोडिंग टूल भी पहचानते हैं, और सबडायरेक्टरी में गहराई वाली फ़ाइलें पैरेंट फ़ाइलों को ओवरराइड करती हैं।

आप यह भी सीख सकते हैं कि एजेंट-आधारित वर्कफ़्लो आपके विकास प्रक्रिया से कैसे जुड़ते हैं, हमारे AI Agent Fundamentals स्किल ट्रैक में।
Cursor प्रोजेक्ट नियम बनाना और कॉन्फ़िगर करना
इस ट्यूटोरियल के बाकी भाग में pytest के साथ एक FastAPI प्रोजेक्ट के लिए नियम फ़ाइलें बनेंगी। ये पैटर्न किसी भी स्टैक पर लागू होते हैं।
नियम डायरेक्टरी और फ़ाइलें सेट करना
अपने प्रोजेक्ट रूट में .cursor/rules/ डायरेक्टरी बनाएँ। यहाँ रखी हर .mdc फ़ाइल एक नियम बन जाती है, जिसे Cursor तुरंत पकड़ लेता है—रीस्टार्ट की आवश्यकता नहीं।
पहली नियम फ़ाइल project-context.mdc, AI को आपके स्टैक और फ़ोल्डर लेआउट की स्थायी जानकारी देती है:
---
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
Agent चैट में /create-rule टाइप करना एक और रास्ता है: Cursor आपके लिए चैट पैनल के जरिए एक ड्राफ्ट बना देता है।

यहाँ alwaysApply: true फ्रंटमैटर का मतलब है कि यह नियम हर बातचीत में लोड होगा। फ़ाइलों का नाम चिंता-आधारित केबैब-केस में रखें (project-context.mdc, simplicity.mdc, error-responses.mdc) और हर फ़ाइल को 500 पंक्तियों के भीतर रखें। फूली हुई नियम फ़ाइल आपके असली कोड और प्रॉम्प्ट के लिए ज़रूरी context window स्पेस खा जाती है। .cursor/rules/ डायरेक्टरी को git में कमिट करें।
सटीक मैचिंग के लिए नियम मेटाडेटा कॉन्फ़िगर करना
ऊपर वाला project-context.mdc नियम alwaysApply: true का उपयोग करता है—सबसे सरल मोड: आप किन फ़ाइलों पर काम कर रहे हैं, इससे बिना मतलब हर बातचीत इसे लोड करती है। यह प्रोजेक्ट-व्यापी संदर्भ के लिए सही विकल्प है।
कुछ नियम केवल कोडबेस के कुछ हिस्सों पर लागू होते हैं। alwaysApply: false सेट करें और उन्हें स्कोप करने के लिए कॉमा-सेपरेटेड सूची के रूप में ग्लोब पैटर्न जोड़ें। globs: app/routers/**/*.py वाला नियम केवल तब चलता है जब मिलती-जुलती फ़ाइलें (यहाँ: app/routers/ या उसकी सबफ़ोल्डर में Python फ़ाइलें) संदर्भ में हों—इससे API परंपराएँ असंबंधित चैट में नहीं घुसतीं।
Apply Intelligently फ़ाइल पैटर्न को पूरी तरह छोड़ देता है। आप globs खाली छोड़ते हैं और एक विस्तृत description लिखते हैं, और एजेंट तय करता है कि नियम मौजूदा बातचीत के लिए प्रासंगिक है या नहीं। विवरण की गुणवत्ता मायने रखती है: "Error handling rules" एजेंट के लिए विश्वसनीय मिलान के लिए बहुत अस्पष्ट है, लेकिन "Conventions for FastAPI error responses including HTTP status codes, error body structure, and exception handler patterns" में स्पष्ट संकेत हैं।
जिन नियमों में न ग्लोब हों, न सार्थक विवरण, और alwaysApply: false हो—वे केवल मैनुअल बन जाते हैं, जिन्हें आप चैट में @rule-name टाइप करने पर लोड किया जाता है। यह ऑन-डिमांड संदर्भ सामग्री के लिए अच्छा है।

नियम सामग्री और बाधाएँ लिखना
नरम भाषा में लिखे नियम ("कोशिश करें कि फ़ंक्शन छोटे हों," "async endpoints को प्राथमिकता दें") AI को उन्हें अनदेखा करने की इजाज़त देते हैं। इसके बजाय आदेश लिखें: "फ़ंक्शन 30 पंक्तियों से कम होने चाहिए। सभी endpoints async होने चाहिए।"
इंट्रो में AI द्वारा तीन लेयर की एब्स्ट्रैक्शन वाली 40-पंक्तियों की क्लास बनाने का जिक्र था। जो नियम उस व्यवहार को रोकता है, वह है 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
फर्क तुरंत नज़र आता है। जब केवल एक ही इम्प्लीमेंटेशन होता है, तो AI abstract base classes की ओर हाथ बढ़ाना बंद कर देता है, और दो केस होने पर if-स्टेटमेंट का उपयोग करता है।
तीसरा नियम, error-responses.mdc, ग्लोब-स्कोप्ड है ताकि वह केवल 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
जहाँ संभव हो, नियमों में कोड कॉपी करने के बजाय अपने कोडबेस की मौजूदा फ़ाइलों की ओर इशारा करें। जैसे एक पंक्ति—"देखें app/routers/users.py canonical endpoint संरचना के लिए"—कोड के बदलते ही सटीक बनी रहती है, जबकि कॉपी किया गया स्निपेट जैसे ही कोई मूल को रिफ़ैक्टर करता है, बासी हो जाता है।
नियम अटैचमेंट का परीक्षण और सत्यापन
Cursor में कोई बिल्ट-इन संकेतक नहीं है जो दिखाए कि किसी बातचीत में कौन-से नियम सक्रिय हैं। आप व्यवहार का परीक्षण करके सत्यापित करते हैं।
एक नया Agent चैट खोलें और ऐसा प्रॉम्प्ट लिखें जो आपके किसी नियम को ट्रिगर करना चाहिए। error-responses.mdc के लिए, यह आज़माएँ: " ID द्वारा उपयोगकर्ता हटाने के लिए app/routers/users.py में एक DELETE endpoint जोड़ें।" यदि जेनरेटेड त्रुटि हैंडलिंग आपके नियम की JSON संरचना जैसी नहीं दिखती या HTTPException के साथ detail डिक्ट छोड़ देती है, तो मिलान में कुछ गड़बड़ है।
ग्लोब-स्कोप्ड नियमों को आपके प्रॉम्प्ट में संदर्भित या एडिटर में खुली मिलती-जुलती फ़ाइल चाहिए। यदि आप app/routers/ के अंतर्गत किसी फ़ाइल का ज़िक्र किए बिना error-responses.mdc का परीक्षण करते हैं, तो नियम कभी सक्रिय ही नहीं होगा।
"Apply Intelligently" नियम विषय-आधारित होते हैं: नियम के विवरण से संबंधित एक प्रॉम्प्ट आज़माएँ, फिर एक असंबंधित प्रॉम्प्ट, और आउटपुट की तुलना करें। एजेंट को पहले पर नियम का पालन करना चाहिए और दूसरे पर अनदेखा करना चाहिए।
अपने Cursor नियम प्रभावी रखना
जो नियम पिछले महीने काम कर रहे थे, वे किसी रिफ़ैक्टर या फ़ोल्डर का नाम बदलने के बाद AI को भटका सकते हैं।

मैचिंग विफलताओं का ट्रबलशूटिंग
किसी नियम के न चलने का सबसे आम कारण फ़ाइल एक्सटेंशन होता है: नियमों में .mdc होना चाहिए, और .cursor/rules/ में सादी .md फ़ाइलें चुपचाप नज़रअंदाज़ कर दी जाती हैं।
इसके अलावा:
-
**/*.pyजैसे बहुत व्यापक ग्लोब प्रोजेक्ट की हर Python फ़ाइल से नियम जोड़ देते हैं।app/routers/**/*.pyयाtests/**/*.pyतक सीमित करें, ताकि नियम केवल वहीं चले जहाँ उसे चलना चाहिए। -
आप देखेंगे कि "Apply Intelligently" नियम बातचीतें मिस कर देते हैं जब विवरण बहुत सामान्य होता है। ऊपर मेटाडेटा अनुभाग के अच्छे/खराब विवरण के उदाहरण यहाँ भी लागू होते हैं।
-
विरोधाभासी नियम पकड़ना कठिन होता है। जब दो नियम एक ही फ़ाइलों के लिए परस्पर विरोधी निर्देश देते हैं, तो AI एक चुन लेता है (आमतौर पर जो बाद में लोड हुआ हो)। ग्लोब स्कोप संकीर्ण करके ओवरलैप रोकें, या संबंधित निर्देशों को एक ही फ़ाइल में समेकित करें।
एक ध्यान देने योग्य खासियत: कभी-कभी .mdc फ़ाइलों में किए गए बदलाव बिना सेव हुए गायब हो जाते हैं। यदि एडिट्स टिक नहीं रहे, तो Cursor पूरी तरह बंद करें, unsaved changes पॉप-अप पर "Override" चुनें, और दोबारा खोलें।
बातचीत के बीच नियमों को प्रभावी बनाए रखना
किसी बातचीत की शुरुआत में कोई नियम ठीक से चल सकता है और पाँच संदेश बाद अनदेखा भी हो सकता है। कारण है context window की हालिया-पक्षपात प्रवृत्ति: जैसे-जैसे बातचीत बढ़ती है, मॉडल ऊपर डाली गई निर्देशों से अधिक हालिया संदेशों को प्राथमिकता देता है। यह Cursor समुदाय में सबसे आम शिकायत है, और इसे ठीक करने के लिए कोई सेटिंग नहीं है।

उपाय है पुनर्बलन। जब आउटपुट आपके नियमों से भटकने लगे, तो अपने अगले प्रॉम्प्ट में ऐसी पंक्ति जोड़ें: "त्रुटि प्रतिक्रियाओं के लिए प्रोजेक्ट नियमों का पालन करें"। इससे निर्देश फिर से मॉडल के हालिया संदर्भ में आ जाते हैं।
जो नियम हर उत्तर पर मायने रखते हैं (फ़ॉर्मैटिंग, नामकरण), उनके लिए छोटे और सीधे वाक्य लंबे पैराग्राफ़ की तुलना में लंबी बातचीतों में बेहतर टिकते हैं।
कोड उदाहरण वाले नियम भी केवल पाठ वाले निर्देशों की तुलना में बहकने का अधिक प्रतिरोध करते हैं। "त्रुटि हैंडलिंग के लिए early returns उपयोग करें" लिखने के बजाय, एक छोटा पहले/बाद का ब्लॉक शामिल करें जो वांछित पैटर्न दिखाए। मॉडल वास्तविक कोड से गद्य वर्णनों की तुलना में अधिक विश्वसनीय रूप से एंकर करता है, खासकर जब संदर्भ बढ़ता है।
नियमों का रखरखाव और छँटाई
किसी बड़े रिफ़ैक्टर, डिपेंडेंसी अपग्रेड, या फ़ोल्डर स्ट्रक्चर बदलने के बाद नियमों की समीक्षा करें। जो नियम अप्रचलित APIs या हटाई गई फ़ाइलों का संदर्भ देते हैं, वे AI को गलत निर्देश देंगे। बासी ग्लोब और भी चुपचाप विफल होते हैं: app/api/ का नाम बदलकर app/routers/ कर दें और पुराने पाथ पर स्कोप्ड नियम बिना चेतावनी के चलना बंद कर देगा।
छँटाई उल्टी दिशा में भी जाती है। जैसे-जैसे मॉडल बेहतर होते हैं, वे सामान्य परंपराएँ बिना बताए ही पकड़ लेते हैं। यदि AI पहले से किसी नियम के निर्देशों का बिना कहे पालन कर रहा है, तो नियम हटा दें और टोकन वापस पाएँ। एक स्वस्थ नियम-सेट समय के साथ छोटा होता है, केवल बड़ा नहीं।
टीम वातावरण के लिए नियमों का स्केलिंग
नियमों को एप्लिकेशन कोड की तरह ट्रीट करें। बदलाव पुल रिक्वेस्ट के जरिए जाएँ, और .cursor/rules/ में आने से पहले टीम पैटर्न पर सहमत हो।
Business या Enterprise प्लान पर संगठनों के लिए, Team Rules एडमिन्स को Cursor डैशबोर्ड से सभी सदस्यों पर नियम लागू करने देते हैं। "Enable immediately" किसी नियम को डिफ़ॉल्ट रूप से सक्रिय कर देता है, जबकि उपयोगकर्ताओं को उसे बंद करने का विकल्प देता है। "Enforce this rule" ऑप्ट-आउट हटाता है, जो सुरक्षा अभ्यास और अनुपालन आवश्यकताओं जैसी गैर-परक्राम्य परंपराओं को कवर करता है।
निष्कर्ष
उन एक-दो नियमों से शुरुआत करें जिन पैटर्नों को आप सबसे ज़्यादा ठीक करते हैं। यदि आप हर सत्र में AI के एक ही तरह के आउटपुट को एडिट करते रहते हैं (गलत त्रुटि फ़ॉर्मैट, अनावश्यक एब्स्ट्रैक्शन), तो वह एक ऐसा नियम है जिसे लिखा जाना बाकी है। जैसे-जैसे आवर्ती गलतियाँ दिखें, और नियम जोड़ें, और जो भार नहीं खींच रहे, उन्हें ट्रिम करें।
इस ट्यूटोरियल की .mdc फ़ाइलें एक FastAPI प्रोजेक्ट के अनुरूप हैं। आपका सेट Next.js फ़्रंटएंड या Rust CLI टूल के लिए अलग दिखेगा—और यही बात है: ये आपकी टीम की परंपराएँ कूटबद्ध करते हैं, न कि सामान्य सर्वोत्तम प्रथाएँ।
यदि आप Cursor के साथ और गहराई में जाना चाहते हैं, तो हमारा Cursor 2.0 गाइड देखें। अन्य AI कोडिंग असिस्टेंट्स से तुलना के लिए, मैं ये तुलनात्मक लेख पढ़ने की सलाह देता हूँ:
Cursor नियम FAQs
Cursor नियम क्या हैं, और वे कैसे काम करते हैं?
Cursor नियम आपके प्रोजेक्ट में .cursor/rules/ पर संग्रहीत YAML फ्रंटमैटर वाली मार्कडाउन फ़ाइलें हैं। आपके प्रॉम्प्ट के मॉडल तक पहुँचने से पहले, Cursor जाँचता है कि कौन-से नियम मिलते हैं और उनकी सामग्री को context window में सबसे पहले जोड़ता है। प्रत्येक .mdc फ़ाइल में तीन फ्रंटमैटर फ़ील्ड (description, globs, alwaysApply) होते हैं जो यह नियंत्रित करते हैं कि वह कब सक्रिय होगी।
कौन-कौन से प्रकार के Cursor नियम उपलब्ध हैं?
Cursor चार नियम श्रेणियों का समर्थन करता है:
- Project Rules
.cursor/rules/*.mdcमें रहते हैं और git के जरिए साझा होते हैं। - User Rules Cursor Settings में सेट होते हैं और सभी प्रोजेक्ट पर लागू होते हैं।
- Team Rules पेड प्लान पर Cursor डैशबोर्ड से मैनेज होते हैं।
AGENTS.mdप्रोजेक्ट रूट या सबडायरेक्टरी में सादा मार्कडाउन इस्तेमाल करने वाला सरल विकल्प है।
Always Apply, Apply Intelligently, और ग्लोब-स्कोप्ड Cursor नियमों में कैसे चुनें?
प्रोजेक्ट-व्यापी संदर्भ, जैसे आपका टेक स्टैक और फ़ोल्डर स्ट्रक्चर, के लिए alwaysApply: true का उपयोग करें। केवल विशिष्ट फ़ाइल प्रकारों पर लागू होने वाले नियमों के लिए glob पैटर्न (उदा., app/routers/**/*.py) का उपयोग करें। जब नियम फ़ाइल-आधारित के बजाय विषय-आधारित हो, तो विस्तृत विवरण के साथ Apply Intelligently का उपयोग करें। जिन नियमों में इनमें से कोई भी शामिल नहीं है, वे केवल मैनुअल रह जाते हैं और चैट में @rule-name के जरिए लोड होते हैं।
Cursor नियम बातचीत के बीच काम करना क्यों बंद कर देते हैं?
Context window की हालिया-पक्षपात प्रवृत्ति के कारण, बातचीत बढ़ने पर नियम फीके पड़ जाते हैं। मॉडल ऊपर इंजेक्ट की गई निर्देशों की तुलना में हालिया संदेशों को प्राथमिकता देता है। उपाय है पुनर्बलन: जब आउटपुट भटके, तो अपने प्रॉम्प्ट में "प्रोजेक्ट नियमों का पालन करें" जैसी पंक्ति जोड़ें। कोड उदाहरणों वाले छोटे नियम लंबे गद्य वर्णनों की तुलना में इस बहकाव का बेहतर सामना करते हैं।
समय के साथ Cursor नियमों का रखरखाव कैसे करें?
रिफ़ैक्टर, डिपेंडेंसी अपग्रेड, या फ़ोल्डर का नाम बदलने के बाद नियमों की समीक्षा करें। हटाई गई फ़ाइलों या पुराने पाथ का संदर्भ देने वाला नियम गलत निर्देश देगा या चुपचाप चलना बंद कर देगा। साथ ही, जिन नियमों को मॉडल पहले से आत्मसात कर चुका है, उन्हें छाँटें: यदि AI पहले से किसी परंपरा का पालन कर रहा है, तो नियम हटाकर context window टोकन वापस पाएँ।
मैं 2 से अधिक वर्षों के अनुभव वाला डेटा साइंस कंटेंट क्रिएटर हूँ और Medium पर सबसे बड़े फॉलोइंग्स में से एक रखता हूँ। मुझे एआई और एमएल पर विस्तार से लेख लिखना पसंद है, जिसमें हल्का-सा व्यंग्यात्मक अंदाज रहता है—क्योंकि कुछ तो करना पड़ता है ताकि वे कम उबाऊ लगें। मैंने 130 से अधिक लेख और एक DataCamp कोर्स तैयार किया है, और एक और बन रहा है। मेरा कंटेंट 50 लाख से अधिक लोगों ने देखा है, जिनमें से 20 हज़ार लोग Medium और LinkedIn पर फॉलोअर्स बन गए।
