# 41 · CLAUDE.md 템플릿

**언제 읽나**: 새 프로젝트를 시작하거나 프로젝트 규칙을 문서화할 때.
**목적**: 미래의 세션(자신 포함)이 같은 함정을 다시 밟지 않게 한다.

---

## 그대로 복사해서 < > 부분만 채운다

```markdown
# NNN. <프로젝트명>

<한 줄: 무엇을 편집해서 무엇으로 내보내는가>. <스택>.

## 호출
"<별칭1>", "<별칭2>" → 이 프로젝트.

## 실행 / 배포
\`\`\`bash
npm install
npm run dev
npm run build
bash deploy.sh
\`\`\`
공개 주소: <URL>

## 대상 환경
**<브라우저> 전용 개인 도구다.** 그 외 미검증은 공백이 아니라 **사양**이다.

---

## 핵심 아키텍처 (변경 금지)

### A-1. 좌표는 절대 디자인 px. 레이아웃 폭은 상수, 줌은 transform만
<구현 위치>
> 왜 중요한가: 폭이 창에 종속되면 줄바꿈이 비결정적이 되고,
> 오프스크린 내보내기와 넘침 정책이 함께 무너진다. 셋은 한 묶음이다.
> 검증: docs/verify/test_scale_invariance.mjs

### A-2. 내보내기는 화면 DOM을 읽지 않는다
오프스크린에 같은 문서를 재렌더해 캡처한다.

### A-3. 넘쳐도 자르지 않는다 (clip 금지)
fit 은 grow | shrink 둘뿐.

### A-4. 테마 토큰은 고정 키 집합

### A-5. 바이너리는 문서에 넣지 않는다 (에셋 분리 + id 참조)

---

## 결정된 제약 (되돌리기 전에 읽을 것)

### C-1. <제약명>
- 결정: <무엇을 하기로 했는가>
- 근거: <실측값 또는 공식 문서 + 확인 날짜>
- 탈락한 대안: ① <대안> → <왜 탈락> ② ...
- 유지할 것: <분기를 넓히지 말라는 등의 경계>

---

## 암묵적 계약 (깨면 에러 없이 틀린다)
- <전제> — 깨뜨렸을 때 증상

---

## 확인된 미해결 문제 (재발견에 시간 쓰지 말 것)

### K-1. <증상> [우선순위 N]
<실측 근거: 수치와 측정 방법>
→ <해결 방향>

---

## 검증
규칙 1개당 스크립트 1개. docs/verify/*.mjs
**UI를 바꾸면 검증 스크립트도 같이 고친다. 스위트는 전부 한 번에 돌린다.**

## 진행 상태
- [x] Step 0 스캐폴드 — 검증: <...> (날짜)
- [x] Step 1 저장·Undo — **요소보다 먼저. 비협상**
- [ ] Step N <...>
```

---

## 작성 시 지킬 것

- ❌ 근거 없는 숫자를 쓰지 않는다. 숫자를 쓰면 측정 방법을 함께 적는다.
- ❌ "완벽하다", "문제없다" 같은 표현을 쓰지 않는다. 확인한 사실만 쓴다.
- 실패 기록(K-n)을 지우지 않는다. 해결했으면 "어떻게 구조로 막았는지"를 남긴다.
- 진행 상태에서 완료와 미실시를 섞지 않는다. 실행 못 한 것은 "미검증"이라고 쓴다.
