올해는 머신러닝이다.
Cursor AI Rule에 대해 기초 정리 본문
Cursor IDE에서 Rule 작성하는 방법
Cursor IDE는 AI 기반의 코드 편집기이며, 다양한 확장성과 자동화 기능을 제공합니다. Rule을 작성하는 것은 Cursor에서 특정 코드 패턴을 자동 수정하거나 가이드하는 데 활용됩니다.
1. Cursor Rule이란?
Cursor Rule은 코드 스타일, 코드 변환 또는 특정 패턴을 탐지하여 자동 수정할 수 있는 규칙을 설정하는 기능입니다. 이를 활용하면 팀 내 일관된 코드 스타일을 유지하거나 반복적인 수정 작업을 자동화할 수 있습니다.
Rule의 주요 기능
- 특정 코드 패턴을 감지
- 자동 코드 변환
- 경고 또는 추천 메시지 표시
- 특정 코드 스타일 강제 적용
2. Cursor Rule 작성 방법
Cursor에서 Rule을 작성하려면 .cursor/rules.json 또는 .cursor/rules.ts 파일을 생성하고 규칙을 정의할 수 있습니다.
(1) JSON 파일로 Rule 작성
간단한 규칙을 정의하는 경우 JSON 파일을 사용합니다.
📌 예제: rules.json
{
"rules": [
{
"name": "No console.log",
"description": "console.log() 사용을 금지합니다.",
"pattern": "console.log",
"replacement": "// 로그를 제거해주세요"
},
{
"name": "Use const instead of let",
"description": "let 대신 const를 사용하도록 강제합니다.",
"pattern": "\\blet\\b",
"replacement": "const"
}
]
}
✅ 설명
- pattern: 찾을 코드 패턴 (정규식 사용 가능)
- replacement: 변경할 코드
- description: 규칙 설명
(2) TypeScript 파일로 Rule 작성
보다 복잡한 규칙을 적용하려면 TypeScript 파일을 사용하여 조건을 설정할 수 있습니다.
📌 예제: rules.ts
import { Rule } from "cursor-rules";
export const rules: Rule[] = [
{
name: "Replace var with let or const",
description: "var 대신 let 또는 const를 사용하세요.",
pattern: /\bvar\b/g,
replacement: "let"
},
{
name: "Disallow eval usage",
description: "보안 문제로 인해 eval() 사용을 금지합니다.",
pattern: /\beval\s*\(/g,
replacement: "// eval 사용 금지"
}
];
✅ 설명
- TypeScript 기반으로 pattern을 정규식으로 정의할 수 있음
- replacement에 맞춰 코드가 자동 변환됨
- 복잡한 로직을 추가하여 특정 코드 컨텍스트에서만 적용 가능
3. Cursor Rule 적용하기
Rule을 작성한 후, Cursor IDE에서 적용하는 방법은 다음과 같습니다.
📌 적용 방법
- .cursor/rules.json 또는 .cursor/rules.ts 파일을 프로젝트 루트에 추가
- Cursor IDE에서 설정을 새로고침하거나 IDE를 재시작
- 코드 편집 중 자동으로 Rule이 적용되는지 확인
4. Rule 확장하기
Cursor의 Rule은 단순한 패턴 매칭 외에도 특정 파일 형식, 코드 스타일 또는 ESLint와 같은 도구와 연계하여 더 정교한 규칙을 만들 수도 있습니다.
(1) 특정 파일 유형에만 적용
{
"rules": [
{
"name": "Use single quotes in JavaScript",
"description": "JavaScript 파일에서 항상 작은 따옴표를 사용합니다.",
"pattern": "\"",
"replacement": "'",
"files": ["*.js", "*.ts"]
}
]
}
(2) 특정 컨텍스트에서만 동작
TypeScript 파일을 사용할 경우 특정 조건을 설정할 수 있습니다.
export const rules: Rule[] = [
{
name: "Ensure TODO comments have an issue reference",
description: "TODO 주석 뒤에 이슈 번호를 붙이도록 강제합니다.",
pattern: /TODO:/g,
replacement: "TODO (#issue-number):"
}
];
5. 기타 설정 및 활용법
- .cursor/config.json 파일을 통해 Rule을 적용할 범위를 설정 가능
- ESLint, Prettier와 함께 사용하여 코드 스타일을 유지 가능
- GitHub Actions과 연동하여 PR에서 자동 검사 가능
NestJS Cursor Rule
{
"rules": [
{
"name": "Disallow console.log",
"description": "NestJS 코드에서 console.log() 사용을 금지합니다.",
"pattern": "console.log",
"replacement": "Logger.log()"
},
{
"name": "Use Class Validator",
"description": "DTO에서 class-validator를 사용하지 않을 경우 경고합니다.",
"pattern": "@Body\(\) (.*): (.*)",
"replacement": "@Body() $1: Validate($2)"
},
{
"name": "Use Injectable Decorator",
"description": "서비스 클래스에는 @Injectable() 데코레이터를 필수로 사용해야 합니다.",
"pattern": "export class (.*Service) ",
"replacement": "@Injectable()\nexport class $1 "
},
{
"name": "Replace var with let/const",
"description": "NestJS 프로젝트에서는 var 사용을 금지하고 let 또는 const를 사용해야 합니다.",
"pattern": "\bvar\b",
"replacement": "let"
},
{
"name": "Use ConfigService Instead of Process.env",
"description": "process.env 대신 ConfigService를 사용해야 합니다.",
"pattern": "process.env.(\w+)",
"replacement": "configService.get('$1')"
}
]
}
결론
Cursor IDE에서 Rule을 작성하면 코드 스타일을 유지하고 반복적인 작업을 줄일 수 있습니다. 간단한 경우 rules.json을, 복잡한 경우 rules.ts를 사용하여 확장할 수 있습니다.
'스터디' 카테고리의 다른 글
NestJS에서의 Fail2Ban란 (0) | 2025.02.12 |
---|---|
Access Token과 Refresh Token에 대한 이해 (0) | 2025.02.12 |
HTML의 img, picture, source 태그 속성과 기능 정리 (0) | 2025.02.11 |
MVVM / MVC(아키텍쳐)와 디자이패턴과 다른점은 무엇인가 (1) | 2025.02.07 |
지치지 않고 제대로 공부하는 7가지 방법 (0) | 2018.12.18 |