Skip to content

Cursor

The AI Code Editor

Categories

GNOME Desktop Icon

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

아이콘 파일은 gtk-update-icon-cache 으로 업데이트

그리고 업데이트 한다.

update-desktop-database ~/.local/share/applications/

MCP Settings

Sequential Thinking

Ollama 와 연동

다음 두 가지 항목을 지키자:

  • Cursor의 "OpenAPI Key" 항목을 비우지말고 아무거나 적기.
  • Ollama 실행시 OLLAMA_ORIGINS="*" 환경변수 추가.

Ollama에서는 OpenAI API Key 형태로 호출할 수 있게 만들어뒀으나, 실제로 api key 자체는 필요없다.

docker run -e OLLAMA_ORIGINS="*" {OLLAMA_IMAGE}

Rules

메모리 뱅크

TODO List

LLM과 Cursor로 사이드 프로젝트 완성하기

  • 약 5년 전부터 Engineering Manager 역할을 맡게 되어, 주 업무에서 직접 코드를 작성할 일은 줄어듦
  • 업무 외에도 개인 프로젝트를 꾸준히 진행하며 프로그래밍 감각을 유지하고 기술력을 다짐
  • 과거에는 시간 제약으로 프로젝트 진행이 느리고 완성 전에 중단되는 경우가 많았음
  • 하지만, 2024년엔 비교적 빠른 속도로 필요한 도구를 만들고 배포해 처음 버전을 ‘완성’하는 습관을 갖추게 됨

최근 완성한 사이드 프로젝트 예시

  • jsonplayground.com : JSON 포매터이면서, 브라우저 내부에서 실행되는 JQ 기능(웹어셈블리 활용)을 제공해 데이터를 외부로 보내지 않음
  • webtomarkdown.com : 파일을 Markdown으로 변환하거나 웹사이트 일부를 Markdown 형태로 추출해 LLM에 맥락으로 전달할 수 있게 만듦
  • 항공 클럽 페이지 Evergreen Soaring의 디자인 개선 초안
  • Chrome 확장 프로그램을 제작해 항공 클럽으로 오는 메시지 대응을 자동화함
  • fitinterval.com : 운동 시 간격 타이머 기능을 제공함

LLM과 Cursor IDE 활용 배경

  • LLM이 사이드 프로젝트 생산성을 크게 높여줌
  • 특히 Cursor IDE를 통해 LLM을 코딩 작업에 활용하는 과정이 편리함
  • 이 글에서는 새로운 프로젝트를 만드는 전반적 흐름을 공유해, 독자들이 적용해볼 수 있도록 도움을 주고자 함
  • LLM이 모든 영역에서 유용한 것은 아니므로, 직접 사용해보며 어디에 적용할지 선택해야 함

예시 프로젝트: 습관 추적 웹사이트

  • 현재 사용하는 습관 추적 앱을 웹사이트 형태로 재현하고 싶어함
  • 모든 데이터는 로컬 기기에 저장되어, 사용자 프라이버시를 고려함

스펙 구상 시작

  • 먼저 ChatGPT에 간단한 설명을 한 뒤, 추가 질문을 받아 가며 애플리케이션 스펙을 구체화함
  • 어느 정도 구체화가 되면, ‘다른 사람이 이 스펙만 보고 전체 앱을 만들 수 있을 정도’로 정리해 달라고 요청함
  • TypeScript, React, Tailwind CSS 사용 의도를 명시해 해당 기술 기반 스펙을 생성함
  • 최종 스펙을 SPEC.md에 보관해 이후 개발 과정에서 참조함

프로젝트 부트스트랩

  • Vite를 사용해 프로젝트 골격을 빠르게 마련함
  • npm create vite@latest . 명령으로 초기 설정을 하고, SPEC.md를 프로젝트 폴더에 넣어둠
  • Cursor IDE의 Composer에서 에이전트 기능을 사용해 Tailwind 설정, 기본 파일 수정 등을 자동화함
  • 이렇게 하면 예상 UX 레이아웃, 로컬스토리지 사용, Markdown 내보내기 기능 등 1차 기능이 단시간에 구현됨

작은 단위로 반복 작업

  • 한 번에 너무 많은 기능을 요청하기보다는 필요한 개선 사항을 나눠서 LLM에게 순차적으로 업데이트를 요청함
  • 예를 들어, UX 변경, 버그 수정 등을 작게 분리해 Chat이나 Composer 모드로 지시함
  • 이미지를 Chat에 첨부해 원하는 디자인을 설명하고, 이를 코드로 구현하도록 LLM에 요청함

지속적 배포 설정

  • GitHub Actions를 참고해, main 브랜치에 커밋이 올라가면 자동 빌드 후 GitHub Pages에 배포하도록 설정함
  • Cursor에서 다른 레포의 예시 .yml 파일을 링크로 제공해 LLM이 이를 참조하도록 하여 배포 파이프라인을 구성함

종합 팁

  • LLM으로 프로젝트 개요 및 세부 사항을 먼저 정리해 두고, 추후 컨텍스트용으로 저장
  • 도구나 오픈 소스 템플릿을 사용해 프로젝트 부트스트랩 및 구조 설정
    • 필수적인 개발 도구와 디렉터리 구조를 한꺼번에 마련하고 관리 가능한 프로젝트 패턴을 따름
  • Cursor Composer(에이전트 모드) 등을 사용해 프로젝트를 빠르게 시작
  • Claude-3.5-Sonnet과 o1(모델)을 혼합해 사용
    • 광범위한 초안 작업(1차 드래프트)에 o1을 활용
    • 약 80% 정도는 Claude-3.5-Sonnet으로 구체적인 수정·보강 작업을 진행
  • 적절한 모드 선택 (Chat, Composer 일반, Composer 에이전트)
    • Chat: 구체적인 위치에 변경이 필요하고, 수정 결과를 매번 확인해야 할 때 사용
    • Composer(일반): 여러 파일에 걸친 기능 추가나 멀티파일 변화가 필요한 경우
    • Composer(에이전트): 아직 많이 쓰지 않지만 명령어 실행, lint, 반복 수정 등 자동화된 작업이 필요할 때 (단, 작은 단위로 구분해 관리하는 편)
  • 컨텍스트 제공 시, 구체적인 파일·문서·링크 등을 함께 전달
    • 필요한 경우 Chat 모드에서 전체 코드베이스를 조회하도록 설정해, LLM이 컨텍스트에 맞는 코드를 검색하고 제안하도록 함
  • 프로젝트 관련 문서를 Markdown 형식(SPEC.md 등)으로 저장해두고, 컨텍스트으로 포함 가능
  • 프로젝트 폴더에 .cursorrules 파일 활용
    • 특정 라이브러리를 쓰지 않도록 지시하거나, Tailwind, shadcn 컴포넌트 라이브러리 강제 사용 등
    • 이처럼 prompts에 반영하고 싶은 규칙을 미리 정의하면, 대부분의 요청에서 원하는 방향으로 결과를 유도 가능
  • 코드를 전체적으로 이해하면서 작업할 것
    • LLM이 디버깅을 못 하는 상황이 발생하지 않도록, 코드 품질과 구조 유지
    • 작업을 계속 작은 단위로 나누고, 필요 시 LLM을 활용해 리팩터링이나 모듈 분리를 진행

마무리

  • 이 같은 방식으로 프로젝트를 신속히 마무리해 배포 버전을 만들면, 잠시 쉬더라도 다시 시작하기 훨씬 수월해짐
  • 작게 완성하는 습관이 동력을 유지하게 해주고, 작은 성과를 빠르게 확인하며 동기부여를 얻을 수 있음

커서를 제대로 사용하는 방법

Cursor를 잘 사용하면 빠르고 깔끔한 코드가 생성됩니다. Cursor를 잘못 사용하면 일주일 내내 정리해야 하는 AI 스파게티 코드가 생성됩니다. 여기 Cursor를 제대로 사용하는 방법입니다.

  • 5-10개의 명확한 Project Rules을 설정해, 커서가 구조와 제약조건을 이해하게 하세요. 기존 코드 베이스에는 /Generate Cursor Rule을 사용해 보세요.
    • Cursor > Setting > Cursor Settings로 접근하면 Project Rules를 설정할 수 있습니다.
    • Cursor 채팅에 슬래시(/)를 입력하면, /Generate Cursor Rules가 있습니다. 이를 이용하면 Cursor가 이제까지 진행한 대화를 기반으로 Rules를 생성해줍니다.
    • Cursor Rules 공식 문서 (링크)
  • 명확한 프롬프트를 작성하세요. 기술 스택, 동작, 제약 조건 등 간단한 명세서처럼 자세히 설명하세요.
  • 파일별로 작업하세요. 작고 집중된 단위에서 코드를 생성하고, 테스트하고, 검토하세요.
  • 테스트 케이스를 먼저 작성하고, 고정하고, 모든 테스트를 통과할 때까지 코드를 생성하세요.
    • Cursor는 .cursorignore 기능을 제공해, Cursor가 테스트 케이스 파일을 편집할 수 없도록 할 수 있습니다. (링크)
  • AI 출력을 항상 검토하고 문제가 있는 부분은 직접 수정한 후, Cursor에게 수정된 코드를 예시로 사용하도록 알려주세요.
  • @file, @folder, @git 명령어를 사용하여 Cursor가 코드 베이스의 올바른 부분을 볼 수 있도록 해주세요.
  • 설계 관련 문서(디자인 문서)와 작업 요구 사항(체크리스트)를 .cursor 폴더에 보관해, AI가 다음에 무엇을 해야할지 완전히 이해할 수 있게 하세요.
    • .cursor 폴더 안에 MD 파일로 파일을넣으면, 프로젝트 글로벌 룰로 적용이 됩니다.
  • 코드가 잘못 되었다면, 직접 작성하세요. Cursor는 설명보다 수정에서 더 빠르게 배웁니다.
    • Cursor는 유저가 편집한 내용을 컨텍스트로 이용합니다.(링크)
  • 채팅 기록을 사용하여 처음부터 다시 시작하지 않고 이전 프롬프트를 반복할 수 있습니다.
    • Cursor에서는 이전 채팅기록을 맥락으로 추가하는 것이 가능합니다.
  • 모델을 의도적으로 선택하세요. 정밀함(precision)이 필요하다면 Gemini를, 폭넓은 이해(breadth)가 필요하다면 Claude를 선택하세요.
  • 새롭거나 익숙하지 않은 기술 스택에서는 문서 링크를 붙여넣으세요. Cursor에게 모든 오류와 수정 사항을 줄 별로 설명하도록 요청하세요.
  • 큰 프로젝트는 밤새 인덱싱하게 하고 컨텍스트 범위를 제한하여 성능을 좋게 유지하세요.
    • Cursor가 더 나은 답변을 하도록 코드베이스를 인덱스 할 수 있습니다. 일반적으로 Cursor는 코드베이스의 모든 파일을 인덱싱합니다.(링크)
  • (지금은) 구조화와 제어가 핵심입니다

Cursor 사용 방법 (+ 최고의 팁)

최근 많은 개발자들이 Cursor의 에이전트 입력창만으로 대부분의 코딩을 진행하며, 본인도 80%를 이렇게 처리함

  • YOLO 모드 활용: 빌드나 테스트가 통과할 때까지 AI가 자동으로 반복 수정함
    • "yolo mode" -> "auto run mode" 로 바뀌었다함.
  • 복잡한 작업 다루기: TDD 기반 프롬프트를 통해 고난이도 작업도 반복 자동화 가능
  • Cursor와 같이 UI 디자인하기: Builder.io 등을 통해 가능
  • 타입스크립트 오류 자동 수정: 빌드 오류를 반복적으로 고치고 확인하는 작업을 Cursor에 맡기기
  • 로그 기반 디버깅과 반복적 수정: 로그 추가하라고 지시후 그걸 활용해 문제를 해결하라고 한뒤 반복
  • Command K / Command I 단축키 사용: 선택한 코드를 대상으로 빠르게 수정가능
  • 커밋 메시지 자동 생성: 자동으로 요약된 커밋 메시지를 생성 가능
  • 버그 탐색기: 최근 변경 사항 기반으로 잠재적인 버그를 탐지할 수 있음

Cursor 사용자들의 선호 언어 모델 TOP 3 및 그 이유

  • Cursor 사용자들의 선호 언어 모델 TOP 3 및 그 이유 | GeekNews
  • gpt-4.1은 신중하고 충실한 조력자로, 정확한 코드 이해와 보수적 접근에 강점이 있음
  • gemini 2.5 pro는 넓은 컨텍스트 처리에 뛰어나고 이미지 분석 기능도 우수하지만, 과잉 수정을 유발할 위험성이 있음
  • sonnet 3.5/3.7은 창의적이고 똑똑하지만, 맥락 유지와 일관성이 부족해 장기 대화에서 흔들림이 있음
  • grok-3-beta는 느리지만 디자인 시각화와 복잡한 문제 해결에서 탁월한 잠재력을 보임
  • 사용자들은 작업 흐름에 따라 모델을 분리하여 사용하며, 디버깅 실패 시 체크포인트 복원 및 모델 전환 전략을 선호함

gpt-4.1

  • 지능적이고 신뢰도 높은 보조자처럼 행동함
  • 성급히 판단하지 않고, 요청을 따르되 과도한 수정은 하지 않음
  • 개발자의 연장선처럼 느껴지는 모델로, 경험 많은 개발자에게 특히 적합함

gemini 2.5 pro

  • 긴 콘솔 로그, 전체 코드 파일 등 넓은 문맥을 활용할 때 강력함
  • 이미지 분석 능력 탁월, 시각적 오류 포착 가능
  • 단점은 지나치게 자율적으로 동작해 불필요한 코드 삭제 또는 과잉 수정을 일으킬 수 있음
  • 주의 깊은 제어가 필요함

sonnet 3.5 / 3.7

  • 3.7은 창의적이고 똑똑하지만, 장기 대화에서 맥락을 잃거나 지시를 무시하는 경우 있음
  • 3.5는 단일 파일 기반의 코드 이해 및 수정에 강함
  • Cursor와의 통합이 과도기적 문제로 일관성 있는 성능을 보여주지 못하고 있음

기타 의견 및 전략

  • grok-3-beta는 느리지만 다른 모델이 실패한 문제를 해결하는 데 유용함
  • 한 유저는 다음과 같은 모델 분업 전략을 사용 중:
    • o3/4-mini: 계획 정리 및 마크다운 기반 사유 정리
    • gemini 2.5 pro: 전체 파일 기반 문제 분석 및 기능 호출용
    • sonnet 3.5: cmd+k 기반 단일 파일 수정용

See also

Favorite site

Articles

  • Cursor의 LLM 클라이언트 리버스 엔지니어링 하기 | GeekNews
    • [원문] Reverse Engineering Cursor's LLM Client · TensorZero
    • TensorZero를 오픈소스 프록시로 활용해, Cursor와 LLM 제공자(OpenAI 등) 사이의 트래픽을 가로채 분석하고, 프롬프트·모델·추론 결과를 실시간으로 관찰 및 최적화 실험한 경험 공유
    • Cursor는 LLM 호출 시 Base URL과 모델명을 오버라이드할 수 있어, 자체 프록시(TensorZero)를 손쉽게 연동 가능
    • 내부적으로 Cursor는 자체 서버를 거쳐 LLM을 호출하므로, 완전한 프록시 구성을 위해 Ngrok + Nginx 리버스 프록시 및 CORS 헤더 세팅이 필요함
    • 프록시를 통해 Cursor가 실제로 LLM에 보내는 system prompt, user prompt, 인라인 코드 편집 요청까지 모두 관찰 가능하며, 다양한 LLM(A/B 테스트)로 실시간 전환/실험이 가능
    • Cursor의 system prompt 분석 결과, 불과 642 토큰 정도의 프롬프트만으로 대부분의 소프트웨어 엔지니어링 문맥을 LLM이 이해·처리함. 코드 편집은 별도의 "apply model"(덜 지능적인 보조 모델)이 담당
    • TensorZero와 같은 프록시 구조로, 사용자별 맞춤형 LLM 실험 및 피드백 기반 최적화가 가능하며, 이 구조는 코드 보조 도구의 품질 평가(A/B 테스트), 프롬프트 최적화, 실사용 모니터링에 이상적임
  • (번역) React와 Next.js를 위한 완벽한 Cursor AI 설정