You’re using Cursor rules the wrong way

I spent too much time fixing AI-generated code. After testing different approaches, I found a way to build rules that actually works.

Here’s what made the biggest difference:

  1. Force Cursor in .cursorrules file to follow your .mdc project rules
  2. Keep rules simple and focused. Don’t dump everything into one big file
  3. Create a new rule whenever AI repeats a mistake
  4. Let AI write rules for you. Use meta-rules to automate this
  5. Enable visibility rules to see what’s applied in every AI action

To make understanding easier, I built an interactive course where you can try these approaches in Cursor IDE with real examples. Check it out, it’s free: https://enlightby.ai/#/projects/35

You can also find extension on Visual Studio marketplace: Enlighter for Cursor – Learn Vibe Coding - Visual Studio Marketplace

I’m also looking for ideas for future courses. What topics would you like to learn? What are your biggest pain points in Cursor? Any ideas would be valuable.

6 Likes

cursor rules are deprecated bro!

Also, seems like it’s more or less a complete ripoff of a blog post that was linked on HN recently :stuck_out_tongue: Here is the original article by Geoff Huntley, not packaged as a course: You are using Cursor AI incorrectly...

6 Likes

Only .cursorrules are deprecated, not .mdc rules in .cursor/rules. But .cursorrules still works and forcing Cursor to use .mdc rules there makes the difference. That’s the point!

3 Likes

You can find the reference to this article in my materials. I have read this article and I am applying some of the practices from it. But this is not a rewrite of the article, but my own experience, wrapped in a convenient way for learning by practicing

I was honestly excited about it, until i started feeling like its a scam to get us to install the extension.

The extension has no real value, but most options in the “course” show us this screen and do not allow you to leave until you’ve installed the extension, and gave his domain an “Always Allow” deeplink to your Cursor.

This honestly smells like a scam of some sort, to get his code into your IDE.

We had same observation and wont be using it.
its not that useful in the first place.

(i do not mind to pay for features, but roadblocks for usage and unclear usage guideline at begin make it a non-starter)

1 Like

The value of the extension is its ability to interact with Cursor’s environment, especially the chat. This way, you don’t have to switch between the web version and the IDE. All the elements (buttons, checkboxes, etc) from the web version are interactive in the extension. I’m just trying to create a seamless way to learn new things through practice

Good, then why make it mandatory? The popup blocks the whole screen, leaving the user no choice. And does that every time you click on anything on the “course”. Even the checklist at the end of each lesson.

The webpage is designed in such a way on purpose, and while possible, any other usage is a second class citizen and made harder for no reason. Which makes the whole thing smell fishy.

2 Likes

why make it mandatory?

Because the learning experience is incomplete without practicing. For now I implemented interaction with Chat/Composer but other ways to interact with the environment are on the way.

The popup blocks the whole screen, leaving the user no choice.

I’ll give an ability to get back or close it. It’s just MVP so it has imperfections.

made harder for no reason

The reason is to give learning value and strengthen knowledge by doing. Doing > reading

People can do stuff, without being forced to install an extension. There is ZERO value in having it, and negative value in forcing the readers to have it.

Lets take an example:

Instead of - install extension, click a button to ask the AI if you created a folder - just trust that the reader is able to self-check if they created a folder, and tick a checkbox…

Anyway, great initiative, but the obsession with integrating your website with Cursor (with the goal of replacing human involvement) drives me away, and nothing is going to fix that.

I agree with your stance on doing and reading, but some may not need the interaction and may just want to read the information you gathered. For instance, I use rules extensively and am very familiar with how they work, but I’m still interested in the content because there may be something I could do better or I could be missing.

However, when I saw that in order to continue, I had to use the project, I closed the tab. It isn’t worth the time and effort for me if I’m simply interested in whether there’s new information that could be useful.

Love the design and layout.

1 Like

I’ve got your point. Thank you!

1 Like

I see what you mean.

There is ZERO value in having it, and negative value in forcing the readers to have it.

There is zero value in case of checking if folder exists (btw I don’t suggest user to ask AI if folders exist). But it makes sense in more complex interactions. Today code bases are increasingly being formed in natural language. The process of formulating a solution in natural language is something that already has to be learned. Therefore, examples of how a chain of formulations in natural language forms a solution are valuable.

Anyway, thanks for your feedback. I appreciate it.

I understand your intent, but I would argue that having an extension automates the human interaction - having to copy paste and read the prompt. And on top of that attempts to automate the validation step - having to go back and make sure you did the correct thing.

As such, it isolates the reader away, removes the crucial part of learning/teaching, which is - attention, manual repetition and validation and makes an app/LLM do that instead of the reader.

I’m not saying we should write your prompts 50 times with a feather on papyrus, but there is no benefit in removing the tiny amount of resistance we are left with, such as having to actually read what is written and then copypaste it into the Agent.

So, in my view:

  1. the benefit is not there
  2. actually it is counterproductive
  3. even if it was there - installing an unknown extension into something as private as my code editor smells like a scam.

Kinda gives “place this camera I made in your bathroom, and you’ll never need to have a mirror again, trust” kinda aura.

The point is not just to automate a small amount of manual interaction but to demonstrate techniques, action sequences, and how they work directly within the environment. By the way, current curriculum includes tasks for manually repeating and validating the results.

What do you think would be a better way to organize learning for modern programming approaches? Do you see potential for this practice-oriented way? Maybe not for such experienced users as the ones here

To be honest, I closed the tutorial as soon as I saw that I needed to install a plugin. Thanks for your contribution, but perhaps an article with examples in pure text would be better, also more friendly to AI summaries. :sweat_smile:

I agree with your points, I don’t understand the extension.

However since 0.47 I got rid of the text in .cursorrules to force cursor to fetch rules and I don’t have problems so far. They changed the way rules are applied I think now they have some additional logic that inject rules directly in the system prompt so Claude doesn’t have to manually fetch rules everytime