«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

Cursor AI Rule에 대해 기초 정리 본문

스터디

Cursor AI Rule에 대해 기초 정리

행복한 수지아빠 2025. 2. 12. 16:44

Cursor AI editor

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에서 적용하는 방법은 다음과 같습니다.

📌 적용 방법

  1. .cursor/rules.json 또는 .cursor/rules.ts 파일을 프로젝트 루트에 추가
  2. Cursor IDE에서 설정을 새로고침하거나 IDE를 재시작
  3. 코드 편집 중 자동으로 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를 사용하여 확장할 수 있습니다.