---
name: kr-patent-navigation-pane
description: 한국 특허 명세서 .docx의 Word 탐색창(Navigation Pane)에 섹션 헤더가 보이도록 outline level을 자동 부여하는 인프라성 스킬. 【발명의 명칭】, 【청구항 N】, 【도면 N】 등 한국 특허청 별지 양식의 섹션 제목 paragraph에 <w:outlineLvl>만 직접 삽입하여 외형(글자색·크기·폰트)은 그대로 두고 Word 탐색창에서 빠르게 점프 가능하도록 만든다. "탐색창", "navigation pane", "탐색창 손봐줘", "탐색창 안 나옴", "탐색창 비어 있음", "outline 안 나옴", "목차 사이드바", "섹션 점프", "outline level", "outlineLvl"이 언급되거나 외부에서 받은 명세서·다른 변리사 작성 docx·kr-patent-docx-builder 외 경로로 만든 docx의 탐색창이 비어 있다는 맥락이면 사용. kr-patent-full-workflow의 docx 출력 직후 또는 최종 검토 직전 단계에서도 호출 가능.
---

# kr-patent-navigation-pane — 한국 특허 명세서 탐색창 복구

## 무엇을 하는가

외부에서 받았거나 일반 Word/한컴오피스로 작성된 한국 특허 명세서 .docx는 보통 섹션 제목(【발명의 명칭】, 【기술분야】 등)에 Heading 스타일이 잡혀 있지 않아 Word의 **탐색창(Navigation Pane)이 텅 비어 있다**. 100페이지짜리 명세서에서 청구항이나 특정 실시예로 점프하기가 매우 비효율적이 된다.

이 스킬은 명세서 외관을 전혀 건드리지 않으면서 탐색창만 살린다:

- `<w:p>` 안에 직접 `<w:outlineLvl w:val="N"/>`를 삽입 (Heading 스타일 부여 X)
- 글자색/크기/폰트/들여쓰기 — 모두 그대로
- Word "보기 → 탐색 창"에서 즉시 트리가 보임

## 언제 사용하는가

- 외부에서 받은 명세서 docx의 탐색창이 비어 있을 때
- 다른 변리사가 작성한 초안을 검토하는데 청구항 14, 실시예 6-3 등으로 빨리 점프하고 싶을 때
- `kr-patent-docx-builder`가 아닌 경로(예: 한컴오피스 변환, 일반 Word 작성)로 만든 docx
- 명세서 작성이 어느 정도 끝나 검토 단계에서 네비게이션이 필요할 때

## 언제 사용하지 않는가

- `kr-patent-docx-builder`로 생성한 docx — 빌더가 이미 outline을 부여함 (확인 후 진행)
- 명세서가 아닌 일반 docx (헤더 패턴 `【...】`이 매칭되지 않으면 아무것도 안 일어남 — 안전하지만 무의미)

## 출력 형식

스크립트 실행 후 다음을 출력한다:

1. 백업 파일 경로 (`{원본명}_원본백업.docx`)
2. 부여된 outline 항목 리스트 (레벨 + 헤더 텍스트)
3. 최종 저장 경로 (원본 자리에 in-place 덮어쓰기)

## 사용 방법

### 일반 호출

사용자가 .docx 경로를 알려주면 다음 명령을 실행한다:

```bash
python "C:\Users\IPLAB\.claude\skills\kr-patent-navigation-pane\scripts\apply_navigation_pane.py" "<docx 경로>"
```

추가 옵션:
- `--no-backup` — 백업 생략 (비추천, OneDrive 등 자동 버전 관리가 있는 경우에만)

### 사전 점검

1. **파일이 Word에서 열려 있지 않은지 확인** — 열려 있으면 PermissionError로 실패. 사용자에게 닫아달라고 요청.
2. **OneDrive/Dropbox 등 동기화 폴더인 경우** — 동기화 충돌 가능. 작업 후 동기화 끝날 때까지 잠시 대기 권장.
3. **원본은 항상 백업됨** — 이름 충돌 시 `_원본백업(1).docx`, `_원본백업(2).docx`로 증가.

### 적용 결과 확인 방법

사용자에게: Word에서 파일 열고 **보기 → 탐색 창** 체크 → 좌측 사이드바에 outline 트리가 보이는지 확인.

## Outline 레벨 매핑 (한국 특허청 별지 양식)

| Lv | 헤더 |
|---|---|
| 0 | `【발명의 설명】`, `【청구범위】`, `【요약서】`, `【도면】` |
| 1 | `【발명의 명칭】`, `【기술분야】`, `【발명의 배경이 되는 기술】`, `【발명의 내용】`, `【도면의 간단한 설명】`, `【발명을 실시하기 위한 구체적인 내용】`, `【요약】`, `【대표도】`, `【청구항 N】`, `【도면 N】` |
| 2 | `【해결하고자 하는 과제】`, `【과제의 해결 수단】`, `【발명의 효과】`, `【본 발명 시작】`, `【N. …】` (예: 【1. 시스템 구성…】) |
| 3 | `【N-M. …】` (예: 【2-1. 좌표계 정합…】) |

레벨은 한국 특허청 별지 양식의 표준 계층을 따른다. 명세서마다 실시예 번호 체계가 다를 수 있으므로, 패턴이 매칭되지 않는 헤더는 outline 부여를 스킵한다(안전한 default).

## 동작 원리 (왜 outlineLvl만 넣고 pStyle을 안 넣는가)

한국 Word의 기본 "제목 1~6" 스타일(styleId `1`~`6`)은 파란색·큰글씨·들여쓰기가 자동 적용되도록 정의되어 있다. `pStyle="1"`을 부여하면 탐색창에는 뜨지만 **명세서 외관이 한국 특허청 양식에서 벗어난다** (특허청 양식은 섹션 헤더가 검정·11pt·고정 위치).

탐색창의 본질은 outlineLvl 값이므로, paragraph의 `<w:pPr>` 안에 `<w:outlineLvl w:val="N"/>`만 직접 넣으면:
- 탐색창에는 정상적으로 노출 ✓
- 시각적 변화 없음 ✓
- styles.xml 수정 불필요 ✓

이미 outlineLvl이 부여된 paragraph는 새 값으로 교체(idempotent) — 여러 번 실행해도 안전.

## 헤더 매칭 규칙

paragraph의 **전체 텍스트가** `【...】` 단독일 때만 헤더로 인정한다 (앞뒤 공백 허용). 본문 중간에 인용된 `【...】`는 헤더로 보지 않음.

paragraph 안에서 헤더 텍스트가 여러 `<w:r>`(run)로 쪼개져 있어도(예: 한 run에 `【`, 다음 run에 `도면`, 다음 run에 `】`) 모두 합쳐 매칭한다 — 실제 docx에서 자주 발생.

## 의존성

- Python ≥ 3.8 (표준 라이브러리만 사용 — `zipfile`, `re`, `argparse`, `shutil`, `tempfile`)
- 추가 패키지 설치 불필요

## 다른 스킬과의 관계

- **kr-patent-docx-builder**: 이상적으로는 빌더가 처음부터 outlineLvl을 부여. 이 스킬은 빌더 외 경로로 만들어진 docx의 보완.
- **kr-patent-full-workflow**: Stage 8(docx 출력) 직후 또는 외부 검토용 사본 만들 때 호출 가능.
- **kr-patent-consistency-check**: 정합성 점검은 텍스트 내용에만 관심 — outline과 무관.

## 누적 학습 항목

(이 섹션은 `kr-patent-skill-updater`가 작업 회고 후 자동으로 추가)

- _아직 없음_
