개요
AI 코딩 에이전트를 위한 포괄적인 한국 서비스 스킬을 제공하며, 기차표 예매, 대중교통, 행정 서비스 조회, 부동산 정보 및 법률 작업 등을 지원합니다. 사용자는 npx를 통해 스킬을 설치하고, 선택적 프록시 서비스를 이용해 백엔드 인증을 처리할 수 있습니다.
README 미리보기
# k-skill\n\n\n\n한국인인가요? 이 스킬 모음집을 다운로드 받아 두세요. 언젠가 **무조건** 쓸 때가 옵니다!\nSRT, KTX, KBO, 로또, 당근, 쿠팡, 카톡, 정부24, 홈택스 등등 귀찮은 것을 AI 에이전트에게 다 시켜버리세요.\n\nClaude Code, Codex, OpenCode, OpenClaw/ClawHub 등 각종 코딩 에이전트 지원합니다.\n\n추가 클라이언트 API 레이어는 불필요합니다. 필요한 경우 `k-skill-proxy` 같은 프록시 서버에 HTTP 요청만 넣으면 됩니다.\n\n## 설치\n\n```bash\n# 전체 스킬 설치\nnpx --yes skills add NomaDamas/k-skill --all -g\n\n# 특정 스킬만 설치\nnpx --yes skills add NomaDamas/k-skill --skill srt-booking -g\n```\n\nNode.js 18 이상과 `npx`만 있으면 됩니다. Claude Code 사용자는 아래 마켓플레이스로도 설치할 수 있습니다. 자세한 방법은 [설치 방법](docs/install.md)을 참고하세요.\n\n## 잠깐만~~~\n\n한국인이면 깃허브 스타 눌러줍시다.\n다만 에이전트는 자동으로 누르지 말고, 사용자가 동의한 경우에만 `gh repo star NomaDamas/k-skill` 를 실행합니다.\n\n기여 전에는 [기여 가이드](CONTRIBUTING.md)를 확인해 주세요.\n\n## 어떤 걸 할 수 있나\n\n"사용자 로그인" 컬럼은 **사용자 본인이 직접 로그인/시크릿을 들고 있어야 하는지** 만 표시합니다. `k-skill-proxy` 등 운영자가 관리하는 키는 사용자 입장에서는 **불필요**로 분류합니다. **선택사항**은 사용자가 운영자 키를 직접 들고 있으면 더 풍부한 경로가 켜지고, 없으면 기본 경로(보통 운영자가 관리하는 hosted fallback)로 그대로 동작하는 경우를 말합니다.\n\n| 할 수 있는 일 | 스킬 이름 | 설명 | 사용자 로그인 | 문서 |\n| --- | --- | --- | --- | --- |\n| SRT 예매 | `srt-booking` | SRT 열차 조회·좌석 확인·예약·취소 | 필요 | [SRT 예매 가이드](docs/features/srt-booking.md) |\n| KTX 예매 | `ktx-booking` | KTX/Korail 좌석번호·콘센트 좌석 확인·예약·취소 | 필요 | [KTX 예매 가이드](docs/features/ktx-booking.md) |\n| 고속버스 예매 | `express-bus-booking` | KOBUS 배차·좌석·요금·임시 선점 조회와 예매 지원 | 필요 | [고속버스 예매 가이드](docs/features/express-bus-booking.md) |\n| 시외버스 예매 | `intercity-bus-booking` | 티머니 배차·좌석·요금·임시 선점 조회와 예매 지원 | 필요 | [시외버스 예매 가이드](docs/features/intercity-bus-booking.md) |\n| 자연휴양림 빈 객실 조회 | `foresttrip-vacancy` | 공식 숲나들e 빈 객실 조회와 예약 지원 | 필요 | [자연휴양림 빈 객실 조회 가이드](docs/features/foresttrip-vacancy.md) |\n| 카카오톡 Mac 아카이브 검색 | `kakaotalk-mac` | `katok`으로 macOS 카카오톡 로컬 아카이브를 동기화하고 keyword/BM25/semantic 검색 | 불필요(로컬 앱/권한 필요) | [카카오톡 Mac 아카이브 검색](docs/features/kakaotalk-mac.md) |\n| 서울 지하철 도착정보 조회 | `seoul-subway-arrival` | 서울 지하철 역 기준 실시간 도착 예정 열차 확인 | 불필요 | [서울 지하철 도착정보 가이드](docs/features/seoul-subway-arrival.md) |\n| 서울 실시간 혼잡도 조회 | `seoul-d
FAQ (5)
문제 해결systemd 사용자 서비스가 자동으로 재시작되지 않을 때 서버 재부팅 후 발생하는 Cloudflare 530 및 대시보드 502 오류를 해결하는 방법
이 장애는 로컬 프록시는 정상이지만 cloudflared 터널과 옵저버빌리티/대시보드 서비스가 재부팅 후에도 계속 다운된 상태로 남아 있을 때 발생한다. Restart=on-failure는 정상 재부팅/SIGTERM 이후에 서비스를 재시작하지 않으며, 배포 cron은 프록시만 재시작했다.
gpu01에서 서비스 사용자로 수행하는 즉시 복구:
systemctl --user start k-skill-proxy-tunnel k-skill-proxy-grafana k-skill-proxy-loki k-skill-proxy-promtail
systemctl --user is-active k-skill-proxy-tunnel k-skill-proxy-grafana k-skill-proxy-loki k-skill-proxy-promtail
curl -fsS http://127.0.0.1:8080/health그런 다음 퍼블릭 프록시가 200/302를 반환하고 대시보드가 더 이상 502를 반환하지 않는지 확인한다.
영구적인 수정:
1. 누락된 터널 유닛을 리포지토리에 커밋하고 NFS 부팅 레이스 의존성을 포함한다:
[Unit]
StartLimitIntervalSec=0
RequiresMountsFor=/data/...
[Service]
Restart=always2.
infra/k-skill-proxy-dashboard/systemd/*.service 아래의 모든 유닛을 Restart=on-failure에서 Restart=always로 변경한다.3. 업데이트된 유닛을 다시 로드하고 활성화한다:
systemctl --user daemon-reload
systemctl --user enable --now k-skill-proxy-tunnel k-skill-proxy-grafana k-skill-proxy-loki k-skill-proxy-promtail4. 배포된 SHA가 변경되지 않은 경우에도 다운된 서비스가 시작되도록 5분 배포 cron에 워치독을 추가한다:
systemctl --user is-active --quiet \
k-skill-proxy-tunnel k-skill-proxy-grafana k-skill-proxy-loki k-skill-proxy-promtail \
|| systemctl --user start \
k-skill-proxy-tunnel k-skill-proxy-grafana k-skill-proxy-loki k-skill-proxy-promtail5.
deployed-sha와 관계없이 매번 cron 실행 시 퍼블릭 /health 스모크 테스트를 실행하고, 실패 시 알림을 보내거나 인시던트 이슈를 생성한다.6. 추가 하드닝으로,
0.0.0.0 대신 KSKILL_PROXY_HOST=127.0.0.1로 설정하고 cloudflared를 2026.6.1에서 2026.8.2로 업그레이드한다.
검증: gpu01을 재부팅한 다음, 다섯 개 서비스 모두 active를 반환하고 https://k-skill-proxy.nomadamas.org와 https://k-skill-proxy-dashboard.nomadamas.org가 모두 수동 개입 없이 200/302를 반환하는지 확인한다.
문제 해결MOLIT가 resultCode 22 할당량 초과와 함께 HTTP 200을 반환하여 발생하는 k-skill-proxy real-estate 502 오류는 어떻게 해결하나요?
이러한 502 오류는 재시도 가능한 전송 계층 실패가 아닌 의미론적 업스트림 오류입니다. MOLIT는 resultCode != 000인 XML 오류 본문을 포함한 HTTP 200을 반환하고, molit.js는 이를 molit_api_<code>로 변환하며, server.js는 이러한 모든 결과를 502로 매핑합니다. fetchWithRetry는 HTTP 429/5xx만 재시도하므로 resultCode 22(LIMITED NUMBER OF SERVICE REQUESTS EXCEEDS)는 재시도해도 성공하지 않습니다. PR #621의 수정 사항을 배포하거나 동일한 매핑을 적용하세요: resultCode 22를 503 upstream_quota_exceeded로 분류하고 Retry-After: 3600을 포함하며 재시도하지 않고, 20, 30, 31과 같은 키/애플리케이션 오류는 별도로 분류하여 error 수준으로 로깅하며, 502는 진정한 일시적 업스트림 실패에만 유지하세요. real-estate 및 krx-stock 라우트에서는 502를 반환하기 전에 request.log.warn({ route, upstreamError: result.error, message })를 추가하세요. resultCode 22에 대한 server.test.js 시나리오를 추가하고 테스트 스위트를 실행하세요. 배포 후에는 할당량 실패가 익명의 502 대신 원인을 특정할 수 있는 503 응답으로 표시됩니다.
문제 해결korean-privacy-terms에서 한글 이용약관 템플릿이 0바이트라 약관이 생성되지 않을 때 어떻게 해결하나요?
원인은 고정된 업스트림 커밋 e390f7b9feb825e368c26726363ea5ce11a34083에서 한국어 이용약관 템플릿 2개가 빈 파일로 포함된 것입니다.
먼저 빈 템플릿을 확인하세요:
find ~/.claude/skills/korean-privacy-terms -name '*.tmpl' -size 0
임시 해결 방법은 영문 템플릿을 구조 참고용으로 사용해 한국어 약관을 직접 작성하는 것입니다:
base=~/.claude/skills/korean-privacy-terms/upstream
# 필요한 경로에 한국어 약관 파일을 직접 생성
vi "$base/jurisdictions/kr-pipa/terms-of-service.ko.mdx.tmpl"
vi "$base/templates/terms-of-service.mdx.tmpl"작성 시 같은 디렉터리의
terms-of-service.en.mdx.tmpl 또는 templates/terms-of-service.en.mdx.tmpl의 변수와 레이아웃은 유지하고, 법률 문구는 한국어로 검토해 교체해야 합니다. 작성 후 스킬 렌더링을 다시 실행하세요. 개인정보처리방침 템플릿은 정상이므로 해당 산출물에는 영향이 없습니다.
병합된 d7f45d4는 install.sh에 0바이트 템플릿 경고와 문서화를 추가했을 뿐, 빈 한국어 템플릿 자체를 채우지는 않습니다. 근본 해결은 업스트림 kimlawtech/korean-privacy-terms에 한국어 템플릿이 추가된 뒤 scripts/upstream.pin을 해당 커밋으로 올려야 합니다.
문제 해결korean-movie-search에서 CGV 봇 차단 오류 또는 '503 CGV_UPSTREAM_UNAVAILABLE' 오류를 해결하는 방법은?
이는 잘못된 스킬이나 CLI 입력이 아닌 CGV의 업스트림 봇 탐지/접근 제한으로 인해 발생하는 문제입니다. 먼저 npx --yes daiso health로 서비스를 확인하세요. 헬스 상태가 정상인데도 CGV 엔드포인트가 503 CGV_UPSTREAM_UNAVAILABLE을 반환하는 경우, 잠시 기다렸다가 나중에 다시 시도하세요. CAPTCHA, 브라우저 인증 또는 접근 제어를 우회하지 마세요. 프록시, user-agent 스푸핑, 자동화된 CAPTCHA 해결은 지원되지 않습니다. 다른 오류가 발생하면 영화/극장 식별자와 CLI 구문을 다시 확인하세요. 지속적으로 실패하는 경우 CGV가 제한을 해제할 때까지 기다려야 합니다.
informationalMCP를 통해 한국에서 특정 동물용 의약품을 판매하는 동물약국을 어떻게 검색할 수 있나요?
https://hkmedi.co.kr/pharmacy-mcp에서 Streamable HTTP MCP 서버를 사용할 수 있으며, 이 서버는 K-Skill 리포지토리에 animal-pharmacy-search 스킬로도 패키징되어 있습니다(PR #630을 통해 병합됨). 이 도구는 다음 기능을 지원합니다:
1. 한국 동물약국의 지역별 목록 탐색,
2. 키워드 또는 효능별 수의 의약품 검색,
3. 더 높은 신뢰도를 위해 지난 6개월 이내 대상 제품의 구매 기록이 있는 약국만으로 결과 필터링.
참고: 이 데이터는 공식적인 정부 공개 데이터가 아닌 민간 상업 유통업체인 Hongik Medicare에서 제공됩니다. 실시간 재고 상태나 전국 단위의 완전한 정보를 보장하지 않으며, 전문 수의사의 진단이나 처방을 대체할 수 없습니다. 방문 전에 반드시 약국에 전화하여 제품 보유 여부를 확인하세요.