Cursor 6개월 쓰면서 찾은 프롬프트 꿀팁 5가지 – 이거 모르면 시간 낭비

💡 핵심 요약: Cursor AI IDE를 6개월간 실무에서 사용하며 발견한 프롬프트 작성법 5가지. Rules 설정, @파일 지정, 구체적 지시, 코드 설명 요청, 청크 단위 작업이 생산성을 3배 이상 높여줌. 특히 .cursorrules 파일 설정만으로도 코드 일관성이 완전히 달라짐.


들어가며: 솔직히 처음엔 “이게 뭔 차이야?” 했음

Cursor 처음 썼을 때 기억나요?

저도 그랬어요. “뭐야 이거 그냥 VS Code에 ChatGPT 붙인 거 아님?”

3일 정도 대충 쓰다가 “에이 그냥 ChatGPT 창 따로 띄우는 게 낫겠다” 생각했어요.

근데요.

6개월 지나고 보니까 완전 다른 도구가 되어 있더라고요.

뭐가 달라졌냐면, 프롬프트 쓰는 법을 알게 됐어요.

같은 Cursor인데 프롬프트만 바꿨더니 생산성이 3배는 올랐어요. 진짜로.

오늘은 제가 6개월 삽질하면서 찾은 꿀팁 5가지 공유할게요.

이거 모르고 쓰면 진짜 시간 낭비예요.

Cursor 6개월 쓰면서 찾은 프롬프트 꿀팁 5가지 - 이거 모르면 시간 낭비

1. .cursorrules 파일 – 이거 설정 안 하면 매번 같은 말 반복해야 함

왜 필요한가?

Cursor한테 매번 이런 말 하고 있지 않나요?

  • “TypeScript로 작성해줘”
  • “함수형으로 해줘”
  • “Tailwind CSS 사용해”
  • “주석은 한글로”

저도 처음 3개월은 이렇게 했어요.

매. 번.

그러다가 .cursorrules 파일 발견하고 “아… 이걸 왜 이제 알았지?” 했어요.

실제 설정 방법

프로젝트 루트에 .cursorrules 파일 만들고 이렇게 작성하세요:

# 프로젝트 규칙

## 코드 스타일
- TypeScript 사용 (strict 모드)
- 함수형 컴포넌트 선호
- React Query + Zustand 조합
- Tailwind CSS 사용

## 명명 규칙
- 컴포넌트: PascalCase (예: UserProfile.tsx)
- 함수: camelCase (예: getUserData)
- 상수: UPPER_SNAKE_CASE (예: API_BASE_URL)

## 주석
- 복잡한 로직에는 반드시 한글 주석
- JSDoc 형식 사용

## 금지 사항
- any 타입 사용 금지
- inline 스타일 금지
- console.log 남기지 않기

Before/After 비교

Before (설정 전):

나: "React 컴포넌트 만들어줘. TypeScript로. 함수형으로. 
    Tailwind 써서. 주석은 한글로."

→ 매번 50자 이상 입력

After (설정 후):

나: "UserProfile 컴포넌트 만들어줘"

→ 알아서 TypeScript + 함수형 + Tailwind + 한글 주석

6개월 동안 프롬프트 입력 시간만 계산해보니까, 하루 평균 15분 절약되더라고요.

한 달이면 7.5시간.

6개월이면 45시간.

거의 2일 치 업무 시간이에요.


2. @파일명 지정 – 이거 모르면 Cursor가 엉뚱한 파일 건드림

겪은 실수

초반에 이런 일이 있었어요.

“이 함수 리팩토링해줘” 했더니 Cursor가 다른 파일에 있는 비슷한 이름의 함수를 수정해버렸어요.

git diff 확인했다가 “어? 이거 왜 바뀌었지?” 하고 30분 삽질한 적 있어요.

해결법: @ 멘션

❌ BAD: "getUserData 함수 리팩토링해줘"

✅ GOOD: "@src/api/user.ts getUserData 함수 리팩토링해줘"

@를 붙이면 Cursor가 정확히 그 파일만 봐요.

더 고급 사용법

여러 파일을 동시에 지정할 수도 있어요:

@src/api/user.ts @src/types/user.d.ts 
getUserData 함수 반환 타입 UserResponse로 변경하고, 
types 파일에 UserResponse 인터페이스도 추가해줘

이렇게 하면 두 파일을 함께 수정하면서 타입 일관성도 유지해줘요.

제가 실제로 자주 쓰는 패턴:

@README.md @package.json @src/index.ts
새로운 의존성 추가하고 README에 설치 방법도 업데이트해줘

폴더 지정도 됨

@src/components/ 
이 폴더 안에 있는 모든 버튼 컴포넌트에 loading 상태 추가해줘

폴더째로 지정하면 그 안의 파일들을 컨텍스트로 잡아요.

대규모 리팩토링할 때 엄청 유용함.


3. 구체적으로 요청하기 – “좋게 해줘”는 최악의 프롬프트

피해야 할 프롬프트

솔직히 처음엔 이렇게 썼어요:

  • “이 코드 좋게 바꿔줘”
  • “최적화해줘”
  • “깔끔하게 해줘”

결과요?

Cursor가 나름 바꿔주긴 하는데, 제가 원하는 방향이 아닌 경우가 70%였어요.

구체적 프롬프트 공식

제가 6개월 동안 찾은 공식이에요:

[대상] + [행동] + [기준/조건] + [예외사항]

예시 1: 성능 최적화

❌ BAD: "이 함수 최적화해줘"

✅ GOOD: "getUsers 함수를 시간 복잡도 O(n²)에서 O(n)으로 개선해줘. 
         Map 자료구조 사용하고, 기존 테스트 케이스는 통과해야 함"

예시 2: 컴포넌트 수정

❌ BAD: "이 버튼 이쁘게 해줘"

✅ GOOD: "Button 컴포넌트에 호버 시 scale 1.05 애니메이션 추가해줘. 
         transition 0.2s, 비활성화 상태에서는 애니메이션 없음"

예시 3: 에러 핸들링

❌ BAD: "에러 처리 추가해줘"

✅ GOOD: "fetchUserData 함수에 try-catch 추가해줘. 
         네트워크 에러는 재시도 3회, 
         인증 에러는 로그인 페이지로 리다이렉트, 
         그 외 에러는 토스트 메시지 표시"

실제 효과

구체적으로 요청하니까:

  • 재요청 횟수: 5회 → 1회로 감소
  • 코드 수정 시간: 평균 15분 → 3분
  • “아 이게 아닌데” 하는 순간: 거의 없어짐

4. “이 코드 설명해줘” – 남의 코드 파악할 때 최고

언제 쓰나?

  • 새 프로젝트 온보딩할 때
  • 레거시 코드 분석할 때
  • PR 리뷰할 때
  • 오픈소스 코드 읽을 때

사용법

코드 블록 선택하고 Cmd+L (Mac) / Ctrl+L (Windows) 누른 다음:

이 코드가 뭐 하는 건지 설명해줘.
특히 왜 이렇게 구현했는지 이유도 알려줘.

실제 경험

지난달에 3년 된 레거시 프로젝트 인수인계 받았어요.

문서? 없음. 주석? 없음. 담당자? 퇴사함.

예전 같으면 2주는 코드 읽으면서 파악했을 거예요.

근데 Cursor한테 주요 파일들 설명 요청하니까 3일 만에 전체 구조 파악했어요.

특히 이런 질문이 유용했어요:

@src/core/auth.ts
이 인증 로직 플로우 설명해줘.
토큰 갱신은 어디서 처리되고, 
만료 시 어떻게 처리되는지 알려줘.

복잡한 비즈니스 로직도:

@src/services/pricing.ts
이 가격 계산 로직 순서대로 설명해줘.
할인 적용 순서랑 예외 케이스도 알려줘.

주의사항

근데 100% 믿으면 안 돼요.

Cursor가 “이건 이렇게 동작합니다” 하면 실제로 그런지 확인해봐야 해요.

특히 비동기 로직이나 에지 케이스는 직접 테스트 필수.

저도 Cursor 설명 믿었다가 버그 놓친 적 있어요 😅


5. 청크 단위로 작업하기 – 한 번에 다 하려면 망함

실패 경험

초반에 이런 프롬프트 날렸어요:

회원가입 기능 만들어줘.
이메일/비밀번호 검증하고, 
중복 체크하고, 
DB에 저장하고, 
인증 메일 보내고, 
성공하면 로그인 페이지로 리다이렉트해줘.

결과?

Cursor가 뭔가 만들어주긴 했는데, 에러 투성이에 구조도 엉망이었어요.

청크 단위 작업법

지금은 이렇게 나눠서 요청해요:

Step 1: 폼 UI

회원가입 폼 컴포넌트 만들어줘.
이메일, 비밀번호, 비밀번호 확인 필드.
Tailwind CSS, React Hook Form 사용.

Step 2: 검증 로직

@SignupForm.tsx
이 폼에 검증 로직 추가해줘.
이메일 형식 체크, 비밀번호 8자 이상, 
비밀번호 확인 일치 검사.
Zod 사용해서.

Step 3: API 연동

@SignupForm.tsx @src/api/auth.ts
폼 제출 시 signup API 호출하게 연결해줘.
로딩 상태, 에러 처리 포함.

Step 4: 추가 기능

@SignupForm.tsx
회원가입 성공 시 로그인 페이지로 리다이렉트.
실패 시 에러 메시지 토스트로 표시.

왜 이게 효과적인가?

  1. 각 단계별로 확인 가능: 문제 생기면 어디서 잘못됐는지 바로 알 수 있음
  2. 컨텍스트 유지: 이전 단계 결과를 참조하면서 작업
  3. 롤백 용이: 마음에 안 들면 그 단계만 다시 요청
  4. 품질 향상: 작은 단위라 Cursor가 더 정확하게 생성

실제로 이렇게 바꾸고 나서 “다시 해줘” 요청이 80% 줄었어요.


보너스: 진짜 고수들만 아는 팁 2가지

팁 A: Cursor에게 “왜?” 물어보기

Cursor가 코드 생성하면 바로 쓰지 말고 물어보세요:

이렇게 구현한 이유가 뭐야?
다른 방법은 없어?
이 방식의 장단점은?

이러면 더 나은 대안을 알려줄 때가 많아요.

저도 이렇게 해서 성능 3배 좋은 코드 발견한 적 있어요.

팁 B: 실패한 프롬프트 저장하기

효과 없었던 프롬프트도 기록해두세요.

나중에 보면 패턴이 보여요.

“아, 내가 이런 식으로 요청하면 잘 안 되는구나”

저는 Notion에 “Cursor 프롬프트 실패 모음” 페이지 만들어놨어요.


정리: 6개월 사용 후 달라진 점

숫자로 보는 변화

항목BeforeAfter
코드 작성 시간하루 6시간하루 2시간
“다시 해줘” 요청하루 20회하루 3회
새 프로젝트 셋업2일3시간
레거시 코드 파악2주3일

마인드셋 변화

Cursor는 “코드 생성기”가 아니에요.

**”페어 프로그래밍 파트너”**예요.

프롬프트 잘 쓰면 시니어 개발자랑 같이 일하는 느낌.

프롬프트 대충 쓰면 인턴한테 시키는 느낌.

결국 프롬프트가 전부예요.


마무리

6개월 전에 이 글 봤으면 최소 100시간은 아꼈을 거예요.

진심.

여러분은 저처럼 삽질하지 마세요.

오늘 알려드린 5가지:

  1. .cursorrules 설정: 반복 프롬프트 없애기
  2. @파일명 지정: 정확한 컨텍스트 잡기
  3. 구체적 요청: 재요청 줄이기
  4. 코드 설명 요청: 빠른 코드 파악
  5. 청크 단위 작업: 품질 높은 결과물

이 5가지만 적용해도 생산성 확 달라질 거예요.

질문 있으면 댓글로 남겨주세요!