Cursor Rules don't take effect, usually not because the Cursor isn't reading, but because the rule type, path range, or trigger method isn't paired. First, check whether your rules are Always, Auto Attached, Agent Requested, or Manual, and then see if the file is in '.cursor/rules'.
First distinguish between the four types of rules
Always is brought every time, suitable for very short global conventions, such as "look at existing implementations before answering". Auto Attached needs to match the file path, which is suitable for the frontend, backend, and test directory to set rules separately. Agent Requested needs to be clearly described so that the agent can decide whether to call it or not. Manual requires you to explicitly mention the rule name in the conversation.
Many people write the rule as Manual, thinking it will take effect automatically; Or write Auto Attached, but globs doesn't match the current file, so naturally it looks useless.
Path location is also critical
Project rules should be placed under '.cursor/rules'. Subdirectories can also have their own rule directories that are used to locally constrain a piece of code. The old '.cursorrules' will still work, but it is more recommended to move to Project Rules because it controls the scope and how it is triggered.
If you put a rule in a normal document directory, Cursor will not automatically use it as a rule. Either through a rule system, or reference a specific file with '@' in the chat.
How to verify quickly
Create a new short Always rule that requires the agent to list "which files will be read" when replying to the plan. Then open a new conversation and let it handle small tasks. If it complies, it means that the rule system is normal; The problem is that your original rule is too long, the type is wrong, or the path doesn't match.
Check again if Active rules are displayed in the Agent sidebar. It is not displayed, basically it is not triggered.
Write rules don't look too much like a wish list
The rule of "writing high-quality code, paying attention to performance, and being safe and reliable" is weak. Change to specific actions: "Search for components with the same name before modifying; The new interface must be supplemented with the Zod schema. Do not create a second set of request packages. "The more rules are developed within the team, the easier it is to take effect.
Conclusion: Cursor Rules should be written in a trigger way, not crammed into a long file. Select the right type first, then control the path, and finally verify it with a small task.