gc-wing/.claude/rules/code-style.md
htlee 918b80e06a chore: 팀 프로젝트 워크플로우 세팅
- pnpm → npm 전환 (워크스페이스 유지)
- .claude/ 팀 규칙(5), 스킬(4), 설정, hooks 스크립트(3) 추가
- .githooks/ commit-msg, post-checkout, pre-commit 추가
- Nexus npm 프록시 설정 (.npmrc — URL만, 인증 제외)
- .editorconfig, .prettierrc, .node-version(24) 추가
- CLAUDE.md 프로젝트 설명서 생성
- Map3D.tsx 미사용 함수 제거 (getDeckShipAngle)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 22:18:40 +09:00

1.9 KiB

TypeScript/React 코드 스타일 규칙

TypeScript 일반

  • strict 모드 필수 (tsconfig.json)
  • any 사용 금지 (불가피한 경우 주석으로 사유 명시)
  • 타입 정의: interface 우선 (type은 유니온/인터섹션에만)
  • 들여쓰기: 2 spaces
  • 세미콜론: 사용
  • 따옴표: single quote
  • trailing comma: 사용

React 규칙

컴포넌트

  • 함수형 컴포넌트 + hooks 패턴만 사용
  • 클래스 컴포넌트 사용 금지
  • 컴포넌트 파일 당 하나의 export default 컴포넌트
  • Props 타입은 interface로 정의 (ComponentNameProps)
interface UserCardProps {
  name: string;
  email: string;
  onEdit?: () => void;
}

const UserCard = ({ name, email, onEdit }: UserCardProps) => {
  return (
    <div>
      <h3>{name}</h3>
      <p>{email}</p>
      {onEdit && <button onClick={onEdit}>편집</button>}
    </div>
  );
};

export default UserCard;

Hooks

  • 커스텀 훅은 use 접두사 (예: useAuth, useFetch)
  • 훅은 src/hooks/ 디렉토리에 분리
  • 복잡한 상태 로직은 커스텀 훅으로 추출

상태 관리

  • 컴포넌트 로컬 상태: useState
  • 공유 상태: Context API 또는 Zustand
  • 서버 상태: React Query (TanStack Query) 권장

이벤트 핸들러

  • handle 접두사: handleClick, handleSubmit
  • Props로 전달 시 on 접두사: onClick, onSubmit

스타일링

  • CSS Modules 또는 Tailwind CSS (프로젝트 설정에 따름)
  • 인라인 스타일 지양
  • !important 사용 금지

API 호출

  • API 호출 로직은 src/services/에 분리
  • Axios 또는 fetch wrapper 사용
  • 에러 처리: try-catch + 사용자 친화적 에러 메시지
  • 환경별 API URL은 .env에서 관리

기타

  • console.log 커밋 금지 (디버깅 후 제거)
  • 매직 넘버/문자열 → 상수 파일로 추출
  • 사용하지 않는 import, 변수 제거 (ESLint로 검증)
  • 이미지/아이콘은 src/assets/에 관리