返回 Skill 列表
extension
分类: 开发与工程无需 API Key

naming-convention-guard

**命名约定守护** - 在编写代码时自动触发。确保变量、函数、类和文件名的一致命名规则。根据语言自动应用camelCase、PascalCase、snake_case等命名风格。检测不良名称并提出改进建议。

person作者: jakexiaohubgithub

Naming Convention Guard Skill v1.0

네이밍 수호자 - 일관되고 의미 있는 이름으로 코드 가독성 향상

핵심 철학

Core_Philosophy:
  원칙: "이름만 보고 역할을 알 수 있어야 한다"
  목표: "3개월 후에도 코드를 이해할 수 있는 네이밍"

  좋은_이름의_조건:
    - 의도를 드러낸다 (What, not How)
    - 검색 가능하다 (grep으로 찾기 쉬움)
    - 발음 가능하다 (팀원과 대화 가능)
    - 일관성이 있다 (프로젝트 전체)

  나쁜_이름_패턴:
    -  글자 (x, y, i 제외)
    - 의미 없는 줄임말 (usr, cnt, tmp)
    - 타입만 있는 이름 (data, info, list)
    - 헝가리안 표기법 (strName, intCount)
    - 부정 조건 (notFound, isNotValid)

자동 발동 조건

Auto_Trigger_Conditions:
  Always_Active:
    - "Write tool로 코드 작성 시"
    - "Edit tool로 코드 수정 시"
    - "새 변수/함수/클래스 생성 시"

  File_Extensions:
    - ".ts, .tsx, .js, .jsx"
    - ".py"
    - ".go"
    - ".java, .kt"

언어별 컨벤션

TypeScript/JavaScript

TypeScript_Conventions:
  변수: "camelCase (userName, isLoggedIn)"
  상수: "SCREAMING_SNAKE_CASE (MAX_RETRY_COUNT)"
  함수: "camelCase + 동사 (getUserById, handleSubmit)"
  클래스: "PascalCase (UserService, OrderRepository)"
  인터페이스: "PascalCase, I 접두사 안씀 (User, CreateUserDto)"
  컴포넌트: "PascalCase (UserProfile, OrderList)"
  파일명: "kebab-case 또는 기능.타입.ts"

함수_동사_패턴:
  조회: "get*, find*, fetch*"
  생성: "create*, add*, insert*"
  수정: "update*, modify*, set*"
  삭제: "delete*, remove*, clear*"
  검증: "is*, has*, can*, should*"
  변환: "to*, from*, parse*, format*"
  핸들러: "handle*, on*"

Python

Python_Conventions:
  변수_함수: "snake_case (user_name, get_user)"
  상수: "SCREAMING_SNAKE_CASE (MAX_RETRY)"
  클래스: "PascalCase (UserService)"
  프라이빗: "_underscore (_internal)"
  모듈_파일: "snake_case (user_service.py)"

Go

Go_Conventions:
  Private: "camelCase (userName)"
  Public: "PascalCase (UserName)"
  인터페이스: "PascalCase + er (Reader, Writer)"
  파일명: "snake_case.go"

나쁜 이름 탐지

즉시 수정 필요

| 패턴 | 문제 | Bad | Good | |------|------|-----|------| | 한글자 | 의미 불명 | a, d, x | user, data, item | | 숫자 접미사 | 구분 불명 | user1, user2 | primaryUser | | 의미없음 | 역할 불명 | data, info | users, config | | 타입만 | 내용 불명 | list, array | orders, items |

수정 권장

| 패턴 | 문제 | Bad | Good | |------|------|-----|------| | 줄임말 | 가독성 | usr, cnt | user, count | | 부정조건 | 혼란 | isNotValid | isInvalid | | 동사없음 | 동작불명 | user() | getUser() | | 헝가리안 | 불필요 | strName | name |

명명 공식

변수

규칙: "[형용사] + [명사]"
예시:
  - activeUser
  - totalOrderCount
  - lastLoginDate

Boolean: "is/has/can/should + [형용사/명사]"
예시:
  - isActive, isLoggedIn
  - hasPermission
  - canEdit, shouldUpdate

Array: "[명사]s (복수형)"
예시:
  - users, orders, selectedItems

함수

규칙: "[동사] + [목적어] + [조건]"

CRUD:
  Create: "createUser, addItem"
  Read: "getUser, findUserById"
  Update: "updateUser, setStatus"
  Delete: "deleteUser, removeItem"

Query:
  단일: "getUser, findOrder"
  복수: "getUsers, listItems"
  조건: "getUsersByRole"

Handler:
  규칙: "handle* 또는 on*"
  예시: "handleClick, onSubmit"

파일

Component: "PascalCase.tsx (UserProfile.tsx)"
Service: "[domain].[type].ts (user.service.ts)"
Types: "[domain].types.ts"
Test: "[file].test.ts"
Constants: "[category].constants.ts"

출력 형식

## 네이밍 검토 결과

### 즉시 수정 필요
| 위치 | 현재 | 문제 | 제안 |
|------|------|------|------|
| L15 | d | 한글자 | data |
| L23 | user1 | 숫자 | primaryUser |

### 수정 권장
| 위치 | 현재 | 문제 | 제안 |
|------|------|------|------|
| L8 | usrCnt | 줄임말 | userCount |

Quick Commands

| 명령 | 동작 | |-----|------| | naming check | 파일 네이밍 검사 | | naming suggest | 이름 개선 제안 |

체크리스트

### 변수명
[ ] 의미가 명확한가?
[ ] 검색 가능한가?
[ ] 적절한 길이인가? (2-30자)

### 함수명
[ ] 동사로 시작하는가?
[ ] 동작이 명확한가?

### 일관성
[ ] 프로젝트 전체 같은 규칙인가?
[ ] 같은 개념에 같은 단어인가?

Version: 1.0.0 Auto-Active: 코드 작성 시 항상 Integration: clean-code-mastery