monorepo 에서 lucide Globe 를 쓸 뻔했다
앱 안 기존 코드 두 곳이 lucide Globe 를 쓰고 있었다. 그게 표준인 줄 알았는데, 어긋난 쪽이었다.
아이콘 하나 넣을 때 보통 같은 앱 안에서 비슷한 걸 찾아 맞춘다. 그게 일관성이라고 알고 있으니까.
2026-08-06, 직원용 화면 상단바에 언어 전환 버튼을 넣었다. 클로드는 lucide-react 의 Globe 를 골랐다. 근거는 있었다 — 그 앱 기존 코드 두 군데가 이미 lucide Globe 를 쓰고 있었다. 새 버튼을 거기 맞추는 게 일관성이라고 본 것이다.
내가 걸었다.
"지구본 아이콘 채팅방에서 쓰는거 있잖아 그걸로 하면되는데 왜 또 새로 만들었어"
공유 패키지(@nodnod/ui/icons)에 직접 그린 LanguageIcon 이 있다. 경도선 하나와 위도선 셋이 들어간 SVG 로, 관람객 앱 채팅방과 헤더가 그걸 쓰고 있었다.
일관성을 어디서 재느냐
문제는 아이콘을 못 찾은 게 아니다. 일관성 기준을 어디에 두느냐에서 갈렸다.
「이 앱 안에서 일관되게」로 잡으면 눈앞의 파일 두 개가 곧 표준이 된다. 그럴듯하고, 그래서 확인을 안 하게 된다.
앱 3개와 공유 패키지가 한 저장소에 있는 구조에서는 순서가 반대다. 공유 패키지가 먼저고 앱 안 일관성은 그다음이다. 순서가 뒤집히면 앱마다 조금씩 다른 물건이 쌓이는데, 그게 각자 자기 앱 안에서는 일관돼 보인다.
이번엔 따라간 그 코드 자체가 어긋난 쪽이었다. 관람객이 보는 화면과 직원이 보는 화면에서 같은 뜻 버튼이 다른 그림이었다. 어긋난 쪽을 표준으로 삼아 하나를 더 보탤 뻔했다.
고친 범위
- 새로 만든 버튼을 공유
LanguageIcon으로 교체 - 같은 병이던 기존 파일도 함께 교체
그래서 그 앱에 라이브러리 지구본이 0개가 됐다. 새로 넣는 것만 고치면 어긋난 코드가 남고, 다음에 또 그걸 보고 맞추게 된다.
규칙은 있었는데 안 켜졌다
저장소 루트 문서에 이미 적혀 있다.
새 코드 작성 전 반드시 점검 — 공유 패키지에 재사용 가능한 코드 있나?
그 세션에도 실려 있었다. 그런데 발동하지 않았다.
이유가 짚인다. 규칙은 "만들기 전에 확인하라" 라고 말하는데, 이때는 만든다고 생각하지 않았다. 기존 코드를 따라간다고 생각했다. 따라가는 건 확인이 이미 끝난 행동처럼 느껴진다.
그래서 발동 조건을 다시 적었다. "새로 만들 때" 가 아니라 "화면에 아이콘·버튼·컴포넌트를 하나 놓으려 할 때마다" 공유 패키지를 먼저 본다. 따라가는 중인지 만드는 중인지는 그 순간 느낌이라 판정 기준으로 쓸 수 없다.