"TRIZ 기반 발명내용설명서 작성 스킬. 기술분야/해결과제/핵심아이디어를 입력받아 TRIZ 모순 분석, IFR 도출, 선행특허 조사를 거쳐 KIMM 직무발명내용설명서(HWPX)를 자동 생성한다."
Resources
5Install
npx skillscat add nanomechanicskimm/my-tools/patent-incubation-auto Install via the SkillsCat registry.
TRIZ 기반 발명내용설명서 작성 스킬
KIMM 연구원이 특허 아이디어를 입력하면, TRIZ 방법론으로 체계적 분석을 수행하고 KIMM 직무발명내용설명서 양식(HWPX)으로 출력한다.
When to Use
- 사용자가 특허 아이디어로 발명내용설명서를 작성하고자 할 때
- "특허", "발명신고서", "발명내용설명서", "patent disclosure", "TRIZ", "직무발명" 언급 시
- KIMM 양식의 발명 관련 문서가 필요할 때
Skill Constants
SKILL_ROOT = ~/.claude/skills/patent-incubation-auto
HWPX_SKILL = ~/.claude/skills/hwpx
HWPX_XML_SKILL = ~/.claude/skills/hwpx-xml
KIPRIS_ENV_FILE = ~/Claude_Work/.env[!note] OS별 경로 해석
~는 홈 디렉토리로 해석한다 (Windows:C:/Users/<user>, macOS:/Users/<user>).
KIPRIS 키는 스크립트가--key→KIPRIS*KEY환경변수(대소문자·언더스코어 무시) →KIPRIS_ENV_FILE
순으로 직접 해결한다. 모두 없으면 Phase 5/6c는 degraded 모드로 진행한다.
Python 실행은python3(PATH 우선)를 사용한다 (Windows에서 미탐지 시~/miniconda3/python).
Obsidian 마크다운 및 다이어그램 규칙 (모든 출력 파일에 적용)
본 스킬이 생성하는 모든 .md 파일은 Obsidian 볼트에서 직접 사용할 수 있어야 한다.
MD 파일 기본 규칙
- YAML 프론트매터 필수:
title,created,tags최소 포함 - 내부 링크:
[[파일명]]또는[[파일명|표시텍스트]]문법 사용 가능 - 태그:
#태그명또는 프론트매터tags:배열 - 콜아웃:
> [!note],> [!warning],> [!info]등 Obsidian 콜아웃 사용 가능 - 줄바꿈: Obsidian 렌더링 기준 (빈 줄로 단락 구분)
다이어그램 정책
| 유형 | 도구 | 용도 |
|---|---|---|
| 코드화 가능한 도면 | Mermaid | 흐름도, 시스템 구성도, 상태 변화도, 비교표, 시퀀스 다이어그램 등 |
| 자유 형식 스케치 | Excalidraw | 아이디어 핸드라이팅, 개념 스케치 등 사용자가 직접 그리는 경우만 |
| HWPX 삽입용 | PNG (matplotlib) | convert_hwpx.py가 §9에 자동 삽입하는 이미지 |
Mermaid 다이어그램 규칙
- 발명내용설명서 MD에
\``mermaid` 코드 블록으로 인라인 삽입 - 지원 유형:
graph,flowchart,stateDiagram-v2,sequenceDiagram,pie,xychart-beta,quadrantChart - 한글 텍스트 사용 가능 (노드 라벨, 설명 등)
- Phase 6b에서 발명 구성에 맞는 Mermaid 다이어그램을 자동 생성하여 발명내용설명서 MD §6, §9에 삽입
도면 ↔ 설명 동기화 규칙 (규칙 C, 2026-07 신설 / 2026-07-13 개정)
도면이 신규 생성·교체·업데이트되면(특히 사용자 제공 원도 pptx/이미지를 삽입할 때) 각 도면의 실제 내용(라벨·구성요소·신호 흐름·좌표축)을 Read 또는 텍스트 추출(python-pptx 등)로 파악하여, §9의 도면 목록(내용 기반 제목)과 본문 참조를 그 내용에 맞게 일치시킨다. 도면 번호([도 N])별 설명 목록("도 1은 ~" 형식의 '도면의 간단한 설명')은 작성하지 않는다 — 아래 '도면 번호·부호 미사용 정책' 참조. 도면 개수·순서·주제가 바뀌면 제목 목록·순서도 일치시키고 관련 청구항 링크를 갱신한다. 사용자 원도 삽입 시 600 dpi PNG 변환(PowerPoint COM: 슬라이드 in×600 픽셀) 후 diagrams/에 배치하면 convert_hwpx.py가 §9에 삽입한다. Phase 6b(도면)와 Phase 6c(인용) 사이 산출물이 확정될 때 auto는 이 동기화를 자동 수행한다.
도면 번호·부호 미사용 정책 (2026-07-13 신설, NON-NEGOTIABLE)
출원용 정식 도면과 도면부호 체계는 변리사가 별도로 작성한다. 내부 신고 문서의 자체 번호가 남으면 변리사 작업과 충돌하여 오해를 일으킬 수 있으므로 다음을 지킨다:
- 도면 내 부품 번호(참조 부호) 금지: 도면(SVG·Mermaid·matplotlib)의 구성요소 라벨은 부품 이름 텍스트만 사용한다. "10", "100", "챔버(10)" 등 참조 부호 표기 금지.
- 도면 번호 설명 삭제: §9에 "[도 N]" 번호 부여 및 번호별 설명 목록("도 1은 ~를 나타낸다")을 작성하지 않는다. 각 도면은 내용 기반 제목(예: "전체 시스템 구성도")만 달아 삽입한다.
- 본문·청구항 부호 병기 금지: §6 본문·§8 청구항에서 구성요소는 이름으로만 지칭한다("챔버(10)" → "챔버"). §9 도면부호 목록 테이블은 작성하지 않는다. 구별이 필요하면 서수·수식어("제1 롤", "하부 기판")를 사용한다.
- 파일·슬라이드 관리용 번호는 허용:
fig1_*.svg/fig1_*.png파일명 접두사와 figures_deck.pptx 슬라이드 순서는 삽입 순서 관리용으로 유지하되, 문서·슬라이드 캡션에는 "[도 N]"을 노출하지 않는다(캡션은 제목만).
TRIZ 용어 사용 규칙
TRIZ는 아이디어 도출 수단이며, 그 흔적은 최종 특허 문서에 남기지 않는다.
| 영역 | TRIZ 용어 | 설명 |
|---|---|---|
| 발명내용설명서 MD §1~§9 | 금지 | 일반적 기술 용어로 변환하여 서술 |
| 발명내용설명서 MD 부록 A | 허용 | TRIZ 분석 과정을 상세 기록 (내부 참고용) |
| HWPX §1~§9 | 금지 | TRIZ, IFR, 모순 매트릭스, 원리 번호 등 일체 불포함 |
Phase 6 에이전트가 §1~§9 작성 시, TRIZ 분석 결과를 일반적인 기술 용어로 변환하여 서술한다. 예:
- "기술적 모순 TC1 해결" → "점진적 접촉과 변형 방지의 상충 관계를 해소"
- "IFR 3 적용" → "복합재료 챔버 구조를 도입하여"
- "원리 35(속성 변환)" → "형상기억합금의 온도 응답 특성을 활용하여"
도면 파이프라인 규칙 (HWPX 삽입용, 2026-07-06 개편)
- SVG(컬러 벡터) 1차 생성 → figures_deck.pptx(슬라이드 N=도면 N 1:1, 캡션은 제목만 — [도 N] 번호 미표기) → 600 dpi PNG → HWPX 순서를 표준으로 한다(상세: agents/phase6b-diagram-generator.md Step 3-2).
- 상세·실척 도면 모드 (matplotlib 계산 기반, 2026-07-16 신설): 발명이 물리 기하(광학·역학·열)로 정의되거나 정량 상충·한계가 논거의 중심이면, 손코딩 SVG 대신 matplotlib 실척·계산 도면을 1차 경로로 쓴다 — 실척 좌표계(실제 mm 치수), 광선·궤적의 물리 계산, 전 기능층 적층+재료 표기, 정량 차트(로그축+요구선+동작점), 렌더 후 Read 육안 검증 루프.
svg.fonttype='path'로 SVG를 병행 저장하면 outline 단계 없이 COM AddPicture 덱 조립이 가능하다. 상세:reference/detailed-figures.md(Phase 6b Step 4-0). - PPTX 덱은 편집 가능해야 한다(2026-07-06 개정): PNG 래스터 삽입 금지.
outline_svg_text.py로 텍스트를 path로 outline한 SVG를 PowerPoint COMAddPicture로 직접 삽입 — 슬라이드에서 "그래픽 도형으로 변환" 편집 가능 + 한글 텍스트 누락 버그(PowerPoint SVG 변환기) 회피. 조립 후 패키지 내ppt/media/*.svg파트 수 검증. - 600 dpi PNG는 PowerPoint COM export(슬라이드 인치×600 픽셀) 우선,
svg2png.py --dpi 600폴백. 그래프형 도면의 matplotlib 폴백도dpi=600. {output_dir}/diagrams/*.png에 저장 → convert_hwpx.py의--diagrams옵션으로 §9에 자동 삽입- 컬러 적극 사용(내부 신고 문서 기준. 출원 도면화 시 흑백 변환 §9 부기), 흰색 배경, 한글 폰트(Malgun Gothic)
- 필수 3종 도면(특허 배경·종래기술 비교·활용/파급효과) 포함 최소 5매
워크플로우 전체 개요
Step 0: 입력 수집 ──────────────────── 사용자 상호작용
Step 1: TRIZ 시스템 분석 (Phase 1) ─── sonnet 에이전트
Step 2: 모순 + IFR 생성 (Phase 2) ──── fable 에이전트
Step 3: 사용자 검토 게이트 ──────────── 사용자 상호작용 (결과 표시 + 선택)
Step 4: 정량 평가 (Phase 4) ─────────── haiku 에이전트
Step 5: 선행특허 조사 (Phase 5) ─────── sonnet 에이전트 (자기공지 논문 + 자기선행 특허 조사 포함)
Step 5.5: 특허성 재채점 ────────────── opus 에이전트 (Phase 5 반영 + 반대심문)
Step 5b: 중간 진행 보고 ────────────── 사용자에게 진행 상황 표시
Step 6: 발명내용설명서 작성 (Phase 6) ── fable 에이전트
Step 6.5: 청구항 하드닝 (자동 점검+수정) ─ 오케스트레이터 자동 처리
Step 6b: 도면 생성 (Phase 6b) ───────── sonnet 에이전트 (컬러 SVG → PPTX 덱 → 600dpi PNG)
Step 6c: 인용문헌 정합성 검증 & PDF (Phase 6c) ── sonnet 에이전트 + 강제 게이트
Step 6d: Critic 검증 게이트 ─────────── opus 에이전트 (출처·모순/IFR·청구항 특허성, PASS/FIX/BLOCK)
Step 6e: 사업화 Critic ──────────────── opus 에이전트 (삼성전자 전담 변리사 페르소나 — 회피설계·침해 입증·사업 판단, PASS/FIX/ADVISE)
Step 7: HWPX 변환 (Phase 7) ─────────── sonnet 에이전트
Step 8: 최종 출력 및 안내 ──────────── 사용자에게 결과 안내모델 라우팅 원칙 (2026-08-12 개정)
생성(저비용)↔검증(고성능)의 비대칭 배치로 품질을 유지하면서 비용·시간을 절감한다.
| 모델 | 역할 | 배치 Phase |
|---|---|---|
| fable | 발명 창의 핵심·최고가치 산출물 — 모순/IFR 창출, 청구항 포함 명세 작성 | Phase 2, Phase 6 |
| opus | 적대적 검증·법률/전략 추론 — 반대심문, critic 2단 | Step 5.5, Phase 6d, Phase 6e |
| sonnet | 표준 구조화·도구 실행 — 분석, 검색, 하드닝, 도면, 인용 검증, HWPX 변환 | Phase 1, 5, 6.5, 6b, 6c, 7 |
| haiku | 템플릿 기반 채점·경량 기계 작업 (Step 5.5의 opus 재채점이 특허성 축을 보정) | Phase 4 |
Step 0: 입력 수집 및 검증
입력 방법 A: 대화형 입력 (기본)
사용자에게 다음 메시지를 표시한다:
발명내용설명서를 작성합니다. 다음 정보를 입력해 주세요:
1. **기술분야**: 발명이 속하는 기술 분야 (예: "마이크로LED 디스플레이 제조")
2. **해결 과제**: 해결하고자 하는 기술적 문제 (예: "인터포저 제조 단계의 비용과 시간 절감")
3. **핵심 아이디어**: 문제를 해결하는 핵심 기술적 아이디어 (예: "가변 피치 레이저를 이용한 COC 직접 전사")
옵션:
- **발명자명** (기본: 미입력) — 공동발명자가 있으면 쉼표로 함께 입력(첫 항목=주발명자, `inventors[]`로 저장)
- **소속기관** (기본: 미입력, KIMM 발명이면 "한국기계연구원" 제안) — 자기선행 특허 조사(Phase 5 Step 0-B)의 출원인 검색에 사용
- **출력 디렉토리** (기본: 현재 작업 디렉토리의 output/)
- **참조 문서** (기본: 현재 디렉토리의 .md 파일 자동 탐색)
> 발명자 리스트·소속기관 정보가 없으면 자기선행 조사는 **사용자(주발명자) 1인 위주**로 수행한다.[!important] AskUserQuestion 도구를 사용하여 입력을 받아야 한다. 입력을 요청한 후 사용자 응답을 기다린다.
입력 방법 B: 문서 기반 입력 (자동 감지)
사용자가 "현재 폴더의 md 파일을 토대로" 등의 지시를 하거나, 발명 주제와 함께 실행을 요청한 경우:
- 작업 디렉토리의
.md파일을 Glob으로 탐색 - 발명 관련 MD 파일을 읽어 기술분야/해결과제/핵심아이디어를 자동 추출
- 추출된 정보를 사용자에게 확인 요청:
📋 다음 정보로 발명내용설명서를 작성합니다. 맞는지 확인해 주세요:
- **기술분야**: {추출된 기술분야}
- **해결 과제**: {추출된 해결과제}
- **핵심 아이디어**: {추출된 핵심아이디어}
- **참조 문서**: {발견된 MD 파일 목록}
진행할까요? (Y/수정사항 입력)[!important] 자동 추출 시에도 반드시 사용자 확인을 거쳐야 한다. 단, 사용자가 "자동으로 진행" 또는 "확인할 것 없으면 자동 진행"이라고 지시한 경우에는 확인 없이 바로 진행한다.
manifest 생성
입력을 받으면 invention_manifest.json을 생성한다:
{
"input": {
"field": "사용자가 입력한 기술분야",
"problem": "사용자가 입력한 해결 과제",
"idea": "사용자가 입력한 핵심 아이디어",
"inventor": "주발명자명 (하위호환 키 = inventors[0])",
"inventors": ["주발명자", "공동발명자1", "..."],
"affiliation": "소속기관(출원인 예정, 선택) — Phase 5 Step 0-B 자기선행 특허 조사에 사용",
"date": "YYYY-MM-DD",
"references": ["참조 문서 경로 목록"],
"source_files": ["원본 MD 파일 경로 목록"]
},
"output_dir": "출력 디렉토리 절대 경로",
"phases": {}
}Step 1: TRIZ 시스템 분석 (Phase 1)
Agent: agents/phase1-triz-system.md
Model: sonnet
Agent(
subagent_type="general-purpose",
model="sonnet",
prompt="Read {SKILL_ROOT}/agents/phase1-triz-system.md for instructions.
Read {SKILL_ROOT}/reference/triz-contradiction-matrix.json for parameter list.
Input: {manifest.input}
Output: {output_dir}/triz_system.json"
)완료 후 manifest 업데이트:
"phase1": {"status": "completed", "output": "triz_system.json"}Step 2: 모순 도출 + IFR 생성 (Phase 2)
Agent: agents/phase2-contradiction-ifr.md
Model: fable — 모순 도출과 IFR 창출은 발명의 창의 핵심 단계
Agent(
subagent_type="general-purpose",
model="fable",
prompt="Read {SKILL_ROOT}/agents/phase2-contradiction-ifr.md for instructions.
Read {SKILL_ROOT}/reference/triz-contradiction-matrix.json for matrix lookup.
Read {SKILL_ROOT}/reference/triz-40-principles.md for principle details.
Read {SKILL_ROOT}/reference/triz-separation-principles.md for separation laws.
Read {SKILL_ROOT}/reference/contradiction-deepening.md for the deepening protocol (P1~P10) — apply to 핵심 contradictions.
Read {output_dir}/triz_system.json for Phase 1 output.
Input: {manifest.input}
Output: {output_dir}/triz_analysis.json
CRITICAL: Generate at least 10 IFRs. Each IFR must cite applied principle numbers.
CRITICAL: For each quantitative limit claim, tag approx_level (geo|gaussian|wave|measured)
and provisional (true/false) per deepening protocol P6."
)완료 후 manifest 업데이트:
"phase2": {"status": "completed", "output": "triz_analysis.json"}IFR 수량 검증
생성된 triz_analysis.json의 ifr_count가 10 미만이면:
- 에이전트를 재호출하여 추가 모순 쌍 탐색 (최대 2회 재시도)
- 재시도 후에도 10개 미만이면 현재 결과로 진행 (사용자에게 안내)
모순 심화 프로토콜 (2026-08-08 신설 — reference/contradiction-deepening.md)
핵심 모순(purpose_relation=핵심)에는 심화 프로토콜 P1~P10을 적용한다. 오케스트레이터 준수 사항:
- P6 게이트:
triz_analysis.json에서provisional: true인 정량 한계는 Phase 6 발명내용설명서의
정량 문안에 넣지 않는다(§9 검증 필요 사항으로만 기재). 기하 근사 한계가 명세서에 실리면
파동광학 검증에서 4~5배 오차로 뒤집힌 실사례가 있다(구면 NED 2026-08-08). - P7 게이트: 잠정 한계가 발명의 핵심 우위 논거이면 Phase 6 진입 전 사전 등록 수치 검증
(계획 고정 → 실행 → 게이트 판정)을 사용자에게 제안한다. 검증 시 베이스라인 동시 재측정(P8) 필수.
Step 3: 사용자 검토 게이트 (Phase 3)
Phase 2 결과를 사용자에게 반드시 표시하고 검토를 요청한다.
결과 표시 형식
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 TRIZ 분석 결과 (Phase 1~2 완료)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
### 기술적 모순 ({N}개)
| ID | 개선 파라미터 | 악화 파라미터 | 권장 원리 |
|----|-------------|-------------|----------|
{triz_analysis.technical_contradictions를 테이블로}
각 기술적 모순에 대해:
- **모순 설명**: 개선 시 악화되는 메커니즘
- **발명 목적과의 관계**: 이 모순 해결이 발명 목적에 기여하는 바
- **원리 적용 방향**: 각 권장 원리의 구체적 적용 방법
### 물리적 모순 ({N}개)
| ID | 모순 내용 | 분리 법칙 | 분리 해결 방법 |
|----|----------|----------|--------------|
{triz_analysis.physical_contradictions를 테이블로}
각 물리적 모순에 대해:
- **분리 해결 설명**: 분리 법칙이 모순을 해결하는 구체적 방법
- **발명 목적과의 관계**: 해결 시 달성되는 효과
### 모순-IFR 관계 매핑
| 모순 ID | 관련 IFR | 해결 방식 요약 |
|---------|---------|--------------|
{contradiction_ifr_coverage를 테이블로}
### IFR 목록 ({ifr_count}개)
| # | 핵심 내용 (요약) | 적용 원리 | 해결 모순 |
|---|----------------|----------|----------|
{triz_analysis.ifr_list를 간결한 테이블로, contradiction_link 포함}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
다음 중 선택해 주세요:
1️⃣ **자동 진행** — 현재 결과로 평가 및 발명내용설명서 작성을 계속합니다
2️⃣ **피드백 제공** — IFR 수정/추가/삭제 의견을 입력합니다
3️⃣ **재분석 요청** — 다른 관점에서 TRIZ 분석을 다시 수행합니다사용자 응답 처리
- 자동 진행 (1, "자동", "진행", "OK", "Y" 등): Phase 4로 바로 이동
- 피드백 제공 (2, 또는 구체적 의견 텍스트): 사용자 피드백을 반영하여
triz_analysis.json수정 후 Phase 4 - 재분석 (3, "재분석", "다시"): Phase 2 재실행
[!important] 사용자가 이전에 "자동 진행" 또는 "확인할 것 없으면 자동 진행"이라고 지시한 경우에만 이 게이트를 건너뛸 수 있다. 그 외에는 반드시 사용자 응답을 기다린다.
manifest 업데이트:
"phase3": {"status": "completed", "user_action": "approved|feedback|reanalysis"}Step 4: 정량 평가 & 순위화 (Phase 4)
Agent: agents/phase4-evaluator.md
Model: haiku — evaluation-matrix.md 템플릿 기반 채점(경량). 특허성 축은 Step 5.5에서 opus가 선행특허 실측으로 재채점·반대심문하므로 채점 편향이 보정된다.
Agent(
subagent_type="general-purpose",
model="haiku",
prompt="Read {SKILL_ROOT}/agents/phase4-evaluator.md for instructions.
Read {output_dir}/triz_analysis.json for IFR list.
Read {SKILL_ROOT}/templates/evaluation-matrix.md for scoring template.
Input: {manifest.input}
Output: {output_dir}/evaluation.json"
)manifest 업데이트:
"phase4": {"status": "completed", "output": "evaluation.json"}Step 5: 선행특허 조사 (Phase 5)
Agent: agents/phase5-prior-art.md
Model: sonnet
KIPRIS API 키 (셸 로드 불필요, 2026-07-31 개정)
search_patents_kipris.py가 키를 스스로 해결한다: --key → KIPRIS*KEY 형태의 환경변수(대소문자·언더스코어 무시) → .env 파일 직접 파싱 순. .env 기본 경로는 ~/Claude_Work/.env이며 KIPRIS_ENV_FILE로 덮어쓸 수 있다.
이전 절차(
set -a; eval "$(cat "$KIPRIS_ENV")")는 셸 변수명이 대소문자를 구분해.env의KIPRIS_REST_AccessKey를KIPRIS_REST_ACCESS_KEY검사로 잡지 못했고,.env안의NAME = value(등호 앞 공백) 줄에서command not found를 냈다. 셸 로드는 이제 선택 사항이다.
실행 전 점검 (권장)
python3 "{SKILL_ROOT}/scripts/search_patents_kipris.py" --selftest두 엔드포인트의 응답 형태·페이지네이션·상세조회를 알려진 질의로 검증한다. exit 0 = 정상, 1 = 실패 항목 있음.
[!warning] exit code 2는 "선행특허 없음"이 아니다
KIPRIS가 오류(잘못된 키, 서비스 장애 등)를 반환하면 스크립트는 출력 파일을 쓰지 않고 exit 2로 종료한다. 빈 결과 파일과 API 실패를 구분하기 위한 것이므로, exit 2를 degraded 모드로 넘기기 전에 원인을 확인한다.
에이전트 호출
Agent(
subagent_type="general-purpose",
model="sonnet",
prompt="Read {SKILL_ROOT}/agents/phase5-prior-art.md for instructions.
Read {output_dir}/triz_analysis.json for IFR list.
Read {output_dir}/evaluation.json for top-ranked IFRs.
KIPRIS search script: {SKILL_ROOT}/scripts/search_patents_kipris.py
KIPRIS .env file: {KIPRIS_ENV_FILE}
The script resolves the KIPRIS key itself (--key -> KIPRIS*KEY env var,
case-insensitive -> {KIPRIS_ENV_FILE}). Do NOT shell-load the .env.
Input: {manifest.input}
Output: {output_dir}/prior_art.json
Also output: {output_dir}/{발명명칭}_선행특허분석.md
MANDATORY (다국가 국제 검색 — 2026-07-06 필수 격상):
- KIPRIS 국내 검색에 더해, 독립항 신규성 앵커 개념을 영문 키워드로 변환하여
Google Patents WebFetch 3~5쿼리로 KR/US/JP/EP/WO 를 검색한다(agent 문서 S5 참조).
- 국내 한정 조사로 novel 판정 금지. 국제 검색 불가 시 analysis_summary 에
"국제 검색 미수행 — 국내 한정 결론" + ifr_coverage kr_only_caveat 명시.
- 검출 문헌의 방식(투사형/직시형 등)은 원문 WebFetch 로 직접 확인(2차 요약 신뢰 금지).
MANDATORY (자기선행 특허 조사 — 2026-07-06 신설, agent 문서 Step 0-B):
- manifest input.inventors[](공동발명자)·input.affiliation(소속기관)으로
KIPRIS 국내 중심 발명자·출원인 검색을 수행한다(정보 없으면 주발명자 1인 위주).
- 검출 자기선행의 청구범위 + **배경기술·명세서 개시 요소**를 파싱하고 공지예외
12개월 기한을 산정하여 prior_art.json self_prior_art[]에 기록한다.
- disclosed_elements 는 Phase 6 독립항 설계의 금지 영역 + Step 6d critic 공격 재료.
ADDITIONAL (자기공지·NPL 조사 — 연구기관 최다 무효사유 차단):
- 발명자 본인·KIMM 소속 저자의 논문·학회 발표·보도자료를 CrossRef/OpenAlex 저자
검색으로 조회하여 특허 출원 전 자기 선행공개 여부를 확인한다.
- source_files로 입력된 발명자 자신의 논문은 자동으로 자기공지 후보로 검사한다.
- 자기공개 발견 시 prior_art.json에 self_disclosure[]{title, date, venue, grace_deadline}
를 기록한다. grace_deadline = 공개일 + 12개월(공지예외주장·신규성 의제 기한).
- §2(논문발표 여부)에 반영할 실질 조사 결과로 활용한다."
)[!important] 자기공지(발명자 선공개) 경고
KIMM은 연구기관으로, 발명자가 논문·학회 발표를 출원보다 먼저 공개하여 자기 공지로 신규성·진보성을 상실하는 것이 최다 무효 사유다. Phase 5가 자기공개를 발견하면prior_art.json의self_disclosure[]에 공개일과 공지예외주장 12개월 기한(grace_deadline)을 기록하고, Step 8 최종 안내에서 기한 경고를 표시한다.
Graceful Degradation
KIPRIS 검색 실패 시:
prior_art.json에{"status": "degraded", "reason": "KIPRIS API failure", "patents": []}기록- 사용자에게 안내: "선행특허 자동 검색에 실패했습니다. §3, §4, §8 섹션은 수동 보완이 필요합니다."
- Phase 6는 degraded 상태로 계속 진행
선택: 상위 선행특허 원문 PDF 심화 분석
서지 기반 검색만으로 변별력이 부족할 때, 상위 1~3건의 원문 PDF를 받아 청구항 전문을 비교한다.
PYTHONUTF8=1 python3 \
~/.claude/skills/_shared/scripts/download_patent_pdf.py \
--kr <applno1> <applno2> --out {output_dir}/prior_art_pdfs/ --verify- KR 특허는 KIPRIS
getPubFullTextInfoSearch/getAnnFullTextInfoSearch로 PDF 직접 수신 - 국외 특허는
--gp <GooglePatentsID> - 다운로드 직후
pdf-to-md로 변환하여 청구항 섹션만 추출하여 비교 - 상세 절차:
~/.claude/skills/_shared/patent_pdf_download.md
manifest 업데이트:
"phase5": {"status": "completed|degraded", "output": "prior_art.json"}Step 5.5: 특허성 재채점 (Phase 5 반영)
Model: opus — 재채점·반대심문은 적대적 법률 추론 (haiku 채점 대비 강한 검증 레인)
목적: Phase 4가 특허성(0.20)을 선행특허 조사(Phase 5) 이전에 채점했으므로, 조사 결과(신규성/진보성 실측)를 반영해 특허성 축을 재채점한다. 단일 평가자 + LLM 낙관 편향으로 인한 점수 인플레이션을 반대심문(devil's advocate) 레인으로 교정한다.
[!note] degraded 시 스킵
prior_art.json이status: degraded이면 재채점 근거(ifr_coverage·rejection_combinations)가 없으므로 이 단계를 건너뛰고 Step 5b로 진행한다. manifest에"phase5_5": {"status": "skipped", "reason": "prior_art degraded"}기록.
에이전트 호출
Agent(
subagent_type="general-purpose",
model="opus",
prompt="특허성 재채점 및 반대심문을 수행한다.
Read {output_dir}/evaluation.json for current patentability scores.
Read {output_dir}/prior_art.json for ifr_coverage(novel/partial/disclosed) and rejection_combinations.
TASK:
1. evaluation.json의 각 IFR patentability 점수를 prior_art.json의 ifr_coverage와
rejection_combinations에 근거해 재조정한다.
- novel → 8~10, partial → 4~7, disclosed → 1~3 범위로 정합.
- 대응 종속항/방어논거가 없는 rejection_combination이 있으면 감점.
2. 상위 3개 IFR에 대해 '이 IFR이 특허성이 없는 이유를 논증하라'는 반대심문
(devil's advocate)을 수행한다 — 자명한 공지기술 조합 여부, 결합 동기 존재,
teaching away 부재 등을 적극적으로 반박 논거로 제시.
3. 결과를 evaluation.json에 다음 필드로 기록한다:
- patentability_recheck: IFR별 {before, after, reason}
- patentability_devil_advocate: 상위 3개 IFR의 반론 요지
재조정으로 상위 순위가 바뀌면 ranking도 갱신한다.
Output: 업데이트된 {output_dir}/evaluation.json"
)manifest 업데이트:
"phase5_5": {"status": "completed|skipped", "recheck_count": N}Step 5b: 중간 진행 보고
Phase 4~5 완료 후, Phase 6 진입 전에 사용자에게 중간 진행 상황을 표시한다:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📈 중간 진행 보고 (Phase 4~5 완료)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
### IFR 평가 결과 (상위 3건)
| 순위 | IFR# | 종합점수 | 핵심 내용 |
|------|------|---------|----------|
{evaluation.json에서 상위 3건}
### 선행특허 조사 결과
- 검색 건수: {총건수}건 → 상위 {분석건수}건 분석
- 위험 수준 '중간' 이상: {N}건
- 본 발명 차별 요소: {선행특허 미개시 IFR 요약}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▶ Phase 6 (발명내용설명서 작성)을 시작합니다...[!note] 이 보고는 표시만 하고 사용자 응답을 기다리지 않는다. 바로 Phase 6으로 진행한다.
Step 6: 발명내용설명서 최종 작성 (Phase 6)
Agent: agents/phase6-disclosure-writer.md
Model: fable — 청구항을 포함한 최고가치 산출물 작성
Agent(
subagent_type="general-purpose",
model="fable",
prompt="Read {SKILL_ROOT}/agents/phase6-disclosure-writer.md for instructions.
Read {SKILL_ROOT}/templates/disclosure-report.md for MD template.
Read {SKILL_ROOT}/reference/user-philosophy.md for inventor philosophy.
Read all phase outputs from {output_dir}/:
- triz_system.json (Phase 1)
- triz_analysis.json (Phase 2)
- evaluation.json (Phase 4)
- prior_art.json (Phase 5, may be degraded)
Read original source documents: {manifest.input.source_files}
Input: {manifest.input}
Output: {output_dir}/(YYYYMMDD 발명자) {발명명칭}vN.md
FILE NAMING RULE:
- Format: (YYYYMMDD 발명자) 발명명칭vN.md
- Check output_dir for existing files with same 발명명칭 to determine version N
- If no existing file: v1. If v1 exists: v2. And so on.
- Example: (20260331 김재현) 나노박막의 진공 대면적 전사 방법 및 장비v1.md
CRITICAL REQUIREMENTS:
1. All 9 sections (§1~§9) must be filled
2. All 3 appendices (부록 A/B/C) must be filled
3. Each section starts with '## §N' header (machine-parseable)
4. Written in Korean
5. If prior_art is degraded, mark §3/§4/§8 with [선행특허 수동 보완 필요]
6. Adjust IFR rankings based on prior art novelty in §6
7. Include ALL references with proper citations (DOI, patent numbers, URLs)
8. Reflect inventor philosophy from user-philosophy.md
9. After writing, update user-philosophy.md §4 with new patterns found
10. 부록 A.4는 반드시 2단계 구성:
- A.4.1 IFR 설명 테이블: 정량 평가 이전에 배치. 모든 IFR을 주제별 그룹으로
분류하고, 각 IFR의 지향 방향/해결 모순/핵심 내용/기술적 효과/적용 원리를
테이블로 정리. 모순→원리→IFR→효과의 논리적 체인이 명확해야 함.
- A.4.2 IFR 정량 평가 테이블: A.4.1 이후에 배치. Phase 4 점수 기반 순위."
)출력 검증
생성된 MD 파일에서 9개 섹션 + 3개 부록 존재 확인:
import re, glob
# 파일명 형식 확인
md_files = glob.glob(f"{output_dir}/*v*.md")
# 버전 번호 파싱
versions = []
for f in md_files:
m = re.search(r'v(\d+)\.md$', f)
if m:
versions.append(int(m.group(1)))
next_version = max(versions) + 1 if versions else 1
# 섹션/부록 검증
sections_found = re.findall(r'^## §(\d+)', md_text, re.MULTILINE)
appendices_found = re.findall(r'^## 부록 ([A-C])', md_text, re.MULTILINE)
missing_sec = set(range(1, 10)) - set(int(s) for s in sections_found)
missing_app = set(['A', 'B', 'C']) - set(appendices_found)
if missing_sec or missing_app:
# 1회 재시도
pass
# IFR 설명 테이블(A.4.1) 존재 검증 — 정량 평가 전에 배치되어야 함
has_ifr_desc = bool(re.search(r'A\.4\.1.*IFR 설명', md_text))
has_ifr_eval = bool(re.search(r'A\.4\.2.*IFR 정량', md_text))
if not has_ifr_desc or not has_ifr_eval:
# A.4.1/A.4.2 누락 시 1회 재시도
passmanifest 업데이트:
"phase6": {"status": "completed", "output": "(YYYYMMDD 발명자) 발명명칭vN.md"}Step 6.5: 청구항 하드닝 (자동 점검 + 자동 수정)
발명의 최고가치 산출물은 청구항이므로, 도면·HWPX 변환 이전에 §8 청구항을 법적 관점에서 점검한다. auto는 사용자 게이트 없이 자동 점검하고, 발견된 issue는 phase6 MD를 직접 보정한 뒤 최종 보고(Step 8)에 표시한다.
점검 항목 (§8 대상)
필수 5항목:
- 112(b) antecedent basis: 각 종속항 구성요소가 인용 독립항에 선행 기재됐는지. "상기 ~"의 선행어 존재 확인.
- 청구항 트리 정합: 독립항-종속항 인용 관계, 카테고리 일치(장치 종속항이 방법 독립항을 인용하지 않는지).
- 권리범위 계층: 독립항이 불필요하게 좁지 않은지(광역 유지), 종속항이 단계적 fallback 방어선을 형성하는지.
- 거절조합 대응: Phase 5
rejection_combinations의 각 예상 조합에 대응하는 한정 요소가 최소 하나의 종속항으로 준비됐는지. - 수치 한정 위치: 독립항은 수치 무한정(광역), 수치 한정은 종속항으로 이동됐는지.
SMART 자가진단 8항목 (Phase 6.5 통합, 2026-07-06 SMART5/KPAS 활용성·시장성 레버 3항목 확장):
- 독립항 글자수 경고 신호: 과도한 길이면 플래그(규칙이 아닌 경고 신호 — SMART는 독립항이 길수록 감점하는 기계적 경향이 있음). 길이는 신규성 지탱 결합의 크기가 결정하는 것이지 점수 최적화 대상 아님.
- 카테고리 병행: 물건+방법 청구항이 병행되는지(최소), 소자·시스템(센서/제어 요소 있을 때) 추가 검토 — 최대 4축.
- 종속항 계층 균형: 독립항당 종속항 4~6개.
- 활용성 서술 존재: §7에 "본 발명은 [산업]에 적용되어 [분야]에 활용" 패턴이 존재하는지.
- 실시예·도면 수 하한: 실시예 ≥3, 도면 ≥5.
- 도면 번호·부호 부재 검사 (2026-07-13 개정): §6 본문·§8 청구항에 도면 부호 괄호 병기("챔버(10)")가 없는지, §9에 도면부호 목록 테이블·"[도 N]" 번호별 설명 목록이 없는지, 도면 라벨이 부품 이름 기반인지 검사 — 출원용 도면·부호는 변리사가 별도 작성(도면 번호·부호 미사용 정책). 발견 시 부호 제거·이름 치환(자동 수정).
- 파급/사업화 블록 존재: §9에 적용 시장·후속출원(분할/연속) 구조·PCT/삼극 패밀리 플랜이 실질 내용으로 서술됐는지 (KPAS 시장성·SMART5 활용성 레버).
- 안티게이밍 검사: 12가 지표용 빈 문구가 아닌지 — 시장·패밀리 서술이 발명 내용과 무관하거나 근거 없는 과장이면 플래그. 자동점수 ≠ 실제 권리강도, 신규성·품질 우선.
사업화 2항목 (2026-07-10 신설 — claim-drafting.md §11·§12 연동):
- 회피설계 차단 매트릭스: 각 독립항마다 경쟁사 회피 시나리오(치환·생략·공정변경·공급망 분리·실시주체 분산, E1~E5) 최소 2개가 상정되고, 각각 대응 차단 청구항(상위개념 문언/병렬 독립항/봉쇄 종속항)이 존재하는지. 부록 B.4에 매트릭스(
| 독립항 | 회피 시나리오 | 유형 | 차단 청구항 | 잔여 리스크 |)가 기록됐는지. 부재 시 §8·§6 내용을 근거로 생성하여 추가(자동 수정). - 침해 검출성 등급: 모든 청구항에 검출성 등급(A: 제품 관찰 / B: 리버스엔지니어링 / C: 내부 정보 필요)이 부여되고 최소 1개 독립항이 등급 A/B인지. 방법 발명은 공정 지문(제품에 남는 구조 흔적) 물건항 병행 여부. 부록 B.5에 검출성 테이블(
| 청구항 | 등급 | 입증 수단 | 비고 |)이 기록됐는지. 테이블 부재는 자동 수정, 등급 A/B 독립항 부재는 reported issue(청구항 신설은 Phase 6e에서 문안 제안).
자동 처리 방식
- 각 항목을 점검하여 issue 목록을 수집한다.
- 자동 수정 가능한 issue(선행어 누락, 수치한정 위치, 활용성 서술 누락 등)는 phase6 MD를 직접 보정한다(버전 번호 유지).
- 자동 수정이 어려운 issue(카테고리 재설계 등)는 수정하지 않고 Step 8 보고에 명시한다.
- 참고:
patent-draft-review스킬을 이 단계에서 호출 가능.
에이전트 호출
Agent(
subagent_type="general-purpose",
model="sonnet",
prompt="§8 청구항을 자동 점검하고 phase6 MD를 직접 보정한다.
Read the latest vN.md in {output_dir} for §8 청구범위 and §6/§7 및 부록 B.
Read {output_dir}/prior_art.json for rejection_combinations and ifr_coverage.
Read {SKILL_ROOT}/reference/claim-drafting.md §11(회피설계 차단)·§12(침해 검출성) for 사업화 2항목 판정 기준.
점검 항목(필수 5 + SMART 8 + 사업화 2): 위 SKILL 정의 참조.
자동 수정 가능한 issue는 MD를 직접 보정(버전 유지), 불가한 issue는 목록으로 반환.
부록 B.4 회피설계 차단 매트릭스·B.5 검출성 테이블 부재 시 직접 생성하여 부록 B에 추가한다.
Output: 보정된 phase6 MD + issues[]{item, severity, action(fixed/reported), detail}"
)manifest 업데이트:
"phase6_5": {"status": "completed", "issues_found": N, "auto_fixed": K, "reported": R}Step 6b: 도면 생성 (Phase 6b)
Agent: agents/phase6b-diagram-generator.md
Model: sonnet
Agent(
subagent_type="general-purpose",
model="sonnet",
prompt="Read {SKILL_ROOT}/agents/phase6b-diagram-generator.md for instructions.
Read the Phase 6 output MD file (the latest vN.md in {output_dir}) for §6 and §9 content.
Read {output_dir}/triz_system.json for system components.
Read {output_dir}/evaluation.json for top IFRs.
Input: {manifest.input}
Output directories: {output_dir}/figures/ (컬러 SVG 원본), {output_dir}/diagrams/ (600dpi PNG)
Also output: {output_dir}/figures_deck.pptx (슬라이드 N = 도면 N 1:1, 캡션은 제목만 — [도 N] 번호 미표기, 표지 없음)
Also update: the Phase 6 output MD file (latest vN.md in {output_dir}) §9 with diagram references
Generate at minimum (필수 3종 포함 최소 5매, 컬러):
1. 특허 배경 그림 (문제 상황·종래 한계 시각화) [필수]
2. 종래기술 vs 본 발명 비교도 [필수]
3. 활용 가능성·파급효과 그림 (적용 제품·시장·응용) [필수]
4. 전체 시스템 구성도
5. 공정 흐름도 또는 소자/장치 단면도
PIPELINE (agent 문서 Step 3-2): 컬러 SVG 1차 생성 → outline_svg_text.py로
텍스트→path outline(figures/pptx/) → figures_deck.pptx 조립(PowerPoint COM
AddPicture로 outlined SVG 직접 삽입 — 편집 가능, PNG 래스터 삽입 금지,
슬라이드 번호=도면 번호 일치) → 600 dpi PNG(svg2png.py --dpi 600, 원본 SVG
기준) → diagrams/ 저장 → convert_hwpx.py가 §9 삽입.
Korean font: Malgun Gothic. 종래=적색 계열 vs 본 발명=청색 계열 대비.
MANDATORY (도면 번호·부호 미사용 — 2026-07-13 정책):
- 도면 내 구성요소 라벨은 부품 이름 텍스트만 사용 — 참조 부호(10, 100 등) 표기 금지.
- §9 업데이트 시 '[도 N]' 번호·번호별 설명 목록을 작성하지 않는다 — 각 도면은
내용 기반 제목만 기재. 도면부호 목록 테이블 금지.
- 슬라이드 캡션도 제목만(번호 미표기). 파일명 figN_ 접두사는 삽입 순서 관리용으로만 유지.
- 사유: 출원용 정식 도면·부호 체계는 변리사가 별도 작성 — 내부 번호가 오해 유발."
)manifest 업데이트:
"phase6b": {"status": "completed", "output": "diagrams/", "diagram_count": N}Step 6c: 인용문헌 정합성 검증 & PDF 저장 (Phase 6c)
Agent: agents/phase6c-reference-verifier.md
Model: sonnet
발명내용설명서 MD에 기재된 모든 인용문헌(학술 논문·KR/외국 특허·DOI·보고서)을 외부 DB(KIPRIS Plus, CrossRef, OpenAlex, Semantic Scholar, Google Patents)로 직접 조회하여 번호·제목·저자·출원인의 정합성을 검증하고, 참고문헌 리스트를 검증된 실제 문헌의 순수 서지만 남도록 정리(미검증·실재 불명 문헌 제거 + 본문 inline 인용을 gap 없이 재번호)하며, 검증 이력은 reference_verification.json에 기록하고, 원문 PDF를 {output_dir}/reference/에 저장한다.
[!important] 클린 리스트 원칙 (NON-NEGOTIABLE, 2026-07)
참고문헌 리스트에는 검증된 실제 문헌의 서지 정보만 기재한다.(정합 확인!)·[정정:...]·(삭제)·(정합 불일치)등 마커·편집문구를 리스트에 절대 넣지 않는다. 검증·정정·제거 이력은reference_verification.json(audit trail)에만 남긴다.배경: 실전 run에서 Phase 6c가 누락됐는데 작성 에이전트가 참고문헌 20건 전부에
(정합 확인!)을 임의 부착 → CrossRef 재검증 시 학술 DOI 6건이 404/무관논문/제목오류로 판명된 환각 사고가 있었다. 자동 모드일수록 사용자 검토가 없어 기계 게이트(verify_citations.py)가 더 절실하다.
KIPRIS API 키
셸 로드 불필요 — search_patents_kipris.py와 download_patent_pdf.py 모두 .env(~/Claude_Work/.env)를 직접 파싱한다.
에이전트 호출
Agent(
subagent_type="general-purpose",
model="sonnet",
prompt="Read {SKILL_ROOT}/agents/phase6c-reference-verifier.md for instructions.
Read the Phase 6 output MD file (the latest vN.md in {output_dir}) for citation extraction.
Read {output_dir}/prior_art.json for Phase 5 patent metadata.
KIPRIS .env file: {KIPRIS_ENV_FILE}
Patent PDF downloader: ~/.claude/skills/_shared/scripts/download_patent_pdf.py
Zettelkasten 로컬 캐시: D:/Zettelkasten/References/ (Windows) 또는 ~/Zettelkasten/References/ (macOS) — 학술 논문 1차 조회 경로, 미존재 시 skip
The script resolves the KIPRIS key itself (--key -> KIPRIS*KEY env var,
case-insensitive -> {KIPRIS_ENV_FILE}). Do NOT shell-load the .env.
Input: {manifest.input}
Outputs:
(1) {output_dir}/reference/ (다운로드된 PDF 모음)
(2) {output_dir}/reference_verification.json (검증 audit: status verified/corrected/removed + renumber_map)
(3) 정리된 Phase 6 MD (vN 유지): 참고문헌=검증 서지만, 마커 없음, 미검증 제거 후 gap 없이 재번호
CRITICAL REQUIREMENTS:
1. KR 특허는 download_patent_pdf.py --kr --verify 로 출원번호-제목 자동 대조
2. 학술 논문은 CrossRef DOI 확인 → OpenAlex OA URL → Zettelkasten 캐시 순으로 PDF 확보
3. 참고문헌 위치 비의존: §9 또는 부록 어디에 있든 '- [N] ...' 리스트를 모두 찾아 검증
4. KIMM 내부 자문(구두)은 검증 대상 아님 — 스킵(리스트에 넣지 않음)
5. 검증 실패·실재 불명·중복 문헌은 리스트에서 제거하고, 본문 inline [N] 인용을 gap 없이 재번호.
제거·정정 이력은 reference_verification.json(citations[].status, renumber_map)에만 기록
6. 최종 리스트에는 마커·편집문구((정합 확인!)/[정정]/(삭제)/(불일치)) 금지 — 순수 서지만
7. 재번호로 바뀐 inline 인용을 §3~§8·표·부록 전체에서 일관 갱신(참고문헌 리스트 자체 제외)
8. 모든 정리 완료 후 반드시 강제 게이트를 실행한다:
PYTHONUTF8=1 python {SKILL_ROOT}/scripts/verify_citations.py --md <MD> --verification <reference_verification.json>
exit!=0 이면 Phase 7로 진행 금지(편집문구 잔존/미검증 문헌/6c 미실행 차단)."
)강제 게이트: verify_citations.py [기계 게이트, auto-skip 불가]
Phase 6c 에이전트 종료 후, 오케스트레이터가 직접 게이트를 실행한다. 이것은 기계 게이트이므로 auto 모드에서도 자동 스킵 불가 — exit!=0이면 Phase 7(HWPX 변환)로 진행하지 않는다.
PYTHONUTF8=1 python {SKILL_ROOT}/scripts/verify_citations.py \
--md "{output_dir}/(YYYYMMDD 발명자) {발명명칭}vN.md" \
--verification "{output_dir}/reference_verification.json"| exit | 의미 | 조치 |
|---|---|---|
| 0 | 리스트 클린(편집문구 없음) + 모든 참고문헌이 검증 문헌과 DOI/특허번호 매칭 | Phase 7 진행 |
| 1 | 편집문구 잔존 / 미검증 문헌 존재 / removed 문헌 재등장 | 리스트 정리(제거·재번호) 후 재실행 |
| 2 | reference_verification.json 부재 또는 참고문헌 미검출 | Phase 6c 재실행 (미실행 상태) |
이 게이트는 "리스트=검증된 순수 서지"를 결정적으로 보증한다. 단, 개수·매칭 검사는 위조된 DOI를 잡지 못한다 — 서지의 의미적 정확성(원문 대조)은 phase6c 에이전트의 책임이며, 기계 게이트가 환각을 완전 봉쇄하지는 않는다.
Graceful Degradation
- KIPRIS API 실패 시: 해당 KR 특허는
manual_review, 다른 인용은 계속 처리 - Google Patents 봇 차단 시: WebFetch 폴백 → 그래도 실패 시
manual_review - CrossRef/Semantic Scholar 실패 시: Zettelkasten 캐시만으로 PDF 확보 시도, 메타데이터는
partial - Zettelkasten 접근 불가 시: 메타데이터 검증만 진행, PDF는 skipped
출력 MD 업데이트 규칙 (클린 리스트)
참고문헌 리스트를 다음 원칙으로 재작성한다 (마커 삽입 금지):
- 검증(verified/corrected) 문헌만 남긴다. 정정된 서지는 정정된 값으로 교체(정정 표기 없이).
- 미검증·실재 불명·중복 문헌은 삭제하고, 본문 inline
[N]인용을 gap 없이 재번호. - 리스트 형식:
- [N] 저자, "제목", 저널 권(호), 페이지 (연도). DOI/KIPRIS순수 서지. - KIMM 내부 자문(구두)은 리스트에 넣지 않는다.
- 검증/정정/제거 이력과 renumber_map은 reference_verification.json에만 기록(별도 검증요약 섹션 불필요).
검증 요약 표시 (자동 진행, 정보 표시)
강제 게이트 통과 후 Phase 7 진입 전에 결과를 화면에 표시한다:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📚 인용문헌 정합성 검증 결과
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| 구분 | 건수 |
|------|------|
| 원 인용 | {total} |
| ✅ 검증(verified/corrected) | {verified} |
| ✂️ 제거(removed·미검증·실재불명) | {removed} |
| 🔢 최종 리스트(재번호) | {final_count} |
| 📄 PDF 확보 | {pdf_count} |
> 제거·정정 이력은 reference_verification.json에 기록됨(리스트에는 마커·편집문구 없음).
▶ Phase 7 (HWPX 변환)을 시작합니다...
removed / total > 0.3이면(다수 인용이 미검증으로 제거) Step 8 보고에 재조사 권고를 표시한다.
manifest 업데이트:
"phase6c": {
"status": "completed|degraded",
"output": "reference_verification.json",
"pdf_count": N,
"verified": K, "removed": M, "final_reference_count": F
}Step 6d: Critic 검증 게이트 (2026-07-06 신설)
Agent: agents/phase6d-critic.md
Model: opus
verify_citations.py 게이트 통과 후, HWPX 변환 전에 작성 lane과 분리된 독립 critic이
산출물 전체를 적대적으로 재검증한다. 3개 레인: (A) 인용 문헌·근거 자료 출처 검증(핵심
문헌 ≥3건 원문 spot 재검증 + 성격 오규정 탐지 + 무근거 수치), (B) 핵심 모순·IFR
유효성(가짜 모순·물리 성립성·점수-coverage 정합), (C) 대표 청구항 특허성 모의 심사
(자기선행 배경기술 최우선 신규성 공격 + 조합 진보성 공격 → survive/needs_amendment/reject).
Agent(
subagent_type="general-purpose",
model="opus",
prompt="Read {SKILL_ROOT}/agents/phase6d-critic.md for instructions.
Read {output_dir}/: invention_manifest.json, triz_analysis.json, evaluation.json,
prior_art.json (self_prior_art 포함), reference_verification.json,
그리고 최신 vN.md (§4/§7/§8·부록 A/B/C).
Output: {output_dir}/critic_report.json (verdict: PASS|FIX|BLOCK + 레인별 issues)"
)판정 처리 (오케스트레이터)
| verdict | 조치 |
|---|---|
| PASS | Step 7(HWPX) 진행 |
| FIX | required_fixes를 해당 phase(6/6b/6c)가 1회 자동 보정 → §8 변경 시 Step 6.5 하드닝 재적용 + verify_citations.py 재실행 → critic 재검(1회 한정) |
| BLOCK | critical(성격 오규정·미검증 인용·독립항 reject) — auto 모드여도 자동 진행 중단, 사용자에게 issue 목록 제시 후 판단 요청 |
manifest 업데이트:
"phase6d": {"status": "completed", "verdict": "PASS|FIX->PASS|BLOCK", "critical": N, "major": M, "output": "critic_report.json"}Step 6e: 사업화 Critic — 삼성전자 전담 변리사 페르소나 (2026-07-10 신설)
Agent: agents/phase6e-business-critic.md
Model: opus
Phase 6d(등록 가능성 critic) 통과 후, HWPX 변환 전에 등록 후 가치를 검증하는 두 번째
독립 critic이다. 삼성전자 IP센터 전담 변리사 페르소나로 "이 특허가 등록돼도 우리는
회피/무시/협상/존중 중 무엇을 택할 것인가"를 적대적으로 분석하고, avoid/ignore가 나온
경로를 발명자 개선 재료(청구항 보정·신설 문안)로 되돌려준다. 3개 레인:
(D1) 회피설계 — 독립항별 회피 경로 5유형(치환·생략·공정변경·공급망 분리·주체 분산)과
회피 비용, 부록 B.4 매트릭스 검증, (D2) 침해 입증 — 청구항별 검출성 등급(A/B/C) 독립
재판정 + 공정 지문 후보 발굴, (D3) 사업 판단 — 침해 주체 정합·회피 vs 라이선스 비용·
독립항별 avoid/ignore/negotiate/respect.
Agent(
subagent_type="general-purpose",
model="opus",
prompt="Read {SKILL_ROOT}/agents/phase6e-business-critic.md for instructions.
Read {SKILL_ROOT}/reference/claim-drafting.md §11·§12 for 판정 기준.
Read {output_dir}/: invention_manifest.json, prior_art.json (ifr_coverage 포함),
critic_report.json (Phase 6d 결과), 그리고 최신 vN.md (§6/§7/§8/§9 + 부록 B).
Output: {output_dir}/business_critic_report.json
(verdict: PASS|FIX|ADVISE + persona_memo + lane별 결과 + required_fixes[청구항 문안] + advisories)"
)판정 처리 (오케스트레이터)
| verdict | 조치 |
|---|---|
| PASS | Step 7(HWPX) 진행 |
| FIX | required_fixes(보정·신설 청구항 문안)를 phase6가 1회 자동 보정 → Step 6.5 하드닝 재적용(선행어·트리) → Phase 6d Lane C 모의 심사 재실행(신설 청구항의 특허성 확인 — 선행 포섭 차단) → 6e 재검(1회 한정) |
| ADVISE | 보정으로 해소 불가한 전략 한계(원리적 회피 경로·등급 C 계열 유지 판단 등) — 진행은 계속하되 advisories를 Step 8 최종 보고에 필수 표시 |
[!note] Phase 6d와의 관계
6d = 등록 가능성(심사관 관점), 6e = 등록 후 가치(침해자 관점). 6e FIX로 청구항이
넓어지거나 신설되면 반드시 6d Lane C를 재실행하여 선행기술 포섭 여부를 확인한다 —
회피 차단을 위해 넓힌 문언이 선행을 밟으면 무효가 되기 때문이다.
manifest 업데이트:
"phase6e": {"status": "completed", "verdict": "PASS|FIX->PASS|ADVISE", "fixes_applied": N, "advisories": M, "output": "business_critic_report.json"}Step 7: HWPX 변환 (Phase 7)
Agent: agents/phase7-hwpx-converter.md
Model: sonnet
Agent(
subagent_type="general-purpose",
model="sonnet",
prompt="Read {SKILL_ROOT}/agents/phase7-hwpx-converter.md for instructions.
Read {SKILL_ROOT}/reference/kimm-template-mapping.md for cell mapping.
Read the Phase 6 output MD file (the latest vN.md in {output_dir}) for content to insert.
Template: {SKILL_ROOT}/assets/[KIMM]직무발명내용설명서_양식.hwpx
fix_namespaces: {HWPX_SKILL}/scripts/fix_namespaces.py
validate: {HWPX_XML_SKILL}/scripts/validate.py
Output: {output_dir}/(YYYYMMDD 발명자) {발명명칭}v1.hwpx
CRITICAL — MUST USE STRATEGY A (전체 셀 내용 교체):
1. Parse section0.xml with xml.etree.ElementTree
2. For each section: locate the target <hp:tc> cell by table/row/cell index
3. Remove ALL existing <hp:p> elements from the cell
4. Split new content by newline into individual <hp:p> elements
5. Use correct paraPrIDRef and charPrIDRef per section
6. Remove §9 template image (hp:pic and BinData/image1.bmp)
7. DO NOT use zip_replace() — it causes text overlap bugs
§8 특별 규칙 (청구범위):
8. §8은 청구항 단위로 문단을 분할한다 (줄 단위가 아님)
9. 각 청구항([청구항 N] 헤더 + 본문)을 하나의 hp:p 요소로 생성
10. 청구항 내의 줄바꿈은 공백으로 치환하여 단일 문단에 합침
§9 도면 삽입 규칙:
11. diagrams/ 폴더의 PNG 파일을 BinData/에 fig1.png~figN.png로 저장
12. content.hpf에 각 이미지 항목 등록
13. §9 셀 맨 끝에 도면 제목(내용 기반, "[도 N]" 번호·부호 미표기) + hp:pic 문단을 삽입
14. hp:pic에 hc: 네임스페이스 요소(transMatrix 등) 사용 금지 — validate 실패 원인
15. content.hpf에서 BinData/image1.bmp 참조 반드시 제거 — 한/글 크래시 원인
After replacement:
1. Run fix_namespaces.py on output HWPX
2. Run validate.py on output HWPX
3. If validation fails, report error and keep MD as fallback"
)Fallback
validate.py 실패 시:
- 에러 내용 로그
- MD 파일만 최종 출력으로 제공
- 사용자에게 안내: "HWPX 변환에 실패했습니다. MD 파일을 수동으로 양식에 붙여넣기 해 주세요."
manifest 최종 업데이트:
"phase7": {"status": "completed|failed", "output": "disclosure.hwpx"}Step 8: 최종 출력 및 안내
모든 Phase 완료 후 사용자에게 결과를 안내한다:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 발명내용설명서 생성 완료
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
### 출력 파일
- 📄 `{output_dir}/(YYYYMMDD 발명자) {발명명칭}vN.md` — Obsidian 호환 마크다운 (9개 섹션 + 부록 3개, 참고문헌은 검증된 순수 서지만)
- 📋 `{output_dir}/(YYYYMMDD 발명자) {발명명칭}vN.hwpx` — KIMM 양식 한글 파일
- 🔍 `{output_dir}/{발명명칭}_선행특허분석.md` — KIPRIS 선행특허 분석
- 🎨 `{output_dir}/figures/` — 컬러 SVG 벡터 원본 {N}개 / `{output_dir}/figures_deck.pptx` — 도면 슬라이드 덱(슬라이드 N=[도 N])
- 🖼️ `{output_dir}/diagrams/` — 600 dpi 기술 도면 PNG {N}개
- 📚 `{output_dir}/reference/` — 인용문헌 원문 PDF {K}건 (학술 논문 + 선행특허)
- 🧾 `{output_dir}/reference_verification.json` — 인용문헌 정합성 검증 로그 (audit trail)
- 🧐 `{output_dir}/critic_report.json` — Critic 검증 결과 (verdict {PASS|FIX→PASS} + 레인별 issue {N}건)
- 💼 `{output_dir}/business_critic_report.json` — 사업화 Critic 결과 (verdict {PASS|FIX→PASS|ADVISE} + 독립항별 avoid/ignore/negotiate/respect)
### Critic 검증 결과 (Phase 6d)
- 판정: {verdict} — Lane A 출처 {issues}건 / Lane B 모순·IFR {issues}건 / Lane C 독립항 {survive/needs_amendment/reject 요약}
- (자기선행 특허 발견 시) self_prior_art: {number 목록 — 개시 요소·공지예외 기한}
### 사업화 Critic 결과 (Phase 6e — 삼성전자 전담 변리사 페르소나)
- 판정: {verdict} — 독립항별 {avoid/ignore/negotiate/respect 요약}
- 회피설계(D1): 최유력 회피 시나리오 {요약} / 차단 여부 / FIX로 신설·보정된 청구항 {N}건
- 침해 입증(D2): 등급 A/B 독립항 {유/무} / 공정 지문 청구 {유/무} / 등급 재판정 하향 {N}건
- 사업 판단(D3): 침해 주체 {요약} / 회피 vs 라이선스 {결론}
- **advisories (전략 한계·후속출원 권고 — 발명심의위 판단 재료)**: {목록 — ADVISE 판정 시 필수 표시}
> [!important] 파일명 규칙
> - MD와 HWPX 파일은 `(YYYYMMDD 발명자) 발명명칭vN` 형식으로 명명
> - 초판은 v1, 수정본이 생길 때마다 v2, v3 형태로 버전 번호를 증가
> - 버전 결정: output_dir에서 동일 발명명칭의 기존 파일을 검색하여 최대 버전 + 1
> - MD와 HWPX의 버전 번호는 항상 일치시킴
### TRIZ 분석 요약
- 기술적 모순: {N}개 도출
- 물리적 모순: {N}개 도출
- IFR: {N}개 생성, 상위 3개 → 발명내용설명서 반영
### 선행특허 차별성
- 분석 특허: {N}건
- 본 발명 미개시 요소: {핵심 차별 요소 요약}
### 특허성 재채점 (Phase 5.5)
- 재채점 IFR: {recheck_count}건 (선행특허 조사 결과 반영)
- 반대심문 상위 3개 IFR 반론 요지: {patentability_devil_advocate 요약}
- (degraded로 스킵된 경우: "선행특허 degraded로 재채점 미수행")
### 청구항 하드닝 결과 (Phase 6.5)
- 점검 issue: 발견 {issues_found}건 → 자동 수정 {auto_fixed}건, 수동 확인 필요 {reported}건
- 수동 확인 항목: {reported issues 목록 — 카테고리 재설계 등}
> [!warning] 자기공지 경고 (해당 시)
> 발명자 선공개 발견: {self_disclosure 목록 — 공개일·매체}
> **공지예외주장(신규성 의제) 기한: {grace_deadline} (공개일로부터 12개월)** — 이 기한 내 출원해야 자기공지에 의한 신규성·진보성 상실을 회피할 수 있음.
### 다음 단계
1. HWPX 파일을 한/글에서 열어 서식과 내용 확인
2. §9(추가자료)에 diagrams/ 폴더의 도면 삽입
3. 필요 시 각 섹션 내용 보완
4. 발명심의위원회 제출Error Handling Summary
| Phase | 실패 모드 | 대응 |
|---|---|---|
| Phase 2 | IFR < 10개 | 재시도 2회, 이후 현재 결과로 진행 |
| Phase 5 | KIPRIS API 실패 | graceful degradation, 수동 보완 안내 |
| Phase 6 | 섹션/부록 누락 | 1회 재생성, 이후 부분 결과 제공 |
| Phase 6b | matplotlib 실패 | Mermaid만 발명내용설명서 MD에 포함 |
| Phase 5.5 | prior_art degraded | 재채점 스킵, Step 5b로 진행 |
| Phase 6.5 | 자동 수정 불가 issue | 수정하지 않고 Step 8 보고에 명시 |
| Phase 6c | KIPRIS/CrossRef API 실패 | 해당 인용은 manual_review, 나머지 계속 진행 |
| Phase 6c | 검증 실패/PDF 제목 불일치 | 해당 문헌 리스트에서 제거 + 본문 재번호 + json에 removed 기록 |
| Phase 6c | verify_citations.py exit!=0 | Phase 7 차단 — 리스트 정리 후 재실행(exit1) 또는 Phase 6c 재실행(exit2) |
| Phase 6d | verdict=FIX | 해당 phase 1회 자동 보정 → critic 재검(1회 한정) |
| Phase 6d | verdict=BLOCK (critical) | auto 모드여도 진행 중단, 사용자 판단 요청 |
| Phase 6d | 네트워크 불가(spot check 불능) | Lane A degraded 표기, 정합성 대조만 수행 후 진행 |
| Phase 6e | verdict=FIX | phase6 1회 자동 보정 → 6.5 하드닝 재적용 → 6d Lane C 재실행 → 6e 재검(1회 한정) |
| Phase 6e | verdict=ADVISE | 진행 계속 + Step 8 보고에 advisories 필수 표시 |
| Phase 6e | prior_art degraded (ifr_coverage 부재) | 신설 청구항의 선행 포섭 확인 불가 — required_fixes에 "추가 선행조사 필요" 플래그, D1/D2 분석은 계속 |
| Phase 7 | HWPX 변환 실패 | MD fallback |
| Phase 7 | validate.py 실패 | MD fallback + 에러 로그 |
사용자 상호작용 규칙
반드시 사용자 응답을 기다리는 시점
- Step 0: 입력 수집 (방법 B의 자동 추출 확인 포함)
- Step 3: TRIZ 분석 결과 검토 게이트
사용자 응답 없이 자동 진행하는 시점
- Phase 1 → Phase 2 전환
- Phase 4 → Phase 5 → Phase 5.5 전환
- Step 5b 중간 진행 보고 (표시만)
- Phase 6 → Phase 6.5(자동 점검·자동 수정) → Phase 6b → Phase 6c → Phase 6d(critic) → Phase 6e(사업화 critic) → Phase 7 전환
[!important] 단, 두 게이트는 auto-skip 불가다. (1) Phase 6c 후 강제 게이트(verify_citations.py)는 기계 게이트 — exit!=0이면 Phase 7로 진행하지 않는다. (2) Phase 6d critic의 BLOCK 판정 — critical issue(성격 오규정·미검증 인용·독립항 reject) 발견 시 자동 진행 모드에서도 중단하고 사용자 판단을 요청한다.
자동 진행 모드 활성화 조건
사용자가 다음과 같이 지시한 경우, Step 3 검토 게이트도 건너뛰고 전체 자동 진행:
- "자동으로 진행"
- "확인할 부분 없으면 자동 진행"
- "매 phase 자동으로 진행"
- "전부 자동"
- 영어: "auto", "proceed automatically"
이 경우 Step 0의 입력 확인도 간소화한다 (자동 추출 후 바로 진행).