#!/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/grant-parser"
cat > "$DEST/grant-parser/SKILL.md" <<'SKILL_PAYLOAD_EOF'
---
name: grant-parser
description: 논문 사사(Acknowledgement) 텍스트에서 연구과제 번호와 기관 정보를 추출합니다. NRF, NIH, NSF, IITP 등 주요 연구비 지원 기관을 자동 인식합니다.
---

# 연구과제 정보 파싱 스킬

논문의 사사(Funding/Acknowledgement) 텍스트에서 과제 번호를 추출하고, 기관명을 정규화합니다.
한국(NRF, MSIT, IITP), 미국(NIH, NSF), 일본(JSPS), 중국(NSFC), 유럽(ERC) 등 주요 기관을 지원합니다.

## 사용법

```typescript
import {
  extractGrantNumbers,
  normalizeAgency,
  normalizeAgencies,
  parseFundingInfo,
  inferAgencyFromGrant,
  summarizeFunding,
  getAgencyColor,
  AGENCY_COLORS
} from "@/lib/grant-parser"

// 1. 텍스트에서 과제 번호 추출
const grants = extractGrantNumbers(
  "This work was supported by NRF-2023R1A2C1005678 and NIH R01 GM987654"
)
// → ["2023R1A2C1005678", "R01GM987654"]

// 2. 기관명 정규화
normalizeAgency("national research foundation of korea")  // → "NRF"
normalizeAgency("national institutes of health")           // → "NIH"
normalizeAgency("japan society for the promotion of science") // → "JSPS"

// 3. WoS Funding 정보 통합 파싱
const funding = parseFundingInfo(
  "NRF; NIH",                       // fundingOrgs
  "Grant No. 2023R1A2C1005678"      // fundingText
)
// → { agencies: ["NRF", "NIH"], grantNumbers: ["2023R1A2C1005678"], fundingText: "..." }

// 4. 과제 번호로 기관 추론
inferAgencyFromGrant("2023R1A2C1005678")  // → "NRF"
inferAgencyFromGrant("R01GM987654")        // → "NIH"
inferAgencyFromGrant("2021-0-01234-001")   // → "IITP"

// 5. UI 표시용 요약
const summary = summarizeFunding(["NRF", "NIH"], ["2023R1A2C1005678", "R01GM987654"])
// → { hasGrants: true, primaryAgency: "NRF", grantCount: 2, displayText: "NRF (2)" }

// 6. 기관 배지 색상
getAgencyColor("NRF")   // → "bg-blue-100 text-blue-800 border-blue-300"
getAgencyColor("NIH")   // → "bg-green-100 text-green-800 border-green-300"
getAgencyColor("JSPS")  // → "bg-red-100 text-red-800 border-red-300"
```

---

## 지원 과제번호 패턴

### 한국

| 기관 | 패턴 | 예시 |
|------|------|------|
| NRF (한국연구재단) | `YYYY R N A N A NNNN...` | `2023R1A2C1005678` |
| MSIT/IITP | `YYYY-N-NNNNN(-NNN)` | `2021-0-01234-001` |

### 미국

| 기관 | 패턴 | 예시 |
|------|------|------|
| NIH | `XNN XX NNNNN+` | `R01 GM987654`, `P50 CA211015` |
| NSF | 일반 패턴 매칭 | |

### 일반

| 패턴 | 키워드 |
|------|--------|
| `grant/award/project + no./number/# + 번호` | 6~20자 영숫자-하이픈 |

---

## 지원 기관 목록 (정규화)

### 한국 기관 (파란색 계열)

| 입력 | 정규화 | 배지 색상 |
|------|--------|----------|
| national research foundation of korea | NRF | `bg-blue-100` |
| ministry of science and ict | MSIT | `bg-blue-50` |
| information & communications technology planning & evaluation | IITP | `bg-indigo-100` |
| korea health industry development institute | KHIDI | `bg-cyan-100` |
| national cancer center | NCC | `bg-blue-100` |

### 미국 NIH 관련 (녹색 계열)

| 입력 | 정규화 | 배지 색상 |
|------|--------|----------|
| national institutes of health | NIH | `bg-green-100` |
| national cancer institute | NCI | `bg-emerald-100` |
| national institute of general medical sciences | NIGMS | `bg-green-50` |
| national heart, lung, and blood institute | NHLBI | `bg-green-100` |

### 미국 기타

| 입력 | 정규화 | 배지 색상 |
|------|--------|----------|
| national science foundation | NSF | `bg-orange-100` |
| department of defense | DOD | `bg-slate-100` |

### 아시아/유럽

| 입력 | 정규화 | 배지 색상 |
|------|--------|----------|
| japan society for the promotion of science | JSPS | `bg-red-100` |
| national natural science foundation of china | NSFC | `bg-amber-100` |
| european research council | ERC | `bg-purple-100` |

---

## 트러블슈팅

### 1. 과제 번호 미추출

**원인:** 비표준 형식이거나 패턴에 미등록
**해결:** `extractGrantNumbers()` 함수에 새 패턴 추가 (정규식)

### 2. 기관명 미인식

**원인:** `AGENCY_ALIASES`에 미등록
**해결:** `grant-parser.ts`의 `AGENCY_ALIASES` 맵에 추가

### 3. WoS Funding Text가 없음

**원인:** WoS 데이터에 Funding 정보가 미포함
**해결:** PDF 분석(`batch-author-extractor` 스킬)에서 펀딩 정보 추출

---

## 관련 파일

| 파일 | 경로 | 설명 |
|------|------|------|
| 파서 유틸리티 | `src/lib/grant-parser.ts` | 과제번호 추출, 기관 정규화 |
| 펀딩 업데이트 | `scripts/update-paper-funding.ts` | 일괄 펀딩 정보 업데이트 |
| 저자 추출 서비스 | `src/lib/author-extraction-service.ts` | WOS 펀딩 파싱 연동 |

---

## 업데이트 이력

- 2026-02: 스킬 등록
SKILL_PAYLOAD_EOF

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