Cursor · Productivity · Tools

Cursor's Hidden Gems

I was 90 minutes into debugging a race condition when it hit me: I'd been using Cursor for six months and had no idea how to do half the things it could actually do. Here's what I found.

Gabriel Higareda · 6 min read · Development

Most developers use Cursor like it's a smarter autocomplete. They know about code completion and basic chat. Then they wonder why the hype doesn't match reality. The features that actually change how you work are sitting right there in the UI — just undiscovered.

Here's what's actually worth knowing.

The Features

01
Agent Skills

Most people use Cursor like a chat interface. But there's a whole layer beneath it called Agent Skills — portable, version-controlled packages that teach your AI assistant how to perform specific tasks. Write a skill once, version it in git, reuse it forever. Deployment process, testing patterns, code review standards. The skill lives in .cursor/skills/ and Cursor loads it automatically when relevant.

The structure is a SKILL.md file with metadata and instructions, plus optional directories for scripts and templates. No manual tagging. No "hey, remember that thing we talked about three weeks ago?" The agent loads what's relevant, when it's relevant.

02
.cursorrules

Most people never touch this file. They should. A .cursorrules file in your project root tells Cursor how to behave for your specific codebase — permanently, not just for one conversation.

A developer I know had Cursor constantly writing // ... rest of the logic ... instead of completing the code. One line in their rules file fixed it for every conversation after:

# .cursorrules Never replace code with placeholders like // ... rest ... Always include complete, working implementations. # Project overview This is a React Native app targeting iOS and Android. Key files: /src/screens, /src/components, /src/api Core patterns: see /src/components/Button.tsx as canonical example.

The best .cursorrules files are 10–15 lines of actual constraints plus a brief technical overview. You don't write rules preemptively — you use Cursor, notice when it makes the same mistake twice, add one line, and never see that mistake again. The rules compound over weeks.

03
Plan Mode

Press Shift+Tab and instead of jumping straight to code, Cursor pauses and thinks. Plan Mode makes the agent research your codebase, ask clarifying questions, and build a reviewable implementation plan before writing a single line.

You can edit the plan. Remove unnecessary steps. Add context it missed. Then approve it. This sounds like it should slow you down — it doesn't. It eliminates rework. Not every task needs a plan, but for feature work, refactors, or anything architectural, Plan Mode wins. You get a Markdown file that documents the approach and becomes context for the next person on the feature.

04
Context Search — Stop Tagging Every File

Most developers tag every file in their prompt. @file1 @file2 @file3 also check @file4. Stop. Cursor's agent has powerful search tools — grep that finds results in milliseconds and semantic search that understands what you're asking even if the exact words aren't there.

When you ask about "the authentication flow," the agent finds the relevant files through search. Including irrelevant files confuses it about what matters. Tag what you know. Let it find the rest. Also: @Branch orients the agent to your current working branch — "review the changes on this branch" becomes a natural conversation starter.

05
TDD at Agent Speed

Test-driven development with AI agents is different. Better, actually. Write your tests first. Be explicit that you're doing TDD so the agent doesn't create mock implementations. Run the tests, confirm they fail. Then ask the agent to write code that passes all tests — and forbid it from touching the test file.

The agent works best when it has a verifiable target. Tests give it that. It makes changes, runs tests, sees results, adjusts. This is how agents do their best work — not through guessing, but through iteration against clear success criteria.

06
Long-Running Agent Loops with Hooks

For ambitious tasks, configure Cursor to keep working until a condition is met. Set up a hook in .cursor/hooks.json that runs after the agent completes. The hook checks if all tests pass, if a deployment succeeded, if a design mockup matches. If the goal isn't met, the hook sends a follow-up message and the agent keeps working — up to a limit you set.

You describe the goal, set the hook, and it grinds. No human in the loop. No "check back later." This is genuinely different from how most people think about AI-assisted development.

07
Debug Mode for the Unsolvable

Some bugs sit there and mock you. You can reproduce them, you know they're wrong, but the root cause is buried. Debug Mode takes a different approach: instead of guessing, it generates hypotheses. Instruments your code with logging. Asks you to reproduce the bug while it collects data. Analyzes actual runtime behavior. Makes targeted fixes based on evidence.

Works best when you can reproduce the bug and provide detailed steps. The more specific you are, the better the instrumentation. Slower than guessing — but it's diagnostic in a way guessing can never be.

The Pattern Underneath All of It

These features — skills, rules, plan mode, search, TDD, hooks, debug mode — aren't random additions to an IDE. They're the shape of a philosophy about how humans and AI should actually work together.

It's not the AI doing everything while you watch. It's not you doing everything while AI watches. It's a system where you set the context, define the constraints, establish the goals — and the AI navigates toward them. You review. You interrupt if it's wrong. You iterate.

The developers getting the most from Cursor aren't the ones using the fanciest features. They're the ones who understand that specificity beats generality. Small, focused rules beat comprehensive style guides. Planning before building beats fixing after.

Most of these features sit in the UI, waiting. Not hidden. Just uncovered. The productivity gains aren't really from Cursor being smarter — they're from you understanding what you're actually trying to build and giving the tool that information in a form it can use.

Want to Work With Someone Who Uses This Stuff Daily?

I build production-grade software using Cursor, React Native, TypeScript, and Vercel. Top 1% Expert-Vetted on Upwork. I'll tell you within 24 hours if I'm the right fit.

Hire me on Upwork