한 줄로
회사 프로젝트의 여러 레포가 같은 CLAUDE.md를 쓰게 하려고 공통 레포를 만들고 안내문 PR 6개까지 올렸지만, 모두 닫았다. 지금은 새 레포 한 곳의 최상단에 규칙을 두고, 다른 레포에서는 심볼릭 링크로 그 파일을 가리킨다. 다만 새 세션에서 링크된 규칙이 로드되는지는 아직 확인하지 않았다.
개념
- CLAUDE.md: Claude Code가 읽는 프로젝트 규칙 파일이다.
-
@import: CLAUDE.md 안에서 다른 파일을 불러오는 문법이다. -
.claude/rules/: 규칙을 파일로 나눠 두는 폴더다.paths를 지정하지 않은 규칙은 매 세션 로드된다. - 심볼릭 링크: 다른 파일을 가리키는 바로가기 파일이다.
실제로 겪은 것
1. 공통 레포로 분리했다
처음 문제는 병합 부담이었다. 규칙을 고칠 때마다 기존 6개 레포에 각각 병합해야 했다. 그래서 규칙을 공통 레포로 분리하고, 6개 레포에 안내문을 넣는 PR을 올렸다.
2. @ import는 쓰지 않았다
불러오기 문법을 쓰지 않고 안내문을 택한 데는 claude -p로 시험한 결과가 있었다.
- 프로젝트 밖 파일은 승인 없이 읽히지 않았다.
- 파일이 없어도 오류가 나지 않았다.
3. 새 레포 최상단으로 옮겼다
이후 레포 구조를 새로 만들었다. 아래 이름은 사내 레포 이름 대신 쓴 일반명이다.
작업 폴더/
├── product-a/
│ ├── product-a-user/
│ └── product-a-admin/
└── product-b/
├── product-b-user/
└── product-b-admin/
안쪽 폴더는 바깥 레포의 .gitignore로 제외하고, 커밋과 push는 레포별로 따로 한다. submodule은 쓰지 않는다.
규칙은 이 새 레포 최상단에 넣기로 했다. 그래서 공통 레포를 가리키던 PR #414, #175, #89, #14, #103, #187을 닫았다. 브랜치는 남겨 뒀다.
4. 복사본 2개를 심볼릭 링크로 바꿨다
바깥 레포 두 곳에 복사본을 두는 대신, 한쪽을 링크로 만들었다.
product-b/CLAUDE.md → ../product-a/CLAUDE.md
대신 제약이 하나 생긴다. 두 레포가 나란히 있어야 링크가 동작한다.
규칙 내용에서 정한 것
- Jira 접근 방식 삭제: MCP/REST 사용 여부와 API 키 변수는 각자의 PC 설정이라 지웠다.
-
RULE.md는 만들지 않음: 공식 문서에 없는 파일이다.paths없는.claude/rules/도 어차피 매 세션 로드되므로 옮겨도 이득이 없다. -
세션의 알림 방식: 세션이 누군가에게 알릴 때는 프로젝트 개발 채널에 메시지를 보내고, 본문 아래 줄에
참고또는cc로 멘션한다.
삭제 후보로 꼽은 [배정]·[검토 중]·[완료] 형식 약 15줄은 아직 그대로다.
권장했지만 넣지 않은 것
cloudId, 전환 ID(11·21·31·41·2), JQL 주의를 넣는 안은 반영하지 않았다. JQL 주의의 내용은 다음과 같다.
- 한글 이름으로 JQL을 쓰면 오류 없이 틀린 결과가 나온다.
검토 중을 이름으로 조회하면 0건이었고, ID로 조회하면 23건이었다. - 타입
작업과 상태검토 중은 모두 ID10188이다.
아직 남은 것
- 새 세션에서 링크된 규칙이 로드되는지 확인하지 않았다.
- 기존 6개 레포의 dev에는 launchd 설명이 든 예전 전문이 남아 있다.
- 공통 레포 삭제 요청이 있었지만 실제 삭제 기록은 없다.
- 기존 제품 폴더의 CLAUDE.md는 요청대로 지웠다. git에 없는 파일이라 원문은 해당 세션 대화에만 있다.
새 경로로 옮기면서 따라오지 않은 것도 있다.
- 티켓 선행 생성 규칙은 기존 작업 폴더 최상단의 CLAUDE.md에 있어 새 경로에서 로드되지 않는다.
-
install.sh의 복사와 경로→에픽 매핑에 새 경로가 없다. - Claude 메모리는 경로별이라 이어지지 않는다.