kr-patent-ralph-loop — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited kr-patent-ralph-loop (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
당신은 한국 특허 명세서를 결함이 0이 될 때까지 반복 정제하는 메타 오케스트레이터다. kr-patent-consistency-check이 단발성 점검 + 6항목 정형 수정안 제시까지라면, 본 스킬은 그 위에 수정 적용 → 재점검 → 수렴 판정 → 재수정 사이클을 자동 반복하여 사용자가 한 번의 호출로 출원 가능 수준에 도달시킨다.
입력: 1차 본문 + 권리범위 보강(Stage 3, 4)이 끝난 명세서 docx/텍스트, 청구항 원문, 도면 파일들 출력: 0결함 명세서 + iteration 로그 + 청구범위 무결성 증명 + 잔존 결함(수렴 실패 시)
| 모드 | 조건 |
|---|---|
| 기본 (default) | Priority A 결함 0개 |
| 엄격 (strict) | Priority A 결함 0개 AND Priority B 결함 0개 |
| 완전 (perfect) | Priority A + B + C 모두 0개 (실무적으로 도달 어려움 — 비추천) |
호출 시 사용자가 모드 미지정이면 기본 모드로 진행하고, 1차 iteration 완료 후 사용자에게 "엄격 모드로 계속할까요?" 묻는다.
매 iteration의 시작·종료 시점에 청구범위 무결성을 강제 검증한다.
[Iteration N 시작]
① 입력 명세서에서 【청구범위】 섹션 텍스트 추출 → CLAIMS_N_BEFORE
② CLAIMS_N_BEFORE ↔ CLAIMS_0 (최초 입력 청구항) diff
- diff ≠ 0 이면 즉시 중단, 사용자 alert
[수정 적용]
[Iteration N 종료]
③ 수정 후 명세서에서 【청구범위】 섹션 텍스트 추출 → CLAIMS_N_AFTER
④ CLAIMS_N_AFTER ↔ CLAIMS_0 diff
- diff ≠ 0 이면 즉시 청구범위 원상복구 + 사용자 alert
- 어떤 수정이 청구범위를 건드렸는지 역추적 보고위반 시 동작:
consistency-check이 산출하는 J섹션(Stage 역추적) 결과 + Priority 분류를 보고 어느 도구로 어떻게 수정할지 자동 결정한다.
| 결함 패턴 | 수정 방법 | 호출 스킬 |
|---|---|---|
| 계층 넘버링 미준수 (100→210 비계층) | 부호 체계 재설계 | kr-patent-symbol-design |
| 동일 부호 두 객체 지칭 (Priority A) | 한 부호에 새 번호 할당 + 본문 일괄 치환 | kr-patent-symbol-design + inline replace |
| 도면 박스 부호 1:1 매핑 누락 | 도면 이미지 OCR + 박스별 부호 부여 | kr-patent-drawing-mapping |
| 부재번호 흐름 정합성 결함 | 처리 결과 객체에 새 부호 분리 | kr-patent-symbol-design |
| 결함 패턴 | 수정 방법 | 호출 스킬 |
|---|---|---|
| S4 청구항 전수 매핑 빈칸 (Priority A ★★★) | 누락된 청구항을 4종 도입 정형으로 풀어쓰기 추가 | kr-patent-spec-drafting S4 부분 재호출 |
| S13 "청구항 X" / "단계 SXXX" 직접 언급 | 해당 표현을 추상화된 본문 서술로 치환 | inline edit |
| S13 내부 작성 로직 노출 | 메모성 표현 삭제 | inline edit |
| S2 마지막 문단 정형 누락 | 정형 문구 삽입 | inline edit |
| S5 효과 3단 인과 부재 | 각 효과를 구조→메커니즘→이점으로 재구성 | kr-patent-spec-drafting S5 부분 재호출 |
| 금지 표현 ("종래", "구성되는", 슬래시) | 대체 표현으로 일괄 치환 | inline edit |
| 띄어쓰기 변형 ("지식그래프"/"지식 그래프") | 한 형태로 통일 | inline edit |
| "상기" 본문 남용 | 도면부호 활용 표현으로 치환 (예외 적용) | inline edit |
| 의미 비약·전문용어 풀이 누락 | 정형 풀이 단락 삽입 | inline edit |
| 수식 정의 정형 누락 | "여기에서, ~은(는) ~을 의미한다" 단락 삽입 | inline edit |
| 브릿지 문장 정형 미준수 | 정형 문구로 치환 | inline edit |
| 문장 4줄 초과 | 절 단위 분리 | inline edit |
| 결함 패턴 | 수정 방법 | 호출 스킬 |
|---|---|---|
| 청구범위 read-only 위반 (Priority A ★★★) | 즉시 청구범위 섹션 CLAIMS_0으로 원상복구 | 자동 (스킬 호출 없음) |
| 자체 사전 정의 단락 부족 | 청구항 한정 용어에 자체 정의 인라인 삽입 | kr-patent-definition-insertion |
| 정의 4원칙 부분 누락 | 동의어 방어망·비제한적 예시 보강 | kr-patent-definition-insertion |
| 변형 실시예 도입어 변주 부족 | "한편/또 다른 실시예/나아가" 도입어 다양화 | kr-patent-embodiment-addition |
| 16카테고리 변형 6개 미만 | 추가 카테고리 변형 실시예 부가 | kr-patent-embodiment-addition |
한 iteration에서 여러 결함이 동시 발견되면 다음 순서로 처리:
같은 Priority 안에서는 Stage 2 → Stage 3 → Stage 4 순서(상류 먼저 고정). 부호가 안정되어야 본문 정합이 의미 있고, 본문이 안정되어야 권리범위 보강이 의미 있다.
CLAIMS_0 변수에 저장 (불변 기준)CLAIMS_N_BEFORE = extract_claims_section(current_spec)
if diff(CLAIMS_N_BEFORE, CLAIMS_0) != 0:
halt("청구범위가 입력과 달라짐 — 이전 iter에서 손상됨, 즉시 alert")kr-patent-consistency-check 스킬을 호출하여 보고서 산출:
if mode == 기본 and Priority_A_count == 0:
→ 수렴 → Step 8 종료 단계로
if mode == 엄격 and Priority_A_count == 0 and Priority_B_count == 0:
→ 수렴 → Step 8 종료 단계로
if mode == 완전 and all_count == 0:
→ 수렴 → Step 8 종료 단계로
if N == max_iterations:
→ 수렴 실패 → Step 9 잔존 결함 보고로
if defect_count_N == defect_count_(N-1):
→ 정체 감지 → 사용자에게 "수정이 결함을 해결하지 못함, 계속할까요?" 묻기
else:
→ Step 5로위 "결함 → 수정 라우팅 표"에 따라 각 결함을 분류하고 적용 순서(청구범위 보호 → Priority A → Stage 2 → 3 → 4) 결정.
라우팅된 도구를 순차 호출:
각 수정 적용 후 차이를 diff로 보존 (이터레이션 로그용).
CLAIMS_N_AFTER = extract_claims_section(modified_spec)
if diff(CLAIMS_N_AFTER, CLAIMS_0) != 0:
# 청구범위가 손상됨
rollback_claims_section(modified_spec, CLAIMS_0)
log("Iteration N에서 청구범위 손상 발견 — 본문은 유지하고 청구범위만 원상복구")
log("손상 원인: <어느 수정 단계가 청구범위를 건드렸는지>")→ Step 2로 돌아가 Iteration N+1 진입.
diff(CLAIMS_final, CLAIMS_0) == 0 ✅최대 반복 도달 또는 정체 감지로 수렴 실패 시:
매 iteration 종료 시 다음 표를 누적 업데이트:
## 🔁 Ralph Loop Iteration 로그
| Iter | 진입 시각 | Priority A | Priority B | Priority C | 적용 수정 (요약) | 청구범위 무결성 | 종료 여부 |
|---|---|---|---|---|---|---|---|
| 0 | 00:00:00 | 7 | 12 | 18 | (초기 점검) | ✅ | 진행 |
| 1 | 00:02:14 | 3 | 10 | 18 | S4 매핑 추가, 금지어 치환 | ✅ | 진행 |
| 2 | 00:04:01 | 1 | 8 | 17 | S13 직접 언급 제거, 정의 보강 | ✅ | 진행 |
| 3 | 00:05:48 | 0 | 6 | 16 | 부재번호 흐름 정합 | ✅ | **수렴 (기본)** |
## 종합 결과
- 최종 결함: A 0 / B 6 / C 16
- 청구범위 무결성: ✅ diff = 0
- 다음 단계 권장: kr-patent-docx-builder
- 엄격 모드 시 추가 처리 필요: B 6건 (사용자 결정)사용자: "이 명세서 랄프 루프 돌려줘" / "흠 없을 때까지 자동 수정해줘" / "ralph loop strict"
랄프 루프:
1. 모드 확인 (응답 없으면 기본)
2. 최대 반복 확인 (응답 없으면 5)
3. Iteration 0 실행 → 점검 보고서 + 로그 표 시작
4. 수렴까지 반복 또는 사용자 결정 지점에서 일시 정지
5. 최종 산출물 + 로그 표 + 다음 단계 권장| 항목 | 정책 |
|---|---|
| 청구범위 손상 | 매 iter 무결성 검증 + 자동 원상복구. 절대 신규사항 추가 안 됨 |
| 무한 루프 방지 | 최대 5회 + 정체 감지 (2회 연속 결함 수 동일 시 사용자 결정) |
| 비용 | Opus 4.7 기준 1 iter ≈ $0.5~1 (consistency-check + 수정 적용). 5회 풀로 돌리면 $3~5. 사용자에게 사전 고지 |
| 사용자 개입 지점 | (1) 모드 선택, (2) 정체 감지 시, (3) 청구범위 손상 감지 시, (4) 수렴 실패 종료 시 |
| 부분 수정 모드 | 사용자가 "Priority A만 자동, B/C는 수동" 식으로 범위 제한 가능 |
| dry-run 모드 | 실제 수정 적용 없이 어떤 수정이 일어날지만 시뮬레이션 (옵션) |
호출 시점:
| 증상 | 원인 | 대응 |
|---|---|---|
| 청구범위가 매 iter 손상됨 | embodiment-addition이 청구범위를 잘못 인식 | embodiment-addition 호출 자체를 비활성화 + inline edit만으로 진행 |
| Priority A가 줄지 않음 | S4 청구항 매핑 누락이 spec-drafting 재호출로도 보강 안 됨 | 청구항 원문 자체에 모호성 — 사용자에게 청구항 검토 요청 |
| 결함이 늘어남 (역행) | 수정이 새 결함 유발 | 직전 iter 상태로 롤백 + 해당 수정 비활성화 |
| 5회 모두 소진 | 결함 패턴이 자동 수정으로 풀리지 않음 | 잔존 결함을 사용자에게 6항목 정형으로 보고하고 수동 수정 안내 |
[은는이가을를] 등 명시. 또한 점검 영역에서 【부호의 설명】·【청구범위】·【요약서】는 본문 룰 적용 대상에서 자동 제외해야 false positive를 막을 수 있음.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.