Cursor 프로젝트 룰의 동작 방식과 유형에 대한 이야기

Cursor의 프로젝트 룰이 어떻게 동작하는지, 어떤 유형이 있는지 살펴봤습니다.
💡
지난 글과 비슷하게, 바이브 코딩 강의 수강자 대상 전용 자료를 일부 공개합니다 😄

기본적으로 LLM은 채팅 세션과 세션 사이에 컨텍스트를 공유하지 않습니다. 그래서 지난 글에서 언급한 것처럼 비일관적인 결과물이 만들어지는 문제가 있죠. 이를 극복하기 위해 Cursor가 제시한 도구가 Rules고, 대부분의 코딩 에이전트가 유사한 도구를 제공합니다.

Cursor Project Rules의 동작 방식과 베스트 프랙티스

아래는 Cursor의 Project Rules가 동작하는 방식을 (유저 룰이 없다는 가정 하에) 간단하게 그림으로 표현한 것입니다. Rules가 LLM API를 호출할 때 필요한 두 종류, 즉 시스템 프롬프트와 사용자 프롬프트 중 후자로 들어간다는 걸 알 수 있죠.

‘Rules와 추가 컨텍스트가 사용자 프롬프트의 일부’라는 말은 두 가지 함의를 가집니다.

  • 적용된 Rule이 길고 추가되는 컨텍스트가 길수록 이용 가능한 사용자 입력 토큰 수는 줄어듭니다. 큰 파일이 컨텍스트로 추가되거나, 이미지를 첨부하거나 하면 더욱 그렇겠죠.
  • ChatGPT에서 내가 요청한 내용이 무조건 반영되는 게 아니듯, Rules의 내용이 코딩에 무조건 반영되는 것 또한 아닙니다. 내용이 길어질수록 더욱 그러하며, 추가한 컨텍스트나 실제 사용자 입력이 Rules와 방향성이 같지 않다면 더욱 그렇습니다.

따라서 Rules는 유사한 결과를 낼 수 있다면 짧은 게 더 유리하고, 여러가지 상황에서 자주 테스트하며 업데이트하는 게 좋습니다.

다음은 Cursor 공식 문서의 베스트 프랙티스입니다.

  • 개별 룰을 간결하게 유지하세요. 500줄 미만이 좋습니다.
  • 큰 개념을 여러 룰로 나눠서 조합하세요.
  • 필요하다면 구체적인 예시나 참조 파일을 제공하세요. (@filename.ts 처럼 룰 안에 넣으면 다른 룰 또는 파일을 참조하게 할 수 있습니다)
  • 모호한 지침은 피하세요. 명확한 내부 문서를 작성하는 것처럼 룰을 작성하세요.
  • 채팅에서 같은 메시지를 반복해서 사용하고 있다면 룰로 만드세요.

Project Rules의 유형

지난 글에서 소개한 글로벌 지침, 즉 User Rules는 Cursor 프로그램 내에서 설정하며 어떤 상황에서나 컨텍스트에 포함되지만 Project Rules는 다릅니다. 프로젝트 폴더 내부의 .cursor/rules 라는 경로에 .mdc 확장자의 파일로 정의됩니다. 파일로 저장되니 공동 작업자들이 함께 사용 가능하다는 게 장점입니다.

.mdc 파일은 마크다운 문서(.md)와 거의 똑같으나, Cursor가 이 룰을 언제 컨텍스트에 포함해야 하는지 알려주는 메타데이터가 있다는 점만 다릅니다. 이 ‘언제 포함해야 하는가’를 Project Rule Type이라고 부르고, 현재 4가지 유형이 있습니다. (참고 링크: 유형별로 룰이 어떻게 적용되는지를 탐구한 자료)

다만 개인적으로는 Always 와 Manual 외에는 자주 쓰진 않게 되더군요.

Auto Attached 는 파일을 명시적으로 참조하는 걸 잊을 때도 있고, Agent Requested 는 에이전트의 판단에 맡겨야 한다는 것 자체가 불안 요소가 되기 때문입니다. Description 이 불명확해서 의도와 다르게 참조하지 않거나, 때론 룰의 내용을 읽었으면서도 ‘이 룰의 내용이 유저 요청과 맞지 않아’라고 판단하면 Cursor가 내용을 생성할 때 룰을 사용하지 않을 수도 있어요. 에이전트가 더 똑똑해질수록 괜찮아지겠지만, 지금은 Always 와 Manual 을 명시적으로 쓰는 게 편하네요.

참고: 시스템 프롬프트란?

시스템 프롬프트는 너무 다재다능한 LLM이 특정한 방식으로 동작하도록, 예를 들어 코딩 에이전트라면 코딩을 잘 하도록 만들어둔 것입니다. 어차피 코딩 에이전트들이 선택 가능한 모델의 가짓수는 거의 같으니 이 시스템 프롬프트를 잘 깎는 게 에이전트들의 기본 경쟁력을 좌우한다고 볼 수 있죠.

각 서비스에서 고심해서 만든 시스템 프롬프트는 대부분 공개되거나 유출되기 마련인데, 이것들을 유심히 읽어보는 것만으로도 AI 활용 능력이 올라갑니다.