6.1 KiB
fe-common-rules
팀 전체에서 공통으로 사용하는 프론트엔드 Claude 지침 저장소입니다.
각 프로젝트는 이 저장소를 Git submodule로 포함하고, CLAUDE.md의 @import 구문으로 공통 지침을 불러와 사용합니다.
📁 저장소 구조
fe-common-rules/
├── CLAUDE.md # 공통 지침 엔트리 포인트 (rules/* 를 @import)
├── README.md # 이 파일
├── rules/
│ ├── coding-conventions.md # 포맷팅, 네이밍, 타입
│ ├── framework-rules.md # Vue/Nuxt/Tailwind/라이브러리 규칙
│ ├── commit-pr.md # 커밋 & PR 규칙
│ └── claude-workflow.md # Claude 작업 방식 지침
├── templates/
│ ├── CLAUDE.md.tpl # 프로젝트 루트 CLAUDE.md 템플릿
│ └── project/ # 프로젝트 지침 양식
│ ├── overview.md
│ ├── conventions.md
│ └── architecture.md
├── scripts/
│ ├── install.sh # 프로젝트에 submodule 설치 + 템플릿 복사
│ ├── init-project.sh # .claude/project 양식만 다시 초기화/diff
│ └── update.sh # 최신 공통 지침으로 업데이트
└── examples/
└── sample-nuxt-project/ # Nuxt4 + Vue3 + TS + Tailwind 샘플
🚀 프로젝트에 도입하기
1. Submodule 설치 (최초 1회)
프로젝트 루트에서 아래 명령을 실행합니다.
# 원격 저장소 URL은 팀 내부 Git 주소로 교체하세요
git submodule add <fe-common-rules-repo-url> .claude/common
git submodule update --init --recursive
또는 이 저장소에 포함된 헬퍼 스크립트를 사용해도 됩니다.
curl -fsSL <install.sh raw URL> | bash
설치 후 프로젝트 구조는 다음과 같이 됩니다.
your-project/
├── .claude/
│ ├── common/ ← submodule (fe-common-rules)
│ └── project/ ← 프로젝트 고유 지침
├── CLAUDE.md ← 공통 + 프로젝트 지침을 @import
└── ...
2. 프로젝트 CLAUDE.md 작성
프로젝트 루트의 CLAUDE.md에서 공통 지침과 프로젝트 지침을 함께 불러옵니다.
# <프로젝트 이름>
## 공통 지침
@.claude/common/CLAUDE.md
## 프로젝트 지침
@.claude/project/overview.md
@.claude/project/conventions.md
Claude Code는
@경로구문을 만나면 해당 파일의 내용을 컨텍스트에 포함시킵니다. 공통 지침의CLAUDE.md는 내부적으로rules/*.md를 다시@import하므로, 한 줄의@.claude/common/CLAUDE.md만으로 모든 공통 지침이 로드됩니다.
3. 공통 지침 업데이트 받기
# 최신 main 브랜치의 공통 지침으로 업데이트
git submodule update --remote .claude/common
# 또는 헬퍼 스크립트
bash .claude/common/scripts/update.sh
업데이트 이후에는 submodule 포인터가 변경되므로 반드시 커밋합니다.
git add .claude/common
git commit -m "chore: update fe-common-rules submodule"
📝 프로젝트 지침 양식 사용
.claude/project/ 에 들어갈 지침은 공통 저장소의 templates/project/ 에 양식으로 관리됩니다.
팀원은 install.sh 를 사용하면 submodule 설치와 동시에 이 양식을 자동으로 복사받아 작성을
시작할 수 있습니다.
신규 프로젝트 — install.sh 한 번으로 끝
bash .claude/common/scripts/install.sh git@github.com:<org>/fe-common-rules.git
# → .claude/common 에 submodule 설치
# → templates/project/*.md 를 .claude/project/ 로 복사
# → templates/CLAUDE.md.tpl 을 루트 CLAUDE.md 로 복사
이미 submodule 이 있는 프로젝트 — init-project.sh
이미 공통 저장소를 submodule 로 연결해둔 프로젝트에서 .claude/project/ 양식만 따로
초기화하거나, 공통 저장소에 새 양식이 추가됐을 때 사용합니다.
# 기본: 없는 파일만 복사 (기존 파일은 건너뜀)
bash .claude/common/scripts/init-project.sh
# 기존 파일을 덮어쓰고 싶을 때
bash .claude/common/scripts/init-project.sh --force
# 차이만 확인하고 복사는 하지 않기
bash .claude/common/scripts/init-project.sh --diff
양식을 추가/수정하려면
공통 저장소의 templates/project/*.md 를 수정하는 PR 을 올립니다. 머지 후 팀원들은
git submodule update --remote 로 새 양식을 받은 뒤, 필요하면
init-project.sh --diff 로 자신의 프로젝트 지침과 비교할 수 있습니다.
✍️ 공통 지침 수정 프로세스
- 이 저장소를 별도로 clone 합니다.
- 브랜치를 만들고
rules/*.md혹은CLAUDE.md를 수정합니다. - PR을 열고 팀 리뷰를 받습니다.
- 머지 후 각 프로젝트에서
git submodule update --remote로 동기화합니다.
수정 시 가이드
- 기존 규칙을 바꿀 때는 이유를 PR 설명에 반드시 기록합니다.
- 특정 프로젝트에만 해당되는 내용은 공통 지침이 아닌 프로젝트 지침으로 분리합니다.
- 충돌 가능성이 있는 규칙은 기본값을 정하고, 프로젝트에서 오버라이드 가능하도록 문장을 구성합니다.
🧭 지침 우선순위
Claude가 동시에 여러 지침을 읽는 경우 다음 우선순위를 따릅니다.
- 프로젝트 지침 (
.claude/project/*.md) — 최우선 - 공통 지침 (
.claude/common/*.md) — 프로젝트와 충돌하지 않는 범위 내에서 적용 - Claude의 일반 원칙
충돌이 발생하면 Claude는 프로젝트 지침을 따르되, 차이를 사용자에게 명시적으로 알려야 합니다.
📦 샘플 프로젝트
examples/sample-nuxt-project/ 폴더에 Nuxt4 + Vue3 + TypeScript + Tailwind CSS 기반의
샘플 구성이 들어 있습니다. 프로젝트에 이 저장소를 연결하는 실제 예시를 보려면 해당 폴더의
README.md를 참고하세요.