The Cursor habit that pays off most: after every session, spend 2 minutes updating your rules with what you had to correct. Your agent gets better every week without changing models.
When Cursor's output surprises you, ask why before you undo it: "Why did you change this file?" Sometimes it caught something you missed. Sometimes it reveals the misunderstanding you need to fix in the prompt.
Before/after in Cursor:
Before: "add caching"
After: "add an in-memory TTL cache to getUser in @src/users.ts, 60s TTL, invalidate on updateUser, add tests for hit/miss/invalidate, run them"
Same model. Wildly different result.
Agentic coding isn't "type a wish, get an app". It's delegation. Good delegation = clear goal, context, constraints, definition of done. Same skills as managing a junior dev, faster feedback loop.
Cursor tip: use Ask mode to learn an unfamiliar codebase before touching it. "Walk me through what happens when a user logs in, with file references." Then switch to Agent with real understanding.
Big refactor in Cursor? Break it into steps you can verify: rename → move → change signatures → update callers. One commit per step. Agents are great at small verified steps and shaky at giant leaps.
Mistake I see a lot: letting Cursor "fix" a failing test by editing the test. Say it explicitly in your rules: tests define behavior; change code, not tests, unless asked.
Ask the Cursor agent to leave a short summary at the end: what changed, why, what it didn't do, what you should check. It makes reviewing 10x faster and surfaces silent shortcuts.
Cursor workflow that scales: agent writes code → you review the diff → agent writes the tests → agent runs them → you review again. Two review gates, zero blind merges.
Add @docs for the libraries you use in Cursor. Agents confidently write last year's API. Giving it the current docs is the cheapest fix for hallucinated methods.
Keep your Cursor rules short and specific. 20 sharp lines the agent actually follows beat 300 lines of philosophy it skims. If a rule never changes behavior, delete it.
Cursor tip for bug fixes: paste the full error and stack trace, not "it's broken". The agent is excellent at following a stack trace. It is terrible at guessing which of 12 things you meant.
Auto-run in Cursor is great, but curate the allowlist. Tests, linters, type checks: yes. Anything that deploys, deletes or pushes: keep a human click in the loop.
When the Cursor agent is stuck in a fix-break loop, stop it. Ask: "What are the possible root causes? Rank them. Don't edit yet." Diagnosis first breaks the loop almost every time.
Tell Cursor what NOT to do. "Don't add dependencies. Don't change public APIs. Don't touch migrations." Constraints prevent more bad diffs than instructions do.
Inline edit (Cmd/Ctrl+K) vs Agent in Cursor:
small, local change you can see → inline edit
multi-file change, needs to run things → agent
Using the agent for a one-line rename is slower, not smarter.
Prompt pattern that works in Cursor: "First, explain how X currently works and list the files involved. Don't change anything." Check the explanation. If it's wrong, the code would've been wrong too.
Underused Cursor feature: MCP servers. Hook up your database, your issue tracker, your docs, and the agent stops guessing about things it can now just look up.