| name | k-skill-setup |
| description | After installing the full k-skill bundle, configure and verify the shared cross-platform setup, then optionally wire update checks and GitHub starring with explicit user consent. |
| license | MIT |
| metadata | {"category":"setup","locale":"ko-KR","phase":"v1"} |
k-skill Setup
Purpose
์ ์ฒด k-skill ์ค์น๊ฐ ๋๋ ๋ค, ๊ณตํต ํ์ ์์
์ ์ฒ๋ฆฌํ๋ค.
- credential ํ๋ณด (์์ด์ ํธ vault ๋๋ ๊ธฐ๋ณธ secrets.env)
- ๋ฐํ์ ํ๊ฒฝ๋ณ์ ํ์ธ
- ์ ํ ์ฌํญ: ์ฃผ๊ธฐ์ ์ธ ์
๋ฐ์ดํธ ํ์ธ ์๋ํ
- ์ ํ ์ฌํญ: GitHub star ์ฌ๋ถ ํ์ธ ๋ฐ ๋์ ์ ์คํ
์ด ์คํฌ์ ๊ธฐ๋ณธ ์ ์ฑ
:
- ์ํฌ๋ฆฟ์ด ์์ผ๋ฉด ํ์ํ ๊ฐ ์ด๋ฆ์ ์ฌ์ฉ์์๊ฒ ์ ํํ ์๋ ค์ค๋ค
- credential resolution order์ ๋ฐ๋ผ ํ๋ณดํ๋ค
- ํ์ํ ํจํค์ง๊ฐ ์์ผ๋ฉด ๋์ฒด ๊ตฌํ์ ์ฐพ๊ธฐ๋ณด๋ค ์ ์ญ ์ค์น๋ฅผ ๋จผ์ ์๋ํ๋ค
cron, launchd, schtasks, gh ๊ฐ์ ์ง์์ฑ/์ธ๋ถ ์ํ ๋ณ๊ฒฝ์ ์๋์ผ๋ก ํ์ง ๋ง๊ณ ๋จผ์ ์ฌ์ฉ์ ๋์๋ฅผ ๋ฐ๋๋ค
- GitHub star๋ ์ฌ์ฉ์๊ฐ ๋ช
์์ ์ผ๋ก ๋์ํ์ ๋๋ง ์คํํ๋ค
Credential resolution order
๋ชจ๋ credential-bearing ์คํฌ์ ์๋ ์ฐ์ ์์๋ฅผ ๋ฐ๋ฅธ๋ค.
- ์ด๋ฏธ ํ๊ฒฝ๋ณ์์ ์์ผ๋ฉด ๊ทธ๋๋ก ์ฌ์ฉํ๋ค.
- ์์ด์ ํธ๊ฐ ์์ฒด secret vault(1Password CLI, Bitwarden CLI, macOS Keychain ๋ฑ)๋ฅผ ์ฌ์ฉ ์ค์ด๋ฉด ๊ฑฐ๊ธฐ์ ๊บผ๋ด ํ๊ฒฝ๋ณ์๋ก ์ฃผ์
ํด๋ ๋๋ค.
~/.config/k-skill/secrets.env (๊ธฐ๋ณธ fallback) โ plain dotenv ํ์ผ, ํผ๋ฏธ์
0600.
- ์๋ฌด๊ฒ๋ ์์ผ๋ฉด ์ ์ ์๊ฒ ๋ฌผ์ด์ 2 ๋๋ 3์ ์ ์ฅํ๋ค.
๊ธฐ๋ณธ ๊ฒฝ๋ก์ ์ ์ฅํ๋ ๊ฒ์ fallback์ผ ๋ฟ, ๊ฐ์ ๊ฐ ์๋๋ค.
Standard file location
- secrets file (๊ธฐ๋ณธ fallback):
~/.config/k-skill/secrets.env
Install
์ด ์คํฌ์ k-skill ์ ์ฒด ์คํฌ ์ค์น๊ฐ ๋๋ ๋ค ์คํํ๋ ๊ฒ์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ค.
์:
npx --yes skills add <owner/repo> --all -g
์ค์น๊ฐ ๋๋๋ฉด ์ด ์คํฌ์ ํธ์ถํด ์๋ setup ๋จ๊ณ๋ฅผ ์ด์ด๊ฐ๋ค.
Setup steps
1. Create the default secrets file (if no vault is in use)
์์ด์ ํธ๊ฐ ์์ฒด 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
LAW_OC=replace-me
KIPRIS_PLUS_API_KEY=replace-me
AIR_KOREA_OPEN_API_KEY=replace-me
KSKILL_PROXY_BASE_URL=https://your-proxy.example.com
EOF
chmod 0600 ~/.config/k-skill/secrets.env
์ ์ ์๊ฒ ๋ฌผ์ด์ ์ค์ ๊ฐ์ ์ฑ์ด๋ค.
์์ธ ์งํ์ฒ ๋์ฐฉ์ ๋ณด์ ํ๊ตญ ๋ ์จ ์กฐํ๋ hosted public route rollout ์ด ๋๋๊ธฐ ์ ๊น์ง KSKILL_PROXY_BASE_URL ์ self-host ๋๋ ๋ฐฐํฌ ํ์ธ์ด ๋๋ proxy URL ๋ก ์ฑ์ด๋ค. ๋ฏธ์ธ๋จผ์ง, ํ๊ฐ ์์, ์ฃผ์ ์ ๊ฐ๊ฒฉ, ์ํ์ฐ๋ ๊ธฐ ๋ฐฐ์ถ์ ๋ณด ์กฐํ, ํ๊ต ๊ธ์ ์๋จ ์กฐํ, ์์ฝํ ์์ ์ฒดํฌ, ์ํ ์์ ์ฒดํฌ๋ KSKILL_PROXY_BASE_URL ์ ๋น์ ๋๋ฉด ๊ธฐ๋ณธ hosted path(k-skill-proxy.nomadamas.org)๋ฅผ ๊ทธ๋๋ก ์ด๋ค.
ํ๊ตญ ๋ฒ๋ น ๊ฒ์์ ๋ก์ปฌ korean-law-mcp ๊ฒฝ๋ก๋ฅผ ์ธ ๋๋ง LAW_OC ๋ฅผ ์ฑ์ด๋ค. remote endpoint๋ ์ฌ์ฉ์ LAW_OC ์์ด url๋ง ๋ฑ๋กํ๋ฉด ๋๊ณ , ๊ธฐ์กด ๊ฒฝ๋ก ์ฅ์ ์์๋ ๋ฒ๋ง(https://api.beopmang.org)์ 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 ๋ฅผ ์ฌ์ฉํ๋ค.
์ํ์ฐ๋ ๊ธฐ ๋ฐฐ์ถ์ ๋ณด ์กฐํ๋ k-skill-proxy์ /v1/household-waste/info ๋ผ์ฐํธ๋ฅผ ํธ์ถํ๊ณ , serviceKey(DATA_GO_KR_API_KEY)๋ proxy ์๋ฒ์์ ์ฃผ์
/๊ด๋ฆฌํ๋ฏ๋ก ์ฌ์ฉ์ ์ชฝ DATA_GO_KR_API_KEY ๊ฐ ๋ถํ์ํ๋ค.
ํ๊ต ๊ธ์ ์๋จ ์กฐํ๋ k-skill-proxy์ /v1/neis/school-searchยท/v1/neis/school-meal์ ํธ์ถํ๊ณ , KEDU_INFO_KEY๋ ํ๋ก์ ์๋ฒ์๋ง ๋๋ฏ๋ก ์ฌ์ฉ์ ์ชฝ์ ๋ ํ์๊ฐ ์๋ค.
๋์๊ด ๋์ ์กฐํ๋ k-skill-proxy์ /v1/data4library/* ๋ผ์ฐํธ๋ฅผ ํธ์ถํ๊ณ , DATA4LIBRARY_AUTH_KEY๋ ํ๋ก์ ์๋ฒ์๋ง ๋๋ฏ๋ก ์ฌ์ฉ์ ์ชฝ์ ๋ ํ์๊ฐ ์๋ค.
๊ทผ์ฒ ๊ฐ์ฅ ์ผ ์ฃผ์ ์ ์ฐพ๊ธฐ๋ ๊ธฐ๋ณธ hosted proxy๋ฅผ ๊ฒฝ์ ํ๋ฏ๋ก ์ฌ์ฉ์ ์ชฝ OPINET_API_KEY ๊ฐ ๋ถํ์ํ๋ค.
์์ฝํ ์์ ์ฒดํฌ๋ k-skill-proxy์ /v1/mfds/drug-safety/lookup ๋ผ์ฐํธ๋ฅผ ํธ์ถํ๊ณ , DATA_GO_KR_API_KEY ๋ ํ๋ก์ ์๋ฒ์์๋ง ์ฃผ์
/๊ด๋ฆฌํ๋ฏ๋ก ์ฌ์ฉ์ ์ชฝ์ ๋ ํ์๊ฐ ์๋ค.
์ํ ์์ ์ฒดํฌ๋ k-skill-proxy์ /v1/mfds/food-safety/search ๋ผ์ฐํธ๋ฅผ ํธ์ถํ๊ณ , DATA_GO_KR_API_KEY ๋ฐ ์ ํ์ FOODSAFETYKOREA_API_KEY ๋ ํ๋ก์ ์๋ฒ์์๋ง ์ฃผ์
/๊ด๋ฆฌํ๋ฏ๋ก ์ฌ์ฉ์ ์ชฝ์ ๋ ํ์๊ฐ ์๋ค.
ํ๊ตญ ํนํ ์ ๋ณด ๊ฒ์์ KIPRIS Plus Open API ๊ฒฝ๋ก๋ฅผ ์ธ ๋ KIPRIS_PLUS_API_KEY ๋ฅผ ์ฑ์ด๋ค. helper๋ ์ด ๊ฐ์ ์ฝ์ด ์ค์ ์์ฒญ์์ ServiceKey ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ก ๋ณด๋ธ๋ค. ๊ณต๊ณต๋ฐ์ดํฐํฌํธ์์ ๋ณต์ฌํ percent-encoded key๋ ๊ทธ๋๋ก ๋ฃ์ด๋ ๋๋ค.
Missing secret response template
์ธ์ฆ ์คํฌ์์ ๊ฐ์ด ๋น ์ก์ ๋๋ credential resolution order์ ๋ฐ๋ผ ํ๋ณดํ๋ค.
ํ์ํ ๊ฐ ์:
- SRT:
KSKILL_SRT_ID, KSKILL_SRT_PASSWORD
- KTX:
KSKILL_KTX_ID, KSKILL_KTX_PASSWORD
- ์์ฐํด์๋ฆผ ๋น ๊ฐ์ค ์กฐํ:
KSKILL_FORESTTRIP_ID, KSKILL_FORESTTRIP_PASSWORD
- ๋ก์ปฌ ํ๊ตญ ๋ฒ๋ น ๊ฒ์:
LAW_OC + korean-law-mcp
- ํ๊ตญ ๋ฒ๋ น ๊ฒ์ remote endpoint: ์ฌ์ฉ์
LAW_OC ์์ด url๋ง ๋ฑ๋ก, ์ฅ์ ์ ๋ฒ๋ง fallback
- ํ๊ตญ ๋ถ๋์ฐ ์ค๊ฑฐ๋๊ฐ ์กฐํ: ์ฌ์ฉ์ ์ํฌ๋ฆฟ ๋ถํ์ (๊ธฐ๋ณธ hosted proxy ์ฌ์ฉ)
- ํ๊ตญ ํนํ ์ ๋ณด ๊ฒ์:
KIPRIS_PLUS_API_KEY
- ํ๊ตญ ์ฃผ์ ์ ๋ณด ์กฐํ: ์ฌ์ฉ์ ์ํฌ๋ฆฟ ๋ถํ์ (๊ธฐ๋ณธ hosted proxy ์ฌ์ฉ, ์ด์์๋ง
KRX_API_KEY)
- ์ํ์ฐ๋ ๊ธฐ ๋ฐฐ์ถ์ ๋ณด ์กฐํ: ์ฌ์ฉ์ ์ํฌ๋ฆฟ ๋ถํ์ (
serviceKey๋ proxy ์๋ฒ ์ฃผ์
, ํธ์ถ ์ pageNo=1ยทnumOfRows=100 ํ์)
- ํ๊ต ๊ธ์ ์๋จ ์กฐํ: ์ฌ์ฉ์ ์ํฌ๋ฆฟ ๋ถํ์ (
KEDU_INFO_KEY๋ proxy ์๋ฒ๋ง)
- ๋์๊ด ๋์ ์กฐํ: ์ฌ์ฉ์ ์ํฌ๋ฆฟ ๋ถํ์ (
DATA4LIBRARY_AUTH_KEY๋ proxy ์๋ฒ๋ง)
- ์์ฝํ ์์ ์ฒดํฌ: ์ฌ์ฉ์ ์ํฌ๋ฆฟ ๋ถํ์ (
DATA_GO_KR_API_KEY๋ proxy ์๋ฒ๋ง)
- ์ํ ์์ ์ฒดํฌ: ์ฌ์ฉ์ ์ํฌ๋ฆฟ ๋ถํ์ (
DATA_GO_KR_API_KEY์ ์ ํ์ FOODSAFETYKOREA_API_KEY๋ proxy ์๋ฒ๋ง)
- ๊ทผ์ฒ ๊ฐ์ฅ ์ผ ์ฃผ์ ์ ์ฐพ๊ธฐ: ์ฌ์ฉ์ ์ํฌ๋ฆฟ ๋ถํ์ (๊ธฐ๋ณธ hosted proxy ์ฌ์ฉ)
- ์์ธ ์งํ์ฒ : self-host ๋๋ ๋ฐฐํฌ ํ์ธ์ด ๋๋
KSKILL_PROXY_BASE_URL
- ํ๊ตญ ๋ ์จ: self-host ๋๋ ๋ฐฐํฌ ํ์ธ์ด ๋๋
KSKILL_PROXY_BASE_URL
- ์ฌ์ฉ์ ์์น ๋ฏธ์ธ๋จผ์ง ์กฐํ:
KSKILL_PROXY_BASE_URL ๋๋ AIR_KOREA_OPEN_API_KEY
์ํฌ๋ฆฟ์ด ๋น์ด ์๋ค๋ ์ด์ ๋ก ๋ค๋ฅธ ์๋น์ค๋ ๋น๊ณต์ ์ฐํ ๊ฒฝ๋ก๋ฅผ ์๋ ์ ํํ์ง ์๋๋ค.
2. Verify runtime environment
bash scripts/check-setup.sh
3. Offer scheduled update checks
setup์ด ๋๋๋ฉด ์ฌ์ฉ์์๊ฒ ์ฃผ๊ธฐ์ ์ธ ์
๋ฐ์ดํธ ํ์ธ ์๋ํ๋ฅผ ์ํ๋์ง ๋จผ์ ๋ฌป๋๋ค. ์ํ์ง ์์ผ๋ฉด ๊ฑด๋๋ด๋ค.
๊ธฐ๋ณธ ์ ์ฑ
:
- ์๋ ์ค์น๊ฐ ์๋๋ผ
์
๋ฐ์ดํธ ํ์ธ ๋ง ๊ธฐ๋ณธ์ผ๋ก ์ ์ํ๋ค
- ์ง์์ฑ ์๋ ์์คํ
๋ณ๊ฒฝ(
crontab, launchd, schtasks)์ ๋์ ์์ด ์ ์ฉํ์ง ์๋๋ค
- ๊ธฐ๋ณธ ํ์ธ ๋ช
๋ น์
npx --yes skills check
- ์ฌ์ฉ์๊ฐ ๋ช
์์ ์ผ๋ก
์๋ ์
๋ฐ์ดํธ ๋ฅผ ์ํ ๋๋ง npx --yes skills update ๊ธฐ๋ฐ ์ค์ผ์ค์ ๋ณ๋๋ก ์ ์ํ๋ค
macOS / Linux ์์:
mkdir -p ~/.config/k-skill/bin ~/.config/k-skill/logs
cat > ~/.config/k-skill/bin/check-skill-updates.sh <<'EOF'
set -euo pipefail
mkdir -p "$HOME/.config/k-skill/logs"
{
date '+[%Y-%m-%d %H:%M:%S]'
npx --yes skills check
printf '\n'
} >> "$HOME/.config/k-skill/logs/skills-check.log" 2>&1
EOF
chmod +x ~/.config/k-skill/bin/check-skill-updates.sh
(crontab -l 2>/dev/null; echo "0 9 * * * $HOME/.config/k-skill/bin/check-skill-updates.sh") | crontab -
Windows ์์:
New-Item -ItemType Directory -Force "$HOME/.config/k-skill/bin" | Out-Null
New-Item -ItemType Directory -Force "$HOME/.config/k-skill/logs" | Out-Null
@'
npx --yes skills check >> "$HOME/.config/k-skill/logs/skills-check.log" 2>&1
'@ | Set-Content "$HOME/.config/k-skill/bin/check-skill-updates.cmd"
schtasks /Create /SC DAILY /TN "k-skill-update-check" /TR "\"$HOME/.config/k-skill/bin/check-skill-updates.cmd\"" /ST 09:00 /F
์ค์ ํ์๋ ๋ก๊ทธ ์์น๋ฅผ ์งง๊ฒ ์๋ ค์ค๋ค:
~/.config/k-skill/logs/skills-check.log
4. Offer GitHub starring with explicit consent
setup ๋ง์ง๋ง์๋ ๋ค์์ฒ๋ผ ์งง๊ฒ ๋ฌป๋๋ค.
k-skill ์ ์ฅ์(NomaDamas/k-skill)์ GitHub star๋ฅผ ๋๋ฌ๋๋ฆด๊น์?
์ํ์๋ฉด `gh` ๋ก ๋ฐ๋ก ์ฒ๋ฆฌํ๊ณ , ์ํ์ง ์์ผ๋ฉด ๊ฑด๋๋๋๋ค.
๊ท์น:
- ์ฌ์ฉ์๊ฐ ๋ช
์์ ์ผ๋ก ๋์ํ๊ธฐ ์ ์๋
gh repo star ๋ฅผ ์คํํ์ง ์๋๋ค
gh ๊ฐ ์๊ฑฐ๋ ์ธ์ฆ๋์ง ์์์ผ๋ฉด ์ค์น/๋ก๊ทธ์ธ ์๋ด๋ง ํ๊ณ ์๋ ์ฐํํ์ง ์๋๋ค
- star ๋์ ์ ์ฅ์๋
NomaDamas/k-skill ์ด๋ค
๋์ํ๊ณ gh auth status ๊ฐ ์ ์์ด๋ฉด:
gh repo star NomaDamas/k-skill
์ฑ๊ณตํ๋ฉด ์งง๊ฒ ์๋ฃ๋ง ์๋ฆฐ๋ค.
Completion checklist
~/.config/k-skill/secrets.env exists with permission 0600 (๋๋ ์์ด์ ํธ๊ฐ ์์ฒด vault๋ก credential์ ๊ด๋ฆฌ ์ค)
- ํ์ํ ํ๊ฒฝ๋ณ์๊ฐ ์ค์ ๋์ด ์๋ค
- ์ฌ์ฉ์๊ฐ ์ํ ๊ฒฝ์ฐ์๋ง ์
๋ฐ์ดํธ ํ์ธ ์๋ํ ๋๋ GitHub star๊ฐ ์ค์ ๋์๋ค
Notes
- ๊ธฐ๋ณธ ํ๋ฆ์ "์ ์ฒด ์คํฌ ์ค์น โ ์ด setup skill ์คํ โ ๊ฐ๋ณ ๊ธฐ๋ฅ ์ฌ์ฉ" ์ด๋ค
- ์ ์ฅ์ ์์๋ secret file์ ๋์ง ์๋๋ค