규칙 우선순위 시스템
프로젝트별 AI 가이드라인을 효율적으로 관리하세요. Caret의 규칙 우선순위 시스템은 여러 규칙 파일의 중복을 자동으로 차단하여 토큰 사용량을 절약하고, 명확한 우선순위로 설정 충돌을 방지합니다.
규칙 시스템이란?
프로젝트 루트에 규칙 파일을 두면, AI가 자동으로 읽고 따릅니다:
my-project/
├── .caretrules # Caret 전용 규칙 (우선순위 1)
├── .clinerules # Cline 호환 규칙 (우선순위 2)
├── .cursorrules # Cursor 호환 규칙 (우선순위 3)
└── src/
효과: AI가 프로젝트의 코딩 스타일, 네이밍 규칙, 아키텍처 패턴을 자동으로 따릅니다.
Caret vs Cline vs Cursor
| 항목 | Cline | Cursor | Caret |
|---|---|---|---|
.clinerules | ✅ 지원 | ❌ 미지원 | ✅ 지원 |
.cursorrules | ❌ 미지원 | ✅ 지원 | ✅ 지원 |
.caretrules | ❌ 미지원 | ❌ 미지원 | ✅ 지원 |
| 우선순위 시스템 | ❌ 없음 | ❌ 없음 | ✅ 있음 |
| 다중 파일 병합 | ❌ 없음 | ❌ 없음 | ✅ 지원 |
지원 파일 형식
.caretrules (권장)
Caret 전용 규칙 파일로 가장 높은 우선순위:
# 프로젝트 규칙
## 코딩 스타일
- TypeScript strict 모드 사용
- 함수형 컴포넌트 only
- Tailwind CSS 사용
## 네이밍
- 컴포넌트: PascalCase
- 함수: camelCase
- 상수: UPPER_SNAKE_CASE
## 금지 사항
- class 컴포넌트 사용 금지
- any 타입 사용 금지
- console.log 커밋 금지
.clinerules
Cline에서 마이그레이션 시 호환:
Use TypeScript for all files
Follow React Hooks best practices
.cursorrules
Cursor에서 마이그레이션 시 호환:
Always use arrow functions
Prefer const over let
우선순위 시스템의 핵심: 토큰 절약
Caret의 규칙 우선순위 시스템이 다른 AI 코딩 어시스턴트와 다른 가장 중요한 점은 바로 중복 방지입니다.
문제: 다른 도구들의 중복 로딩
Cline과 Cursor 같은 도구들은 .clinerules, .cursorrules, .windsurfrules를 모두 동시에 로딩합니다. 이는 다음과 같은 문제를 일으킵니다:
토큰 낭비: 세 파일에 비슷한 내용이 있어도 모두 AI에게 전송되어, 매 요청마다 수천 개의 불필요한 토큰을 소비합니다.
설정 충돌: 파일마다 다른 규칙이 있을 때 어느 것이 우선인지 불명확하여, AI가 혼란스러워합니다.
프롬프트 비대화: 여러 규칙 파일이 쌓이면 프롬프트가 지나치게 길어져, 정작 중요한 코드 컨텍스트를 포함할 공간이 줄어듭니다.
해결: Caret의 단일 선택 방식
Caret은 여러 규칙 파일이 있어도 단 하나만 선택하여 로딩합니다. 이는 다음과 같은 명확한 우선순위를 따릅니다:
1순위: .caretrules
2순위: .clinerules
3순위: .cursorrules
4순위: .windsurfrules
자동 작동: .caretrules 파일이 있으면, 다른 모든 규칙 파일은 자동으로 비활성화됩니다. .caretrules가 없다면 .clinerules를 찾고, 그것도 없다면 .cursorrules를 찾는 식입니다.
실제 동작 예시:
프로젝트 폴더:
├── .caretrules ← 이것만 읽음
├── .clinerules ← 자동 비활성화
└── .cursorrules ← 자동 비활성화
.caretrules 삭제 후:
├── .clinerules ← 이제 이것을 읽음
└── .cursorrules ← 자동 비활성화
이 방식으로 토큰 사용량을 최대 70%까지 절감할 수 있으며, 설정 충돌도 원천적으로 방지됩니다.
실전 활용 예시
예시 1: React 프로젝트
# .caretrules
## 기술 스택
- React 18 + TypeScript
- Vite 빌드
- Tailwind CSS + shadcn/ui
## 컴포넌트 작성 규칙
- 모든 컴포넌트는 함수형으로 작성
- Props 타입은 interface로 정의
- 파일명은 컴포넌트명과 동일 (PascalCase.tsx)
## 스타일 규칙
- Tailwind 유틸리티 우선
- 커스텀 CSS는 최소화
- 다크모드 대응 필수
## 상태 관리
- 로컬 상태: useState
- 전역 상태: Zustand
- 서버 상태: TanStack Query
## 금지사항
- styled-components 사용 금지
- Redux 사용 금지
- class 컴포넌트 금지
예시 2: NestJS 백엔드
# .caretrules
## 아키텍처
- Controller → Service → Repository 패턴
- DTO 필수 사용
- 모든 엔드포인트에 Swagger 문서화
## 네이밍
- Controller: `*.controller.ts`
- Service: `*.service.ts`
- DTO: `*.dto.ts`
- Entity: `*.entity.ts`
## 에러 처리
- HttpException 사용
- 커스텀 에러 클래스 정의
- 모든 에러 로깅
## 보안
- JWT 인증 필수
- Rate limiting 적용
- 입력 validation 필수
예시 3: 다국어 프로젝트
# .caretrules
## 언어 규칙
- 코드: 영어
- 주석: 한국어
- 커밋 메시지: 한국어
- 문서: 한국어
## 코드 예시
```typescript
// ✅ 올바른 예시
function calculateTotal(items: Item[]): number {
// 전체 금액 계산
return items.reduce((sum, item) => sum + item.price, 0)
}
// ❌ 잘못된 예시
function 합계계산(items: Item[]): number {
// Calculate total
return items.reduce((sum, item) => sum + item.price, 0)
}
## 규칙 활성화 확인
### 설정에서 확인
1. 설정 열기 (⚙️)
2. **일반** 탭 → **규칙** 섹션
3. "프로젝트 규칙 활성화" 확인
### 상태 표시
채팅 헤더에 규칙 활성화 표시:
🎯 Caret | Agent 모드 | 📋 규칙 활성화
### 수동 비활성화
특정 작업에만 규칙 무시:
프롬프트에 명시: "규칙 무시하고 빠르게 프로토타입 만들어줘"
## 고급 기능
### 조건부 규칙
디렉토리별로 다른 규칙 적용:
```markdown
# .caretrules
## 기본 규칙
- TypeScript strict
## /admin 디렉토리
- 추가 보안 검증 필수
- 관리자 권한 확인
## /public 디렉토리
- 단순화된 코드
- 빠른 로딩 우선
팀별 규칙
.caretrules/ 디렉토리로 세분화:
.caretrules/
├── frontend.md # 프론트엔드 팀 규칙
├── backend.md # 백엔드 팀 규칙
└── common.md # 공통 규칙
외부 규칙 참조
# .caretrules
## 스타일 가이드
- Airbnb JavaScript Style Guide 준수
- Google TypeScript Style Guide 참고
## 참고 문서
- https://github.com/airbnb/javascript
- https://google.github.io/styleguide/tsguide.html
규칙 디버깅
AI가 규칙을 따르지 않을 때
확인 사항:
- 파일명이 정확한가? (
.caretrulesnotcaretrules) - 프로젝트 루트에 위치하는가?
- 규칙이 모호하지 않은가?
- 우선순위가 더 높은 다른 규칙 파일이 있지 않은가?
해결 방법:
"프로젝트 규칙을 다시 읽고 적용해줘"
규칙 우선순위 확인
"현재 적용 중인 규칙을 보여줘"
→ AI가 읽은 규칙 파일과 우선순위 표시
규칙 템플릿
React + TypeScript
# 프로젝트 규칙
- TypeScript strict 모드
- 함수형 컴포넌트 only
- Props interface 필수
- Tailwind CSS 사용
- 테스트 커버리지 80% 이상
Node.js API
# 프로젝트 규칙
- Express + TypeScript
- RESTful API 설계
- Joi 유효성 검사
- Winston 로깅
- Jest 단위 테스트
풀스택 모노레포
# 프로젝트 규칙
## 공통
- TypeScript
- ESLint + Prettier
- Conventional Commits
## /apps/web
- Next.js 14
- App Router
- Tailwind CSS
## /apps/api
- NestJS
- Prisma ORM
- PostgreSQL
마이그레이션 가이드
Cline → Caret
기존 .clinerules 유지하고 .caretrules 추가:
# 기존 규칙 복사
cp .clinerules .caretrules
# .caretrules 편집하여 Caret 기능 추가
Cursor → Caret
.cursorrules를 .caretrules로 변환:
mv .cursorrules .caretrules
# 필요시 형식 조정
자주 묻는 질문
Q: 규칙 파일 크기 제한은? A: 권장 10KB 이하. 너무 길면 AI가 모든 내용을 기억하지 못할 수 있습니다.
Q: 규칙을 수정하면 즉시 반영되나요? A: 네, 다음 메시지부터 바로 적용됩니다.
Q: 여러 규칙 파일의 내용이 충돌하면?
A: .caretrules → .clinerules → .cursorrules 순서로 우선순위가 적용됩니다.
Q: 규칙에 민감한 정보를 넣어도 되나요? A: 아니요. 규칙 파일은 AI에게 전송되므로 API 키 등을 포함하지 마세요.
다음 단계
통합 규칙 시스템은 Caret만의 독점 기능입니다. Cline은 .clinerules만 지원하고, Cursor는 .cursorrules만 지원합니다.