---
name: kr-patent-navigation-pane
description: 한국 특허 DOCX에 Word 탐색창용 제목 계층을 부여한다. 표제·청구항·본문 소제목의 outline level을 조정하는 요청에 사용한다.
---

# 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 "~/.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).

## 부가 기능: 평탄한 S13 실시예 본문의 챕터 분할

위 Outline 매핑 표의 Lv2 `【본 발명 시작】`·`【N. …】`은 **헤더가 이미 존재**할 때만 outline이 부여된다. 그런데 외부 초안이나 ITER 10 정형을 따르지 않은 명세서는 【발명을 실시하기 위한 구체적인 내용】 아래가 **헤더 없이 수십 단락이 평탄하게** 이어져, 탐색창에서 부모 항목 하나만 보이고 내부 점프가 불가능하다. 이 경우 도면 전환 경계마다 `【N. …】` 하위 챕터 헤더를 **새로 삽입**한다.

### 챕터 경계 잡는 법

S13 본문은 도면을 순서대로 설명하므로, 다음 신호가 곧 챕터 경계다:

- `도 N은 … 도면이다. 도 N을 참조하면 …` — 새 도면 설명 시작
- `이상에서는 …에 대하여 설명하였으며, 이하에서는 …` — 명시적 전환 문장 (전환 문장은 **다음** 챕터에 포함)
- 도입부 해석 규정(서수·연결·단수복수·포함 등) ↔ 본 발명 개요 ↔ 마무리(컴퓨터 판독 매체·변형 실시)의 큰 단락 묶음

house 표준은 `kr-patent-detail-description-review`의 **"도입부 5단락 + 본 발명 7섹션 + 마무리 5단락"** 정형이다. 챕터 제목은 가능하면 이 7섹션 골격(`【본 발명 시작】` 다음 `【1. …】`~`【7. …】`)에 맞추고, 도면 개수가 많아 7섹션으로 안 떨어지면 도면 묶음 단위로 늘리되 제목에 `(도 N)`을 병기한다.

### 외관 정책 — 신규 헤더도 outlineLvl-only가 default

신규 챕터 헤더 단락은 **본문과 동일한 단락 스타일**로 만든 뒤 `<w:outlineLvl w:val="2"/>`만 부여하는 것이 이 스킬의 default다(특허청 양식 외관 보존). `Heading 3` 등 제목 스타일을 직접 쓰면 탐색창에는 뜨지만 굵은 파란 글씨로 바뀌어 양식에서 벗어난다 — 사용자가 "챕터 제목을 눈에 띄게" 요청한 편집용 사본일 때만 예외.

### 절차

1. python-docx로 본문을 읽어 paragraph 인덱스별 텍스트를 덤프하고 경계 인덱스를 확정한다.
2. **경계 단락의 안정 참조를 먼저 모두 확보**한 뒤(`targets = [(paras[i], title), …]`) `insert_paragraph_before(title, style=…)`로 삽입한다 — 인덱스가 밀려도 참조는 유효하므로 위→아래 순서 무관.
3. **새 파일로 저장**(원본 in-place 덮어쓰기 금지). 청구범위·부호의 설명·본문 텍스트는 한 글자도 수정하지 않고 헤더 단락만 추가한다.
4. 저장 후 헤딩 계층을 재출력해 부모(`발명을 실시하기 위한 구체적인 내용`, Lv1) 아래로 챕터가 한 단계 들여써졌는지 확인.

> ⚠️ 원본이 Word에서 열려 있으면 PermissionError. 사본을 떠서 작업하고, 작업 전 원본 창을 닫게 안내.

## 동작 원리 (왜 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-detail-description-review**: S13 본문의 "도입부 5단락 + 본 발명 7섹션 + 마무리 5단락" 정형의 소스. 챕터 분할 시 챕터 골격을 이 정형에 맞춘다.

## 누적 학습 항목

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

- **(2026-06-18, 사건 D 작업자 피로 예측)** 평탄한 S13 본문(헤더 0개, 약 80단락)을 도면 전환 경계 기준 12챕터로 분할 삽입. 경계는 `도 N을 참조하면` 및 `이상에서는…이하에서는` 전환 문장으로 정확히 잡혔다(anchor 12개 전부 1차 매칭). `paras[i]` 참조를 먼저 확보 후 `insert_paragraph_before`로 삽입해 인덱스 밀림 문제 없음. **개선점 2가지**: ① 신규 헤더에 `Heading 3` 스타일을 써서 외관이 굵은 파란 글씨로 바뀜 — 본 스킬 default(본문 스타일 + outlineLvl-only)와 어긋남, 다음엔 outlineLvl-only로. ② 12분할은 ad-hoc이었음 — house 표준인 "본 발명 7섹션"(detail-description-review)에 맞췄으면 검토 정형과 정합되었을 것. 원본이 Word에 열려 PermissionError → 사본 떠서 작업.
