#!/bin/sh
# Claude Code Skill 설치 스크립트
# 생성: 2026-08-13 · Skill 1개 · 파일 1개
#
#   ./install-skills.sh            ~/.claude/skills/ 에 설치 (모든 프로젝트에서 사용)
#   ./install-skills.sh ./myrepo   ./myrepo/.claude/skills/ 에 설치 (그 저장소 전용)
set -e

DEST="${1:+$1/.claude/skills}"
DEST="${DEST:-$HOME/.claude/skills}"
mkdir -p "$DEST"
echo "설치 위치: $DEST"


mkdir -p "$DEST/wos-export-check"
cat > "$DEST/wos-export-check/SKILL.md" <<'SKILL_PAYLOAD_EOF'
---
name: wos-export-check
description: Web of Science 반출 파일을 받자마자 "써도 되는 반출인지" 판정한다. Full Record 로 받아도 ORCID·정규화기관명·저자키워드가 0%인 사고가 실제로 있었다. 필드별로 없을 때 무엇을 못 하게 되는지까지 표로 적어 둔다. TRIGGER - "WoS 반출", "Web of Science 내보내기", "반출 파일 확인", "Full Record", 서지 분석을 시작하기 전 원본 파일을 검수할 때.
---

# WoS 반출 파일 검수

## 왜 필요한가

> AML 프로젝트 반출은 **Full Record 로 받았는데도 OI(ORCID)·C3(정규화 기관명)·DE(저자키워드)가 0% 였다.** 파일을 받자마자 이걸 잡아내는 게 목적이다.

Full Record 를 골랐다고 해서 모든 필드가 채워져 오지 않는다. **몇 주 분석한 뒤에 "ORCID 가 없어서 동명이인을 못 나눈다"를 발견하면 반출부터 다시 해야 한다.** 반출은 기관 라이선스·검색 세션에 묶여 있어 나중에 다시 받기 어려울 수도 있다.

## 정본 코드

```
~/Documents/혜연/BTC_KOL_PoC/check_wos.py   142줄
```

```bash
python3 check_wos.py     # raw/wos/ 아래를 재귀 탐색
```

`_archive_*` 디렉터리는 건너뛴다.

## 두 가지 컬럼명 체계를 모두 받는다

```
구형/탭구분 : 2글자 태그        (PM, DI, RP …)
현행 Excel  : 전체 이름         (Pubmed Id, DOI, Reprint Addresses …)
```

같은 WoS 인데 반출 경로에 따라 컬럼명이 다르다. **둘 다 받아들이지 않으면 파일 하나를 못 읽는다.**

## 필드표에 "없으면 무엇을 못 하는지"를 적는다

이게 이 스킬의 핵심이다. 단순히 "필수/선택" 이 아니라 **결측의 결과**를 적어 둔다.

| 태그 | 필드 | 없을 때 | 필수 |
|---|---|---|---|
| `PM` | PubMed ID | PubMed 와 병합 불가 | ✓ |
| `DI` | DOI | PMID 없는 논문 병합 불가 | ✓ |
| `AF` | 저자 전체명 | **동명이인 분리 불가** | ✓ |
| `C1` | 저자별 소속주소 | 2015년 이전 소속 결측 해결 불가 | ✓ |
| `RP` | 교신저자(Reprint) | **교신저자 실측 불가 (추정 44% 오차 유지)** | ✓ |
| `OI` | ORCID | ORCID 기반 동명이인 분리 불가 | |
| `C3` | 정규화 기관명 | 기관명 정규화를 직접 해야 함 | |
| `DE` | 저자 키워드 | 연구주제 보강 불가 | |
| `TC` | 피인용수 | 영향력 지표 없음 | |
| `EM` | 이메일 | 연구자 식별 키 하나 상실 | |

**"RP 가 없으면 교신저자 추정 44% 오차를 그대로 안고 간다"** 처럼 결과를 적어 두면, 반출을 다시 받을지 그냥 갈지를 그 자리에서 판단할 수 있다. `필수` 여부만 적힌 표로는 그 판단이 안 된다.

## 언제 돌리나

**파일을 받은 직후, 다른 어떤 처리보다 먼저.** 이 검수를 통과해야 파이프라인에 넣는다.

```
WoS 반출 → check_wos.py → (통과) → 병합 → 정규화 → 분석
                        ↘ (실패) → 반출 다시
```

## 다른 소스에도 같은 걸 하라

WoS 전용 스크립트지만 발상은 모든 원본 데이터에 쓴다. **원본을 받으면 "이 파일로 하려던 걸 할 수 있는가"를 먼저 판정하고, 못 하면 무엇을 못 하는지 적는다.** 병원 데이터 반출, 공공데이터 API 응답, 엑셀 수령분 모두 마찬가지다.

## 연관 skill

`[[pipeline-validate]]`(이후 단계 검증), `[[paper-merge-provenance]]`, `[[author-disambiguate]]`(AF·OI 가 있어야 가능), `[[corresponding-author-verify]]`(RP 가 있어야 가능)
SKILL_PAYLOAD_EOF

echo ""
echo "완료 — Skill 1개를 설치했습니다."
echo "Claude Code를 다시 시작하면 인식됩니다."
