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에 커밋할 수 있습니다.

다른 도구 둘러보기

Antigravity AI 콘텐츠 파이프라인 자동화 가이드: Google Docs에서 WordPress 퍼블리싱까지 가이드 Bolt.new 사례 연구: 마케팅 에이전시가 하루 만에 클라이언트 대시보드 5개 구축 사례 Bolt.new 베스트 프랙티스: 자연어 프롬프트로 풀스택 앱 빠르게 생성하기 모범사례 ChatGPT 고급 데이터 분석(코드 인터프리터) 완벽 가이드: 업로드부터 시각화까지 가이드 ChatGPT Custom GPTs 고급 가이드: Actions, API 통합, 지식 베이스 설정 가이드 ChatGPT 음성 모드 가이드: 음성 중심 고객 서비스와 내부 워크플로우 구축 가이드 Claude API 프로덕션 챗봇 가이드: 안정적인 AI 어시스턴트를 위한 시스템 프롬프트 아키텍처 가이드 Claude Artifacts 활용 베스트 프랙티스: 인터랙티브 대시보드, 문서, 코드 미리보기 만들기 모범사례 Claude Code Hooks 가이드: Pre/Post 실행 훅으로 커스텀 워크플로우 자동화하기 가이드 Claude MCP 서버 설정 가이드: Claude Code와 Desktop을 위한 커스텀 도구 통합 가이드 Cursor 사례 연구: 1인 창업자가 AI 코딩으로 2주 만에 Next.js SaaS MVP 구축 사례 Cursor Composer 완벽 가이드: 멀티 파일 편집, 인라인 Diff, 에이전트 모드 가이드 Cursor Rules 고급 가이드: 프로젝트별 AI 설정과 팀 코딩 표준 가이드 Devin AI 팀 워크플로우 통합 베스트 프랙티스: Slack, GitHub, 코드 리뷰 자동화 모범사례 Devin 사례 연구: 500개 패키지 Python 모노레포 의존성 자동 업그레이드 사례 ElevenLabs 사례 연구: 에드테크 스타트업이 6주 만에 200시간 강의를 8개 언어로 현지화 사례 ElevenLabs 다국어 더빙 가이드: 글로벌 콘텐츠를 위한 자동화된 영상 현지화 워크플로우 가이드 ElevenLabs Voice Design 완벽 가이드: 게임, 팟캐스트, 앱을 위한 일관된 캐릭터 음성 만들기 가이드 Gemini 2.5 Pro vs Claude Sonnet 4 vs GPT-4o: AI 코드 생성 비교 2026 비교 Gemini API 멀티모달 개발자 가이드: 이미지, 비디오, 문서 분석 코드 예제 가이드