모노레포 프로젝트에서 .cursorrules 파일로 팀 전체 코드 스타일 통일하기 - 완벽 가이드

모노레포 프로젝트에서 .cursorrules로 팀 코드 스타일을 통일하는 방법

대규모 모노레포 프로젝트에서 팀원마다 다른 코딩 스타일은 코드 리뷰 시간 증가, 일관성 저하, 유지보수 비용 상승의 주요 원인입니다. Cursor의 .cursorrules 파일을 활용하면 AI 코드 어시스턴트가 팀의 코딩 컨벤션을 자동으로 따르도록 설정할 수 있습니다. 이 가이드에서는 모노레포 환경에서 계층적 규칙 파일을 구성하고 팀 전체에 배포하는 전체 워크플로를 단계별로 안내합니다.

사전 준비 사항

  • Cursor IDE 최신 버전 설치 (v0.40 이상 권장)- 모노레포 프로젝트 구조 (예: Turborepo, Nx, pnpm workspace)- Git 버전 관리 시스템- 팀 코딩 컨벤션 문서 (ESLint, Prettier 설정 등)

Step 1: .cursorrules 파일의 구조 이해

.cursorrules 파일은 프로젝트 루트 또는 하위 디렉토리에 배치하여 Cursor AI가 코드를 생성·수정할 때 따라야 할 규칙을 정의합니다. Cursor는 현재 작업 중인 파일의 위치에서 가장 가까운 .cursorrules 파일을 우선 적용합니다. monorepo/ ├── .cursorrules # 루트 레벨: 전역 규칙 ├── packages/ │ ├── frontend/ │ │ ├── .cursorrules # 프론트엔드 전용 규칙 │ │ └── src/ │ ├── backend/ │ │ ├── .cursorrules # 백엔드 전용 규칙 │ │ └── src/ │ └── shared/ │ ├── .cursorrules # 공유 라이브러리 규칙 │ └── src/ └── apps/ ├── web/ │ ├── .cursorrules # 웹 앱 전용 규칙 │ └── src/ └── mobile/ ├── .cursorrules # 모바일 앱 전용 규칙 └── src/

Step 2: 루트 레벨 글로벌 규칙 작성

프로젝트 루트의 .cursorrules에 팀 전체에 적용될 공통 규칙을 정의합니다. # .cursorrules (프로젝트 루트)

프로젝트 개요

이 프로젝트는 pnpm workspace 기반 모노레포입니다. TypeScript를 주 언어로 사용합니다.

공통 코딩 컨벤션

  • 모든 코드는 TypeScript strict 모드를 따릅니다
  • 변수명은 camelCase, 타입/인터페이스는 PascalCase를 사용합니다
  • any 타입 사용을 금지합니다. unknown을 사용하세요
  • 함수는 단일 책임 원칙을 따르며 30줄을 넘지 않도록 합니다
  • 모든 export 함수에는 JSDoc 주석을 작성합니다
  • 절대 경로 import를 사용합니다 (@packages/* 형태)

에러 처리

  • try-catch 블록에서 에러 타입을 명시합니다
  • 커스텀 에러 클래스를 사용합니다
  • 에러 로깅은 프로젝트 공통 logger를 사용합니다

Git 컨벤션

  • 커밋 메시지는 Conventional Commits 형식을 따릅니다
  • feat:, fix:, docs:, refactor:, test: 접두어를 사용합니다

테스트

  • 모든 비즈니스 로직에는 단위 테스트를 작성합니다
  • 테스트 파일명은 *.test.ts 또는 *.spec.ts 형식입니다
  • describe-it 패턴을 사용합니다

Step 3: 패키지별 세부 규칙 작성

각 패키지의 기술 스택과 요구사항에 맞는 세부 규칙을 정의합니다.

프론트엔드 패키지 규칙

# packages/frontend/.cursorrules

프론트엔드 규칙

  • React 함수형 컴포넌트만 사용합니다 (클래스 컴포넌트 금지)
  • 상태 관리는 Zustand를 사용합니다
  • 스타일링은 Tailwind CSS를 사용합니다. 인라인 style 객체를 사용하지 마세요
  • 컴포넌트 파일 구조: ComponentName/index.tsx, types.ts, hooks.ts
  • API 호출은 반드시 React Query(TanStack Query)를 통해 수행합니다
  • 컴포넌트 props에는 반드시 interface를 정의합니다

컴포넌트 작성 패턴

import type { FC } from 'react';

interface ButtonProps {
  variant: 'primary' | 'secondary';
  onClick: () => void;
  children: React.ReactNode;
}

export const Button: FC<ButtonProps> = ({ variant, onClick, children }) => {
  return (
<button
      className={`btn btn-${variant}`}
      onClick={onClick}
    >
      {children}
</button>
  );
};

금지 패턴

  • useEffect 내 직접 API 호출 금지
  • props drilling 3단계 이상 금지 (Context 또는 Zustand 사용)
  • index.ts에서 default export 금지 (named export 사용)

백엔드 패키지 규칙

# packages/backend/.cursorrules

## 백엔드 규칙
- NestJS 프레임워크를 사용합니다
- 모든 API 엔드포인트에 DTO 유효성 검사를 적용합니다
- 데이터베이스 접근은 Repository 패턴을 사용합니다
- 환경변수는 ConfigService를 통해 접근합니다
- API 응답은 통일된 ResponseDto 형식을 사용합니다

## API 응답 형식
```typescript
interface ApiResponse {
  success: boolean;
  data: T;
  message: string;
  timestamp: string;
}
```

## 보안 규칙
- 민감한 정보(API_KEY, DB 비밀번호)를 코드에 하드코딩하지 않습니다
- 모든 사용자 입력은 class-validator로 검증합니다
- SQL 쿼리는 ORM(TypeORM/Prisma)을 통해서만 실행합니다

Step 4: 팀 배포 및 Git 연동

.cursorrules 파일을 Git에 커밋하여 팀 전체가 동일한 규칙을 공유합니다. # .cursorrules 파일을 Git에 추가 git add .cursorrules packages/**/.cursorrules git commit -m "docs: add .cursorrules for team-wide code style enforcement" git push origin main

**.gitignore에 포함하지 마세요.** .cursorrules는 팀 공유 자산이므로 반드시 버전 관리에 포함해야 합니다.

Step 5: Cursor Settings에서 규칙 활성화 확인

  • Cursor IDE를 실행합니다- Ctrl + Shift + P (macOS: Cmd + Shift + P)로 Command Palette를 엽니다- Cursor Settings를 검색하여 진입합니다- General > Rules for AI 섹션에서 프로젝트 규칙이 로드되었는지 확인합니다- Include .cursorrules 옵션이 활성화되어 있는지 점검합니다

Step 6: 규칙 검증 및 테스트

규칙이 올바르게 적용되는지 Cursor Chat에서 직접 테스트합니다. # Cursor Chat (Ctrl+L)에서 테스트 프롬프트 입력:

“packages/frontend/src에 UserProfile 컴포넌트를 생성해줘”

기대 결과: .cursorrules에 정의된 패턴대로

- 함수형 컴포넌트

- interface Props 정의

- Tailwind CSS 스타일링

- named export

형태로 코드가 생성되어야 합니다

Pro Tips: 파워 유저를 위한 고급 활용법

설명
**규칙 우선순위 활용**하위 디렉토리의 .cursorrules가 상위를 오버라이드합니다. 패키지별로 다른 프레임워크 규칙을 자연스럽게 적용하세요.
**예시 코드 포함**규칙 파일에 코드 예시를 포함하면 AI가 패턴을 더 정확하게 따릅니다. 추상적 설명보다 구체적 코드가 효과적입니다.
**금지 패턴 명시**"~하지 마세요" 형태의 규칙이 의외로 효과적입니다. 안티패턴을 명시하면 AI가 해당 패턴을 피합니다.
**CI/CD 연동**PR 리뷰 시 .cursorrules 변경 사항을 팀 리드가 승인하도록 CODEOWNERS 파일을 설정하세요.
**.cursor/rules 디렉토리 활용**Cursor 최신 버전에서는 .cursor/rules/ 디렉토리에 여러 규칙 파일을 분리 배치할 수 있습니다. 도메인별로 규칙을 나눠 관리하세요.
# CODEOWNERS 파일에 추가
.cursorrules @team-lead
packages/**/.cursorrules @team-lead
.cursor/rules/** @team-lead
## Troubleshooting: 자주 발생하는 문제 해결
문제원인해결 방법
규칙이 적용되지 않음파일명 오타 또는 위치 오류파일명이 정확히 .cursorrules인지 확인. 확장자 없이 정확하게 작성해야 합니다.
하위 패키지 규칙이 무시됨Cursor가 루트 규칙만 읽는 경우Cursor를 최신 버전으로 업데이트하고 IDE를 재시작하세요. 워크스페이스를 하위 폴더에서 열면 해당 규칙이 우선 적용됩니다.
규칙 간 충돌 발생상위/하위 규칙이 상반된 지시를 포함하위 규칙에서 상위 규칙의 예외 사항을 명시적으로 선언하세요. 예: "이 패키지에서는 루트의 XX 규칙 대신 YY를 적용합니다"
AI가 규칙을 부분적으로만 따름규칙이 너무 길거나 모호함규칙을 간결하고 구체적으로 작성하세요. 한 파일 기준 500줄 이내를 권장합니다.
팀원마다 다른 결과 생성로컬 사용자 규칙이 프로젝트 규칙을 오버라이드Cursor Settings에서 개인 규칙보다 프로젝트 규칙이 우선되도록 설정을 확인하세요.
## 자주 묻는 질문 (FAQ)

Q1: .cursorrules 파일과 .editorconfig, ESLint 설정의 차이점은 무엇인가요?

.editorconfig와 ESLint는 코드 포맷팅과 정적 분석을 자동화하는 도구입니다. 반면 .cursorrules는 Cursor AI가 코드를 생성하거나 수정할 때 따라야 할 고수준 아키텍처 패턴, 설계 원칙, 네이밍 컨벤션을 지시합니다. 이 세 가지를 함께 사용하면 코드 생성 단계부터 검증 단계까지 일관된 품질을 유지할 수 있습니다.

Q2: .cursorrules 파일의 최적 길이는 어느 정도인가요?

파일 하나당 200~500줄 이내를 권장합니다. 너무 길면 AI가 규칙을 누락하거나 우선순위를 잘못 판단할 수 있습니다. 규칙이 많다면 .cursor/rules/ 디렉토리를 활용하여 도메인별(보안, 스타일, 아키텍처 등)로 파일을 분리하는 것이 효과적입니다.

Q3: 모노레포에서 특정 패키지에만 다른 언어(Python 등)를 사용하는 경우 어떻게 설정하나요?

해당 패키지 디렉토리에 별도의 .cursorrules 파일을 생성하고 해당 언어의 컨벤션을 정의하면 됩니다. 예를 들어 packages/ml-service/.cursorrules에 Python 관련 규칙(PEP 8, type hints, docstring 형식 등)을 작성하면 해당 패키지에서 작업할 때 자동으로 Python 규칙이 적용됩니다. 루트의 TypeScript 규칙과 충돌 없이 독립적으로 동작합니다.

다른 도구 둘러보기

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 멀티모달 개발자 가이드: 이미지, 비디오, 문서 분석 코드 예제 가이드