Cursor Skills와 Rules 차이, 언제 어떤 걸 쓰나
Cursor Skills와 Rules는 둘 다 에이전트에 지침을 주지만, 역할이 다릅니다. 공식 Skills·Rules 문서 기준으로 짧은 제약·코딩 규범은 Rule, 다단계 절차·워크플로는 Skill에 두는 편이 맞습니다. 가격·플랜 이야기는 없습니다.
이 글은 Notepads 제거 후기를 다시 쓰지 않습니다. 언제 Rule로 두고, 언제 Skill로 옮길지만 결정합니다.
Skills와 Rules는 뭐가 다르나?
한 줄 답: Rules는 매칭·항상 적용으로 프롬프트에 실리는 짧은 규범이고, Skills는 /skill-name·관련 시 발견으로 불러 쓰는 다단계 절차 패키지입니다.
| 구분 | Rules | Skills |
|---|---|---|
| 목적 | 짧은 코딩 가이드·제약 | 다단계 워크플로·절차 |
| 길이 | 몇 줄~수백 줄 | 보통 더 길고 단계형 |
| 적용 | Always / globs / Intelligent / @rule | /skill-name·@skill 또는 관련 시 발견 |
| 저장 | .cursor/rules/*.mdc | .cursor/skills/*/SKILL.md (.agents/skills/ 등도 로드) |
| 예 | “새 파일은 TypeScript” | “스테이징 배포: 테스트→빌드→배포→헬스체크” |
공식 Skills help의 비교표와 같습니다. 짧은 지시로 충분하면 Rule, 에이전트가 따라갈 반복 프로세스가 필요하면 Skill입니다.
Skill은 SKILL.md frontmatter(name, description, 선택 paths)로 정의하고, 스크립트·references를 둘 수 있습니다. Rule은 .mdc frontmatter(description, globs, alwaysApply)로 언제 실릴지를 정합니다. plain .md만 .cursor/rules에 두면 Rules 시스템에서 무시됩니다.
alwaysApply·globs는 언제 쓰나?
한 줄 답: alwaysApply: true는 모든 채팅에 실을 레포 전역 제약, globs는 해당 경로가 컨텍스트에 있을 때만 붙일 경로 한정 규범, 둘 다 아니면 description 기반 Intelligent 또는 @ 수동입니다.
| alwaysApply | description | globs | 동작 |
|---|---|---|---|
true | — | — | 항상 포함 (globs·description 무시) |
false | — | 있음 | 매칭 파일이 컨텍스트에 있으면 자동 첨부 |
false | 있음 | 없음 | Agent가 description으로 관련 시 끌어옴 (Apply Intelligently) |
false | 없음 | 없음 | @rule로만 포함 |
실무 기준:
- 시크릿·생성물 금지·응답 언어처럼 매 세션에 필요 →
alwaysApply: true(짧게). src/api/**에러 스키마처럼 경로 한정 →globs+alwaysApply: false.- 가끔만 쓰는 도메인 지식 → description만 두고 Intelligent.
- 일회성 체크리스트 → Rule에 넣지 말고 Skill 또는
@파일.
최소 glob Rule 예:
---
description: API route validation and typed errors
globs: src/routes/api/**/*.ts
alwaysApply: false
---
- Validate inputs at the route boundary.
- Return the existing typed error shape.
- Update the nearest unit test before claiming done.
alwaysApply와 globs가 걸린 Rule은 트리거 조건이 Skill과 다르므로 /migrate-to-skills 대상이 아닙니다.
/migrate-to-skills는 무엇을 옮기나?
한 줄 답: Cursor 2.4+ 내장 /migrate-to-skills는 Apply Intelligently형 dynamic rules( alwaysApply: false/미정 그리고 globs 없음)와 슬래시 커맨드만 Skill로 바꿉니다. Always·glob Rule과 User Rules는 남깁니다.
옮기는 것:
- Dynamic rules — “Apply Intelligently” 설정, 즉
alwaysApply: false(또는 미정)이고globs가 없는 규칙 → 표준 Skill - Slash commands — user·workspace 커맨드 →
disable-model-invocation: trueSkill (명시/호출만)
옮기지 않는 것:
alwaysApply: trueRuleglobs가 있는 Rule- 파일시스템에 없는 User Rules
절차:
- Agent 채팅에
/migrate-to-skills입력 - 대상 rule·command를 Skill로 변환
.cursor/skills/결과를 검토 후, 불필요해진 dynamic rule·커맨드만 정리
한 개만 Skill로 바꾸고 싶으면 /create-skill로 “@my-rule을 skill로”라고 요청한 뒤 원본 Rule을 삭제하는 방식이 안전합니다.
결정 체크리스트:
| 질문 | 예 → | 아니오 → |
|---|---|---|
| 매 채팅·매칭 경로에 짧게 실려야 하나? | Rule (alwaysApply / globs) | 다음 질문 |
| 다단계 절차를 재현해야 하나? | Skill (SKILL.md) | @ 파일·일회 프롬프트 |
| Intelligent-only Rule인데 절차가 길어졌나? | /migrate-to-skills 또는 /create-skill | Rule 유지·짧게 자르기 |
마무리
Cursor Skills Rules 차이의 핵심은 규범(Rule) vs 절차(Skill) 입니다. alwaysApply·globs는 Rule 쪽 트리거이고, /migrate-to-skills는 dynamic rule·슬래시 커맨드만 Skill로 옮깁니다. Always·glob Rule은 그대로 두고, 길어지는 how-to만 Skill로 빼시면 됩니다. 자세한 내용은 Rules, Skills, Skills help를 참고하시기 바랍니다.
출처
- Cursor Rules — Project Rules,
alwaysApply·globs, AGENTS.md - Agent Skills —
SKILL.md,/migrate-to-skills - Skills help — Rules vs Skills 표, 마이그레이션 범위