For me, code generation is actually one of the smaller use cases.
The biggest unlock has been treating Cursor like a junior engineer (or a minion XD) that has access to my entire codebase.
A few workflows that work really well:
• Refactoring across multiple files. I’ll ask Agent to trace a feature end-to-end, propose a refactor plan, then execute it across backend, frontend, tests, and docs.
• Debugging production issues. I paste the error, ask Cursor to find all relevant code paths, generate hypotheses, and suggest the most likely root cause before changing anything.
• Architecture discussions. Before writing code, I often ask Cursor to compare 2-3 approaches, explain tradeoffs, and generate an implementation plan. This usually saves more time than code generation itself.
• Understanding unfamiliar codebases. I’ll ask things like “Explain how authentication works from login request to database” or “Trace how a payment is processed.” The codebase indexing is incredibly useful here.
• Large feature implementation. Instead of “build X”, I first ask for a task breakdown, review the plan, then let Agent implement it step-by-step. The results are much more reliable.
• PR reviews with Bugbot. This is probably one of my favorite newer workflows. Bugbot often catches edge cases, regressions, missing validations, and weird logic issues before another engineer even looks at the PR.
• Automations. I use Cursor’s automations to run repetitive engineering tasks in the background. Things like reviewing changes, checking project health, validating patterns, and reducing the amount of manual engineering work I have to do.
Rules have also made a huge difference. Some of the most useful ones I’ve used are:
• Prefer existing patterns before creating new abstractions.
• Reuse existing components whenever possible.
• Keep solutions simple and avoid over-engineering.
• Follow project folder structure and naming conventions.
• Explain major architectural decisions before implementing them.
• Write tests for critical business logic.
One thing I’ve learned: the better the context and constraints, the better the output. I spend more time describing the problem and desired outcome than reviewing generated code.
Interestingly, I now use Cursor more for planning, debugging, codebase navigation, refactoring, PR reviews, and automation than for writing code from scratch.