개발 환경 — Claude Code rules 재구조화
프로젝트가 커지면서 CLAUDE.md 하나에 모든 규칙을 때려넣던 구조가 한계에 왔다.
typescript 규칙, DB 규칙, 보안 규칙이 한 파일에 뒤섞이니 에이전트가 컨텍스트를 제대로 활용하지 못하는 느낌이었다. 파일 하나가 너무 많은 걸 알고 있으면, 오히려 아무것도 제대로 모르는 것과 다를 게 없다.
이번 커밋에서 .claude/rules/ 디렉토리를 만들고 7개 파일로 분리했다.
.claude/rules/
├── typescript.md
├── nestjs-api.md
├── database.md
├── worker-pipeline.md
├── security.md
├── frontend.md
└── infrastructure.md
각 앱(api, web, workers)의 CLAUDE.md에는 "적용 Rules" 섹션만 추가해서 해당 컨텍스트에 필요한 규칙만 명시했다. 중복 내용은 전부 제거했고 shrimp-rules.md도 shrimp MCP 전용 컨텍스트로 슬림화했다.
리뷰 기준도 .claude/REVIEW.md로 별도 분리했다. Critical / 항상 확인 / 건너뛸 것 3단계로 나눠서 코드 리뷰 시 우선순위를 명확히 했다.
settings.json에서는 PreToolUse 훅을 제거했다. 매번 훅이 실행되면서 성능 저하가 있었는데, deny 리스트 방식으로 전환해서 위험 명령(rm -rf류)을 차단하는 방향으로 바꿨다.
.gitignore도 이참에 정리했다.
packages/**/dist
coverage/
/test-results/
*.pem
**/.claude/settings.local.json
.mcp.log
특히 *.pem과 settings.local.json 누락은 보안 관점에서 실수였다. PEM 키가 커밋에 들어갈 뻔한 상황을 사전에 차단했다. 아찔한 순간이었다.
.mcp.json에서는 supabase를 제거하고 playwright@0.0.75, sentry@0.34.0으로 버전을 고정했다. 버전 미고정이 예상치 못한 동작 변화를 유발한 적이 있어서 이번 기회에 핀을 박아뒀다.