* feat: 국가데이터처 KOSIS 통계 조회(kosis-stats) 스킬 추가 KOSIS Open API 4개 endpoint(statisticsSearch / statisticsData getMeta / statisticsParameterData / statisticsBigData) read-only 호출을 단일 Python helper로 묶었다. 인증키는 KSKILL_KOSIS_API_KEY 환경변수(또는 기본 secrets.env)로 사용자별 발급한다 — proxy 미사용. - kosis-stats/SKILL.md, scripts/run_kosis_stats.py: stdlib only, search/meta/data/bigdata 서브커맨드, --json/--text/--dry-run - kosis-stats/references/kosis-openapi-guide.md: 인증키 발급, 호출 한도 (분당 1000건/40k cells), 에러 코드, HTTPS 전용 정책 정리 - kosis-stats/tests/: stdlib unittest 36개, mock 기반 (네트워크 X) + KSKILL_KOSIS_API_KEY 가 있을 때만 도는 라이브 smoke 1개 - docs/features/kosis-stats.md, README, install/setup/security-and-secrets/ sources, examples/secrets.env.example, package.json lint/test 등록 * fix(kosis-stats): 사용자 시나리오 e2e 검증 기반 UX 보강 4개 sonnet 서브에이전트 병렬 시나리오(단일수치/시계열/지역비교/실패회복) 검증에서 발견된 P1/P2 UX 부족함 보강. 4개 회복 시나리오 친절도 평균 2.75 → 4.5 (S4c 코드 20 막힘 P1 해결). - ERROR_CODE_HINTS: 코드 20/21/30/31 모두 next-step 명령 예시 포함 (코드 20은 ITM 메타 우선 안내 — 실제 표 다수에서 OBJ 비어 있음) - render_search_text: Next 액션 흐름 안내 추가 - render_meta_text: 빈 결과 시 다른 --meta-type 시도 안내 - render_data_text: 빈 결과 시 필터/meta 재확인 안내, 새 [summary] 라인(rows/period/unit, UNIT_NM 누락 명시) - SKILL.md Workflow: 코드 20 회복 절차, 행정구역 코드(시도 2자리/시군구 5자리) 관례 명시 - SKILL.md Failure modes: 코드 20 추가, meta 30 분기, UNIT_NM 누락 처리, 코드 20/31 회복 시나리오 예시 - docs/features/kosis-stats.md "흔한 문제 해결"에 코드 20 회복 절차 추가 - tests: 8개 회귀 테스트 추가 (hint 키워드/render 메시지/[summary] 라인) * fix(kosis-stats): drop xls bigdata format and detect json error envelope in non-json formats Reviewer follow-up on PR #216: - Removes `xls` from bigdata --format choices. KOSIS returns xls as a binary Excel payload, but the helper streams text-only output, which would corrupt the file. json/sdmx/csv (text) remain supported. - Detects KOSIS `{err, errMsg}` envelopes even when --format is csv/sdmx, so non-json bigdata responses surface auth/limit errors instead of printing a misleading error envelope as raw success output. - Updates SKILL.md, references/kosis-openapi-guide.md, and docs/features/kosis-stats.md so the advertised contract matches the helper's actual capabilities. - Adds 3 unit tests: xls rejection, json error envelope detection in csv mode, and clean csv passthrough when no error envelope is present. --------- Co-authored-by: Jeffrey (Dongkyu) Kim <vkehfdl1@gmail.com>
8.2 KiB
공통 설정 가이드
k-skill 전체 스킬을 설치한 뒤, 인증 정보가 필요한 기능(SRT 예매, KTX 예매, 자연휴양림 빈 객실 조회, 국가데이터처 KOSIS 통계 조회용 KSKILL_KOSIS_API_KEY (https://kosis.kr/openapi/ 에서 무료 발급), 한국 법령 검색의 로컬 CLI/MCP 경로용 LAW_OC, 한국 특허 정보 검색의 KIPRIS Plus 경로용 KIPRIS_PLUS_API_KEY, self-host 프록시 운영용 서울 지하철/한국 날씨/미세먼지/한강홍수통제소/식약처 upstream key, 또는 배포 확인이 끝난 proxy URL 공유)이 있으면 이 절차를 진행하면 된다. 미세먼지, 한강 수위, 주유소 가격, 부동산 실거래가, 한국 주식 정보 조회, 생활쓰레기 배출정보 조회, 학교 급식 식단 조회, 의약품 안전 체크, 식품 안전 체크는 기본 hosted proxy를 쓰므로 사용자 쪽 키가 불필요하다(단, hosted 프록시 운영 측에서 DATA_GO_KR_API_KEY·KEDU_INFO_KEY·DATA4LIBRARY_AUTH_KEY·FOODSAFETYKOREA_API_KEY 등은 서버에 설정되어 있어야 한다).
Credential resolution order
모든 credential-bearing 스킬은 아래 우선순위를 따른다.
- 이미 환경변수에 있으면 그대로 사용한다.
- 에이전트가 자체 secret vault(1Password CLI, Bitwarden CLI, macOS Keychain 등)를 사용 중이면 거기서 꺼내 환경변수로 주입해도 된다.
~/.config/k-skill/secrets.env(기본 fallback) — plain dotenv 파일, 퍼미션0600.- 아무것도 없으면 유저에게 물어서 2 또는 3에 저장한다.
에이전트가 자체 vault를 사용 중이라면 기본 경로 설정을 건너뛰어도 된다.
기본 경로로 설정하기
에이전트가 별도 vault를 쓰지 않는 경우, 기본 fallback 파일을 만든다.
mkdir -p ~/.config/k-skill
cat > ~/.config/k-skill/secrets.env <<'EOF'
KSKILL_SRT_ID=replace-me
KSKILL_SRT_PASSWORD=replace-me
KSKILL_KTX_ID=replace-me
KSKILL_KTX_PASSWORD=replace-me
KSKILL_FORESTTRIP_ID=replace-me
KSKILL_FORESTTRIP_PASSWORD=replace-me
KSKILL_KOSIS_API_KEY=replace-me
LAW_OC=replace-me
KIPRIS_PLUS_API_KEY=replace-me
AIR_KOREA_OPEN_API_KEY=replace-me
KSKILL_PROXY_BASE_URL=
EOF
chmod 0600 ~/.config/k-skill/secrets.env
실제 값을 채운다.
서울 지하철 도착정보, 한국 날씨, 미세먼지, 한강 수위, 주유소 가격, 생활쓰레기 배출정보 조회, 학교 급식 식단 조회, 의약품 안전 체크, 식품 안전 체크는 KSKILL_PROXY_BASE_URL 을 비워 두면 기본 hosted path(k-skill-proxy.nomadamas.org)를 그대로 쓴다. 별도 self-host proxy를 쓸 때만 KSKILL_PROXY_BASE_URL 을 채운다.
한국 법령 검색의 로컬 CLI/MCP 경로용 LAW_OC 는 korean-law-mcp 로컬 실행에 쓴다. 로컬 CLI/MCP 경로는 LAW_OC 를 채운 뒤 npm install -g korean-law-mcp 와 korean-law list 로 설치 상태를 확인한다.
remote MCP endpoint는 사용자 LAW_OC 없이 url만으로 연결한다. 다만 기존 korean-law-mcp 경로가 서비스 장애로 막히면 법망(https://api.beopmang.org) MCP/REST를 fallback으로 사용할 수 있다.
한국 부동산 실거래가 조회는 기본 hosted proxy(k-skill-proxy.nomadamas.org)를 경유하므로 사용자 쪽 DATA_GO_KR_API_KEY 가 불필요하다.
한국 주식 정보 조회는 기본 hosted proxy(k-skill-proxy.nomadamas.org)를 경유하므로 사용자 쪽 KRX_API_KEY 가 불필요하다. self-host proxy 운영자만 서버 환경변수 KRX_API_KEY 를 사용한다.
도서관 도서 조회는 기본 hosted proxy(k-skill-proxy.nomadamas.org)를 경유하므로 사용자 쪽 DATA4LIBRARY_AUTH_KEY 가 불필요하다. self-host proxy 운영자만 서버 환경변수 DATA4LIBRARY_AUTH_KEY 를 사용한다.
근처 가장 싼 주유소 찾기는 기본 hosted proxy(k-skill-proxy.nomadamas.org)를 경유하므로 사용자 쪽 OPINET_API_KEY 가 불필요하다.
한국 특허 정보 검색의 KIPRIS Plus 경로용 KIPRIS_PLUS_API_KEY 는 helper가 읽는 표준 변수명이다. 실제 HTTP 요청에서는 같은 값을 ServiceKey 쿼리 파라미터로 보낸다. 공공데이터포털에서 복사한 percent-encoded key도 helper가 한 번 정규화해서 그대로 쓸 수 있다.
확인
bash scripts/check-setup.sh
시크릿이 없을 때의 기본 응답
인증이 필요한 스킬에서 값이 비어 있으면 credential resolution order에 따라 확보한다.
- 어떤 값이 필요한지 정확한 변수 이름으로 알려주기
- resolution order에 따라 유저에게 확보 방법 안내하기
기능별로 필요한 값
| 기능 | 필요한 값 |
|---|---|
| SRT 예매 | KSKILL_SRT_ID, KSKILL_SRT_PASSWORD |
| KTX 예매 | KSKILL_KTX_ID, KSKILL_KTX_PASSWORD |
| 자연휴양림 빈 객실 조회 | KSKILL_FORESTTRIP_ID, KSKILL_FORESTTRIP_PASSWORD |
| 한국 법령 검색 (로컬 CLI/MCP) | LAW_OC |
| 한국 법령 검색 (remote MCP endpoint) | 사용자 시크릿 불필요 (url만 등록, 장애 시 법망 fallback 가능) |
| 한국 부동산 실거래가 조회 | 사용자 시크릿 불필요 (기본 hosted proxy 사용) |
| 한국 특허 정보 검색 | KIPRIS_PLUS_API_KEY |
| 하이패스 영수증 발급 | 사용자 시크릿 불필요 (로그인된 브라우저 세션 필요) |
| 한국 주식 정보 조회 | 사용자 시크릿 불필요 (기본 hosted proxy 사용, 운영자만 KRX_API_KEY) |
| 근처 가장 싼 주유소 찾기 | 사용자 시크릿 불필요 (기본 hosted proxy 사용) |
| 서울 지하철 도착정보 조회 | 사용자 시크릿 불필요 (기본 hosted proxy 사용, 운영자만 SEOUL_OPEN_API_KEY) |
| 한국 날씨 조회 | 사용자 시크릿 불필요 (기본 hosted proxy 사용, 운영자만 KMA_OPEN_API_KEY) |
| 사용자 위치 미세먼지 조회 | KSKILL_PROXY_BASE_URL 또는 AIR_KOREA_OPEN_API_KEY |
| 한강 수위 정보 조회 | 사용자 시크릿 불필요 (기본 hosted proxy 사용) |
| 생활쓰레기 배출정보 조회 | 사용자 시크릿 불필요 (프록시에 DATA_GO_KR_API_KEY가 설정된 hosted/self-host; API 호출 시 pageNo=1, numOfRows=100 필수) |
| 학교 급식 식단 조회 | 사용자 시크릿 불필요 (프록시에 KEDU_INFO_KEY가 설정된 hosted/self-host 사용) |
| 도서관 도서 조회 | 사용자 시크릿 불필요 (프록시에 DATA4LIBRARY_AUTH_KEY가 설정된 hosted/self-host 사용) |
| 의약품 안전 체크 | 사용자 시크릿 불필요 (프록시에 DATA_GO_KR_API_KEY가 설정된 hosted/self-host 사용) |
| 식품 안전 체크 | 사용자 시크릿 불필요 (프록시에 DATA_GO_KR_API_KEY와 선택적 FOODSAFETYKOREA_API_KEY가 설정된 hosted/self-host 사용) |
다음에 볼 문서
- SRT 예매 가이드
- KTX 예매 가이드
- 자연휴양림 빈 객실 조회 가이드
- 서울 지하철 도착정보 가이드
- 한국 날씨 조회 가이드
- 사용자 위치 미세먼지 조회 가이드
- 한강 수위 정보 가이드
- 한국 법령 검색 가이드
- 한국 부동산 실거래가 조회 가이드
- 한국 특허 정보 검색 가이드
- 하이패스 영수증 발급 가이드
- 한국 주식 정보 조회 가이드
- 근처 가장 싼 주유소 찾기 가이드
- 근처 공중화장실 찾기 가이드
- 생활쓰레기 배출정보 조회 가이드
- 학교 급식 식단 조회 가이드
- 도서관 도서 조회 가이드
- 의약품 안전 체크 가이드
- 식품 안전 체크 가이드
- 보안/시크릿 정책
설치 기본 흐름은 "전체 스킬 설치 → 개별 기능 사용" 이다.