Using Cursor IDE without overengineering
Cursor is fast enough to tempt you into letting it rewrite half the repo before lunch. That is usually how you end up with a PR you cannot explain and a Tuesday spent reverting.
I use Cursor daily on platform and application work. The features that actually stick for me are not the flashiest demos — they are the ones that reduce context switching while keeping me in charge of what merges.
What I use Cursor for
These are the capabilities I reach for on real tasks:
- Multi-file agent edits when the change has an obvious boundary (new API route, new content collection field, workflow file plus script).
- Chat with codebase context when I am exploring — “where do we filter published posts?” beats grepping cold.
- Integrated terminal so I can run
npm run buildornpm run checkin the same window and paste errors back into the thread. - Project rules (
.cursor/rules/) for constraints that should survive every session — hero image rules, commit preferences, stack-specific gotchas.
What I do not use it for: architecture decisions I have not thought through, mass refactors “while we are here,” or accepting generated code I have not read because the diff is green locally.
The rule I actually follow: one explainable change
Before I merge anything Cursor touched, I ask one question: can I explain this diff in two sentences to future me?
If not, the change is too big. I split it.
That sounds obvious, but agents make large diffs feel free. They are not. Review cost scales with line count, and so does rollback pain.
My default loop:
- State the outcome, not the implementation (“add tags to blog cards,” not “refactor the entire design system”).
- Let the agent work on a focused slice.
- Run the same checks I would run without AI — build, lint, project-specific scripts.
- Read the diff like a colleague wrote it at 4:59 PM on a Friday.
Cursor works best as a force multiplier on discipline I already had, not a substitute for it.
Rules and skills: enough structure, not a framework
It is easy to over-build Cursor configuration — dozens of rules, custom skills for every folder, agents for agents.
I keep it boring:
- A few high-value rules tied to globs that matter (
src/content/blog/**, workflow files, contact form routes). - Skills only when the official docs or a workflow is long and easy to get wrong (SDK integrations, PR automation).
- No rule for things the codebase already enforces (
npm run blog:check-heroes, TypeScript, CI).
Rules should encode decisions already made, not aspirational process. “Do not deploy unless asked” is useful. “Always be thoughtful about quality” is noise.
If a rule has not prevented a real mistake after two weeks, I delete it.
Agents vs inline edits: pick the cheaper tool
Not every task deserves an agent run.
| Situation | What I use |
|---|---|
| Rename a prop, fix a typo, adjust copy | Inline edit or small chat selection |
| Add a page plus styles plus one lib helper | Agent with a clear file list |
| Debug a failing check | Chat + terminal; agent only if the fix spans several files |
| Recurring automation (scheduled blog PR) | Agent in CI via API — but human reviews the PR |
Agents shine when the work is parallelizable (many files, same pattern). They are overhead when the work is one file and one decision.
When I catch myself opening agent mode for a ten-line fix, I stop. That is overengineering in a IDE-shaped hat.
How this shows up on mayfield.io
This site is a concrete example of keeping Cursor useful without letting it sprawl:
- Astro content, Cloudflare Workers, and GitHub Actions are fair game for agent-assisted PRs.
- Deploy to production stays manual — automation opens PRs; I merge and ship when the diff looks right.
- Blog heroes, SEO shape, and publish rules live in repo rules so daily automation does not re-learn them every run.
That split — automate drafting, human gate on merge — is the same pattern I use on work repos, just at personal-site scale.
When Cursor makes things worse
A short list I revisit when a session feels off:
- Accept-all fatigue — merging generated code because the prompt was long and the diff is wide.
- Context drift — the agent “fixes” something unrelated because the prompt was vague.
- Skipping local verification — green chat summary is not a green build.
- Replacing reading — I still open the files. Generated code can be plausible and wrong.
When any of those show up, I shrink the task or stop for the day. More prompt engineering is rarely the fix; smaller scope is.
A sane default for teams and solo work
If you are adopting Cursor on a team repo, you do not need a 40-page playbook. Start with:
- Small PRs from AI-assisted work, same as human-written work.
- One or two rules for non-negotiables (secrets, deploy, test commands).
- Required checks in CI that do not care who wrote the code.
- Explicit “do not touch” zones in prompts when the agent should stay out of infra or auth.
Solo or team, the goal is the same: faster iteration, same bar for merge.
For the pre-ship habit stack that pairs well with this — build checks, secrets, and not trusting localhost vibes — see Checklist before shipping a small personal site. For keeping GitHub identity and config sane across machines when you are bouncing between personal and work repos, Manage multiple GitHub orgs with workspace-specific .gitconfig is the companion read.
Hero image: Cat on laptop - Just Browsing, licensed CC BY 2.0.