mirror of
https://github.com/NomaDamas/k-skill.git
synced 2026-06-24 02:04:11 +00:00
* 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>
25 lines
4.1 KiB
JSON
25 lines
4.1 KiB
JSON
{
|
|
"name": "k-skill",
|
|
"private": true,
|
|
"engines": {
|
|
"node": ">=18"
|
|
},
|
|
"workspaces": [
|
|
"packages/*"
|
|
],
|
|
"scripts": {
|
|
"build": "npm run build --workspaces --if-present",
|
|
"lint": "node --check scripts/skill-docs.test.js scripts/korean_character_count.js scripts/test_korean_character_count.js && python3 -m py_compile scripts/k_skill_cleaner.py scripts/test_k_skill_cleaner.py corporate-registration-consulting/scripts/fill_official_hwp.py k-skill-cleaner/scripts/k_skill_cleaner.py scripts/fine_dust.py scripts/test_fine_dust.py scripts/ktx_booking.py scripts/test_ktx_booking.py scripts/sillok_search.py scripts/test_sillok_search.py scripts/korean_spell_check.py scripts/test_korean_spell_check.py scripts/patent_search.py scripts/test_patent_search.py scripts/mfds_drug_safety.py scripts/test_mfds_drug_safety.py scripts/mfds_food_safety.py scripts/test_mfds_food_safety.py scripts/zipcode_search.py scripts/test_zipcode_search.py scripts/subway_lost_property.py scripts/test_subway_lost_property.py scripts/geeknews_search.py scripts/test_geeknews_search.py scripts/test_naver_blog_search.py scripts/test_korean_slang_writing.py scripts/kakaotalk_mac.py scripts/test_kakaotalk_mac.py scripts/test_coupang_partners_mcp_wrapper.py coupang-product-search/scripts/coupang_partners_mcp.py kakaotalk-mac/scripts/kakaotalk_mac.py naver-blog-research/scripts/_naver_http.py naver-blog-research/scripts/naver_search.py naver-blog-research/scripts/naver_read.py naver-blog-research/scripts/naver_download_images.py korean-slang-writing/scripts/_slang_http.py korean-slang-writing/scripts/slang_search.py korean-slang-writing/scripts/slang_lookup.py korean-scholarship-search/scripts/scholarship_filter.py korean-scholarship-search/scripts/test_scholarship_filter.py korean-scholarship-search/scripts/university_search_plan.py kosis-stats/scripts/run_kosis_stats.py kosis-stats/tests/test_run_kosis_stats.py && npm run lint --workspaces --if-present && ./scripts/validate-skills.sh",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "node --test scripts/skill-docs.test.js scripts/test_korean_character_count.js && PYTHONPATH=.:scripts python3 -m unittest scripts.test_k_skill_cleaner scripts.test_fine_dust scripts.test_ktx_booking scripts.test_sillok_search scripts.test_korean_spell_check scripts.test_patent_search scripts.test_mfds_drug_safety scripts.test_mfds_food_safety scripts.test_zipcode_search scripts.test_subway_lost_property scripts.test_geeknews_search scripts.test_naver_blog_search scripts.test_korean_slang_writing scripts.test_kakaotalk_mac scripts.test_coupang_partners_mcp_wrapper && PYTHONPATH=.:scripts:korean-scholarship-search/scripts python3 -m unittest discover -s korean-scholarship-search/scripts -p 'test_scholarship_filter.py' && PYTHONPATH=.:scripts:kosis-stats/scripts python3 -m unittest discover -s kosis-stats/tests -p 'test_run_kosis_stats.py' && npm run test --workspaces --if-present && ./scripts/validate-skills.sh",
|
|
"pack:dry-run": "npm pack --workspace k-lotto --dry-run && npm pack --workspace daiso-product-search --dry-run && npm pack --workspace market-kurly-search --dry-run && npm pack --workspace blue-ribbon-nearby --dry-run && npm pack --workspace kakao-bar-nearby --dry-run && npm pack --workspace cheap-gas-nearby --dry-run && npm pack --workspace public-restroom-nearby --dry-run && npm pack --workspace parking-lot-search --dry-run && npm pack --workspace court-auction-notice-search --dry-run && npm pack --workspace donation-place-search --dry-run && npm pack --workspace gongsijiga-search --dry-run && npm pack --workspace kbl-results --dry-run && npm pack --workspace kleague-results --dry-run && npm pack --workspace lck-analytics --dry-run && npm pack --workspace toss-securities --dry-run && npm pack --workspace hipass-receipt --dry-run && npm pack --workspace used-car-price-search --dry-run && npm pack --workspace k-skill-rhwp --dry-run",
|
|
"ci": "npm run lint && npm run typecheck && npm run test && npm run pack:dry-run",
|
|
"version-packages": "changeset version",
|
|
"release:npm": "changeset publish"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22.14.1",
|
|
"@changesets/cli": "^2.29.5",
|
|
"typescript": "^5.8.2"
|
|
}
|
|
}
|