OpenSource-Hub

k-skill

フレームワーク

NomaDamas/k-skill

韓国生活向けの AI エージェントスキル集。

概要

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 トンネルと observability/dashboard サービスが再起動後に停止したままになる場合に発生します。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. 不足している tunnel ユニットをリポジトリにコミットし、NFS ブートレース対策の依存関係を含めます:

[Unit]
   StartLimitIntervalSec=0
   RequiresMountsFor=/data/...

   [Service]
   Restart=always

2. 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-promtail

4. 5分間隔のデプロイ cron にウォッチドッグを追加し、デプロイされた SHA が変更されていない場合でも停止しているサービスが起動されるようにします:
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-promtail

5. deployed-sha に関係なく、cron の実行ごとにパブリックの /health スモークテストを実行し、失敗時にはアラートを発行するかインシデント issue を作成します。
6. 追加のハードニングとして、0.0.0.0 の代わりに KSKILL_PROXY_HOST=127.0.0.1 を設定し、cloudflared を 2026.6.1 から 2026.8.2 にアップグレードします。

検証: gpu01 を再起動し、5つのサービスすべてが active を返し、https://k-skill-proxy.nomadamas.org と https://k-skill-proxy-dashboard.nomadamas.org の両方が手動介入なしに 200/302 を返すことを確認します。

参照 Issue #658
トラブル対応
MOLITがHTTP 200でresultCode 22のクォータ超過を返すことが原因で発生する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などのキー/アプリケーションエラーは個別に分類し、エラーレベルでログに記録すること。502は真の一時的なアップストリーム障害の場合のみに維持すること。real-estate ルートと krx-stock ルートでは、502を返す前に request.log.warn({ route, upstreamError: result.error, message }) を追加してください。resultCode 22用の server.test.js シナリオを追加し、テストスイートを実行してください。デプロイ後、クォータ障害は匿名の502ではなく、原因が特定できる503レスポンスとして表示されるようになります。

参照 Issue #603
トラブル対応
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 を当該コミットに上げることです。

参照 Issue #660
トラブル対応
korean-movie-searchでCGVのボットブロックエラーまたは「503 CGV_UPSTREAM_UNAVAILABLE」を修正する方法

これは、無効なスキルやCLI入力が原因ではなく、CGVのアップストリーム側のボット検出/アクセス制限が原因です。まず npx --yes daiso health でサービスを確認してください。ヘルスチェックが正常でもCGVエンドポイントが 503 CGV_UPSTREAM_UNAVAILABLE を返す場合は、しばらく待ってから再試行してください。CAPTCHA、ブラウザ認証、アクセス制御を回避しないでください。プロキシ、ユーザーエージェントの偽装、CAPTCHAの自動解除はサポートされていません。別のエラーが発生した場合は、映画/劇場の識別子とCLI構文を再確認してください。障害が継続する場合は、CGVが制限を解除するまで待つ必要があります。

参照 Issue #642
informational
MCP経由で韓国の特定の動物用医薬品を販売している動物薬局を検索するにはどうすればよいですか?

https://hkmedi.co.kr/pharmacy-mcp の Streamable HTTP MCP サーバーを使用できます。これは K-Skill リポジトリで animal-pharmacy-search スキルとしてもパッケージ化されています(PR #630 でマージ済み)。このツールは以下をサポートしています:1. 韓国の動物薬局の地域別リストの閲覧、2. キーワードまたは効能による動物用医薬品の検索、3. より高い信頼性を確保するための、過去6か月以内に対象製品の購入記録がある薬局のみへの結果のフィルタリング。注意:このデータは政府の公式な公開データではなく、民間の商業卸売業者である Hongik Medicare から提供されたものです。リアルタイムの在庫状況や全国の完全な網羅性は保証されておらず、専門の獣医による診断や処方の代替となるものでもありません。訪問する前に、必ず薬局に電話して製品の在庫を確認してください。

参照 Issue #426