I treated Cursor like fancy autocomplete for a while. Sometimes great, often weird. The difference turned out to be boring stuff: which files were open, whether the repo had rules, and how specific my prompts were.
Open the right files first
Cursor reads your open tabs, recent edits, and folder structure. Before you ask it to build something, open the file it should copy. A similar component, the data layer, a test. @-mention files when you need them explicitly. If the model can't see how you already write code, it will invent its own style.
- Open the closest existing example before you prompt.
- Keep related files in tabs during a session.
Write rules that match how you ship
Project rules (.cursor/rules or AGENTS.md) were the highest-ROI setup step for me. Put in the things a senior dev would repeat on every PR: naming, test expectations, commit format, folders that are off limits, how you like components structured.
# Example rule snippet
- Match existing import style and file layout
- Prefer small, focused diffs over rewrites
- Never commit .env or credentials
- Use data/ for content, app/_comps for UIGood rules cut review churn. The model stops suggesting patterns you'd reject anyway.
Prompt with actual constraints
"Add auth" gets you generic auth. Try: "Add email/password login using our existing Button and form patterns, store session in httpOnly cookie, add /login with the same layout as /signup." Constraints help. On big changes, ask for a plan first, then implement in steps.
Use Agent mode for multi-file work
Chat is fine for a single file. Agent mode is what I use when routing, components, types, and tests all need to move together. Let it explore, but steer. Approve file reads, cut scope when it wanders, interrupt when it starts refactoring things you didn't ask for.
Still read the output
The speed gain only holds if the code is still yours. Skim for hallucinated APIs, wrong env assumptions, duplicated logic. Run the app. Run tests. AI-assisted coding falls apart when you stop reviewing.
At its best, Cursor feels like a fast teammate who already knows the repo because you showed it how you work.