Cursor Rules 설정 가이드: 멀티 언어 모노레포에서 디렉토리별 AI 동작 커스터마이징

Cursor Rules로 모노레포 AI 어시스턴트 완벽 제어하기

대규모 모노레포에서는 프론트엔드, 백엔드, 인프라 코드가 공존합니다. Cursor의 .cursor/rules 시스템을 활용하면 디렉토리별로 AI 동작을 다르게 설정하고, 프레임워크별 자동완성을 튜닝하며, 팀 전체가 일관된 코딩 컨벤션을 공유할 수 있습니다. 이 가이드에서는 실제 프로젝트 구조를 기반으로 단계별 설정 방법을 안내합니다.

1단계: 프로젝트 구조 및 Rules 디렉토리 생성

먼저 모노레포 루트에 .cursor/rules 디렉토리를 생성합니다. mkdir -p .cursor/rules

일반적인 모노레포 구조는 다음과 같습니다: monorepo/ ├── .cursor/ │ └── rules/ │ ├── global.mdc │ ├── frontend.mdc │ ├── backend.mdc │ ├── infra.mdc │ └── testing.mdc ├── apps/ │ ├── web/ # Next.js 프론트엔드 │ └── api/ # FastAPI 백엔드 ├── packages/ │ └── shared/ # 공유 유틸리티 └── infra/ # Terraform IaC

2단계: 글로벌 팀 컨벤션 규칙 작성

팀 전체에 적용되는 공통 규칙을 .cursor/rules/global.mdc에 정의합니다. --- description: 팀 공통 코딩 컨벤션 및 AI 동작 규칙 globs: **/* alwaysApply: true ---

팀 공통 규칙

코드 스타일

  • 모든 코드는 한국어 주석을 포함한다
  • 변수명과 함수명은 영문 camelCase를 사용한다
  • 커밋 메시지는 Conventional Commits 형식을 따른다
  • console.log, print 등 디버그 출력은 제거 후 커밋한다

AI 동작 지침

  • 코드 제안 시 반드시 에러 핸들링을 포함한다
  • 외부 라이브러리 추가 전 기존 유틸리티 우선 확인한다
  • 보안에 민감한 값은 환경변수로 처리한다
  • 타입 안전성을 최우선으로 고려한다

3단계: 프론트엔드 디렉토리 전용 규칙

.cursor/rules/frontend.mdc 파일에 React/Next.js 전용 규칙을 설정합니다. --- description: Next.js 프론트엔드 코드 작성 규칙 globs: apps/web/**/* alwaysApply: false ---

프론트엔드 규칙 (Next.js + TypeScript)

프레임워크 컨벤션

  • React Server Components를 기본으로 사용한다
  • 클라이언트 컴포넌트에는 반드시 ‘use client’ 지시어를 추가한다
  • 스타일링은 Tailwind CSS를 사용한다
  • 상태 관리는 Zustand를 사용한다

자동완성 튜닝

  • 컴포넌트 생성 시 TypeScript interface로 Props를 정의한다
  • React.FC 대신 일반 함수 선언을 사용한다
  • import 경로는 @/ 별칭을 사용한다

컴포넌트 패턴

// 권장 컴포넌트 패턴
interface ButtonProps {
  variant: 'primary' | 'secondary';
  children: React.ReactNode;
  onClick?: () => void;
}

export function Button({ variant, children, onClick }: ButtonProps) {
  return (
<button
      className={`btn btn-${variant}`}
      onClick={onClick}
    >
      {children}
</button>
  );
}
```</code></pre>
## 4단계: 백엔드 디렉토리 전용 규칙
<p><code>.cursor/rules/backend.mdc</code> 파일을 생성합니다.
<code>---
description: FastAPI 백엔드 코드 작성 규칙
globs: apps/api/**/*.py
alwaysApply: false
---

# 백엔드 규칙 (Python + FastAPI)

## API 설계
- 모든 엔드포인트에 Pydantic 모델로 요청/응답을 정의한다
- 비동기 함수(async def)를 기본으로 사용한다
- API 버저닝은 URL prefix(/v1/, /v2/)를 사용한다
- 환경변수는 pydantic-settings로 관리한다

## 데이터베이스
- ORM은 SQLAlchemy 2.0 스타일을 사용한다
- 마이그레이션은 Alembic으로 관리한다
- 쿼리 작성 시 N+1 문제를 항상 고려한다

## 코드 패턴
```python
from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel

router = APIRouter(prefix="/v1/users", tags=["users"])

class UserResponse(BaseModel):
    id: int
    email: str
    name: str

@router.get("/{user_id}", response_model=UserResponse)
async def get_user(user_id: int, db=Depends(get_db)):
    user = await db.get(User, user_id)
    if not user:
        raise HTTPException(status_code=404, detail="사용자를 찾을 수 없습니다")
    return user
```</code></pre>
## 5단계: 인프라 코드 규칙 설정
<p><code>.cursor/rules/infra.mdc</code>에 Terraform/IaC 전용 규칙을 추가합니다.
<code>---
description: Terraform 인프라 코드 작성 규칙
globs: infra/**/*.tf
alwaysApply: false
---

# 인프라 규칙 (Terraform)

- 리소스 이름은 snake_case를 사용한다
- 모든 리소스에 태그(Environment, Team, Service)를 포함한다
- 시크릿 값은 변수로 분리하고 terraform.tfvars에 정의한다
- 모듈화를 적극 활용하여 재사용성을 높인다
- plan 결과를 반드시 리뷰 후 apply 한다</code></pre>
## 6단계: 테스트 전용 규칙 추가
<pre><code>---
description: 테스트 코드 작성 시 AI 동작 규칙
globs: **/*.test.{ts,tsx,py}, **/*.spec.{ts,tsx,py}, **/tests/**/*
alwaysApply: false
---

# 테스트 규칙

- 테스트 함수명은 "should_동작_when_조건" 패턴을 따른다
- 외부 API 호출은 반드시 모킹한다
- 각 테스트는 독립적으로 실행 가능해야 한다
- Given-When-Then 구조를 따른다
- 경계값과 에러 케이스를 반드시 포함한다</code></pre>
## 7단계: Git으로 팀 공유 설정
<p>규칙 파일을 버전 관리에 포함시켜 팀 전체가 동일한 AI 동작을 경험하도록 합니다.
<code># .cursor/rules를 커밋에 포함
git add .cursor/rules/
git commit -m "chore: Cursor AI 규칙 파일 추가"
git push origin main</code></pre><p>**주의:** <code>.cursorignore</code> 파일로 AI가 참조하지 않을 파일을 지정할 수 있습니다.
<code># .cursorignore 예시
node_modules/
.env
*.lock
dist/
build/</code></pre>
## 규칙 타입 비교표
<table><thead><tr><th>속성</th><th>Always Apply</th><th>Auto Attached</th><th>Agent Requested</th><th>Manual</th></tr></thead><tbody><tr><td>적용 방식</td><td>모든 컨텍스트에 자동 포함</td><td>glob 패턴 매칭 시 자동</td><td>AI가 필요 시 자동 요청</td><td>사용자가 @로 명시 호출</td></tr><tr><td>설정 키</td><td>alwaysApply: true</td><td>globs 패턴 지정</td><td>description 필수</td><td>별도 설정 없음</td></tr><tr><td>적합한 용도</td><td>팀 공통 컨벤션</td><td>디렉토리별 규칙</td><td>특수 상황 가이드</td><td>일회성 지침</td></tr></tbody></table>
## Pro Tips: 파워 유저를 위한 고급 활용법
- **규칙 상속 구조 활용:** 글로벌 규칙(alwaysApply: true)을 기반으로, 디렉토리 규칙(globs)이 추가 적용되어 세밀한 제어가 가능합니다.- **동적 컨텍스트 활용:** <code>@file</code>이나 <code>@folder</code> 참조를 규칙 내에서 활용하면 관련 코드를 AI 컨텍스트에 자동 포함시킬 수 있습니다.- **팀원별 로컬 오버라이드:** 개인 설정은 <code>.cursor/rules/local-*.mdc</code> 패턴으로 생성하고 <code>.gitignore</code>에 추가하여 충돌을 방지합니다.- **규칙 네이밍 컨벤션:** 파일명에 우선순위 번호를 붙여 로딩 순서를 명확히 합니다 (예: <code>01-global.mdc</code>, <code>02-frontend.mdc</code>).- **description 최적화:** Agent Requested 모드에서 AI가 규칙을 검색할 때 description을 기반으로 판단하므로, 구체적이고 명확하게 작성합니다.
## Troubleshooting: 자주 발생하는 문제 해결

### 규칙이 적용되지 않는 경우
- **원인:** glob 패턴이 실제 파일 경로와 불일치- **해결:** 상대 경로 기준으로 glob 패턴을 확인합니다. <code>apps/web/**/*</code>처럼 루트 기준 경로를 사용하세요.
### 규칙 간 충돌 발생
- **원인:** 여러 규칙의 globs가 동일한 파일에 매칭- **해결:** 더 구체적인 glob 패턴을 사용하거나, 충돌하는 지시사항을 하나의 규칙에 통합합니다.
### MDC 파일 문법 오류
- **원인:** frontmatter(YAML) 구분자 <code>---</code> 누락 또는 들여쓰기 오류- **해결:** 반드시 파일 최상단에 <code>---</code>로 시작하고 <code>---</code>로 끝나는 frontmatter 블록을 포함시키세요.
### AI가 규칙을 무시하는 느낌이 드는 경우
- **원인:** 규칙의 description이 모호하거나 alwaysApply 설정 누락- **해결:** 핵심 규칙은 <code>alwaysApply: true</code>로 설정하고, description을 구체적으로 작성합니다.<!-- RELATED_CONTENT_PLACEHOLDER -->
## 자주 묻는 질문 (FAQ)

### Q1: .cursor/rules 파일의 최대 크기 제한이 있나요?
<p>개별 규칙 파일에 공식적인 크기 제한은 없지만, 너무 긴 규칙은 AI의 컨텍스트 윈도우를 불필요하게 소모합니다. 한 파일당 500줄 이내로 유지하고, 주제별로 분리하는 것이 효과적입니다. 핵심 지시사항을 상단에 배치하여 우선적으로 처리되도록 합니다.

### Q2: 모노레포에서 패키지별로 다른 언어 규칙을 적용할 수 있나요?
네, globs 패턴으로 정확히 제어할 수 있습니다. 예를 들어 <code>apps/api/**/*.py</code>에는 Python 규칙을, <code>apps/web/**/*.tsx</code>에는 TypeScript/React 규칙을 별도로 적용합니다. 각 규칙 파일의 globs를 해당 디렉토리와 파일 확장자에 맞게 설정하면 Cursor가 자동으로 적절한 규칙을 활성화합니다.

### Q3: 팀원이 Cursor 대신 다른 에디터를 사용하면 규칙 파일이 영향을 주나요?
.cursor/rules 디렉토리는 Cursor 에디터 전용 설정이므로 VS Code나 다른 에디터 사용자에게는 아무런 영향을 미치지 않습니다. 프로젝트 루트에 존재하더라도 다른 도구와 충돌하지 않으며, 별도의 설정 없이 안전하게 Git에 커밋할 수 있습니다.

다른 도구 둘러보기

Grok 실시간 뉴스 분석 및 팩트체킹 베스트 프랙티스 가이드 모범사례 Devin 멀티파일 리팩토링 위임 베스트 프랙티스: 명세서, 브랜치 격리, 코드 리뷰 체크포인트 완벽 가이드 모범사례 Bolt 케이스 스터디: 솔로 개발자가 주말 48시간 만에 풀스택 SaaS MVP를 출시한 방법 사례 미드저니 캐릭터 컨셉아트 케이스 스터디: 인디 게임 스튜디오가 200개 에셋의 일관성을 유지한 워크플로우 사례 Antigravity AI 설치 및 설정 가이드: Python SDK, API 키 관리, Blender 통합까지 가이드 Runway Gen-3 Alpha AI 영상 생성 완벽 가이드: 계정 설정부터 렌더링 내보내기까지 가이드 Replit Agent vs Cursor AI vs GitHub Copilot Workspace 비교: 솔로 개발자를 위한 풀스택 프로토타이핑 완벽 가이드 (2026) 비교 v0에서 재사용 컴포넌트 블록으로 멀티페이지 SaaS 랜딩 사이트 만들기 완벽 가이드 방법 Kling AI vs Runway Gen-3 vs Pika Labs 비교: AI 영상 생성 품질·가격·제어력 완벽 분석 (2026) 비교 Claude 3.5 Sonnet vs GPT-4o vs Gemini 1.5 Pro 장문 요약 비교: 컨텍스트 윈도우, 정확도, 토큰 비용 완벽 분석 (2025) 비교 Midjourney v6 vs DALL-E 3 vs Stable Diffusion XL 제품 사진 비교: 포토리얼리즘, 프롬프트 제어, 이미지당 비용 분석 비교 Runway Gen-3 Alpha vs Pika 1.0 vs Kling AI 비교: 숏폼 영상 광고 제작을 위한 모션 품질·프롬프트 정확도·초당 가격 완벽 분석 (2026) 비교 BMI 계산기 - 무료 온라인 체질량지수 측정 도구 계산기 은퇴 저축 계산기 - 무료 온라인 노후 자금 시뮬레이터 계산기 401(k) 클리프 베스팅 스케줄이란? 퇴사 시 회사 매칭금이 어떻게 달라지는지 쉽게 설명 설명 중소기업을 위한 13주 현금흐름 예측 모범 사례: 주간 업데이트, 수금 추적, 시나리오 플래닝 모범사례 다점포 레스토랑 그룹 매입채무 자동화 사례: OCR 캡처·승인 라우팅·주간 지급으로 인보이스 처리 시간 단축 사례 아마존 PPC 사례: 프라이빗 라벨 건강기능식품 브랜드가 네거티브 키워드 마이닝과 Exact Match로 ACOS를 낮춘 방법 사례 Antigravity vs Jasper vs Copy.ai 비교: AI 브랜드 보이스 일관성, 콘텐츠 품질 및 협업 기능 완벽 분석 (2026) 비교 아파트 승인 준비도 퀴즈: 첫 자취생을 위한 신용점수·소득·코사이너 셀프 진단 자가진단