지난 포스팅에서 AI와의 협업 경험을 다뤘다면, 오늘은 그 협업의 효율을 극대화하는 구체적인 기술적 방법론에 대해 이야기하려 합니다. 바로 Cursor 에디터의 ‘시스템 프롬프트(System Prompt)’와 .cursorrules를 활용한 개발 환경 최적화입니다.
단순히 “이거 짜줘”라고 말하는 단계를 넘어, AI에게 “우리는 이런 규칙으로 일해”라고 컨텍스트를 주입하는 과정은 개발 생산성의 차원을 바꿉니다.
1. 왜 시스템 프롬프트가 필요한가?
같은 질문을 던져도 시니어 개발자와 주니어 개발자의 대답이 다르듯, AI도 어떤 페르소나와 제약 조건을 주느냐에 따라 코드의 품질이 달라집니다. 특히 팀 프로젝트나 장기 프로젝트에서는 일관된 코딩 컨벤션(Convention) 유지가 필수적입니다. 매번 “Tailwind CSS를 써주고, 변수명은 카멜 케이스로…“라고 입력하는 것은 비효율의 극치입니다.
2. .cursorrules: 프로젝트의 헌법 만들기
Cursor는 프로젝트 루트 경로에 .cursorrules 파일을 생성하여 AI가 따라야 할 지침을 정의할 수 있습니다. 이는 마치 프로젝트의 헌법과도 같습니다. 제가 현재 이 블로그(Jekyll + Tailwind)를 관리하며 실제로 사용 중인 설정의 일부를 공개합니다.
# Role
당신은 시니어 프론트엔드 엔지니어이자 SEO 전문가입니다.
항상 성능 최적화와 가독성을 최우선으로 고려합니다.
# Tech Stack & Style
- **Framework**: Jekyll (Liquid template)
- **Styling**: Tailwind CSS (Utility-first)
- **Script**: Vanilla JS (No jQuery)
# Coding Rules
1. 모든 클래스명은 Tailwind의 유틸리티 클래스를 사용하며, 복잡한 스타일은 `@apply`를 지양하고 HTML 내에 명시한다.
2. 외부 링크를 생성할 때는 반드시 Kramdown 문법 `{:target="_blank"}`를 사용하여 새 창 열기를 적용한다.
3. 이미지 경로를 참조할 때는 절대 경로(`/assets/images/...`)를 우선한다.
4. 답변은 한국어로 하되, 기술 용어는 괄호 안에 영문을 병기한다.
이렇게 파일을 만들어두면, 채팅이나 Cmd+K로 코드를 생성할 때 AI가 자동으로 이 규칙을 참조합니다. “새 창으로 열리게 해줘”라고 말하지 않아도 알아서 target="_blank"를 붙여주는 마법이 일어납니다.
3. 나만의 프롬프트 템플릿 구축 전략
.cursorrules가 프로젝트 전반의 규칙이라면, 자주 사용하는 패턴은 별도의 텍스트 파일이나 스니펫으로 관리하면 좋습니다.
A. 리팩토링 템플릿
“이 코드를 리팩토링하되, 1) 가독성을 높이고, 2) 중복을 제거하고, 3) 에러 처리를 강화하는 방향으로 제안해줘. 변경 전후의 차이점을 주석으로 설명해줘.”
B. 테스트 코드 생성 템플릿
“작성된 함수에 대한 유닛 테스트를 작성해줘. 1) 정상 케이스, 2) 경계값(Boundary value), 3) 예외 케이스를 모두 포함해야 해.”
이런 템플릿을 메모장이나 시스템 클립보드 매니저에 저장해두고 필요할 때마다 꺼내 쓰면, 프롬프트 엔지니어링에 들이는 시간을 획기적으로 줄일 수 있습니다.
4. 아키텍처로서의 프롬프트
이제 ‘프롬프트’는 단순한 명령어가 아니라 소프트웨어 아키텍처의 일부입니다.
과거에는 린터(Linter)나 포매터(Formatter) 설정으로 코드 스타일을 강제했다면, 이제는 시스템 프롬프트를 통해 ‘논리적 스타일’과 ‘사고의 방식’까지 동기화할 수 있습니다.
AI 도구를 잘 쓴다는 것은 단순히 빠른 타이핑을 의미하지 않습니다. 내가 원하는 결과물의 스펙을 명확히 정의하고, 이를 AI가 이해할 수 있는 언어(규칙)로 번역하여 시스템화하는 능력, 그것이 바로 AI 시대 아키텍트의 핵심 역량입니다.