Cursor
lastmod 2025-11-04created 2025-01-0833 edits
The AI Code Editor
Categories
- Vibe coding
- Void - Open-source code editor project as an alternative to Cursor
- Cursor Directory - List of Cursor Rules and MCP Servers
- Cursor CLI
- SuperDesign - AI design agent used inside the IDE
- Composer (AI Agent) - Fast frontier model built with reinforcement learning
GNOME Desktop Icon
Add it with vi ~/.local/share/applications/Cursor.desktop.
[Desktop Entry]
Name=Cursor
Comment=AI-powered code editor
GenericName=Text Editor
Exec=/home/zer0/Applications/Cursor-1.1.6-x86_64.AppImage %F
Icon=Cursor
Type=Application
StartupNotify=true
StartupWMClass=cursor
Categories=Development;IDE;
MimeType=text/plain;inode/directory;
Actions=new-empty-window;
Keywords=cursor;editor;development;ai;
Terminal=false
[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/home/zer0/Applications/Cursor-1.1.6-x86_64.AppImage --new-window %F
Icon=Cursor
Update the icon file with gtk-update-icon-cache
Then update.
MCP Settings
Sequential Thinking
Integration with Ollama
Follow these two items:
- Do not leave the "OpenAPI Key" field in Cursor empty; enter anything.
- Add the
OLLAMA_ORIGINS="*"environment variable when running Ollama.
Ollama is built so that it can be called in OpenAI API Key style, but the api key itself is not actually needed.
Rules
Memory Bank
TODO List
Finishing side projects with LLMs and Cursor
- Took on an Engineering Manager role about 5 years ago, so writing code directly in the main job decreased
- Outside of work, steadily works on personal projects to keep programming instincts and sharpen technical skills
- In the past, time constraints made project progress slow, and projects were often abandoned before completion
- However, in 2024, built the habit of building and deploying needed tools relatively quickly and 'finishing' a first version
Examples of recently finished side projects
- jsonplayground.com : A JSON formatter that also provides JQ functionality running inside the browser (using WebAssembly), so data is not sent outside
- webtomarkdown.com : Converts files to Markdown or extracts parts of websites as Markdown so they can be passed to an LLM as context
- Draft design improvements for the flying club page Evergreen Soaring
- Built a Chrome extension to automate responses to messages sent to the flying club
- fitinterval.com : Provides an interval timer for workouts
Background on using LLMs and the Cursor IDE
- LLMs greatly increase side project productivity
- In particular, using LLMs for coding through the Cursor IDE is convenient
- This post shares the overall flow of creating a new project, aiming to help readers try applying it
- LLMs are not useful in every area, so you have to try them yourself and choose where to apply them
Example project: habit tracking website
- Wants to recreate the habit tracking app currently in use as a website
- All data is stored on the local device, with user privacy in mind
Starting the spec
- First gives ChatGPT a brief description, then refines the application spec while answering its follow-up questions
- Once it is reasonably concrete, asks it to organize the spec 'so that someone else could build the whole app from this spec alone'
- States the intent to use TypeScript, React, and Tailwind CSS so the spec is generated based on those technologies
- Keeps the final spec in SPEC.md for reference during later development
Bootstrapping the project
- Uses Vite to quickly set up the project skeleton
- Does the initial setup with the npm create vite@latest . command and puts SPEC.md in the project folder
- Uses the agent feature in the Cursor IDE's Composer to automate Tailwind setup, basic file edits, and so on
- This way, first-pass features such as the expected UX layout, local storage use, and Markdown export are implemented in a short time
Iterating in small units
- Rather than requesting too many features at once, splits the needed improvements and asks the LLM for updates one by one
- For example, splits UX changes, bug fixes, etc. into small pieces and gives instructions in Chat or Composer mode
- Attaches images to Chat to describe the desired design and asks the LLM to implement it in code
Setting up continuous deployment
- Using GitHub Actions, sets it up so that when a commit is pushed to the main branch, it builds automatically and deploys to GitHub Pages
- In Cursor, provides a link to an example .yml file from another repo so the LLM can reference it to build the deployment pipeline
Overall tips
- First organize the project overview and details with an LLM and save them for later context
- Bootstrap and structure the project using tools or open-source templates
- Set up essential development tools and the directory structure all at once and follow a manageable project pattern
- Use o1 for broad drafting (first draft)
- About 80% of the specific editing and refinement work is done with Claude-3.5-Sonnet
- Chat: use when changes are needed at a specific location and you need to check the result of each edit
- Composer (normal): when adding features across multiple files or multi-file changes are needed
- Composer (agent): not used much yet, but for when automated work such as running commands, lint, and repeated fixes is needed (though tends to manage it split into small units)
- If needed, set Chat mode to query the entire codebase so the LLM searches for and suggests code that fits the context
- Maintain code quality and structure so that situations where the LLM cannot debug do not arise
- Keep splitting work into small units, and use the LLM for refactoring or module separation when needed
Wrap-up
- If you quickly finish a project this way and make a deployed version, it becomes much easier to restart even after a short break
- The habit of finishing small keeps momentum going, and you can get motivation by quickly seeing small results
How to use Cursor properly
- Github - EnzeD/vibe-coding - Ultimate Guide to Vibe Coding V1.1
- 12 ways to use Cursor properly | GeekNews
Used well, Cursor produces fast, clean code. Used wrong, Cursor produces AI spaghetti code that you have to clean up all week. Here is how to use Cursor properly.
- Set 5-10 clear Project Rules so Cursor understands the structure and constraints. For an existing codebase, try /Generate Cursor Rule.
- You can set Project Rules by going to Cursor > Setting > Cursor Settings.
- If you type a slash (/) in the Cursor chat, there is /Generate Cursor Rules. With it, Cursor generates Rules based on the conversation so far.
- Cursor Rules official documentation (link)
- Cursor provides the .cursorignore feature, which can prevent Cursor from editing test case files. (link)
- If you put files as MD files in the .cursor folder, they are applied as project-global rules.
- Cursor uses the user's edits as context. (link)
- In Cursor, you can add previous chat history as context.
- You can index the codebase so Cursor gives better answers. Generally, Cursor indexes all files in the codebase. (link)
How to use Cursor (+ best tips)
- [How to use Cursor (+ best tips) translated post | GeekNews]
Recently, many developers do most of their coding with just Cursor's agent input box, and the author also handles 80% this way
- Using YOLO mode: the AI automatically keeps fixing until the build or tests pass
- Reportedly "yolo mode" has been renamed to "auto run mode".
Cursor users' top 3 preferred language models and why
gpt-4.1
- Behaves like an intelligent, highly reliable assistant
- Does not jump to conclusions; follows requests but does not make excessive changes
- A model that feels like an extension of the developer, especially suited to experienced developers
gemini 2.5 pro
- Powerful when using wide context such as long console logs and entire code files
- Excellent image analysis ability, can catch visual errors
- The drawback is that it can act too autonomously, causing unnecessary code deletion or over-editing
- Requires careful control
sonnet 3.5 / 3.7
- 3.7 is creative and smart, but sometimes loses context or ignores instructions in long conversations
- 3.5 is strong at understanding and editing code based on a single file
- Its integration with Cursor is not showing consistent performance due to transitional issues
Other opinions and strategies
- grok-3-beta is slow but useful for solving problems other models failed on
- One user uses the following model division-of-labor strategy:
- o3/4-mini: organizing plans and Markdown-based reasoning
- gemini 2.5 pro: for whole-file-based problem analysis and function calling
- sonnet 3.5: for cmd+k-based single-file edits
See also
- VSCode
- Mouse pointer
- Vibe Coding
- Windsurf (formerly Codeium)
- Nao - Cursor for data
- OnLook - Cursor for designers
- Kiro - A new agentic IDE
Favorite site
- Cursor - The AI Code Editor
- PatrickJS/awesome-cursorrules - 📄 A curated list of awesome .cursorrules files
- Using Cursor daily - how I avoid the problems | GeekNews
- [Original] I use Cursor daily - here's how I avoid the garbage parts
- Set rules that fit your tech stack -> pick the best rules from the Cursor Rules collection
- [Original] Ask HN: Cursor or Windsurf? | Hacker News
Articles
- Reverse engineering Cursor's LLM client | GeekNews
- [Original] Reverse Engineering Cursor's LLM Client · TensorZero
- Shares the experience of using TensorZero as an open-source proxy to intercept and analyze traffic between Cursor and LLM providers (OpenAI, etc.), and to observe prompts, models, and inference results in real time and run optimization experiments
- Cursor can override the Base URL and model name when calling LLMs, so your own proxy (TensorZero) integrates easily
- Internally, Cursor calls LLMs through its own servers, so a full proxy setup requires an Ngrok + Nginx reverse proxy and CORS header configuration
- Through the proxy, you can observe everything Cursor actually sends to the LLM, including the system prompt, user prompt, and inline code edit requests, and you can switch/experiment with various LLMs (A/B testing) in real time
- Analysis of Cursor's system prompt shows that with a prompt of only about 642 tokens, the LLM understands and handles most software engineering contexts. Code editing is handled by a separate "apply model" (a less intelligent auxiliary model)
- With a proxy structure like TensorZero, per-user customized LLM experiments and feedback-based optimization are possible, and this structure is ideal for quality evaluation of code assistant tools (A/B testing), prompt optimization, and real-world usage monitoring
Pages that link here